news 2026/9/24 12:02:46

基于STM32的大棚温湿度智能测控系统设计(DHT11 + 分级调控 + 多级报警)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于STM32的大棚温湿度智能测控系统设计(DHT11 + 分级调控 + 多级报警)
  • 基于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 主控模块

方案芯片特点
方案1STM32F103C8T6Cortex-M3 内核,72MHz 主频,64KB Flash + 20KB RAM,低功耗模式表现优越
方案2Nordic nRF52840Cortex-M4 内核,64MHz,1MB Flash + 256KB RAM,支持浮点运算

本系统为数据采集 + 多设备联动的中低性能场景,STM32F103C8T6 价格更低、低功耗特性更适合长时间无人值守运行。选择方案1:STM32F103C8T6

2.2 温湿度检测模块

方案模块特点
方案1DHT11温度 0~50°C(±2°C),湿度 20~80%RH(±5%RH),响应约 1 秒,性价比高
方案2BME280温度 -40~85°C(±1°C),湿度 0~100%RH(±3%RH),额外支持气压测量

大棚调控按区间阈值执行,DHT11 的精度已满足 ±2°C / ±5%RH 的性能需求,BME280 的高精度与气压功能属于冗余。选择方案1:DHT11

2.3 数据显示模块

方案模块特点
方案1OLED12864128×64 自发光像素,对比度高、视角广,静态显示功耗极低
方案2TFT LCD(ILI9341)2.8 英寸 240×320 全彩显示,支持触摸,功耗与成本较高

本系统只需显示温湿度数值与设备状态文本,OLED 的显示效果与超低功耗完全够用。选择方案1:OLED12864

2.4 报警通知模块

方案模块特点
方案1PE-3530 蜂鸣器3~12V 宽电压,声音清晰响亮,结构简洁可靠、成本低
方案2W1209 光声报警器声光双重报警,5~12V 供电,价格较高、复杂度大

系统已独立配置了双色 LED 与屏幕闪烁提醒,蜂鸣器只需承担声音报警,简洁的 PE-3530 即可满足需求。选择方案1:PE-3530 蜂鸣器

2.5 执行控制模块

方案模块特点
方案1SRD-05VDC-SL-C 电磁继电器5V 直流线圈,常开/常闭触点,额定电流 10A,可直接开关风扇/加湿器
方案2MOSFET 开关模块固态开关无机械磨损,响应极快,但大功率负载需选型匹配,成本较高

排风扇与加湿器均为交流/大电流负载,继电器的隔离触点方案更简单稳妥,开关频率低也规避了机械寿命短板。选择方案1:SRD-05VDC-SL-C 电磁继电器

三、系统接线总表

主控采用 STM32F103C8T6 最小系统(8MHz 晶振 PLL 倍频至 72MHz,32.768kHz 晶振供 RTC,NRST 按键复位电路),各模块引脚分配如下:

模块引脚连接到 STM32说明
DHT11VCC / GND3.3V / GND
DHT11DATAPA0数字 I/O,DATA 与 VCC 间接 4.7kΩ~10kΩ 上拉电阻
OLED12864VCC / GND3.3V / GNDSSD1306 驱动
OLED12864SCL / SDAPB6 / PB7I2C 通信
蜂鸣器 PE-3530驱动端PB5NPN 三极管驱动,低电平导通发声
排风扇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 与屏幕标题闪烁形成多级报警体系。系统上电自检、全自动运行,无需人工干预;模块化软件结构提升了代码可读性与可维护性,低功耗设计支持长时间无人值守。多场景测试表明系统运行稳定、响应迅速、成本低且扩展性良好,适用于温室大棚等中小型环境场景,具备较高的推广价值与应用前景。

七、资料内容完整工程资料(原理图、PCB、代码、元件清单)

八、资料获取方式

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 11:58:56

微信表情怎么导出到电脑?电脑端完整步骤

想在电脑上整理微信表情的人&#xff0c;常常卡在第一步&#xff1a;表情在微信里根本不是一个「文件」&#xff0c;右键也另存不了。微信表情导出到电脑&#xff0c;完整步骤是&#xff1a;电脑版微信搜索并关注「表情保存助手」→ 把表情发给它 → 复制它回复的下载地址到浏览…

作者头像 李华
网站建设 2026/9/24 11:57:42

FineReport替代方案迁移实战:报表工具选型、校验与批量迁移指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 11:56:56

三相全桥MOSFET布局与死区时间:无刷电机驱动硬件设计避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 11:55:34

STM32 SBUS协议解析:DMA循环+IDLE中断+三段式状态机实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 11:55:13

字节面试:你的 Agent 单次成功率 60%,敢上线吗?

先说一个数字&#xff1a;60%。那是我们客服 Agent 在内测集上的单次任务成功率。当时我觉得账算得过来——六成能自己办成&#xff0c;剩下四成转人工兜底。直到有位做风控的同事问我一句&#xff1a;"那同一个用户连着来八次&#xff0c;是不是至少有一次要翻车&#xf…

作者头像 李华
网站建设 2026/9/24 11:55:02

智能音箱选购指南:从参数到生态,避开智商税选对设备

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华