資料介紹
描述
嵌入式系統無處不在:汽車、家用電器、城市空間的氣候監測系統、農業綜合企業等等。然而,嵌入式系統最重要的用途之一是關于安全性。
原因很簡單:只要使用適合您想要監控的傳感器并擁有工作所需的資源(能源、連接性等),嵌入式系統就像每天 24 小時、每天 7 天工作的監護人。周,以及他們在他們的角色中很少會犯錯的人。
因此,嵌入式系統在關鍵安全系統中特別有用,例如監控和火災警報。
因此,在本文中,您將學習如何制作一個嵌入式系統來監控環境中的易燃氣體,并通過 Telegram 在環境中有可檢測到的易燃氣體時向您發出警告。
因此,在世界任何地方,您都可以了解有關可燃氣體的任何危險情況,這對于遠程監控和火災時的快速行動非常有用。
詳細地,您將了解到:
- 如何使用 Arduino IDE 編程 ESP32
- 如何在 Telegram 上創建一個機器人供您的 ESP32 使用
- 如何使用 MQ-2 傳感器監測環境中的可燃氣體
- 如何讓 ESP32 使用創建的 Telegram 機器人并通過 Telegram 向您發送可燃氣體檢測警報
什么是電報?
Telegram是俄羅斯的即時通訊應用程序/服務,目前是 WhatsApp 的主要競爭對手,擁有 Android、iOS 和后期(或幾乎)Windows Phone 版本。
它的主要區別是開源的(涉及應用程序),允許創建機器人,與自毀消息(有過期日期)的秘密聊天以及從一開始就在計算機上使用的非常輕巧高效的 Web 界面(直到幾年前,WhatsApp 上還不存在的東西)。
開發“使用 ESP32 和 Telegram 監測可燃氣體”項目
該項目的電路原理圖見圖1。
![pYYBAGOYRIGAP3zeAALFPkZyj5Y634.jpg](https://file.elecfans.com/web2/M00/83/C7/pYYBAGOYRIGAP3zeAALFPkZyj5Y634.jpg)
在硬件方面,該項目使用了以下組件:
- 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 和多個通信接口(I2C、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 所示。
![poYBAGOYRIqAdlloAACWcdPkhWM799.jpg](https://file.elecfans.com/web2/M00/83/3E/poYBAGOYRIqAdlloAACWcdPkhWM799.jpg)
一般而言,建議鍋略高于最小值,以減少誤檢測煙霧和/或可燃氣體的機會。
在 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](https://file.elecfans.com/web2/M00/83/C7/pYYBAGOYRI2AX4EJAAEU-SXTIGU370.jpg)
這樣,只需將項目連接到可以訪問已編程并準備就緒的 wifi 網絡的位置!
現在,我將在PCBGOGO 印刷電路板上提供電子項目來構建這個項目。
構建 PCBGOGO 印刷電路板
從電子原理圖中,開發了一塊印刷電路板,用于在廚房中建造一個項目。印刷電路板在下面的 3D 視圖中顯示。
![pYYBAGOYRJCAeojVAABjyF5u5m0088.jpg](https://file.elecfans.com/web2/M00/83/C7/pYYBAGOYRJCAeojVAABjyF5u5m0088.jpg)
該項目很簡單,由PCBGOGO和Rob? Lúdico Brazil共同開發。現在,我將在下圖中提供該項目的電子原理圖。
![poYBAGOYRJSADqP1AAIRlw7x3DU301.png](https://file.elecfans.com/web2/M00/83/3E/poYBAGOYRJSADqP1AAIRlw7x3DU301.png)
電子原理圖開發的布局設計如下圖所示。
![pYYBAGOYRJqARVs5AACd1mO_BI4504.png](https://file.elecfans.com/web2/M00/83/C7/pYYBAGOYRJqARVs5AACd1mO_BI4504.png)
在此之后,這是 2D 視圖中的結果。
![poYBAGOYRKCAeYsZAAC72z2KWdw985.jpg](https://file.elecfans.com/web2/M00/83/3F/poYBAGOYRKCAeYsZAAC72z2KWdw985.jpg)
將電子元件焊接到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的遠程監控系統設計
- 電梯嵌入式監控終端的設計與實現
- 嵌入式系統中堆棧監控的作用 529次閱讀
- 什么是嵌入式系統?嵌入式系統的具體應用 2565次閱讀
- 監控技術如何增強嵌入式系統的安全 663次閱讀
- 使用MPU監控創建安全可靠的嵌入式系統 使用MPU監控的原因和好處 900次閱讀
- 基于UML嵌入式軟件開發環境的自動取款機系統的應用方案 3778次閱讀
- 如何實現嵌入式系統遠程調試 5406次閱讀
- 一種嵌入式網絡化視頻監控系統設計流程概述 1024次閱讀
- 基于嵌入式系統的網絡視頻監控系統設計 2768次閱讀
- 基于嵌入式環境的WiFi通信設計方案詳解 5750次閱讀
- 關于嵌入式系統8大關鍵特性詳解 1153次閱讀
- 嵌入式系統的特點大匯總 5896次閱讀
- 嵌入式C實現延時程序的不同變量的區別 幾種Linux嵌入式開發環境的簡單介紹 1674次閱讀
- 嵌入式操作系統是什么_嵌入式操作系統有哪些 2w次閱讀
- 嵌入式開發環境的搭建 8549次閱讀
- 基于嵌入式Linux的家居監控系統設計 2118次閱讀
下載排行
本周
- 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次下載 | 免費
評論