当前位置: 首页 > article >正文

基于STM32环境温湿度监测系统设计(附项目代码zip)

一.介绍

本文详细介绍了一种基于STM32F103C8T6微控制器+DS18B20温度传感器+DHT11温湿度传感器的环境监测系统。该系统旨在实时监测周围环境的温度与湿度,通过OLED实时显示温湿度值,通过USART串口实时打印温湿度值,并在温湿度超过预设阈值时,通过提示灯警示及触发警报,为用户提供一个安全、舒适的居住和工作环境。

二、系统设计

  1. 硬件选型 本系统采用STM32F103C8T6微控制器作为核心处理单元。温度传感器选用DS18B20,具有高精度、抗干扰能力强等特点;温湿度传感器选用DHT11,具有响应速度快、测量范围广等优点。

  2. 系统架构系统主要由传感器模块、微控制器模块、提示灯模块和警报模块组成。传感器模块负责实时采集环境温度和湿度数据,微控制器模块对数据进行处理和分析,提示灯模块和警报模块在温湿度超过阈值时发出警示。

三、功能实现

  1. 温湿度采集 通过DS18B20和DHT11传感器,系统可实时监测环境温度和湿度,并将数据传输至STM32F103C8T6进行解析。

  2. 阈值设置 系统可根据用户需求设定高温阈值、低温阈值、高湿度阈值和低湿度阈值,实现个性化监测。

  3. 警报提示 当环境温湿度超过预设阈值时,系统会通过提示灯闪烁和警报声提醒用户,确保环境安全。

  4. 温湿度的值能够通过OLED实时显示,并能通过串口实时打印

四、传感器详解

4.1 DS18B20温度传感器

4.1.1DS18B20介绍

DS18B20是一种常见的数字型的温度传感器,具备独特的单总线接口方式。其控制命令和数据都是以数据信号的方式输入输出,具有功能强大、硬件简单、易扩展、抗干扰性强的特点。通过单总线通信,单总线(1-Wire BUS)是由Dallas公司开发的一种通用的数据总线。有一根通信线:DQ

通信方式:异步、半双工

单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线。

4.1.2 DS18B20实物图

4.1.3 DS18B20参数

4.1.4 DS18B20原理图

4.1.5 DS18B20内部结构框图

1.上拉电阻

2.电源供给感应:感应外部VDE是否存在

3.64-BIT ROM: 器件地址,用于总线通信的地址

4.MEMORY CONTROL LOGIC :内存控制逻辑,读写暂存器的数据

5.SCRATCHPAD(暂存器):存储实际的数据,用于总线的数据交互

        暂存器存储结构:其中红框存储的就是温度值,默认是85℃

4.1.6 DS18B20时序结构

stm32想要与DS18B20通信,需要遵循规定的时序结构,否则通信无效。

4.1.6.1 初始化

主机将总线拉低至少480us,然后释放总线,等待15~60us后,存在的从机会拉低总线60~240us以响应主机,之后从机将释放总线

4.1.6.2 发送一位(写)

主机将总线拉低60~120us,然后释放总线,表示发送0;主机将总线拉低1~15us,然后释放总线,表示发送1。从机将在总线拉低30us后读取电平,整个时间片应大于60us

4.1.6.3 发送一位(读)

主机将总线拉低1~15us,然后释放总线,并在拉低后15us内读取总线电平(尽量贴近在15us的末尾),读取位低电平则位接收0,高电平位1,整个时间片应大于60us。

4.1.7 DS18B20基本指令

其中有两个比较重要的指令:1.CONVERT T:执行温度转换;2.READ SCRATCHPAD:读暂存器数据(这里存着温度值)

4.2 DHT11 温湿度传感器

4.2.1 DHT11介绍

 DHT11是一款含有已校准数字型信号输出的温湿度符合传感器,采用了自主研发的集成式数字温湿度元件,应用专用的数字模块采集技术和温湿度传感器技术,确保产品具有极高的可靠性与稳定性,DHT11传感器内部包含一个温湿度测量元件和一个高性能MCU

4.2.2 DHT11实物图

4.2.3 DHT11技术参数

4.2.3 DHT11原理图

4.2.4 DHT11 时序

4.2.4.1 初始化

空闲时输出高电平,工作时,stm32等主机先拉低至少480us; stm32释放总线,上拉电阻将总线拉高,等待15~60us,等待DHT11拉低总线约在240us内,最后DHT11释放总线。

4.2.4.2 发送一位(写)

主机写0:主机输出低电平60us,释放总线2us

主机写1:主机输出低电平2us,释放总线60us

4.2.4.2 接收一位(读)

主机先输出低电平2us,转成输入模式等待12us,读取总线电平,等待50us

5.环境温湿度监测代码部分

5.1引脚复用说名

功能引脚
OLEDSCL:PB9 ;SCL :PB8
USARTTX :PA9 RX: PA8
ds18b20温度传感器PA6
dht11温湿度传感器PA7
温度指示灯PA1 (I/O表示正极,另一端接地)
湿度指示灯PA2(I/O表示正极,另一端接地)
蜂鸣器PB12

项目代码详见附件:基于STM32环境温湿度监测系统设计.zip

压缩包包含:基于STM32环境温湿度监测系统设计的工程代码、传感器资料等。

5.2项目展示

本项目设计

        1.温湿度的值实时显示在OLED上

        2.温度超过20℃ 绿色指示灯亮、蜂鸣器报警;低于18摄氏度 绿色指示灯灭、蜂鸣器停止报警、串口打印对应的温度值

        3.湿度超过55%红色指示灯亮、蜂鸣器报警;低于53% 绿色指示灯灭、蜂鸣器停止报警、串口打印对应的湿度值

注意:温湿度的阈值可以根据自己的需求更改

修改温度的阈值

修改湿度的阈值

温度超过20℃ 绿色指示灯亮、蜂鸣器报警

串口打印温度值

湿度超过55%红色指示灯亮、蜂鸣器报警

串口打印湿度值

代码连接:

https://download.csdn.net/download/m0_60503814/90224052

注:如果您已有板子,需要修改代码或讲解代码,请评论留言或给我私信!!!


http://www.kler.cn/a/468199.html

相关文章:

  • 服务器Ubuntu22.04系统下 ollama的详细部署安装和搭配open_webui使用
  • C++相关实验练习
  • nginx-灰度发布策略(split_clients)
  • Speech Recognition vs. Voice Recognition | 语音识别工作原理 | 模型训练 | 应用
  • 前端工程化之手搓webpack5 --【elpis全栈项目】
  • java.lang.Error: FFmpegKit failed to start on brand:
  • 以往博客的复习补充——part1
  • vim 的基础使用
  • 基于服务器部署的综合视频安防系统的智慧快消开源了。
  • Unity Canvas中显示粒子特效
  • 【网络协议】开放式最短路径优先协议OSPF详解(四)
  • 【踩坑指南2.0 2025最新】Scala中如何在命令行传入参数以运行主函数
  • 在Mac电脑上搭建Gradle
  • 太速科技-135-4路250Msps 16bit AD采集PCIe卡
  • 利用JAVA爬虫获取item_search_img-按图搜索1688商品(拍立淘)接口
  • <论文>聊聊初代LLaMA
  • Unity3D仿星露谷物语开发13之角色感知道具
  • 【项目开发】C#环境配置及VScode运行C#教程(学生管理系统)
  • 使用qiankun搭建微前端应用及踩坑
  • 高频 SQL 50 题(基础版)_1068. 产品销售分析 I
  • NLP-transformer学习:(8)trainer 使用方法
  • 抖音评论地区分布可视化期末项目
  • 【微服务】【Sentinel】认识Sentinel
  • JODConverter结合LibreOffice如何转换ppt pptx成图片
  • 谷粒商城-高级篇-Sentinel-分布式系统的流量防卫兵
  • Arduino 小白的 DIY 空气质量检测仪(5)- OLED显示模块、按钮模块