基于 STM32 的地温监测与报送系统设计

精准农业要求对土壤温度变化进行长期、连续的监测。本文设计一种基于 STM32F103C8T6 的地温监测与报送系统,整合 DHT11 温度采集、ESP8266 无线传输与 OLED12864 本地显示,并通过 MQTT 协议将数据上报到云端服务器,使农业工作者能够远程查看土壤温度曲线并据此指导种植活动。

一、系统功能总览

功能编号功能名称说明
F1地温采集DHT11 测量土壤温度
F2实时显示OLED12864 显示当前温度
F3阈值报警温度越界蜂鸣器报警
F4MQTT 上报ESP8266 + 阿里云 IoT
F5历史曲线云端生成温度变化曲线
F6远程配置APP / 网页下发阈值
F7太阳能供电配合 5 V 太阳能板与锂电池

二、核心模块选型对比

2.1 主控模块选型

方案型号备注
方案 1STM32F103C8T6主频 72 MHz / 64 KB / 20 KB
方案 251 STC89C52资源紧张、低功耗实现复杂

选择方案 1:需要驱动 MQTT、OLED 与 ESP8266。

2.2 温度模块选型

方案型号接口
方案 1DHT11单总线
方案 2DS18B20(防水型)单总线、量程更宽

选择方案 1:DHT11 单总线接线简单、量程契合本场景。如果需要更宽量程可替换为 DS18B20 防水型。

2.3 无线模块选型

方案模块优势
方案 1ESP8266直连 Wi-Fi、AT 指令简洁
方案 2SIM800(4G)无需 Wi-Fi,但流量成本高

选择方案 1:田间一般有 Wi-Fi 覆盖时更经济。

2.4 显示模块选型

方案模块说明
方案 1OLED12864文本清晰
方案 2LCD1602文字有限

选择方案 1:在小尺寸下显示更多信息。

三、系统接线总表

模块引脚单片机端备注
DHT11VCC/GND/DATA3.3 V / GND / PA1防水探头,4.7 kΩ 上拉
OLED12864VCC/GND/SCL/SDA3.3 V / GND / PB6 / PB7I2C
ESP8266VCC/GND/TX/RX/CH_PD/RST3.3 V / GND / PA10/PA9/3.3 V/PA11UART
蜂鸣器+/-PB5 / GND三极管
太阳能板+/-5 V 控制器 / GND锂电池储能

四、系统软件设计

4.1 主程序流程

int main(void)
{
    SystemInit();
    DHT11_Init();
    OLED_Init();
    ESP8266_Init();
    ESP8266_JoinAP("ssid", "pwd");
    MQTT_Connect("aliyun");

    while (1)
    {
        float t = DHT11_Read();
        OLED_ShowTemp(t);
        MQTT_Publish("field/temp", String(t));
        if (t < TEMP_LO || t > TEMP_HI) Beep_Alarm();
        delay_ms(5000);
    }
}

4.2 单总线协议

DHT11 主机拉低 18 ms → 释放 → 30 μs 后等待响应 → 串行读取 40 位 → 校验后返回温度。

4.3 MQTT 通信

使用 AT+CIPSTART 建立 TCP 长连接 → AT+CIPSEND 透传模式 → 发送 CONNECT 报文 → 订阅 / 发布主题 field/temp

五、系统实现与测试

5.1 硬件焊接与测试

将防水探头插入土壤中,深度 10 cm;ESP8266 天线部分朝上放置以获得更佳信号。

5.2 软件调试

Keil 5 + ST-Link;通过串口日志显示每条 MQTT 报文。

5.3 功能测试结果

测试项目操作结果
温度采集室温与地温互比偏差 ≤ ±2 ℃
续航1000 mAh 锂电池约 5 天
远程上报网络断开重连1 min 内恢复
阈值报警设置 15 ℃ 报警越限蜂鸣器响应

六、总结

本文围绕 STM32F103C8T6 构建了一套实用化的地温采集与上报系统,整合 DHT11、ESP8266、OLED 等模块,结合 MQTT 协议实现了云端实时同步。整套方案电路简单、结构紧凑,可广泛应用于农田、果园、苗圃等场景,也为高职院校嵌入式与物联网课程提供了一个易复刻的工程参考。

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

八、资料获取方式

更多推荐