基于STM32单片机的OneNet物联网云平台农业土壤湿度控制系统

1 功能介绍

随着农业现代化的发展,传统的人工灌溉方式已经难以满足精准农业的需求。本设计基于STM32单片机,结合土壤湿度检测模块、OLED显示模块、WiFi通信模块和继电器控制电路,构建了一个智能化的农业土壤湿度控制系统。该系统能够实时采集土壤湿度数据并上传至中国移动的OneNet物联网云平台,用户可通过平台远程监控与控制灌溉设备,实现智能化农业灌溉管理。

本系统的主要功能如下:

  1. 数据采集与上传:通过土壤湿度传感器实时采集湿度数据,STM32单片机进行处理后,通过ESP8266 WiFi模块上传至OneNet云平台。

  2. 显示功能:OLED显示屏实时显示湿度值、当前工作模式以及水泵状态,方便用户在本地查看系统运行情况。

  3. 双模式运行

    • 自动模式:系统根据设定的湿度阈值自动开启或关闭水泵,当湿度高于上限时关闭水泵,低于下限时开启水泵。
    • 手动模式:用户可通过按键或云平台发送指令手动控制水泵的启停。
  4. 远程控制:通过OneNet云平台发送控制命令(如“auto”、“manual”、“open”、“close”),实现远程控制与模式切换。

  5. 报警与保护:在检测到数据异常或网络中断时,可提示用户检查系统运行状态,保证农业生产的可靠性。


2 系统电路设计

本系统硬件由STM32单片机核心板及外围电路构成,主要包括土壤湿度检测电路、OLED显示电路、WiFi通信电路、继电器控制电路、按键电路和电源电路。

2.1 单片机核心电路

系统采用STM32F103C8T6作为控制核心,该芯片基于ARM Cortex-M3内核,具备如下优势:

  1. 主频高达72MHz,能满足实时数据采集与处理需求。
  2. 丰富的GPIO接口,方便连接各类传感器与外设。
  3. 内置USART、I2C、SPI等通信接口,便于与OLED、WiFi模块进行数据交互。
  4. 拥有低功耗特性,适用于长时间农业环境监控。

单片机主要任务是采集土壤湿度信号、进行数据处理、控制继电器开关、刷新OLED显示,并与WiFi模块进行通信。

2.2 土壤湿度检测电路

土壤湿度检测模块一般由电阻式传感器或电容式传感器组成。本设计选用电容式土壤湿度传感器,具有以下优点:

  1. 输出为模拟电压信号,反映土壤湿度的大小。
  2. 受土壤盐分影响小,抗干扰能力强。
  3. 通过STM32内部ADC模块将模拟信号转换为数字信号,供后续处理与显示使用。

STM32通过定时采样将湿度数据存储,并在OLED显示和OneNet上传时调用。

2.3 OLED显示电路

OLED显示模块采用I2C通信方式,分辨率为128×64像素。主要显示内容包括:

  1. 当前土壤湿度值。
  2. 系统运行模式(自动/手动)。
  3. 水泵当前状态(开启/关闭)。
  4. WiFi连接状态提示。

OLED的低功耗与高对比度特性使其适合在室外农业场景中使用。

2.4 WiFi通信电路

WiFi通信模块采用ESP8266,连接至中国移动OneNet物联网平台。其作用包括:

  1. 将采集到的湿度数据上传至云端。
  2. 接收来自云平台的控制命令,解析并执行。
  3. 维持稳定的MQTT连接,保证数据交互的实时性。

STM32通过USART接口与ESP8266进行通信,采用AT指令或透传模式实现数据上传与下发。

2.5 继电器控制电路

继电器电路用于驱动水泵,实现灌溉控制。设计中采用5V驱动继电器,配合三极管放大电路进行控制,特点如下:

  1. 继电器常开触点用于控制水泵电源的通断。
  2. 通过单片机输出高低电平驱动三极管,从而实现对继电器的控制。
  3. 在水泵开启或关闭时,OLED显示与云平台状态保持同步。

2.6 按键电路

系统设计了多个独立按键,主要功能如下:

  1. 模式切换键:在手动与自动模式之间切换。
  2. 启动/停止键:在手动模式下用于控制水泵开关。
  3. 设置键:可用于修改湿度阈值,满足不同作物的灌溉需求。

按键采用下拉电阻设计,保证输入电平的稳定性。

2.7 电源电路

系统电源部分采用DC 12V输入,经过降压模块提供5V给继电器与OLED,再通过AMS1117-3.3稳压芯片提供3.3V电压给STM32和ESP8266。电源电路设计中增加了电容滤波和稳压模块,以保证在水泵启动瞬间不会引起系统电压波动。


3 程序设计

系统软件设计采用模块化结构,主要分为主程序、土壤湿度检测程序、OLED显示程序、WiFi通信程序、继电器控制程序和按键扫描程序。

3.1 主程序设计

主程序负责系统初始化、模式管理、任务调度与数据交互。主要流程为:初始化外设 → 循环检测按键 → 采集湿度 → 上传数据 → 判断模式与阈值 → 控制水泵 → 刷新显示。

int main(void)
{
    SystemInit();
    OLED_Init();
    USART_Init(115200);
    WIFI_Init();
    ADC_Init();
    Relay_Init();
    Key_Init();

    while(1)
    {
        uint16_t soil = Get_Soil_Humidity();
        OLED_ShowNum(0,0,soil,4,16);
        WIFI_Upload(soil);

        Mode_Process(soil);
        Key_Scan();
    }
}

3.2 土壤湿度检测程序

通过STM32 ADC模块采集传感器输出电压,并换算为湿度百分比。

uint16_t Get_Soil_Humidity(void)
{
    uint16_t adc_value = ADC_GetConversionValue(ADC1);
    uint16_t humidity = (adc_value * 100) / 4095; // 转换为百分比
    return humidity;
}

3.3 OLED显示程序

OLED模块用于显示湿度、模式与水泵状态。

void OLED_Display(uint16_t humidity, uint8_t mode, uint8_t pump)
{
    OLED_ShowString(0,0,"Soil:");
    OLED_ShowNum(40,0,humidity,3,16);
    OLED_ShowString(0,2, mode ? "Auto" : "Manual");
    OLED_ShowString(0,4, pump ? "Pump ON" : "Pump OFF");
}

3.4 WiFi通信程序

WiFi通信模块通过MQTT协议与OneNet云平台交互,支持数据上传与命令接收。

void WIFI_Upload(uint16_t humidity)
{
    char data[50];
    sprintf(data,"{\"soil\":%d}",humidity);
    ESP8266_SendData(data);
}

void WIFI_ReceiveCmd(char *cmd)
{
    if(strcmp(cmd,"auto")==0) system_mode = 1;
    else if(strcmp(cmd,"manual")==0) system_mode = 0;
    else if(strcmp(cmd,"open")==0) Relay_On();
    else if(strcmp(cmd,"close")==0) Relay_Off();
}

3.5 继电器控制程序

根据湿度值与模式状态,自动或手动控制水泵开关。

void Mode_Process(uint16_t humidity)
{
    if(system_mode) // 自动模式
    {
        if(humidity < min_threshold) Relay_On();
        else if(humidity > max_threshold) Relay_Off();
    }
}

3.6 按键扫描程序

通过按键进行模式切换和水泵控制。

void Key_Scan(void)
{
    if(KEY_MODE == 0)
    {
        delay_ms(20);
        if(KEY_MODE == 0)
        {
            system_mode = !system_mode;
        }
    }
    if(KEY_CTRL == 0 && !system_mode)
    {
        delay_ms(20);
        if(KEY_CTRL == 0)
        {
            pump_state = !pump_state;
            if(pump_state) Relay_On();
            else Relay_Off();
        }
    }
}

4 总结

本设计基于STM32单片机,结合土壤湿度检测、OLED显示、WiFi通信与继电器驱动,成功实现了农业土壤湿度的智能化控制。通过接入OneNet物联网云平台,用户能够实时获取土壤湿度数据,并进行远程操作,满足农业生产对智能灌溉的需求。

系统的主要特点如下:

  1. 采用自动与手动双模式,提高了灵活性与可靠性。
  2. 支持云平台远程控制,便于大规模农业场景管理。
  3. 硬件电路设计简洁,模块化程度高,便于扩展。
  4. 程序设计结构清晰,具有良好的可移植性和可维护性。

本系统不仅能应用于农业灌溉,还可以扩展到园林绿化、温室大棚等领域,具有广阔的应用前景。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐