1. 项目概述
这个基于STM32的多路温室大棚监测系统,是我去年为一个农业科技创业公司做的原型设计。整套系统成本控制在200元以内,却实现了温室环境的全自动监控与调节。核心功能包括四路温湿度实时监测、阈值报警、设备联动控制以及手机远程监控,特别适合中小型温室使用。
系统采用模块化设计,硬件部分以STM32F103C8T6为主控,搭配DHT11传感器、OLED显示屏、ESP8266 WiFi模块和继电器组。软件层面使用Keil MDK开发,通过阿里云物联网平台实现数据透传。整个项目从电路设计到云端对接全部开源,开发者可以直接复现或二次开发。
提示:选择STM32F103C8T6不仅因为其性价比高(零售价约10元),更因其丰富的外设资源——4个定时器、2个SPI、2个I2C和3个USART接口,完美适配本项目需求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件设计与选型
2.1 核心器件清单
- 主控制器:STM32F103C8T6(Cortex-M3内核,72MHz主频,64KB Flash,20KB RAM)
- 温湿度传感器:DHT11×4(精度:温度±2℃,湿度±5%RH)
- 显示模块:0.96寸OLED(SSD1306驱动,128×64分辨率,I2C接口)
- 通信模块:ESP8266-01S(支持802.11 b/g/n,AT指令固件)
- 执行机构:5V继电器模块×4(最大负载10A/250VAC)
- 用户输入:轻触按键×4(设置、加、减、确认)
- 电源系统:LM2596降压模块(12V转5V,单独给ESP8266供电)
2.2 电路设计要点
在立创EDA设计原理图时,有几个关键细节需要注意:
-
传感器布局:
- DHT11信号线需加4.7K上拉电阻
- 长距离传输时建议使用屏蔽线(最长可达20米)
- 每路传感器电源并联100nF去耦电容
-
ESP8266供电方案:
c复制// 电源切换电路设计
+12V ──→ LM2596 ──→ 5V ──┬──→ 主控及传感器
└──→ AMS1117-3.3V ──→ ESP8266
实测发现ESP8266在发送数据时瞬时电流可达300mA,若与其他模块共用LDO会导致电压跌落。我的解决方案是使用独立的DC-DC降压模块,并在模块电源输入端增加470μF电解电容。
- 继电器驱动电路:
c复制STM32 GPIO ──→ 1K电阻 ──→ PC817光耦 ──→ S8050三极管 ──→ 继电器线圈
│
续流二极管
务必添加光耦隔离,防止继电器动作时产生的反电动势损坏MCU。我曾因省略光耦烧毁过两个IO口。
3. 软件实现解析
3.1 温湿度采集处理
DHT11的驱动实现有几个技术细节需要注意:
c复制// 改进后的读取函数(带超时检测)
uint8_t DHT_Read(DHT_TypeDef* dht){
GPIO_Init(dht->PORT, dht->PIN, GPIO_Mode_Out_PP);
DHT_Reset(dht); // 发送开始信号
GPIO_Init(dht->PORT, dht->PIN,
