资料介绍
描述
嵌入式系统无处不在:汽车、家用电器、城市空间的气候监测系统、农业综合企业等等。然而,嵌入式系统最重要的用途之一是关于安全性。
原因很简单:只要使用适合您想要监控的传感器并拥有工作所需的资源(能源、连接性等),嵌入式系统就像每天 24 小时、每天 7 天工作的监护人。周,以及他们在他们的角色中很少会犯错的人。
因此,嵌入式系统在关键安全系统中特别有用,例如监控和火灾警报。
因此,在本文中,您将学习如何制作一个嵌入式系统来监控环境中的易燃气体,并通过 Telegram 在环境中有可检测到的易燃气体时向您发出警告。
因此,在世界任何地方,您都可以了解有关可燃气体的任何危险情况,这对于远程监控和火灾时的快速行动非常有用。
详细地,您将了解到:
- 如何使用 Arduino IDE 编程 ESP32
- 如何在 Telegram 上创建一个机器人供您的 ESP32 使用
- 如何使用 MQ-2 传感器监测环境中的可燃气体
- 如何让 ESP32 使用创建的 Telegram 机器人并通过 Telegram 向您发送可燃气体检测警报
什么是电报?
Telegram是俄罗斯的即时通讯应用程序/服务,目前是 WhatsApp 的主要竞争对手,拥有 Android、iOS 和后期(或几乎)Windows Phone 版本。
它的主要区别是开源的(涉及应用程序),允许创建机器人,与自毁消息(有过期日期)的秘密聊天以及从一开始就在计算机上使用的非常轻巧高效的 Web 界面(直到几年前,WhatsApp 上还不存在的东西)。
开发“使用 ESP32 和 Telegram 监测可燃气体”项目
该项目的电路原理图见图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 个端子,分别是:
在这个项目中,我们将使用 MQ-2 模块的数字输出。当在空气中检测到易燃气体或烟雾时,该输出变为高电平 (5V),如果没有这些,则保持低电平 (0V)。
导致数字输出变高的烟雾和/或可燃气体的量/浓度由位于 MQ-2 模块后面的电位计调节。该电位器如图 3 所示。
一般而言,建议锅略高于最小值,以减少误检测烟雾和/或可燃气体的机会。
在 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 所示。
这样,只需将项目连接到可以访问已编程并准备就绪的 wifi 网络的位置!
现在,我将在PCBGOGO 印刷电路板上提供电子项目来构建这个项目。
构建 PCBGOGO 印刷电路板
从电子原理图中,开发了一块印刷电路板,用于在厨房中建造一个项目。印刷电路板在下面的 3D 视图中显示。
该项目很简单,由PCBGOGO和Robô Lúdico Brazil共同开发。现在,我将在下图中提供该项目的电子原理图。
电子原理图开发的布局设计如下图所示。
在此之后,这是 2D 视图中的结果。
将电子元件焊接到PCBGOGO 印刷电路板上后,您可以将设备安装在外壳中,并将其安装在炉子旁边。
系统将监控警报信息并将其发送到您的 Telegram。
结论
感谢PCBGOGO PCB Factory提供用于组装项目的电子板。
此外,我感谢巴西 Playful Robot School提供所有知识来开发这个项目。
电子板和源代码的文件附在这个项目中。
- 嵌入式系统系列丛书-时间触发嵌入式系统设计模式 0次下载
- 嵌入式视频监控
- 关于嵌入式Linux系统中的BSP浅析
- 嵌入式Linux环境变量分区制作
- 嵌入式系统移植-01嵌入式基本概念,嵌入式开发环境搭建,目标机搭建,TFTP服务搭建,NFS服务搭建
- 基于ARM11和WinCE的温室大棚嵌入式监控系统设计
- 基于嵌入式Linux视频监控系统毕业论文
- 基于ARM和Linux的嵌入式远程视频监控系统的设计
- 如何使用ARM进行嵌入式监控系统的设计 7次下载
- 如何使用ARM进行嵌入式远程监控系统的设计 11次下载
- 基于DaVinci技术的嵌入式视频监控系统设计详细中文资料 7次下载
- 嵌入式家庭远程监控系统设计
- 基于嵌入式Web实时监控系统的设计
- 基于嵌入式Web的远程监控系统设计
- 电梯嵌入式监控终端的设计与实现
- 嵌入式系统中堆栈监控的作用 359次阅读
- 什么是嵌入式系统?嵌入式系统的具体应用 2102次阅读
- 监控技术如何增强嵌入式系统的安全 476次阅读
- 使用MPU监控创建安全可靠的嵌入式系统 使用MPU监控的原因和好处 702次阅读
- 基于UML嵌入式软件开发环境的自动取款机系统的应用方案 3609次阅读
- 如何实现嵌入式系统远程调试 5080次阅读
- 一种嵌入式网络化视频监控系统设计流程概述 937次阅读
- 基于嵌入式系统的网络视频监控系统设计 2606次阅读
- 基于嵌入式环境的WiFi通信设计方案详解 5593次阅读
- 关于嵌入式系统8大关键特性详解 1060次阅读
- 嵌入式系统的特点大汇总 5743次阅读
- 嵌入式C实现延时程序的不同变量的区别 几种Linux嵌入式开发环境的简单介绍 1566次阅读
- 嵌入式操作系统是什么_嵌入式操作系统有哪些 2w次阅读
- 嵌入式开发环境的搭建 8304次阅读
- 基于嵌入式Linux的家居监控系统设计 2023次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多