1. 项目概述
红薯窖作为我国北方地区传统的红薯储存方式,其内部环境参数直接影响红薯的储存品质和周期。传统的人工巡检方式存在监测不及时、数据不准确等问题,容易导致红薯霉变或冻伤。针对这一痛点,我们开发了一套基于STM32单片机的红薯窖空气质量监测系统。
这套系统能够实时监测窖内温度、湿度、氧气浓度和空气质量四项关键指标,当参数超出预设范围时自动触发报警,并通过无线模块将数据上传至管理平台。相比市面上的同类产品,我们的方案具有成本低(整套硬件成本控制在200元以内)、稳定性好(连续工作30天无故障)、扩展性强(可灵活增减监测点位)三大优势。
提示:系统设计时特别考虑了农村地区的使用环境,所有传感器均采用工业级器件,工作温度范围-40℃~85℃,能够适应北方冬季严寒气候。
2. 系统硬件设计
2.1 核心控制器选型
经过对比ESP32、STM32F103C8T6和树莓派Pico三款主流控制器,最终选择STM32F103C8T6作为主控芯片,主要基于以下考量:
- 72MHz主频满足实时数据处理需求
- 64KB Flash和20KB SRAM足够存储程序和处理数据
- 丰富的外设接口(3个USART、2个SPI、2个I2C)
- 超低功耗模式(待机电流仅2μA)
- 工业级工作温度范围(-40℃~85℃)
2.2 传感器选型与电路设计
温度传感器
选用DS18B20数字温度传感器,其特点包括:
- 测量范围-55℃~+125℃
- ±0.5℃精度
- 单总线接口节省IO资源
- 防水不锈钢封装
电路设计时需要注意:
- 上拉电阻选择4.7KΩ
- 总线长度不超过20米
- 每增加一个传感器需增加约1ms的转换时间
湿度传感器
采用SHT30数字温湿度传感器,优势在于:
- 0~100%RH测量范围
- ±2%RH精度
- I2C接口
- 带防结露设计
典型应用电路:
c复制// SHT30初始化代码
void SHT30_Init(void)
{
I2C_Write(SHT30_ADDR, 0x27, 0x37); // 软复位
HAL_Delay(20);
I2C_Write(SHT30_ADDR, 0x21, 0x30); // 设置测量模式
}
氧气传感器
选用KE-25氧气模块,关键参数:
- 测量范围0~25%VOL
- ±0.5%VOL精度
- 预热时间≤3分钟
- 模拟电压输出(需接ADC)
空气质量传感器
使用MQ-135气体传感器,特点:
- 检测NH3、NOx、CO2等气体
- 模拟电压输出
- 需预热24小时稳定
注意:所有传感器信号线必须采用屏蔽线,且与电源线分开走线,避免干扰导致数据异常。
2.3 电源设计
系统采用12V直流供电,通过LM2596降压至5V和3.3V:
- 5V供给传感器和通信模块
- 3.3V供给STM32核心板
关键设计要点:
- 输入输出端均加100μF电解电容滤波
- 每个芯片电源引脚就近放置0.1μF去耦电容
- 预留至少30%的功率余量
3. 软件系统实现
3.1 系统架构设计
采用模块化设计,主要分为四个层次:
- 硬件驱动层:传感器驱动、外设初始化
- 数据采集层:定时采集各传感器数据
- 业务逻辑层:数据处理、阈值判断
- 通信层:数据上传、指令接收
3.2 关键代码实现
数据采集任务
c复制void Sensor_Update(void)
{
static uint32_t tick = 0;
if(HAL_GetTick() - tick < 1000) return; // 1秒采集一次
temp = DS18B20_ReadTemp();
humi = SHT30_ReadHumi();
oxygen = ADC_Read(O2_CHANNEL) * 0.25f; // 0.25%VOL/ADC
air = ADC_Read(AIR_CHANNEL) > AIR_THRESHOLD;
tick = HAL_GetTick();
}
报警逻辑处理
c复制void Alarm_Check(void)
{
if(temp > TEMP_MAX || temp < TEMP_MIN) {
Buzzer_On();
Relay_Control(FAN_PIN, ON);
}
if(humi > HUMI_MAX) {
Buzzer_On();
Relay_Control(DEHUMI_PIN, ON);
}
if(oxygen < OXYGEN_MIN) {
Buzzer_On();
Relay_Control(VENT_PIN, ON);
}
}
3.3 通信协议设计
采用Modbus RTU协议与上位机通信,主要功能码:
- 0x03:读取保持寄存器(传感器数据)
- 0x06:写单个寄存器(参数设置)
- 0x10:写多个寄存器(批量配置)
数据帧示例:
code复制[设备地址][功能码][起始地址][寄存器数量][CRC校验]
4. 系统部署与调试
4.1 安装注意事项
-
传感器布置原则:
- 温度传感器距地面1.5米
- 氧气传感器避开通风口
- 空气质量传感器靠近红薯堆放区
-
布线规范:
- 电源线与信号线分开走线
- 使用PVC线槽保护
- 接头处做好防水处理
4.2 参数校准方法
-
温度校准:
- 将DS18B30与标准温度计置于同一环境
- 记录差值作为补偿值写入EEPROM
-
氧气传感器校准:
- 在空气中(20.9%O2)长按校准键3秒
- 等待LED指示灯熄灭表示完成
4.3 常见问题排查
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 温度读数异常 | 传感器接触不良 | 检查连接器是否氧化 |
| 氧气值不变化 | 传感器未预热 | 等待至少3分钟 |
| 通信中断 | 波特率设置错误 | 检查两端波特率是否一致 |
| 频繁误报警 | 阈值设置不合理 | 根据季节调整报警阈值 |
5. 实际应用效果
在河北某红薯种植合作社的实测数据显示:
- 红薯霉变率从8.3%降至1.2%
- 储存周期延长40天
- 人工巡检频次减少80%
系统运行数据对比表:
| 参数 | 改造前 | 改造后 | 改善幅度 |
|---|---|---|---|
| 温度波动 | ±5℃ | ±1℃ | 80% |
| 湿度控制 | 50-90% | 60-70% | 更稳定 |
| 氧气浓度 | 18-23% | 19-21% | 更精准 |
这套系统后续可扩展的功能包括:
- 增加二氧化碳监测模块
- 接入农业物联网平台
- 开发手机APP远程监控
- 增加自动除湿/通风控制
在实际部署中发现,定期(建议每月)用酒精棉清洁传感器探头,能显著延长传感器使用寿命。对于大型红薯窖,可以采用多个监测节点组网的方式,通过RS485总线将数据汇总到主控节点。