煙霧報警器如何工作?
MQ-2煙霧傳感器將以模擬電壓的形式提供輸出。我們在代碼中設置了一個條件,即如果傳感器的輸出值大于400,則蜂鳴器將開始發出蜂鳴聲,紅色LED將亮起;如果傳感器的輸出值小于400,則蜂鳴器將保持靜音,綠色LED將亮起。
這里使用的ESP將創建一個網頁一個IP地址,將數據發送到該IP地址,并在那里打印數據。上傳代碼后,可在串口監視器中看到此IP地址,如下所示。
當您輸入此IP時在瀏覽器中顯示地址,然后將顯示項目的輸出,如下圖所示。
電路圖
首先,將ESP8266模塊與Arduino連接。為了將ESP8266與Arduino正確連接,我們使用了ESP-01適配器模塊,這將使連接變得非常容易。該適配器模塊內置5V至3.3V穩壓器,這意味著您不必使用任何電阻。
將ESP-01適配器的VCC引腳連接到Arduino上的5V引腳和Arduino上的ESP-01適配器的GND到GND。接下來,將TX引腳從適配器連接到Arduino上的引腳2,將RX引腳從適配器連接到Arduino上的引腳3.
然后,連接MQ -2帶Arduino的氣體傳感器。將氣體傳感器上的VCC和GND連接到Arduino上的5V和GND引腳。然后將MQ-2氣體傳感器上的A0引腳連接到Arduino上的A0。
之后,將蜂鳴器和LED連接到Arduino。將蜂鳴器上的正極連接到Arduino上的引腳10,將蜂鳴器上的負極連接到Arduino上的GND。然后通過220歐姆電阻將LED的負極連接到GND,將正極連接到Arduino的引腳8和9上。
代碼說明
首先,添加軟件序列庫。軟件串行庫允許我們在Arduino的其他引腳上使用TX和RX通信,而不是僅使用默認的TX和RX引腳。然后我們定義了我們在Arduino上連接這些TX和RX引腳的位置。
#include #define DEBUG true SoftwareSerial wifi_module(2,3);//將esp的TX引腳連接到Arduino的引腳2和esp的RX引腳連接到Arduino的引腳3
在下面的行中,我們已經聲明了LED,蜂鳴器和煙霧傳感器的引腳。
int red_led_pin = 9; int green_led_pin = 8; int buzzer_pin = 10; int smoke_sensor_pin = A0;
在設置功能中,首先,我們設置串行通信的波特率和9400的wifi模塊。然后我們聲明了引腳并且蜂鳴器引腳作為輸出引腳,因為我們將這些引腳的輸出提供給LED和蜂鳴器。最后,我們將煙霧傳感器引腳聲明為輸入,因為煙霧傳感器引腳將從傳感器接收輸入并將其傳送給Arduino。
Serial.begin(9600) ); wifi_module.begin(9600);//根據您的esp8266 pinMode(red_led_pin,OUTPUT)設置波特率; pinMode(green_led_pin,OUTPUT); pinMode(buzzer_pin,OUTPUT) ; pinMode(smoke_sensor_pin,INPUT);
這些線路將調用該功能,并將在ESP提供的IP地址處設置服務器。然后ESP將在此IP地址發送數據。
esp8266_command(“AT + RST r n”,2000,DEBUG);//reset module esp8266_command(“AT + CWMODE = 2 r n”,1000,DEBUG);//配置為接入點 esp8266_command(“AT + CIFSR r n”,1000,DEBUG);//獲取IP地址 esp8266_command(“AT + CIPMUX = 1 r n”,1000,DEBUG);//為多個連接配置 esp8266_command(“AT + CIPSERVER = 1,80 r n”,1000,DEBUG);//打開端口80上的服務器
在循環函數中,我們讀取來自煙霧傳感器的值然后應用一個條件,如果輸出值大于400,則紅色LED將亮起,蜂鳴器將開始發出蜂鳴聲。如果輸出值小于400,則綠色LED指示燈將亮起,蜂鳴器將保持靜音。
int analogSensor = analogRead(smoke_sensor_pin); if(analogSensor》 400) { digitalWrite(red_led_pin,HIGH); digitalWrite(green_led_pin,LOW); 音(buzzer_pin,1000,200); }
以下行將打印網頁上的數據。首先,我們將在頂部打印“物聯網煙霧探測系統”。然后在第二行,我們將打印煙霧值,在第三行,我們將打印“Everything Normal”或“DANGER!移動到其他地方“取決于條件。
字符串網頁=”
物聯網煙霧探測系統
“; 網頁+ = “
煙霧值是”; 網頁+ = analogSensor; 網頁+ =“
”; if(analogSensor》 400) ) { 網頁+ =“
危險!移動其他地方
”; } 其他 { 網頁+ =“
一切正常
”; }
下面的代碼會將命令發送到ESP,并在串口監視器上打印ESP的輸出。
String esp8266_command(String command,const int timeout,boolean debug) { String response =“”; wifi_module.print(command); long int time = millis(); while((time + timeout)》 millis()) { while (wifi_module.available()) { char c = wifi_module.read(); 響應+ = c; } } 就是這樣,希望你能讓它運轉起來!此外,您還可以查看我的博客,查看ElectronicsHobbyist.com上的其他一些項目。
代碼
#include #define DEBUG true SoftwareSerial wifi_module (2,3);//將esp的TX引腳連接到Arduino的引腳2和esp的RX引腳連接到Arduino的引腳3 int red_led_pin = 9; int green_led_pin = 8; int buzzer_pin = 10; int smoke_sensor_pin = A0; void setup() { Serial。開始(9600);wifi_module.begin(9600);//根據您的esp8266 pinMode(red_led_pin,OUTPUT)設置波特率; pinMode(green_led_pin,OUTPUT); pinMode(buzzer_pin,OUTPUT) ; pinMode(smoke_sensor_pin,INPUT); esp8266_command(“AT + RST r n”,2000,DEBUG);//reset moduleesp8266_command(“AT + CWMODE = 2 r n”,1000,DEBUG);//配置為接入點 esp8266_command(“AT + CIFSR r n”,1000,DEBUG);//獲取IP地址 esp8266_command(“AT + CIPMUX = 1 r n”,1000,DEBUG);//為多個連接配置 esp8266_command(“AT + CIPSERVER = 1,80 r n”,1000,DEBUG);//在端口80上打開服務器 } void loop() { int analogSensor = analogRead(smoke_sensor_pin); if(analogSensor》 400) { digitalWrite(red_led_pin,HIGH); digitalWrite(green_led_pin,LOW); 音(buzzer_pin,1000,200); } 其他 { digitalWrite(red_led_pin, LOW); digitalWrite(green_led_pin,HIGH); noTone(buzzer_pin); } if(wifi_module.available( )) { if(wifi_module.find(“+ IPD,”)) { delay(1000); int connectionId = wifi_module.read() - 48; String webpage =“
物聯網煙霧探測系統
”; 網頁+ =“
煙霧值是”; 網頁+ = analogSensor; 網頁+ =“
“; if(analogSensor》 400) { 網頁+ =”
危險!移動到其他地方
“; } 其他 { 網頁+ =”
一切正常
“; } 字符串cipSend =”AT + CIPSEND =“; cipSend + = connectionId; cipSend + =“,”; cipSend + = webpage.length(); cipSend + =“ r n”; esp8266_command(cipSend,1000,DEBUG); esp8266_command(網頁,1000,DEBUG); 字符串closeCommand =“AT + CIPCLOSE = “;closeCommand + = connectionId;//追加連接ID closeCommand + =” r n“; esp8266_command( closeCommand,3000,DEBUG); } } } 字符串esp8266_command(字符串命令,const int timeout,布爾調試) { 字符串響應=“”; wifi_module.print(命令); long int time = millis() ; while((時間+超時)》 millis()) { while(wifi_module.available()) { char c = wifi_module.read(); 響應+ = c; } } if(debug) { Serial.print(響應); } 返回響應; }
-
報警器
+關注
關注
12文章
927瀏覽量
108917 -
氣體傳感器
+關注
關注
14文章
555瀏覽量
37801 -
Arduino
+關注
關注
188文章
6477瀏覽量
187836 -
ESP8266
+關注
關注
50文章
962瀏覽量
45338
發布評論請先 登錄
相關推薦
接近感應單片機在煙霧報警器抗干擾性的總結
煙感芯片-光電式感煙火災探測器IC-煙霧報警器單片機
電子圍欄報警器報警常見問題
光柵報警器一直報警是什么原因
基于51單片機煙霧檢測報警器設計
紅外報警器設計原理與實現方法
![紅外<b class='flag-5'>報警器</b>設計原理與實現方法](https://file.elecfans.com/web2/M00/71/E6/poYBAGNSCDaAaO2cAAB8q5xq4aM212.png)
基于RJM8L151S的煙霧報警器解決方案
![基于RJM8L151S的<b class='flag-5'>煙霧</b><b class='flag-5'>報警器</b>解決方案](https://file1.elecfans.com/web2/M00/C7/5C/wKgZomYTV06ATN7JAAAvoVLPhPs122.png)
評論