2024-7-16 16:59:22 [显示全部楼层]
37178浏览
查看: 37178|回复: 0

基于FireBeetle ESP32-C6的智能阳台植物土壤监测系统

[复制链接]
摘要
随着城市化进程的加快,阳台植物盆栽成为城市居民接近自然、提升生活品质的重要途径。为了有效监测和管理阳台植物的生长环境,本项目利用FireBeetle ESP32-C6、土壤传感器、太阳能板和锂电池,设计了一套低功耗、可持续的阳台植物监测系统。该系统能够实时采集土壤湿度数据,并通过无线通信传输到用户端,实现远程监控和智能提醒。本文详细介绍了该系统的设计与实现过程,包括硬件选择、电路设计、软件开发、数据分析等内容,旨在为城市居民提供一种高效、便捷的植物养护解决方案。

引言
项目背景
在现代城市生活中,阳台植物盆栽不仅美化了居住环境,还能够改善空气质量,带来心理上的愉悦。然而,由于日常生活的繁忙,许多城市居民往往难以定时关注和照料这些植物,导致植物生长不良甚至枯萎。传统的植物养护方式依赖人工经验,不仅费时费力,而且难以保证准确性和及时性。因此,利用智能硬件和物联网技术,实现对阳台植物的自动监测和管理,成为解决这一问题的重要途径。

项目目的
本项目旨在设计并实现一套阳台植物监测系统,通过FireBeetle ESP32-C6、土壤传感器、太阳能板和锂电池的协同工作,实现对植物生长环境的实时监测和智能管理。具体目标包括:
1.实时监测:通过土壤传感器实时采集植物土壤湿度数据,并将数据传输至用户端,实现对植物生长环境的实时监控。
2.节能环保:利用太阳能板为系统供电,结合锂电池储能,实现系统的长期稳定运行,减少对外部电源的依赖。
3.智能提醒:根据土壤湿度数据,智能分析植物的需水情况,并通过无线通信模块及时向用户发送提醒信息,帮助用户合理安排浇水时间。
4.易于安装:提供详细的安装和调试指导,使系统能够方便快捷地应用于各种阳台环境。

硬件清单

硬件连接
基于FireBeetle ESP32-C6的智能阳台植物土壤监测系统图2

软件设计
数据采集与处理
在本项目中,ESP32微控制器作为核心处理单元,负责采集传感器数据、处理和分析数据,并通过无线通信将数据传输至服务器。以下是具体的软件逻辑设计:
1.电池电压采集:
a.使用ESP32的IO0引脚采集电池电压。
b.通过模拟数字转换(ADC),将采集到的模拟电压信号转换为数字信号,便于后续处理。
2.土壤湿度采集:
a.使用ESP32的IO3引脚采集土壤湿度传感器的电压。
b.通过ADC将土壤湿度传感器的模拟电压信号转换为数字信号。
3.数据处理:
a.读取并处理电池电压和土壤湿度的数字信号,转换为实际的电压值和湿度百分比。
4.数据上报:
a.使用ESP32的WiFi模块连接至无线网络。
b.通过HTTP协议,将采集到的数据上报至服务器,便于远程监控和管理。
以下是具体的软件实现代码示例:
  1. #include <WiFi.h>
  2. #include <HTTPClient.h>
  3. // #define DATA_SEND_INTERVAL_MS 15 * 60 * 1000
  4. #define DATA_SEND_INTERVAL_MS 60 * 1000
  5. int lastDataSentTimestamp = 0;
  6. unsigned long previousMillis = 0;
  7. unsigned long interval = 30000;
  8. // WiFi 网络信息
  9. const char* ssid = "your_SSID";
  10. const char* password = "your_PASSWORD";
  11. // 服务器URL
  12. const char* serverName = "http://192.168.1.236:5000/update";
  13. const char* serverToken = "your_influx_token";
  14. // 定义ADC引脚
  15. const int batteryPin = 0; // IO0
  16. const int soilMoisturePin = 3; // IO3
  17. void sendData() {
  18.   // 采集电池电压
  19.   int batteryVoltage = analogReadMilliVolts(batteryPin)*2;
  20.   Serial.print("BAT millivolts value = ");
  21.   Serial.print(batteryVoltage);
  22.   Serial.println("mV");
  23.   // 采集土壤传感器电压
  24.   int soilMoisturePercent = analogReadMilliVolts(soilMoisturePin);
  25.   Serial.print("Soil sensor voltage = ");
  26.   Serial.print(soilMoisturePercent);
  27.   Serial.println("mV");
  28.   Serial.println("--------------");
  29.   // 创建HTTP客户端
  30.   if (WiFi.status() == WL_CONNECTED) {
  31.     HTTPClient http;
  32.     http.begin(serverName);
  33.     http.addHeader("Content-Type", "text/plain");
  34.     http.addHeader("authorization", serverToken);
  35.     // 创建POST数据
  36.     String httpRequestData = "batteryVoltage=" + String(batteryVoltage) + "&soilMoisture=" + String(soilMoisturePercent);
  37.    
  38.    
  39.     // 发送HTTP POST请求
  40.     int httpResponseCode = http.POST(httpRequestData);
  41.    
  42.     // 打印响应结果
  43.     if (httpResponseCode > 0) {
  44.       String response = http.getString();
  45.       Serial.println(httpResponseCode);
  46.       Serial.println(response);
  47.     } else {
  48.       Serial.print("Error on sending POST: ");
  49.       Serial.println(httpResponseCode);
  50.     }
  51.     // 结束HTTP请求
  52.     http.end();
  53.   }
  54. }
  55. void setup() {
  56.   Serial.begin(115200);
  57.   //set the resolution to 12 bits (0-4096)
  58.   analogReadResolution(12);
  59.   // 连接WiFi
  60.   WiFi.begin(ssid, password);
  61.   while (WiFi.status() != WL_CONNECTED) {
  62.     delay(1000);
  63.     Serial.println("Connecting to WiFi...");
  64.   }
  65.   Serial.println("Connected to WiFi");
  66.   Serial.print("IP address: ");
  67.   Serial.println(WiFi.localIP());
  68.   sendData();
  69. }
  70. void loop() {
  71.   unsigned long currentMillis = millis();
  72.   // if WiFi is down, try reconnecting
  73.   if ((WiFi.status() != WL_CONNECTED) && (currentMillis - previousMillis >= interval)) {
  74.     Serial.print(millis());
  75.     Serial.println("Reconnecting to WiFi...");
  76.     WiFi.disconnect();
  77.     WiFi.reconnect();
  78.     previousMillis = currentMillis;
  79.   }
  80.   if (millis() > lastDataSentTimestamp + DATA_SEND_INTERVAL_MS) {
  81.     sendData();
  82.     Serial.print("Millis since last measurement: ");
  83.     Serial.println(millis() - lastDataSentTimestamp);
  84.     lastDataSentTimestamp = millis();
  85.   }
  86. }
复制代码
服务器搭建
在电脑端进行以下操作
1. 安装python 3
2. 安装flask
   2.1 按下Win+R,输入cmd,进入命令面板
   2.2 输入"pip install flask" 安装flask
3. 在命令行中运行python代码
  1. from flask import Flask, request, jsonify
  2. app = Flask(__name__)
  3. # Endpoint to handle data from Arduino
  4. @app.route('/update', methods=['POST'])
  5. def update():
  6.     auth_header = request.headers.get('authorization')
  7.     if auth_header == 'your_influx_token':
  8.         data = request.data.decode('utf-8')
  9.         print(f"Received data: {data}")
  10.         # Process the data sent from Arduino here, such as storing it in a database
  11.         return jsonify({"status": "success", "message": "Data received"}), 200
  12.     else:
  13.         return jsonify({"status": "error", "message": "Unauthorized"}), 401
  14. @app.route('/')
  15. def home():
  16.     return "Hello from Flask server!", 200
  17. if __name__ == '__main__':
  18.     app.run(host='0.0.0.0', port=5000)
复制代码
最终结果如下
基于FireBeetle ESP32-C6的智能阳台植物土壤监测系统图1


结论
项目成果
通过本项目的实施,我们成功设计并实现了一套阳台植物监测系统。该系统基于ESP32微控制器、土壤湿度传感器、太阳能板和锂电池,能够实时监测阳台植物的土壤湿度,并通过无线通信实现远程数据传输和智能提醒。具体成果包括:
1.实时监测和智能提醒:
a.系统能够持续监测土壤湿度,确保植物在最佳湿度范围内生长。
b.当土壤湿度低于设定阈值时,系统能够及时向用户发送提醒,避免植物因缺水而受损。
2.节能环保设计:
a.采用太阳能板为系统供电,结合锂电池储能,实现系统的自给自足,减少对外部电源的依赖。
b.低功耗设计确保系统长时间稳定运行,进一步提升系统的实用性和环保性。
3.易于安装和使用:
a.系统设计简单,组件安装方便,用户无需专业技能即可完成设备的布置和调试。
b.直观的用户界面和易于理解的数据展示,使用户能够轻松掌握植物的生长状况。

未来展望
尽管本项目已取得显著成果,但仍有进一步改进和扩展的空间:
1.功能扩展:
a.增加温度、湿度和光照传感器,全面监测植物生长环境的各项参数,提供更科学的养护建议。
b.集成自动浇水系统,根据实时监测数据自动调整浇水量,实现更智能化的植物养护。
2.数据分析与智能化:
a.利用大数据分析和机器学习算法,对采集到的环境数据进行深入分析,预测植物的生长趋势,优化养护策略。
b.开发智能养护助手,根据历史数据和环境变化,为用户提供个性化的养护建议。
3.用户体验优化:
a.提升用户界面的设计,使其更加友好和易于操作。
b.增加数据的可视化功能,通过图表和图像展示植物生长状况,帮助用户更直观地了解植物的健康情况。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail