电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>如何制作嵌入式系统来监控环境中的易燃气体

如何制作嵌入式系统来监控环境中的易燃气体

2022-12-14 | zip | 0.03 MB | 次下载 | 免费

资料介绍

描述

嵌入式系统无处不在:汽车、家用电器、城市空间的气候监测系统、农业综合企业等等。然而,嵌入式系统最重要的用途之一是关于安全性。

原因很简单:只要使用适合您想要监控的传感器并拥有工作所需的资源(能源、连接性等),嵌入式系统就像每天 24 小时、每天 7 天工作的监护人。周,以及他们在他们的角色中很少会犯错的人。

因此,嵌入式系统在关键安全系统中特别有用,例如监控和火灾警报。

因此,在本文中,您将学习如何制作一个嵌入式系统来监控环境中的易燃气体,并通过 Telegram 在环境中有可检测到的易燃气体时向您发出警告。

因此,在世界任何地方,您都可以了解有关可燃气体的任何危险情况,这对于远程监控和火灾时的快速行动非常有用。

详细地,您将了解到:

  • 如何使用 Arduino IDE 编程 ESP32
  • 如何在 Telegram 上创建一个机器人供您的 ESP32 使用
  • 如何使用 MQ-2 传感器监测环境中的可燃气体
  • 如何让 ESP32 使用创建的 Telegram 机器人并通过 Telegram 向您发送可燃气体检测警报

什么是电报?

Telegram是俄罗斯的即时通讯应用程序/服务,目前是 WhatsApp 的主要竞争对手,拥有 AndroidiOS 和后期(或几乎)Windows Phone 版本。

它的主要区别是开源的(涉及应用程序),允许创建机器人,与自毁消息(有过期日期)的秘密聊天以及从一开始就在计算机上使用的非常轻巧高效的 Web 界面(直到几年前,WhatsApp 上还不存在的东西)。

开发“使用 ESP32 和 Telegram 监测可燃气体”项目

该项目的电路原理图见图1。

pYYBAGOYRIGAP3zeAALFPkZyj5Y634.jpg
图 1 - 项目的电子原理图。
 

硬件方面,该项目使用了以下组件:

  • 01 x ESP32(ESP32 开发套件 1)
  • 01 x micro-USB 数据线
  • 01 x MQ-2 传感器(监测可燃气体和烟雾)
  • 02 x 3.6kΩ / 1 / 4W 电阻
  • 男女跳线
  • 01x 800 点原型板
  • 01 x 5V / 2A 开关直流电源,用于在没有计算机的情况下为项目供电(可选)

概括来说,该项目的原理图电路主要分为三个部分:ESP32 Devkit 1、分压器和 MQ-2 传感器(监测可燃气体和烟雾)。下面详细查看这些部分的详细信息

ESP32 开发套件 1 - 概述

ESP32 Devkit 1 包含一个完整的开发板​​,包含用于嵌入式设备的良好处理和内存、wi-fi 连接、蓝牙连接(经典和 BLE)、大量可用于开发的 GPIO 和多个通信接口(I²C、UART 、SPI 等)。

此外,ESP32 有两个处理器,是物联网项目的双核解决方案。一般来说,就计算资源和通信接口的数量而言,它是众所周知的 NodeMCU (ESP8266) 的一个(伟大的)进化。

此外,它的成本非常诱人,是涉及物联网概念并需要良好处理能力、内存和连接性的原型和产品的最佳替代品之一。

不幸的是,ESP32 Devkit 1 没有适合原型板的完美形状,这需要较少的常规操作即可与原型板一起使用,如图 1 中的项目原理图所示,其中只有一侧连接到原型板。

即便如此,ESP32 Devkit 1 对于想要以极具竞争力的成本进行紧凑型项目的专业人士和爱好者/制造商来说都是一个非常有趣的选择。

分压电路

如图 1 所示,MQ-2 传感器(可燃气体和烟雾)的数字信号 (D0) 和 ESP32 之间有一个分压器。

这是必要的,因为传感器的工作电压为 5V,而 ESP32 Devkit 1 的最大电压为 3.3V。因此,需要将数字传感器输出信号的电压调整到 ESP32 Devkit 1 允许的电平。

分压器可用于此任务。分压器使传递给 ESP32 Devkit 1 的电压为传感器提供的电压的一半,足以让 ESP32 在其工作电压范围内区分高逻辑电平和低逻辑电平。这样就可以在ESP32 Devkit 1上正常使用传感器了。

MQ-2 传感器(可燃气体和烟雾)

MQ-2 是一种能够检测空气中可燃气体和烟雾的传感器,检测到的气体浓度可以在 300 到 10, 000 ppm(百万分之几)的范围内。

除烟雾外,该传感器还能够检测以下易燃气体:LPG(液化石油气)、甲烷、丙烷、丁烷、氢气、酒精、天然气和其他具有易燃潜力的气体。

MQ-2 以独立传感器的形式和模块的形式出售,这就是我们在本文中使用的形式。模块形式的传感器如图2所示。

MQ-2 模块有 4 个端子,分别是:

  • VDC:电源(5V)
  • GND:地(0V)
  • A0:模拟输出(0..5V)
  • D0:数字输出(0V或5V)

在这个项目中,我们将使用 MQ-2 模块的数字输出。当在空气中检测到易燃气体或烟雾时,该输出变为高电平 (5V),如果没有这些,则保持低电平 (0V)。

导致数字输出变高的烟雾和/或可燃气体的量/浓度由位于 MQ-2 模块后面的电位计调节。电位器如图 3 所示。

poYBAGOYRIqAdlloAACWcdPkhWM799.jpg
图 3 - 用于调节 MQ-2 模块的电位器。
 

一般而言,建议锅略高于最小值,以减少误检测烟雾和/或可燃气体的机会。

在 Arduino IDE 上编程 ESP32

ESP32 Devkit 1 可以在 Arduino IDE 中进行编程,因此使用它进行项目的开发与使用任何常见的 Arduino 非常相似。

这有助于新项目的开发以及将在其他硬件/平台上制作的其他项目移植/转移到 ESP32 Devkit 1。

Instalação da biblioteca para usar o Telegram no ESP32

您必须安装 UniversalTelegramBot 库,该库允许您在 ESP32 上使用 Telegram。

这个库可以通过 Arduino IDE 在库管理器(草图>包含库>管理库)中简单快速地安装。

在搜索字段中插入其名称 (UniversalTelegramBot) 并安装其最新版本。

创建电报机器人

ESP32 将使用 Telegram 机器人提醒您从 Telegram 检测到的易燃/烟雾气体。

因此,需要创建一个 Telegram 机器人。要创建 Telegram 机器人,请按照以下步骤操作:

  • Telegram 中的所有 bot 管理都是通过称为 Bot Father (@BotFather) 的 botmaster 完成的。第一步是在 Telegram 上找到他并开始与他对话。
  • 要开始创建 Telegram 机器人,请在与 @BotFather 的聊天中输入命令/新机器人。
  • 将要求@BotFather 为您的 Telegram 机器人提供名称。输入不带空格和特殊字符的名称(例如:projeto_alerta_gas_bot)。
  • 然后,如果名称得到了@BotFather 的批准(需要批准以确保没有同名的机器人),您将被要求为您的机器人提供用户名。您可以使用机器人自己的名称作为用户名,以 bot 结尾。
  • 如果用户名由@BotFather 批准(需要批准以确保没有具有相同用户名的机器人),您的机器人将被创建!您将收到一个令牌(您的机器人的唯一密钥)和与您的机器人“聊天”的地址。将此令牌保存在安全的地方,项目的源代码中将需要它。

接下来,我将向您展示如何获取您的聊天 ID。

获取 Telegram 帐户的聊天 ID

您的个人 Telegram 帐户的 ChatId 是您帐户的唯一代码/密钥,因此它将允许 Telegram 机器人仅向您发送消息(就像您在 Telegram 上的联系人一样)。

要获取此 ChatId,请按照以下步骤操作:

  • 查找 Chat ID Echo 机器人 (@chatid_echo_bot)。该机器人用于提供您个人 Telegram 帐户的 ChatId
  • 发送消息/命令/开始到@chatid_echo_bot
  • 然后@chatid_echo_bot 将返回您的 ChatId。将此令牌保存在安全的地方,项目的源代码中将需要它。

接下来,我将向您展示完整的项目代码。

项目源代码

至此,一切准备就绪,可以实施项目了!

该项目的源代码可以在下面找到。

使用此源代码编写 ESP32 Devkit 1 的方法与编写任何其他常见的 Arduino 非常相似:将其复制并粘贴到您的 Arduino IDE 中,将 ssid_wifi 和 password_wifi 变量的内容分别更改为 wi-fi 的名称和密码ESP32 Devkit 1 应该连接的网络,编译和上传/调度 ESP32 Devkit 1。

另外,不要忘记在 BOT_TELEGRAM_TOKEN 中替换您的 Telegram 机器人令牌(使用 @BotFather 获得),并在 auth_id 中替换您的个人 Telegram 帐户的 ChatId(使用 @chatid_echo_bot 获得)。

仔细阅读源代码注释,充分理解。

#include 
#include 
#include 

/* Definição do sensor de gás */
#define GPIO_SENSOR_GAS 34

/* Definição do token de seu Bot Telegram
(valor obtido no @BotFather) */
#define BOT_TELEGRAM_TOKEN " "
#define TEMPO_ESPERA_SENSOR 100 //ms

/* Wifi */
/* Coloque aqui o SSID (nome da rede wifi) que o
ESP32 deve se conectar
*/
char ssid_wifi[] = " ";

/* Coloque aqui o password (senha da rede wifi) que o
ESP32 deve se conectar
*/
char password_wifi[] = " ";

/* Variáveis e objetos para usar o wifi e Bot Telegram */
WiFiClientSecure client;
UniversalTelegramBot bot(BOT_TELEGRAM_TOKEN, client);

/* Coloque aqui o auth_id de sua conta telegram
(auth_id da conta que o bot deve alertar sobre o gás
*/
String auth_id = " ";

/* Protótipos */
void init_wifi(void);
void conecta_wifi(void);
void verifica_conexao_wifi(void);
void configura_gpio_sensor_gas(void);

/* Função: inicializa wi-fi
* Parametros: nenhum
* Retorno: nenhum
*/
void init_wifi(void)
{
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
Serial.println("------WI-FI -----");
Serial.print("Conectando-se a rede: ");
Serial.println(ssid_wifi);
Serial.println("Aguarde...");
conecta_wifi();
}

/* Função: conecta-se a rede wi-fi
* Parametros: nenhum
* Retorno: nenhum
*/
void conecta_wifi(void)
{
/* Se ja estiver conectado, nada é feito. */
if (WiFi.status() == WL_CONNECTED)
return;
/* refaz a conexão */
WiFi.begin(ssid_wifi, password_wifi);
while (WiFi.status() != WL_CONNECTED)
{
delay(100);
Serial.print(".");
}
Serial.println();
Serial.print("Conectado com sucesso a rede wi-fi ");
Serial.println(ssid_wifi);
Serial.print("IP: ");
Serial.println(WiFi.localIP());
}

/* Função: verifica se a conexao wi-fi está ativa
* (e, em caso negativo, refaz a conexao)
* Parametros: nenhum
* Retorno: nenhum
*/
void verifica_conexao_wifi(void)
{
conecta_wifi();
}

/* Função: configura GPIO para leitura do sensor de gás
* Parametros: nenhum
* Retorno: nenhum
*/
void configura_gpio_sensor_gas(void)
{
pinMode(GPIO_SENSOR_GAS, INPUT);
}
void setup()
{
Serial.begin(115200);

/* Configura GPIO para leitura do sensor de gás */
configura_gpio_sensor_gas();
/* Inicialização e conexao wifi */
init_wifi();
conecta_wifi();
}
void loop()
{

/* Verifica se conexão wifi está ok.
Caso não estiver, refaz a conexão. */
verifica_conexao_wifi();

/* Verifica se há detecção de gás */
if (digitalRead(GPIO_SENSOR_GAS) == HIGH)
{

/* Avisa, por Telegram, a detecção do gás */
bot.sendMessage(auth_id, "ALERTA: Gas detectado!", "");
Serial.println("Gas detectado! Avisando usuario pelo Telegram...");

/* Aguarda detecção de gás acabar
(para notificar via Telegram só uma vez) */
while(digitalRead(GPIO_SENSOR_GAS) == HIGH)
{
delay(1);
}

/* Espera alguns ms para evitar que, se ocorrer
oscilações da saída digital do sensor, sejam
erroneamente detectadas como alertas. */
delay(TEMPO_ESPERA_SENSOR);
}

}

现在,我将向您介绍这个项目的完整功能。

该项目的工作原理如下:一旦连接并连接到 wifi,它将已经作为 Telegram 机器人运行。

当它检测到可燃气体和/或烟雾时,它会通过 Telegram 直接向您发送消息,如图 4 所示。

pYYBAGOYRI2AX4EJAAEU-SXTIGU370.jpg
图 4 - Telegram 机器人检测可燃气体和/或烟雾的警报。
 

这样,只需将项目连接到可以访问已编程并准备就绪的 wifi 网络的位置!

现在,我将在PCBGOGO 印刷电路板上提供电子项目来构建这个项目。

构建 PCBGOGO 印刷电路板

电子原理图中,开发了一块印刷电路板,用于在厨房中建造一个项目。印刷电路板在下面的 3D 视图中显示。

pYYBAGOYRJCAeojVAABjyF5u5m0088.jpg
图 5 - 印刷电路板的 3D 视图。
 

该项目很简单,由PCBGOGORobô Lúdico Brazil共同开发现在,我将在下图中提供该项目的电子原理图。

poYBAGOYRJSADqP1AAIRlw7x3DU301.png
图 6 - Project Telegram Bot 的电子示意图。
 

电子原理图开发的布局设计如下图所示。

pYYBAGOYRJqARVs5AACd1mO_BI4504.png
图 7 - PCB 设计布局的 2D 视图。
 

在此之后,这是 2D 视图中的结果。

poYBAGOYRKCAeYsZAAC72z2KWdw985.jpg
图 8 - 印刷电路板的二维视图。
 

将电子元件焊接到PCBGOGO 印刷电路板上后,您可以将设备安装在外壳中,并将其安装在炉子旁边。

系统将监控警报信息并将其发送到您的 Telegram。

结论

感谢PCBGOGO PCB Factory提供用于组装项目的电子板。

此外,我感谢巴西 Playful Robot School提供所有知识来开发这个项目。

电子板和源代码的文件附在这个项目中。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费