基于stm32的物联网花卉种植环境监测系统

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

一、引言

(一)研究背景及意义

随着城市化进程加快和生活品质提升,室内花卉种植成为人们美化环境、陶冶情操的重要方式。然而,传统花卉养护依赖人工经验,难以精准控制水、肥、光、温等关键因素,导致植物生长不良甚至死亡。物联网技术的发展为解决这一问题提供了新思路。本系统通过集成多类传感器和执行器,构建了一个能够自动维持花卉最佳生长环境的智能系统,对于推广智慧农业、降低养护门槛、提升种植成功率具有重要的现实意义。

(二)国内外研究现状

目前国内外智能农业系统多集中于大型温室或农田的监控,针对家庭或小规模花卉种植的集成化、低成本解决方案相对较少。现有产品功能单一,或仅具备监测功能而无自动执行能力。本设计创新性地将土壤湿度、PH值、重量(肥力推断) 等参数监测与环境调控深度融合,提供了一个从监测到执行的完整闭环解决方案,填补了市场空白。

二、系统总体设计

(一)系统架构

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

  1. 感知层:负责采集空气温湿度、土壤湿度、土壤PH值、花盆重量、光照强度等多维数据。

  2. 决策层:以STM32为核心,进行数据融合、处理、阈值判断和控制决策。

  3. 执行层:包括继电器模块(控制风扇、加湿器、水泵、补光灯)、蜂鸣器,负责执行控制指令。

  4. 云边协同层:通过WiFi连接云平台,实现数据远程透传和手机APP交互;OLED和按键提供本地交互。

(二)功能模块划分

  1. 环境监测模块:DHT11(空气温湿度)、光敏电阻(光照)。

  2. 土壤监测模块:土壤湿度传感器、PH传感器。

  3. 重量监测模块:压力传感器(HX711)。

  4. 执行控制模块:继电器(控制风扇、加湿器、水泵、补光灯)、有源蜂鸣器。

  5. 人机交互模块:OLED显示屏、按键。

  6. 通信模块:ESP8266 WiFi模块。

三、硬件设计与实现

(一)系统硬件框架图

1. 主控单元

器件名称推荐型号接口功能说明
STM32单片机STM32F103C8T6-作为系统核心,负责所有传感器的数据采集、执行种植逻辑、控制各执行器、以及与WiFi模块通信。

2. 传感器与输入单元

器件名称推荐型号/类型接口功能说明
温湿度传感器DHT11单总线检测种植环境的空气温度和湿度。
土壤湿度传感器电容式传感器ADC检测土壤体积含水量(%)。电容式不易腐蚀,寿命长。输出模拟电压信号。
PH传感器PH-4502CADC检测土壤或营养液的PH值。输出模拟电压信号,需通过公式转换为PH值(通常0-14范围)。
压力/重量传感器称重传感器 + HX711GPIO (DT, SCK)监测花盆重量。用于判断是否需要浇水或施肥,重量异常减轻可能表示植物缺水。
光敏传感器光敏电阻模块ADC检测环境光照强度。输出模拟电压,光线越强电压越高。
按键模块轻触开关GPIO用于切换自动/手动模式、设置各参数的报警阈值、手动控制设备。

3. 执行器与输出单元

器件名称推荐型号/类型接口功能说明
风扇继电器5V 继电器模块GPIO控制风扇的电源。温度过高时启动,为植物降温。
加湿器继电器5V 继电器模块GPIO控制加湿器的电源。湿度过低时启动,增加环境湿度。
水泵继电器5V 继电器模块GPIO控制水泵的电源。用于浇水或更换营养液。
补光灯继电器5V 继电器模块GPIO控制植物生长灯的电源。光照不足时启动,为植物补光。
有源蜂鸣器5V有源蜂鸣器GPIO当任何参数超限或重量异常时,发出报警声,提醒用户。
OLED显示屏SSD1306I²C实时显示所有监测数据:空气温湿度、土壤湿度、PH值、重量、光照强度,以及系统状态和报警信息。

4. 通信单元

器件名称推荐型号接口功能说明
WiFi模块ESP-01SUARTSTM32通过串口以AT指令与ESP8266通信,将采集到的所有状态数据和报警信息上传至云平台,用户可通过手机APP远程实时监控、手动控制设备、设置阈值。

5. 电源单元

器件名称推荐规格功能说明
电源适配器5V/3A 开关电源为整个控制系统(STM32、传感器、模块)提供稳定的5V电源。
太阳能板5V/2W可选:为系统提供绿色能源,适合户外或阳台使用。

核心控制逻辑说明

1. 环境智能调控(自动模式)

  • 温度控制

    • if (空气温度 > 温度上限) { 启动风扇继电器; } else { 关闭风扇继电器; }

  • 湿度控制

    • if (土壤湿度 < 湿度下限) { 启动加湿器继电器; } else { 关闭加湿器继电器; }

  • PH值调控

    • if (PH值 > PH上限) { 启动水泵继电器(换水); 蜂鸣器报警; } //PH值异常需要更换营养液

  • 光照补偿

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

  • 重量监控

    • if (花盆重量 < 重量下限) { 蜂鸣器报警; OLED显示"可能缺水"; }

    • if (花盆重量 > 重量上限) { 蜂鸣器报警; OLED显示"可能过湿"; }

2. 手动控制模式

  • 通过本地按键强制控制风扇、加湿器、水泵、补光灯的开关。

  • 通过手机APP远程手动控制所有设备,覆盖自动逻辑。

3. 数据上传与显示

  • STM32定期将所有传感器数据和设备状态通过WiFi上传至手机APP。

  • OLED屏幕分页面显示所有参数,主要显示内容:

    • 页面1:温度、湿度、光照状态

    • 页面2:土壤湿度、PH值、重量状态

    • 页面3:设备状态、报警信息

四、软件设计与实现

(一)开发环境搭建

  1. IDE:STM32CubeIDE。

  2. :使用STM32CubeMX配置HAL库,初始化GPIO、ADC、I2C等外设。

  3. 驱动与协议:需编写DHT11、HX711、OLED、ESP8266(AT指令)等驱动程序。

(二)系统软件流程图

(三)关键软件模块实现

1. 传感器数据读取与计算

// 读取HX711获取重量值 (需校准)
long HX711_Get_Weight() {
  if (HX711_Is_Ready()) {
    long count = HX711_Read();
    // 校准公式: Weight = (Count - Offset) / Scale
    float weight = (count - calibration_offset) / calibration_scale;
    return (long)weight;
  }
  return 0;
}

// 读取PH值 (需校准)
float Read_PH_Value() {
  int analogValue = HAL_ADC_GetValue(&hadc1); // 假设PH接在ADC1
  float voltage = analogValue * (3.3 / 4095.0); // 转换为电压值
  // PH值计算: phValue = (voltage * PH_SLOPE) + PH_OFFSET; 需用标准液校准
  float phValue = (voltage * 3.5) + 4.0; // 示例公式,必须校准!
  return phValue;
}

2. 自动控制逻辑实现

void Auto_Control_Logic(void) {
  // 1. 温度控制
  if (air_temperature > temp_high_threshold) {
    Fan_On();
  } else {
    Fan_Off();
  }

  // 2. 土壤湿度控制
  if (soil_moisture < soil_moisture_low_threshold) {
    Humidifier_On(); // 打开加湿器(或水泵进行滴灌)
  } else if (soil_moisture > soil_moisture_high_threshold) {
    Humidifier_Off();
    // 土壤过湿,可以附加报警
  }

  // 3. PH值控制
  if (ph_value > ph_high_threshold) {
    Water_Pump_On(); // PH过高,启动换水流程(需与排水配合)
    // 实际应用中,换水可能需要更复杂的时序控制
  } else {
    Water_Pump_Off();
  }

  // 4. 光照控制
  if (light_intensity < light_threshold) {
    Grow_Light_On();
  } else {
    Grow_Light_Off();
  }

  // 5. 重量报警(用于监测积水或过度施肥)
  if (pot_weight > weight_threshold) {
    Buzzer_On_Intermitent(); // 间歇性报警
  } else {
    Buzzer_Off();
  }
}

3. 云平台数据上报(JSON格式)

void Publish_Sensor_Data(void) {
  cJSON *root = cJSON_CreateObject();
  cJSON_AddNumberToObject(root, "air_temp", air_temperature);
  cJSON_AddNumberToObject(root, "air_humi", air_humidity);
  cJSON_AddNumberToObject(root, "soil_moisture", soil_moisture);
  cJSON_AddNumberToObject(root, "ph", ph_value);
  cJSON_AddNumberToObject(root, "weight", pot_weight);
  cJSON_AddNumberToObject(root, "light", light_intensity);
  cJSON_AddBoolToObject(root, "fan", fan_state);
  cJSON_AddBoolToObject(root, "pump", pump_state);
  cJSON_AddBoolToObject(root, "light_ctl", light_state);

  char *json_data = cJSON_Print(root);
  ESP8266_MQTT_Publish("flower/env/data", json_data);

  cJSON_Delete(root);
  free(json_data);
}

五、系统测试与优化

(一)测试方案

  1. 传感器校准测试

    • PH传感器:使用标准PH缓冲液(如PH4.0, PH7.0, PH10.0)进行多点校准,建立电压-PH值对应曲线。

    • 重量传感器:放置已知重量的砝码,校准HX711的Offset和Scale参数。

    • 土壤湿度传感器:在完全干燥和完全浸水的土壤中读取ADC值,确定阈值。

  2. 功能与联动测试

    • 用电吹风加热DHT11,测试风扇是否启动。

    • 干燥土壤中浇水,测试加湿器是否停止工作。

    • 用醋或小苏打溶液模拟PH变化,测试换水泵是否启动。

    • 遮挡光敏电阻,测试补光灯是否开启。

    • 向花盆加重物,测试蜂鸣器是否报警。

  3. 云端测试:测试APP能否实时显示数据,并远程控制各执行器开关。

(二)优化方向

  1. 软件优化

    • 历史数据记录与趋势分析:在云平台端记录历史数据,并绘制变化曲线,帮助用户分析植物生长与环境的关系。

    • 浇水策略优化:浇水并非简单的“低于阈值就开”,可采用PID控制模糊控制,根据土壤湿度变化率动态调整浇水时间,防止过度浇水。

    • 看门狗与断线重连:加入看门狗防止死机,并为ESP8266编写强大的网络重连机制。

  2. 硬件优化

    • 太阳能供电:为系统增加太阳能电池板和小型蓄电池,实现能源自给,更适合户外或阳台部署。

    • 传感器防护:土壤传感器和PH电极需做防腐蚀处理,延长其使用寿命。

六、结论与关键设计

(一)结论

本项目成功设计并实现了一个高度集成、功能强大的智能花卉种植监控系统。系统不仅实现了对花卉生长环境的全方位监测,更建立了从感知到执行的完整闭环自动控制,并通过物联网技术实现了便捷的远程管理。经过测试,系统运行稳定,控制准确,达到了预期设计目标,为现代智能农业和家庭园艺提供了一个优秀的解决方案。

(二)关键设计

  1. 传感器校准与精度

    • PH传感器: 需要定期校准,使用标准PH缓冲液(PH4.0、PH7.0、PH10.0)进行三点校准。

    • 重量传感器: 需要去皮操作和重量校准,确保测量准确。

    • 土壤湿度传感器: 不同土壤类型的校准值不同,需要根据实际土壤进行校准。

  2. 防水设计

    • 土壤湿度、PH等接触水分的传感器需要做防水处理。

    • 电路板应喷涂三防漆,防止潮湿环境损坏。

  3. 控制策略优化

    • 采用模糊控制或PID算法,避免设备频繁启停。

    • 设置设备最小运行时间,防止短时间內反复开关。

  4. 植物适应性

    • 不同花卉对环境要求不同,APP应提供常见花卉的推荐参数设置。

    • 支持自定义种植方案,可设置不同生长阶段的参数要求。

  5. 节能设计

    • 根据植物光周期自动调节补光时间。

    • 支持定时任务,如在电价低谷时段进行加湿、补水等操作。

  6. 用户体验

    • APP界面应直观显示植物生长环境数据,提供历史曲线图。

    • 设置智能提醒功能,如"需要浇水"、"需要施肥"等提醒。

    • 支持多设备管理,可同时监控多个花盆。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

殷忆枫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值