auroraAA 发表于 2024-7-19 11:16:30

基于Firebeetle ESP32 C6和甲烷传感器的家庭危险气体报警...

摘要
随着家庭安全意识的提高,对潜在危险气体的监测需求也日益增长。本文介绍了一种基于ESP32和甲烷传感器的家庭危险气体报警系统。该系统利用ESP32的高性能和低功耗特点,通过甲烷传感器实时监测家庭环境中的甲烷浓度。当检测到气体浓度超标时,系统立即通过HTTP协议向服务器发送报警信号,从而实现对危险气体的及时监测和预警。本文详细描述了系统的硬件设计、软件实现及其在实际应用中的性能测试结果。

引言
项目背景
在家庭环境中,甲烷等危险气体的泄漏可能引发严重的安全事故,例如**或火灾。甲烷是一种无色无味的可燃气体,常见于天然气和沼气中。如果厨房、车库等家用场所的甲烷浓度过高,不仅可能引发**,还对家庭成员的健康造成潜在威胁。因此,开发一种能够实时监测甲烷浓度并及时报警的系统,对于保障家庭安全具有重要意义。

项目目的
本项目旨在设计和实现一个基于ESP32和甲烷传感器的家庭危险气体报警系统。系统主要目标包括:
1.实时监测: 及时监测家庭环境中的甲烷气体浓度。
2.即时报警: 当检测到气体浓度超过预设安全阈值时,立即通过HTTP协议向服务器发送报警信息。
3.低功耗设计: 提供低功耗和高可靠性的解决方案,以确保系统可以长期稳定运行。
4.易于安装和使用: 实现简便的硬件连接和易于使用的软件接口,以便于家庭用户自行安装和维护。

硬件清单

[*]FireBeetle 2 ESP32 C6开发板 *1
[*]Fermion: MEMS 甲烷传感器 *1
[*]锂电池 *1

硬件连接


软件设计
数据采集与处理
在本项目中,ESP32微控制器作为核心处理单元,负责采集传感器数据、处理和分析数据,并通过无线通信将数据传输至服务器。以下是具体的软件逻辑设计:
1.电池电压采集:
   a.使用ESP32的IO0引脚采集电池电压。
   b.通过模拟数字转换(ADC),将采集到的模拟电压信号转换为数字信号,便于后续处理。
2.甲烷数据采集:
   a.使用ESP32的IO3引脚采集甲烷传感器的电压。
   b.通过ADC将甲烷传感器的模拟电压信号转换为数字信号。
3.数据处理:
   a.读取并处理电池电压和甲烷的数字信号,当电池电压过低或甲烷浓度过高,进行数据上报。
4.数据上报:
   a.使用ESP32的WiFi模块连接至无线网络。
   b.通过HTTP协议,将采集到的数据上报至服务器,便于远程监控和管理。
以下是具体的软件实现代码示例:
#include <WiFi.h>
#include <HTTPClient.h>

//Methane gas concentration threshold
#define METHANE_THRESHOLD 2000

// WiFi 网络信息
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";

// 服务器URL
const char* serverName = "http://192.168.1.236:5000/update";
const char* serverToken = "your_influx_token";

// 定义ADC引脚
const int batteryPin = 0; // IO0
const int methanePin = 3; // IO3

void sendData(int batteryVoltage, int methaneVoltage) {

// 创建HTTP客户端
if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    http.begin(serverName);
    http.addHeader("Content-Type", "text/plain");
    http.addHeader("authorization", serverToken);
    // 创建POST数据
    String httpRequestData = "batteryVoltage=" + String(batteryVoltage) + "&methaneVoltage=" + String(methaneVoltage);
   
    // 发送HTTP POST请求
    int httpResponseCode = http.POST(httpRequestData);
   
    // 打印响应结果
    if (httpResponseCode > 0) {
      String response = http.getString();
      Serial.println(httpResponseCode);
      Serial.println(response);
    } else {
      Serial.print("Error on sending POST: ");
      Serial.println(httpResponseCode);
    }
    // 结束HTTP请求
    http.end();
}
}

void setup() {
Serial.begin(115200);
//set the resolution to 12 bits (0-4096)
analogReadResolution(12);

// 连接WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}

void loop() {

// 采集电池电压
int batteryVoltage = analogReadMilliVolts(batteryPin)*2;
Serial.print("BAT millivolts value = ");
Serial.print(batteryVoltage);
Serial.println("mV");

// 采集甲烷传感器电压
int methaneVoltage = analogReadMilliVolts(methanePin);
Serial.print("methane sensor voltage = ");
Serial.print(methaneVoltage);
Serial.println("mV");
Serial.println("--------------");

if((batteryVoltage < 3730) || (methaneVoltage > METHANE_THRESHOLD)){
    sendData(batteryVoltage, methaneVoltage);
}
delay(500);
}服务器搭建
在电脑端进行以下操作
1. 安装python 3
2. 安装flask
   2.1 按下Win+R,输入cmd,进入命令面板
   2.2 输入"pip install flask" 安装flask
3. 在命令行中运行python代码
from flask import Flask, request, jsonify

app = Flask(__name__)

# Endpoint to handle data from Arduino
@app.route('/update', methods=['POST'])
def update():
    auth_header = request.headers.get('authorization')
    if auth_header == 'your_influx_token':
      data = request.data.decode('utf-8')
      print(f"Received data: {data}")
      # Process the data sent from Arduino here, such as storing it in a database
      return jsonify({"status": "success", "message": "Data received"}), 200
    else:
      return jsonify({"status": "error", "message": "Unauthorized"}), 401

@app.route('/')
def home():
    return "Hello from Flask server!", 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)最终结果如下

结论
项目成果
本项目成功设计并实现了一个基于ESP32和甲烷传感器的家庭危险气体报警系统。通过对甲烷浓度的实时监测,当气体浓度超过安全阈值时,系统能够及时向服务器发送报警信号,确保家庭成员能够迅速采取应对措施,从而有效预防可能发生的安全事故。

未来展望
尽管本项目已取得显著成果,但仍有进一步改进和扩展的空间:
硬件升级
1.更高精度的传感器: 选择更高精度和灵敏度的气体传感器,不仅限于甲烷,还可以扩展到其他有害气体如一氧化碳、二氧化硫、烟雾、甲醛等的检测,提高系统的综合监测能力。
https://www.dfrobot.com/product-2708.html




2.更大容量的电池: 增加电池容量或引入太阳能充电模块,进一步延长系统的运行时间,减少用户的维护频率。
3.集成显示屏: 在系统中加入小型显示屏,实时显示气体浓度和系统状态,使用户可以直接查看监测数据,提高系统的可用性。

软件功能扩展
1.多种报警方式: 增加其他报警方式,如短信、电话或本地声光报警,确保用户在不同情况下都能及时收到警报信息。
2.智能化数据分析: 引入云平台,对传感器数据进行长期记录和分析,提供更全面的环境监测报告,并通过大数据分析预测潜在风险。

系统优化
1.低功耗优化: 进一步优化系统的功耗,通过睡眠模式等技术,最大限度地延长电池寿命,适应更长时间的无人值守环境。
2.网络连接稳定性: 在不稳定的网络环境下,增加数据缓存和重传机制,确保报警信息能够在第一时间传递到服务器。
3.多传感器协同: 实现多个传感器节点的协同工作,通过无线通信协议(如Zigbee、BLE等)构建家庭气体监测网络,提高系统的覆盖范围和监测精度。

刘睿鹏 发表于 2024-7-21 13:32:02

3.7v电池能这样连?
页: [1]
查看完整版本: 基于Firebeetle ESP32 C6和甲烷传感器的家庭危险气体报警...