- 基于STM32的大棚温湿度智能测控系统设计(DHT11 + 分级调控 + 多级报警)
- 一、系统功能总览
- 二、核心模块选型对比
- 2.1 主控模块
- 2.2 温湿度检测模块
- 2.3 数据显示模块
- 2.4 报警通知模块
- 2.5 执行控制模块
- 三、系统接线总表
- 四、系统软件设计
- 4.1 主程序流程设计
- 4.2 温湿度检测流程设计
- 4.3 数据显示流程设计
- 五、系统实现与测试
- 5.1 硬件调试
- 5.2 软件调试
- 5.3 功能调试
- 六、总结
基于STM32的大棚温湿度智能测控系统设计(DHT11 + 分级调控 + 多级报警)
大棚里的温度和湿度全凭"人跑腿"盯着,天一热来不及开风扇、地一干忘了开加湿器,作物轻则长势受影响,重则诱发病害。本文基于 STM32 设计一套大棚温湿度智能测控系统:DHT11 实时采集环境数据,OLED 每秒刷新显示,温度分级启动排风扇、湿度自动联动加湿器,超限还有蜂鸣器 + 双色 LED + 屏幕闪烁三重提醒,让大棚环境调控彻底告别人工值守。
一、系统功能总览
系统以 STM32F103C8T6 为主控,围绕"实时监测 → 分级调控 → 多级报警"的闭环展开,功能与实现效果如下:
| 功能 | 核心模块 | 实现效果 |
|---|---|---|
| 温湿度采集 | DHT11 温湿度传感器 | 实时采集大棚温度与湿度,温度精度 ±2°C、湿度精度 ±5%RH |
| 数据显示 | OLED12864 显示屏 | 每秒刷新当前温湿度与设备运行状态 |
| 一级降温 | 排风扇1 + 黄色 LED | 温度 ≥21°C 且 <24°C 时开启单台风扇降温,黄灯闪烁提示 |
| 二级降温报警 | 双排风扇 + 蜂鸣器 + 红色 LED | 温度 ≥24°C 时风扇全速运行,蜂鸣器报警,红灯闪烁 |
| 自动加湿 | 加湿器 | 湿度 <50% 自动开启,≥50% 自动关闭 |
| 报警提示 | 蜂鸣器 + LED + 屏幕标题闪烁 | 温湿度异常时三重提示,便于快速识别 |
| 自检运行 | 上电初始化自检 | 无需人工干预,自动完成硬件自检并进入监测模式 |
二、核心模块选型对比
2.1 主控模块
| 方案 | 芯片 | 特点 |
|---|---|---|
| 方案1 | STM32F103C8T6 | Cortex-M3 内核,72MHz 主频,64KB Flash + 20KB RAM,低功耗模式表现优越 |
| 方案2 | Nordic nRF52840 | Cortex-M4 内核,64MHz,1MB Flash + 256KB RAM,支持浮点运算 |
本系统为数据采集 + 多设备联动的中低性能场景,STM32F103C8T6 价格更低、低功耗特性更适合长时间无人值守运行。选择方案1:STM32F103C8T6。
2.2 温湿度检测模块
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | DHT11 | 温度 0~50°C(±2°C),湿度 20~80%RH(±5%RH),响应约 1 秒,性价比高 |
| 方案2 | BME280 | 温度 -40~85°C(±1°C),湿度 0~100%RH(±3%RH),额外支持气压测量 |
大棚调控按区间阈值执行,DHT11 的精度已满足 ±2°C / ±5%RH 的性能需求,BME280 的高精度与气压功能属于冗余。选择方案1:DHT11。
2.3 数据显示模块
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | OLED12864 | 128×64 自发光像素,对比度高、视角广,静态显示功耗极低 |
| 方案2 | TFT LCD(ILI9341) | 2.8 英寸 240×320 全彩显示,支持触摸,功耗与成本较高 |
本系统只需显示温湿度数值与设备状态文本,OLED 的显示效果与超低功耗完全够用。选择方案1:OLED12864。
2.4 报警通知模块
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | PE-3530 蜂鸣器 | 3~12V 宽电压,声音清晰响亮,结构简洁可靠、成本低 |
| 方案2 | W1209 光声报警器 | 声光双重报警,5~12V 供电,价格较高、复杂度大 |
系统已独立配置了双色 LED 与屏幕闪烁提醒,蜂鸣器只需承担声音报警,简洁的 PE-3530 即可满足需求。选择方案1:PE-3530 蜂鸣器。
2.5 执行控制模块
| 方案 | 模块 | 特点 |
|---|---|---|
| 方案1 | SRD-05VDC-SL-C 电磁继电器 | 5V 直流线圈,常开/常闭触点,额定电流 10A,可直接开关风扇/加湿器 |
| 方案2 | MOSFET 开关模块 | 固态开关无机械磨损,响应极快,但大功率负载需选型匹配,成本较高 |
排风扇与加湿器均为交流/大电流负载,继电器的隔离触点方案更简单稳妥,开关频率低也规避了机械寿命短板。选择方案1:SRD-05VDC-SL-C 电磁继电器。
三、系统接线总表
主控采用 STM32F103C8T6 最小系统(8MHz 晶振 PLL 倍频至 72MHz,32.768kHz 晶振供 RTC,NRST 按键复位电路),各模块引脚分配如下:
| 模块 | 引脚 | 连接到 STM32 | 说明 |
|---|---|---|---|
| DHT11 | VCC / GND | 3.3V / GND | — |
| DHT11 | DATA | PA0 | 数字 I/O,DATA 与 VCC 间接 4.7kΩ~10kΩ 上拉电阻 |
| OLED12864 | VCC / GND | 3.3V / GND | SSD1306 驱动 |
| OLED12864 | SCL / SDA | PB6 / PB7 | I2C 通信 |
| 蜂鸣器 PE-3530 | 驱动端 | PB5 | NPN 三极管驱动,低电平导通发声 |
| 排风扇1 继电器 | 控制端 | PB10 | 一级降温 |
| 排风扇2 继电器 | 控制端 | PB11 | 二级降温,双风扇全速 |
| 加湿器继电器 | 控制端 | PB12 | 湿度联动 |
| 黄色 LED | 正极(串限流电阻) | PB0 | 一级提示闪烁 |
| 红色 LED | 正极(串限流电阻) | PB1 | 二级报警闪烁 |
四、系统软件设计
4.1 主程序流程设计
系统上电后初始化 GPIO、I2C、ADC 等外设并完成硬件自检,随后进入主循环:读取 DHT11 温湿度 → 每秒刷新 OLED 显示 → 按阈值区间执行分级调控。温度达到 21°C 且低于 24°C 时开启一台排风扇并闪烁黄灯;达到或超过 24°C 时蜂鸣器报警、双风扇全速、红灯闪烁;温度回落到 21°C 以下则关闭风扇并熄灭 LED。湿度低于 50% 自动开加湿器,达到 50% 及以上自动关闭。主循环核心代码骨架如下:
int main(void) { Sys_Init(); /* GPIO/I2C/ADC 初始化+自检 */ OLED_Init(); while (1) { DHT11_Read_Data(&temp, &humi); /* 读取温湿度 */ if (temp >= 24) /* 二级临界高温 */ { FAN1_ON(); FAN2_ON(); /* 双风扇全速 */ BEEP_ON(); LED_RedBlink(); /* 蜂鸣器+红灯 */ OLED_TitleBlink(); /* 屏幕标题闪烁 */ } else if (temp >= 21) /* 一级高温 */ { FAN1_ON(); FAN2_OFF(); BEEP_OFF(); LED_YellowBlink(); /* 黄灯闪烁 */ } else /* 温度正常 */ { FAN1_OFF(); FAN2_OFF(); BEEP_OFF(); LED_AllOff(); } if (humi < 50) HUMI_ON(); /* 湿度联动加湿器 */ else HUMI_OFF(); OLED_ShowStatus(temp, humi); /* 每秒刷新显示 */ delay_ms(1000); } }4.2 温湿度检测流程设计
DHT11 采用单总线时序通信:先将 DATA 引脚配置为推挽输出并置高电平,随后拉低至少 18ms(建议 20ms)再拉高 20µs 以上完成复位;接着把引脚切换为输入模式检测响应——传感器先输出 40~80µs 低电平、再输出 40~80µs 高电平,检测到该响应说明传感器正常。数据读取阶段接收 40 位数据,分为 5 个字节:湿度整数、湿度小数、温度整数、温度小数与校验和。校验和等于前 4 个字节之和的低 8 位,比对一致则数据有效,否则丢弃本次读取等待下次采集。
4.3 数据显示流程设计
OLED 显示走 I2C 通道(PB6 为 SCL、PB7 为 SDA):先配置 I2C 时钟速率等基本参数,随后发送初始化命令序列配置显示模式、对比度、扫描方向与时钟,并开启充电泵增强显示效果,最后发送 0xAF 命令开启显示。OLED 屏幕分为 128 列 × 8 页(每页 8 行像素),通过设置页地址与列地址定位显示区域;调用OLED_Fill(0x00)全屏填充 0x00 即可清屏。数据写入按"设备地址 → 寄存器地址 → 数据字节"的顺序进行,每次传输等待 ACK 确认,再按需调用字符串、汉字或位图显示函数刷新温湿度数值与设备状态。
五、系统实现与测试
5.1 硬件调试
按电路图依次完成主控与 DHT11、OLED、蜂鸣器、风扇、加湿器及 LED 的焊接,重点检查上拉电阻、I2C 引脚与驱动电路。用示波器验证 DHT11 输出信号波形正常,测试 OLED 的 I2C 通信与字符显示,手动触发蜂鸣器、风扇、加湿器确认响应符合预期,最后复核电源电压与复位电路稳定性。
5.2 软件调试
软件采用 VS Code + C 语言模块化开发,通过 ST-Link 下载调试。逐步验证 DHT11 数据读取精度、OLED 刷新效果与风扇/加湿器/蜂鸣器的联动响应,重点检查控制逻辑的稳定性与风扇、加湿器同时运行时的抗干扰能力。
5.3 功能调试
围绕温湿度采集、显示、联动控制与报警四方面开展多场景测试,结果如下:
| 测试项 | 测试方法 | 预期结果 | 实测结果 |
|---|---|---|---|
| 温湿度采集精度 | 与标准温湿度计对比 | 温度误差 ≤±2°C,湿度误差 ≤±5%RH | 误差在允许范围内,数据稳定 |
| 显示刷新 | 观察 OLED | 每秒更新温湿度与设备状态 | 刷新及时、显示清晰 |
| 一级降温 | 环境升温至 21~24°C | 单风扇开启、黄灯闪烁 | 联动正常 |
| 二级降温报警 | 环境升温至 ≥24°C | 双风扇全速、蜂鸣器+红灯+屏幕闪烁 | 报警及时准确 |
| 自动加湿 | 湿度降至 50% 以下 | 加湿器开启,回升后自动关闭 | 开关切换准确 |
| 抗干扰 | 风扇与加湿器同时运行 | 系统功能不受影响 | 运行稳定 |
六、总结
本系统基于 STM32F103C8T6 实现了大棚温湿度的实时监测与自动化调控:DHT11 采集数据、OLED 每秒刷新显示、排风扇按 21°C/24°C 双阈值分级启动、加湿器随湿度 50% 阈值自动联动,配合蜂鸣器、双色 LED 与屏幕标题闪烁形成多级报警体系。系统上电自检、全自动运行,无需人工干预;模块化软件结构提升了代码可读性与可维护性,低功耗设计支持长时间无人值守。多场景测试表明系统运行稳定、响应迅速、成本低且扩展性良好,适用于温室大棚等中小型环境场景,具备较高的推广价值与应用前景。