基于STM32环境温湿度监测系统设计(附项目代码zip)
一.介绍
本文详细介绍了一种基于STM32F103C8T6微控制器+DS18B20温度传感器+DHT11温湿度传感器的环境监测系统。该系统旨在实时监测周围环境的温度与湿度,通过OLED实时显示温湿度值,通过USART串口实时打印温湿度值,并在温湿度超过预设阈值时,通过提示灯警示及触发警报,为用户提供一个安全、舒适的居住和工作环境。
二、系统设计
-
硬件选型 本系统采用STM32F103C8T6微控制器作为核心处理单元。温度传感器选用DS18B20,具有高精度、抗干扰能力强等特点;温湿度传感器选用DHT11,具有响应速度快、测量范围广等优点。
-
系统架构系统主要由传感器模块、微控制器模块、提示灯模块和警报模块组成。传感器模块负责实时采集环境温度和湿度数据,微控制器模块对数据进行处理和分析,提示灯模块和警报模块在温湿度超过阈值时发出警示。
三、功能实现
-
温湿度采集 通过DS18B20和DHT11传感器,系统可实时监测环境温度和湿度,并将数据传输至STM32F103C8T6进行解析。
-
阈值设置 系统可根据用户需求设定高温阈值、低温阈值、高湿度阈值和低湿度阈值,实现个性化监测。
-
警报提示 当环境温湿度超过预设阈值时,系统会通过提示灯闪烁和警报声提醒用户,确保环境安全。
-
温湿度的值能够通过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引脚复用说名
功能 | 引脚 |
OLED | SCL:PB9 ;SCL :PB8 |
USART | TX :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
注:如果您已有板子,需要修改代码或讲解代码,请评论留言或给我私信!!!