当前位置: 首页 > news >正文

基于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中集中管理,主要连接如下:

// 引脚定义(与硬件接线一致)
#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)
    负责所有传感器的数据采集与处理,包括:

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

    核心代码示例:

    // 读取所有传感器数据
    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亮度

    光照调度表示例:

    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服务器路由配置:

// 配置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

http://www.dtcms.com/a/462270.html

相关文章:

  • 天津住房与城乡建设厅网站首页包头学做网站
  • 【Frida Android】基础篇1:基础环境配置
  • YOLOv11安卓目标检测App完整开发指南
  • 鸿蒙NEXT实战:使用公共事件实现跨进程通信
  • npm升级提示error engine not compatible with your version of node/npm: npm@11.6.2
  • 我的网站为什么打不开怎么回事啊携程做旅游的网站
  • 网站推广的表现方式网站开发需要用到哪些设备
  • 缓存大杀器-redis
  • 网站建设管理方案网站开发与app开发的区别
  • 装修公司网站制作大数据营销成功案例
  • 【STM32】I2C通信—硬件外设
  • 脚手架学习
  • 做网站好还是做淘宝好现在手机网站用什么做的
  • 建设行业网站平台的瓶颈网站网页
  • 【Linux】线程概念与控制(2)
  • vue项目发布后图标乱码解决方案
  • 成都手机网站重庆本地建站
  • UI设计(二)赛博科技修仙通讯录——东方仙盟筑基期
  • 实时数仓历史数据优化
  • 网站建设在哪能看企业网站建立流程的第一步是什么
  • 告别手动配置:用 Terraform 定义你的 RustFS 存储帝国
  • 36.Linux Shell编程
  • AI智能体赋能社会科学研究领域之仿真:心智疆域的重塑与伦理韧性机制的建立
  • daily notes[81]
  • 常用命令和tricks
  • 【AI编程前沿】人类编写代码 vs AI生成代码:质量、漏洞与复杂度的大规模比较研究
  • 黑龙江建设人力资源网站网站建设及安全制度
  • 广州市增城建设局网站怎样开发一个app软件
  • 机器视觉Halcon3D中add_deformable_surface_model_reference_point的作用
  • 设计一个简单的旅游网站全网拓客app