基于FireBeetle 2 ESP32-C5的智能植物光照系统——物联网农业实践

在家庭种植和小型温室场景中,植物生长环境的光照、温湿度等参数对植物生长状态影响显著。本文将介绍一个基于FireBeetle 2 ESP32-C5开发的智能植物光照控制系统,该系统能够自动监测环境参数并智能调节光照,帮助植物在最佳环境中生长。

项目概述

本系统以FireBeetle 2 ESP32-C5为控制核心,集成了光照传感器、温湿度传感器(DHT11)、土壤湿度传感器等感知设备,以及WS2812 LED灯带作为光照输出设备。通过模块化设计实现了环境监测、光照智能控制、数据展示和远程管理等功能,具体特点包括:

  • 实时监测光照强度、环境温湿度、土壤湿度等参数
  • 支持自动和手动两种光照控制模式,可模拟植物不同生长阶段的光照需求
  • 本地OLED屏幕显示关键数据,同时提供Web页面实现远程监控与控制
  • 具备日志记录功能,便于追溯环境变化和系统操作

硬件设计

核心组件清单

组件 型号/规格 用途
主控 ESP32开发板 系统控制核心
光照传感器 模拟量输出 检测环境光照强度
温湿度传感器 DHT11 检测环境温度和湿度
土壤湿度传感器 模拟量输出 检测土壤湿度
显示设备 12864 OLED屏幕(I2C) 本地数据展示
光照设备 WS2812 LED灯带(24灯珠) 提供植物生长所需光照

引脚连接

系统引脚定义在Config.h中集中管理,主要连接如下:

cpp 复制代码
// 引脚定义(与硬件接线一致)
#define Moisture_Pin A4    // 土壤湿度传感器 AO 引脚
#define LED_PIN A3         // NeoPixel LED 数据引脚
#define LIGHT_SENSOR_PIN A2// 光照传感器 AO 引脚
#define DHT_PIN A1         // DHT11 数据引脚
#define LED_COUNT 24       // LED 灯珠数量

// OLED 配置
#define SCREEN_WIDTH 128   // OLED 宽度(像素)
#define SCREEN_HEIGHT 64   // OLED 高度(像素)
#define OLED_SDA 9         // OLED SDA 引脚
#define OLED_SCL 10        // OLED SCL 引脚

软件架构

系统采用模块化设计,各功能模块职责清晰,便于维护和扩展。主要模块包括:

核心模块介绍

  1. 配置模块(Config.h/.cpp)

    系统配置中心,定义全局常量、引脚映射、全局变量和通用工具函数,集中管理WiFi、NTP等配置参数。

  2. 传感器模块(SensorModule.h/.cpp)

    负责所有传感器的数据采集与处理,包括:

    • 初始化传感器设备
    • 定时读取光照、温湿度、土壤湿度数据
    • 进行数据校验和异常判断(如温度过高/过低警告)

    核心代码示例:

    cpp 复制代码
    // 读取所有传感器数据
    void readSensors() {
      // 读取光照传感器
      int lightValue = analogRead(LIGHT_SENSOR_PIN);
      currentLux = lightValue;
      
      // 读取温湿度传感器
      float temp = dht.readTemperature();
      float humi = dht.readHumidity();
      if (!isnan(temp) && !isnan(humi)) {
        currentTemp = temp;
        currentHumidity = humi;
      }
      
      // 读取土壤湿度并转换为百分比
      currentSoilMoisture = analogRead(Moisture_Pin);
      soilMoisturePercentage = constrain(100 - map(currentSoilMoisture, 1000, 3500, 0, 100), 0, 100);
    }
  3. 光照控制模块(LightControlModule.h/.cpp)

    实现光照智能控制逻辑,支持:

    • 自动模式:根据时间调度表自动调节光照参数
    • 手动模式:提供生长、开花、育苗三种预设模式
    • 基于环境光强度动态调整LED亮度

    光照调度表示例:

    cpp 复制代码
    LightSchedule schedules[] = {
      { 6, 8, 100, 50, 30, "Early morning" },
      { 8, 12, 255, 150, 100, "Morning" },
      { 12, 14, 200, 200, 150, "Noon" },
      { 14, 18, 255, 180, 120, "Afternoon" },
      { 18, 20, 150, 100, 80, "Evening" },
      { 20, 6, 0, 10, 5, "Night" }
    };
  4. 显示模块(OledDisplayModule.h/.cpp)

    控制OLED屏幕显示系统状态和环境数据,包括:

    • 启动画面显示
    • 实时更新传感器数据
    • 显示系统时间和运行状态
  5. 网络与Web服务模块(WiFiNtpModule.h/.cpp & WebServerModule.h/.cpp)

    实现网络连接和远程控制功能:

    • WiFi连接管理和自动重连
    • NTP时间同步
    • Web服务器提供HTTP接口和控制页面
  6. 日志模块(LogModule.h/.cpp)

    通过SPIFFS文件系统实现日志记录功能,包括:

    • 系统事件和传感器数据记录
    • 日志读取和清空操作
    • 日志条目数量限制

系统工作流程

  1. 初始化阶段:系统启动后依次初始化各模块,包括传感器、OLED屏幕、WiFi和NTP服务、LED灯带等,并显示启动画面。

  2. 运行阶段

    • 按5秒间隔读取传感器数据并进行异常判断
    • 按2秒间隔更新OLED显示内容
    • 按1分钟间隔在自动模式下更新光照参数
    • 维持WiFi连接,提供Web服务支持远程访问
  3. 光照控制逻辑

    • 自动模式下根据当前时间匹配光照调度表,结合环境光强度动态调节RGB亮度
    • 手动模式下响应Web指令切换预设模式或调整亮度参数

远程控制实现

系统通过Web服务器提供远程监控和控制界面,主要功能包括:

  • 查看实时环境数据(光照、温湿度、土壤湿度)
  • 切换光照模式(自动/生长/开花/育苗)
  • 手动调节RGB灯珠亮度
  • 查看和清空系统日志

Web服务器路由配置:

cpp 复制代码
// 配置Web服务器路由
server.on("/", handleRoot);         // 根路径,显示控制页面
server.on("/mode", handleMode);     // 处理光照模式切换
server.on("/setbright", handleBright); // 处理亮度调节
server.on("/clearlog", handleClearLog); // 处理日志清空
server.onNotFound(handleNotFound);  // 处理404

总结与扩展

本项目实现了一个功能完整的智能植物光照控制系统,通过模块化设计保证了代码的可维护性和可扩展性。实际使用时,可根据具体植物品种的生长需求调整光照调度表和传感器阈值。

未来可扩展方向:

  1. 增加浇水控制模块,实现自动灌溉
  2. 集成MQTT协议,接入智能家居系统
  3. 添加数据历史曲线展示功能
  4. 实现多设备联动控制

通过这个项目,不仅可以为植物提供适宜的生长环境,还能深入学习ESP32开发、传感器应用、Web服务等物联网相关技术,是一个非常好的实践案例。

项目开源地址:https://gitee.com/akdxxdk/Plant-Lighting-Control-System/tree/master/PlantLightSystem

相关推荐
电子科技圈10 小时前
芯科科技第三代无线SoC现已全面供货
嵌入式硬件·mcu·物联网·网络安全·智能家居·智能硬件·iot
『往事』&白驹过隙;10 小时前
浅谈内存DDR——DDR4性能优化技术
科技·物联网·学习·性能优化·内存·ddr
TDengine (老段)12 小时前
TDengine 数学函数 ABS() 用户手册
大数据·数据库·sql·物联网·时序数据库·tdengine·涛思数据
lisw051 天前
AIoT(人工智能物联网):融合范式下的技术演进、系统架构与产业变革
大数据·人工智能·物联网·机器学习·软件工程
Bruce_Liuxiaowei2 天前
MQTT协议在物联网环境中的安全风险与防范指南
运维·网络·物联网·安全·网络安全
糖糖单片机设计3 天前
硬件开发_基于物联网的生态环境检测系统
stm32·单片机·嵌入式硬件·物联网·51单片机
程序猿阿伟3 天前
《从踩坑到精通:边缘网关在物联网场景下的实践与优化指南》
物联网
常州晟凯电子科技3 天前
海思Hi3516CV610/Hi3516CV608开发笔记之环境搭建和SDK编译
人工智能·笔记·嵌入式硬件·物联网
康实训3 天前
远程智能康养实训室:训练学生驾驭物联网,服务未来居家康养新时代
物联网·实训室建设·康养实训室