基于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

相关推荐
BY组态2 分钟前
【教程】如何使用Ricon组态系统快速构建监控画面
物联网·iot·web组态·组态
BY组态2 小时前
【对比分析】Ricon组态系统 vs 传统组态软件
运维·物联网·web组态·组态
zhaoshuzhaoshu18 小时前
BLE(蓝牙低功耗)连接过程详解
物联网·蓝牙·无线
搜佛说18 小时前
下一代跨语言原生操作系统商业计划书
物联网·软件工程
BY组态19 小时前
Ricon组态系统在实际项目中的应用案例分享
物联网·web组态·组态
Zevalin爱灰灰1 天前
零基础入门学用物联网(ESP8266) 第一部分 基础知识篇(五)
单片机·物联网·嵌入式·esp8266
Web3_Daisy1 天前
Token 分红机制详解:实现逻辑、激励结构与风险分析
大数据·人工智能·物联网·web3·区块链
BY组态1 天前
从零开始:Ricon组态系统快速入门指南
运维·物联网·web组态·组态
次旅行的库1 天前
MQTT学习笔记
数据库·笔记·物联网·学习
瑶光守护者1 天前
【卫星通信】IoT-NTN卫星通信全球战略报告:市场动态、技术前沿与运营商生态(2025-2030)
物联网·卫星通信