1. 项目概述
这个基于STM32的多路温室大棚监测系统是一个典型的物联网农业应用案例。我在去年帮本地几个小型农场部署过类似系统,实测下来稳定性不错,成本控制在200元以内,特别适合5亩以下的温室大棚环境监测。
核心功能是通过四路温湿度传感器采集数据,在0.96寸OLED屏上实时显示。别看功能简单,在实际农业生产中,温湿度数据的实时监测对作物生长调控至关重要。比如草莓种植要求日间温度18-25℃、夜间8-12℃,湿度60-70%,这个系统就能帮助农户精准掌握棚内环境。
2. 硬件选型与电路设计
2.1 主控芯片选择
选用STM32F103C8T6最小系统板(俗称"蓝板")主要考虑三点:
- 72MHz主频完全够用,实测同时处理4路传感器+屏幕刷新仅占用30%CPU资源
- 内置12位ADC,满足温湿度传感器的精度要求
- 价格仅15元左右,比Arduino方案便宜50%
注意:购买时要认准"ST"原厂标志,市面上有些兼容芯片ADC精度不达标
2.2 传感器选型对比
我测试过三种常见温湿度传感器:
| 型号 | 精度 | 响应时间 | 价格 | 适用场景 |
|---|---|---|---|---|
| DHT11 | ±2℃/±5%RH | 2s | 8元 | 低成本简易方案 |
| DHT22 | ±0.5℃/±2% | 1s | 25元 | 高精度要求 |
| AM2305 | ±0.3℃/±3% | 0.5s | 35元 | 专业农业监测 |
推荐方案:主传感器用AM2305(重点监测区),其余三路用DHT22,这样在保证关键区域精度的同时控制成本。
2.3 电路连接要点
四路传感器接线示意图:
c复制// STM32引脚分配
#define SENSOR1_PIN PA0 // AM2305
#define SENSOR2_PIN PA1 // DHT22
#define SENSOR3_PIN PA2 // DHT22
#define SENSOR4_PIN PA3 // DHT22
实际布线时要注意:
- 传感器信号线长度不超过20米,否则需加120Ω终端电阻
- 每路单独接4.7K上拉电阻到3.3V
- 电源端并联100μF电容抗干扰
3. 软件实现细节
3.1 传感器驱动开发
DHT系列传感器典型读取流程:
- 主机拉低总线18ms启动信号
- 传感器返回80us低电平+80us高电平
- 连续发送40bit数据(高位先发)
关键代码片段:
c复制void DHT_Read(uint8_t pin, float *temp, float *humi) {
// 初始化时序
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
delay(18);
digitalWrite(pin, HIGH);
delayMicroseconds(40);
// 接收数据
uint8_t data[5] = {0};
for(int i=0; i<5; i++) {
for(int j=7; j>=0; j--) {
while(digitalRead(pin)==LOW);
delayMicroseconds(30);
if(digitalRead(pin)==HIGH) {
data[i] |= (1<<j);
while(digitalRead(pin)==HIGH);
}
}
}
// 校验与转换
if(data[4] == (data[0]+data[1]+data[2]+data[3])) {
*humi = data[0] + data[1]*0.1;
*temp = data[2] + data[3]*0.1;
}
}
3.2 多路采集策略
采用分时复用采集方案:
- 每路传感器间隔250ms轮询
- 设置10次采集滑动窗口
- 剔除最大最小值后取平均
这种设计可以:
- 避免同时采集造成的总线冲突
- 平滑传感器数据波动
- 降低异常值影响
3.3 OLED显示优化
使用U8g2库驱动SSD1306屏幕时要注意:
- 开启双缓冲避免闪烁
- 使用自定义字体节省空间
- 关键数据用反色显示
显示布局建议:
code复制+-------------------+
| 大棚1: 25.3℃ 62% |
| 大棚2: 23.7℃ 65% |
| 大棚3: 24.1℃ 58% |
| 大棚4: 26.2℃ 70% |
+-------------------+
4. 现场部署经验
4.1 传感器安装要点
- 高度控制:距地面1.2-1.5米(作物冠层高度)
- 避光处理:加装白色防辐射罩
- 防结露:传感器朝下倾斜15°
- 分区原则:按作物品种/生长阶段划分监测区域
4.2 抗干扰措施
在多个农场实测发现的典型问题:
- 水泵启停导致电压波动 → 加装DC-DC隔离模块
- 手机信号干扰 → 传感器线缆穿金属管屏蔽
- 日光灯辐射干扰 → 避开灯具2米以上距离
4.3 供电方案选择
对比三种供电方式:
- 220V转5V适配器:最稳定但布线复杂
- 太阳能+锂电池:适合无电区域,成本高
- POE供电:需专用模块,但一线多用
推荐小型大棚采用5V/2A手机充电器+USB线供电,成本最低且可靠。
5. 常见问题排查
5.1 传感器无响应
检查步骤:
- 用万用表测量VCC-GND间电压(应≥3.3V)
- 检查上拉电阻是否虚焊
- 缩短线缆至1米内测试
- 更换传感器排除硬件故障
5.2 数据显示异常
典型现象及解决方法:
- 湿度持续显示99% → 传感器结露,调整安装角度
- 温度跳动±5℃ → 电源干扰,并联1000μF电容
- 某路数据固定为0 → 检查该路GPIO配置
5.3 OLED屏闪烁
优化方案:
- 降低刷新率至2Hz
- 使用u8g2.setPowerSave(1)省电模式
- 检查SPI时钟线是否接触不良
6. 功能扩展建议
在实际使用中可以根据需求添加:
- 阈值报警功能:当温湿度超出设定范围时蜂鸣器报警
- 数据存储:添加SD卡模块记录历史数据
- 无线传输:通过ESP8266上传数据到手机APP
- 联动控制:连接继电器自动控制通风/灌溉
我帮某蘑菇种植基地改造的进阶版就加入了CO2监测和自动通风控制,使产量提升了18%。不过建议初次实施先做好基础温湿度监测,稳定运行后再逐步扩展。