資料介紹
描述
嵌入式系統無處不在:汽車、家用電器、城市空間的氣候監測系統、農業綜合企業等等。然而,嵌入式系統最重要的用途之一是關于安全性。
原因很簡單:只要使用適合您想要監控的傳感器并擁有工作所需的資源(能源、連接性等),嵌入式系統就像每天 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 和多個通信接口(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 所示。
一般而言,建議鍋略高于最小值,以減少誤檢測煙霧和/或可燃氣體的機會。
在 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次下載 | 免費
評論
查看更多