基于stm32的智能植物工厂检测系统

若该文为原创文章,转载请注明原文出处。

摘要:本文设计并实现了一种基于STM32F407微控制器的智能植物工厂综合管理系统。系统集成温湿度传感器、光照传感器、土壤湿度传感器和水质TDS传感器,全方位监测植物生长环境。支持手动与自动双模式,可根据预设阈值自动控制补光灯、风扇、加湿器、水泵等执行机构,精准调控环境参数。通过OLED显示屏提供本地人机交互,并通过ESP32模块实现Wi-Fi/蓝牙双模通信,用户可通过手机APP远程实时监控环境数据、接收报警信息并手动控制设备,实现了植物工厂的智能化、精准化和无人化运维。

关键词:STM32;植物工厂;精准农业;环境控制;物联网;智慧农业


一、引言

(一)研究背景及意义

植物工厂作为一种高科技农业生产方式,通过人工环境控制实现作物的全年高效生产。然而,传统植物工厂环境调控依赖人工经验,难以实现多参数协同优化,制约了生产效率和品质的提升。本项目旨在开发一套集环境监测、智能决策、自动控制和远程管理于一体的智能系统,通过对光、温、水、气等关键因子的精准调控,为植物创造最佳生长环境,对于推动现代农业发展、保障粮食安全、提升农业效益具有重大意义。

(二)国内外研究现状

目前高端植物工厂已采用自动化控制系统,但多为进口设备,价格昂贵且系统封闭。国内相关系统功能单一,缺乏多参数协同优化。本设计基于STM32平台,集成多种传感器和执行器,提供了一个成本可控、功能全面、可定制性强的智能植物工厂解决方案。

二、系统总体设计

(一)系统架构

本系统采用"全面感知-智能决策-精准执行-云边协同"的四层架构:

  1. 感知层:温湿度传感器、光照传感器、土壤湿度传感器、TDS传感器

  2. 决策层:STM32F407主控,进行数据融合处理和智能决策

  3. 执行层:补光灯、风扇、加湿器、水泵等执行机构

  4. 交互层:OLED显示屏、按键(本地交互);ESP32模块(远程交互)

(二)系统拓扑图

三、硬件设计与实现

(一)系统硬件框架图

系统硬件配置与功能说明表

1. 主控单元

器件名称推荐型号接口功能说明
STM32单片机STM32F103C8T6-作为系统核心,负责多传感器数据采集、环境控制逻辑、执行器控制、通信处理。

2. 环境监测传感器

器件名称推荐型号/类型接口功能说明
温湿度传感器SHT30I²C高精度监测环境温湿度,温度范围-40-125°C,湿度0-100%RH。
光照传感器BH1750I²C检测光照强度,范围1-65535 lux,用于补光控制。
土壤湿度传感器电容式传感器ADC监测土壤体积含水量,0-100%范围,防腐蚀设计。
水质TDS传感器TDS检测模块ADC监测营养液浓度,范围0-1000ppm,确保植物养分供应。
按键模块轻触开关GPIO用于设置各参数阈值、切换自动/手动模式、手动控制设备。

3. 智能执行器单元

器件名称推荐型号/类型接口功能说明
补光灯继电器5V 继电器模块GPIO控制植物生长灯,根据光照强度自动补光。
风扇继电器5V 继电器模块GPIO控制通风风扇,调节温度和湿度。
加湿器继电器5V 继电器模块GPIO控制加湿设备,维持环境湿度。
换水水泵继电器5V 继电器模块GPIO控制营养液循环和更换。
OLED显示屏SSD1306I²C实时显示环境参数和设备状态。

4. 通信单元

器件名称推荐型号接口功能说明
WiFi模块ESP-01SUART远程数据传输,连接云平台,实现远程监控和控制。
蓝牙模块HC-05UART近场通信,手机APP直接连接配置和实时控制。

核心控制逻辑说明

1. 自动环境调控系统

  • 智能补光控制

    • if (光照强度 < 设定阈值) { 启动补光灯; } else { 关闭补光灯; }

    • 支持光周期控制,模拟日出日落

  • 温湿度调控

    • if (温度 > 上限) { 启动风扇降温; }

    • if (湿度 < 下限) { 启动加湿器; }

    • if (温度 < 下限) { 关闭风扇; }

  • 灌溉管理

    • if (土壤湿度 < 设定值) { 启动灌溉系统; }

    • 定时循环灌溉,避免积水

  • 营养液管理

    • if (TDS值 < 下限) { 提示添加营养液; }

    • if (TDS值 > 上限) { 启动换水系统; }

2. 手动控制模式

  • 通过按键或APP手动控制各设备

  • 手动模式下自动控制逻辑暂停

  • 仍保持安全保护功能

3. 数据显示界面

OLED轮巡显示:

页面1: 环境监测
温度: 25.6°C  湿度: 65%RH
光照: 45000lux

页面2: 土壤水质
土壤湿度: 45%  TDS: 350ppm
状态: 自动模式

页面3: 设备状态
补光:ON 风扇:OFF
加湿:OFF 水泵:OFF

4. 远程监控功能

  • APP实时显示

    • 所有环境参数实时数据

    • 设备运行状态

    • 历史数据趋势图表

  • APP远程控制

    • 远程开关各设备

    • 调整参数阈值

    • 设置定时任务

    • 接收异常报警通知

四、软件设计与实现

(一)系统软件架构

基于FreeRTOS实时操作系统,创建多任务处理架构:

void main(void)
{
    // 硬件初始化
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_I2C_Init();
    MX_ADC_Init();
    MX_USART2_UART_Init(); // for ESP32
    
    // 创建FreeRTOS任务
    xTaskCreate(Sensor_Reading_Task, "Sensor", 2048, NULL, 3, NULL);
    xTaskCreate(Control_Task, "Control", 2048, NULL, 4, NULL);
    xTaskCreate(Display_Task, "Display", 1024, NULL, 2, NULL);
    xTaskCreate(Communication_Task, "Comm", 4096, NULL, 3, NULL);
    xTaskCreate(UI_Task, "UI", 1024, NULL, 1, NULL);
    
    vTaskStartScheduler();
}

(二)智能控制算法

// 多参数协同控制算法
void Intelligent_Control_Algorithm(void)
{
    // 1. 光照控制 - 自动补光
    if (light_intensity < light_setpoint - LIGHT_HYSTERESIS) {
        LED_Grow_Light_On();
        OLED_ShowStatus("AUTO: LED ON");
    } else if (light_intensity >= light_setpoint) {
        LED_Grow_Light_Off();
    }
    
    // 2. 温度控制 - 自动风扇
    if (temperature > temp_setpoint + TEMP_HYSTERESIS) {
        Fan_On();
        OLED_ShowStatus("AUTO: FAN ON");
    } else if (temperature <= temp_setpoint) {
        Fan_Off();
    }
    
    // 3. 湿度控制 - 自动加湿
    if (humidity < humidity_setpoint - HUMIDITY_HYSTERESIS) {
        Humidifier_On();
        OLED_ShowStatus("AUTO: HUMIDIFIER ON");
    } else if (humidity >= humidity_setpoint) {
        Humidifier_Off();
    }
    
    // 4. 土壤湿度控制 - 自动灌溉
    if (soil_moisture < soil_setpoint - SOIL_HYSTERESIS) {
        Water_Pump_On();
        OLED_ShowStatus("AUTO: WATERING");
    } else if (soil_moisture >= soil_setpoint) {
        Water_Pump_Off();
    }
    
    // 5. 水质控制 - 自动换水
    if (tds_value > tds_setpoint) {
        Drain_Pump_On();
        OLED_ShowStatus("AUTO: WATER CHANGE");
        vTaskDelay(pdMS_TO_TICKS(30000)); // 排水30秒
        Drain_Pump_Off();
        Fresh_Water_Pump_On();
        vTaskDelay(pdMS_TO_TICKS(60000)); // 注水60秒
        Fresh_Water_Pump_Off();
    }
}

(三)参数设置与存储

// EEPROM参数存储结构
typedef struct {
    float temp_setpoint;        // 温度设定值
    float humidity_setpoint;    // 湿度设定值
    uint16_t light_setpoint;    // 光照设定值
    uint8_t soil_setpoint;      // 土壤湿度设定值
    uint16_t tds_setpoint;      // TDS设定值
    uint8_t work_mode;          // 工作模式
    uint32_t checksum;          // 校验和
} System_Params_t;

// 参数设置函数
void Parameter_Setting_Handler(uint8_t key)
{
    static uint8_t setting_step = 0;
    
    switch(setting_step) {
        case 0: // 选择参数类型
            if (key == KEY_UP) cursor_position++;
            if (key == KEY_DOWN) cursor_position--;
            if (key == KEY_OK) setting_step = 1;
            break;
            
        case 1: // 调整参数值
            if (key == KEY_UP) increase_parameter();
            if (key == KEY_DOWN) decrease_parameter();
            if (key == KEY_OK) {
                Save_Parameters_To_EEPROM();
                setting_step = 0;
            }
            if (key == KEY_BACK) setting_step = 0;
            break;
    }
    
    Update_Display_Setting();
}

// 保存参数到EEPROM
void Save_Parameters_To_EEPROM(void)
{
    System_Params_t params;
    
    params.temp_setpoint = temp_setpoint;
    params.humidity_setpoint = humidity_setpoint;
    params.light_setpoint = light_setpoint;
    params.soil_setpoint = soil_setpoint;
    params.tds_setpoint = tds_setpoint;
    params.work_mode = work_mode;
    params.checksum = Calculate_Checksum(&params);
    
    HAL_FLASH_Unlock();
    // 写入Flash模拟EEPROM
    for(uint32_t i = 0; i < sizeof(params); i += 4) {
        HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, EEPROM_BASE_ADDR + i, 
                         *((uint32_t*)((uint8_t*)&params + i)));
    }
    HAL_FLASH_Lock();
}

(四)通信协议设计

// 自定义通信协议格式
typedef struct {
    uint8_t header[2];          // 帧头:0xAA, 0x55
    uint8_t device_id;          // 设备ID
    uint8_t command_type;       // 命令类型
    uint8_t data_length;        // 数据长度
    uint8_t data[16];           // 数据内容
    uint8_t checksum;           // 校验和
} Communication_Frame_t;

// 数据处理函数
void Process_Received_Data(uint8_t* data, uint16_t length)
{
    Communication_Frame_t* frame = (Communication_Frame_t*)data;
    
    // 验证帧头和校验和
    if (frame->header[0] == 0xAA && frame->header[1] == 0x55 && 
        frame->checksum == Calculate_Checksum(frame)) {
        
        switch(frame->command_type) {
            case CMD_SET_PARAM:
                Handle_Set_Parameter(frame->data);
                break;
                
            case CMD_GET_DATA:
                Send_Sensor_Data();
                break;
                
            case CMD_CONTROL:
                Handle_Control_Command(frame->data);
                break;
                
            case CMD_MODE_CHANGE:
                work_mode = frame->data[0];
                break;
        }
    }
}

// 发送传感器数据
void Send_Sensor_Data(void)
{
    cJSON* root = cJSON_CreateObject();
    
    cJSON_AddNumberToObject(root, "temperature", temperature);
    cJSON_AddNumberToObject(root, "humidity", humidity);
    cJSON_AddNumberToObject(root, "light", light_intensity);
    cJSON_AddNumberToObject(root, "soil_moisture", soil_moisture);
    cJSON_AddNumberToObject(root, "tds", tds_value);
    cJSON_AddBoolToObject(root, "led_status", led_status);
    cJSON_AddBoolToObject(root, "fan_status", fan_status);
    cJSON_AddBoolToObject(root, "pump_status", pump_status);
    
    char* json_str = cJSON_Print(root);
    ESP32_Send_Data(json_str);
    
    cJSON_Delete(root);
    free(json_str);
}

五、系统测试与优化

(一)测试方案

  1. 传感器精度测试:使用标准仪器对比校准各传感器

  2. 控制响应测试:测试各执行机构的响应时间和控制精度

  3. 通信可靠性测试:测试Wi-Fi和蓝牙在不同距离下的稳定性

  4. 系统稳定性测试:连续运行72小时测试系统稳定性

(二)性能优化

  1. PID控制算法:采用增量式PID算法提高控制精度

  2. 数据滤波处理:采用卡尔曼滤波处理传感器数据

  3. 功耗优化:采用休眠模式降低待机功耗

  4. 通信优化:采用数据压缩减少通信流量

六、结论与创新点

(一)结论

本项目成功设计并实现了一个功能完善、性能稳定的智能植物工厂控制系统。系统通过多参数协同控制,实现了对植物生长环境的精准调控,为植物工厂的智能化管理提供了完整的解决方案。

(二)创新点

  1. 多参数协同优化:首次实现光、温、水、气等多参数协同控制

  2. 双模通信设计:支持Wi-Fi和蓝牙双模通信,适应不同应用场景

  3. 智能决策算法:基于植物生长模型的环境参数优化算法

  4. 模块化设计:硬件和软件均采用模块化设计,便于扩展和维护

(三)关键设计注意事项

  1. 精确环境控制

    • 采用PID算法实现精确温湿度控制

    • 光照控制支持PWM调光,平滑调节

    • 多传感器数据融合,提高控制精度

  2. 节能优化设计

    • 根据植物生长阶段调整环境参数

    • 夜间自动降低能耗

    • 智能调度设备运行时间

  3. 安全保护机制

    • 设备运行状态监控

    • 过载和短路保护

    • 异常情况自动报警

  4. 用户友好设计

    • 多植物预设方案(叶菜、果菜、花卉等)

    • 一键式操作界面

    • 生长数据记录和分析

  5. 系统可靠性

    • 看门狗定时器防死机

    • 数据备份和恢复功能

    • 网络中断时本地自动运行

  6. 扩展功能

    • 支持CO₂浓度监测

    • pH值监测功能

    • 多区域独立控制

    • 摄像头生长监控

如有侵权,或需要完整代码,请及时联系博主。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷忆枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值