煙霧報(bào)警器如何工作?
MQ-2煙霧傳感器將以模擬電壓的形式提供輸出。我們?cè)诖a中設(shè)置了一個(gè)條件,即如果傳感器的輸出值大于400,則蜂鳴器將開始發(fā)出蜂鳴聲,紅色LED將亮起;如果傳感器的輸出值小于400,則蜂鳴器將保持靜音,綠色LED將亮起。
這里使用的ESP將創(chuàng)建一個(gè)網(wǎng)頁一個(gè)IP地址,將數(shù)據(jù)發(fā)送到該IP地址,并在那里打印數(shù)據(jù)。上傳代碼后,可在串口監(jiān)視器中看到此IP地址,如下所示。
當(dāng)您輸入此IP時(shí)在瀏覽器中顯示地址,然后將顯示項(xiàng)目的輸出,如下圖所示。
電路圖
首先,將ESP8266模塊與Arduino連接。為了將ESP8266與Arduino正確連接,我們使用了ESP-01適配器模塊,這將使連接變得非常容易。該適配器模塊內(nèi)置5V至3.3V穩(wěn)壓器,這意味著您不必使用任何電阻。
將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,將蜂鳴器上的負(fù)極連接到Arduino上的GND。然后通過220歐姆電阻將LED的負(fù)極連接到GND,將正極連接到Arduino的引腳8和9上。
代碼說明
首先,添加軟件序列庫。軟件串行庫允許我們?cè)贏rduino的其他引腳上使用TX和RX通信,而不是僅使用默認(rèn)的TX和RX引腳。然后我們定義了我們?cè)贏rduino上連接這些TX和RX引腳的位置。
#include #define DEBUG true SoftwareSerial wifi_module(2,3);//將esp的TX引腳連接到Arduino的引腳2和esp的RX引腳連接到Arduino的引腳3
在下面的行中,我們已經(jīng)聲明了LED,蜂鳴器和煙霧傳感器的引腳。
int red_led_pin = 9; int green_led_pin = 8; int buzzer_pin = 10; int smoke_sensor_pin = A0;
在設(shè)置功能中,首先,我們?cè)O(shè)置串行通信的波特率和9400的wifi模塊。然后我們聲明了引腳并且蜂鳴器引腳作為輸出引腳,因?yàn)槲覀儗⑦@些引腳的輸出提供給LED和蜂鳴器。最后,我們將煙霧傳感器引腳聲明為輸入,因?yàn)闊熿F傳感器引腳將從傳感器接收輸入并將其傳送給Arduino。
Serial.begin(9600) ); wifi_module.begin(9600);//根據(jù)您的esp8266 pinMode(red_led_pin,OUTPUT)設(shè)置波特率; pinMode(green_led_pin,OUTPUT); pinMode(buzzer_pin,OUTPUT) ; pinMode(smoke_sensor_pin,INPUT);
這些線路將調(diào)用該功能,并將在ESP提供的IP地址處設(shè)置服務(wù)器。然后ESP將在此IP地址發(fā)送數(shù)據(jù)。
esp8266_command(“AT + RST r n”,2000,DEBUG);//reset module esp8266_command(“AT + CWMODE = 2 r n”,1000,DEBUG);//配置為接入點(diǎn) esp8266_command(“AT + CIFSR r n”,1000,DEBUG);//獲取IP地址 esp8266_command(“AT + CIPMUX = 1 r n”,1000,DEBUG);//為多個(gè)連接配置 esp8266_command(“AT + CIPSERVER = 1,80 r n”,1000,DEBUG);//打開端口80上的服務(wù)器
在循環(huán)函數(shù)中,我們讀取來自煙霧傳感器的值然后應(yīng)用一個(gè)條件,如果輸出值大于400,則紅色LED將亮起,蜂鳴器將開始發(fā)出蜂鳴聲。如果輸出值小于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); }
以下行將打印網(wǎng)頁上的數(shù)據(jù)。首先,我們將在頂部打印“物聯(lián)網(wǎng)煙霧探測(cè)系統(tǒng)”。然后在第二行,我們將打印煙霧值,在第三行,我們將打印“Everything Normal”或“DANGER!移動(dòng)到其他地方“取決于條件。
字符串網(wǎng)頁=”
物聯(lián)網(wǎng)煙霧探測(cè)系統(tǒng)
“; 網(wǎng)頁+ = “
煙霧值是”; 網(wǎng)頁+ = analogSensor; 網(wǎng)頁+ =“
”; if(analogSensor》 400) ) { 網(wǎng)頁+ =“
危險(xiǎn)!移動(dòng)其他地方
”; } 其他 { 網(wǎng)頁+ =“
一切正常
”; }
下面的代碼會(huì)將命令發(fā)送到ESP,并在串口監(jiān)視器上打印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(); 響應(yīng)+ = c; } } 就是這樣,希望你能讓它運(yùn)轉(zhuǎn)起來!此外,您還可以查看我的博客,查看ElectronicsHobbyist.com上的其他一些項(xiàng)目。
代碼
#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);//根據(jù)您的esp8266 pinMode(red_led_pin,OUTPUT)設(shè)置波特率; 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);//配置為接入點(diǎn) esp8266_command(“AT + CIFSR r n”,1000,DEBUG);//獲取IP地址 esp8266_command(“AT + CIPMUX = 1 r n”,1000,DEBUG);//為多個(gè)連接配置 esp8266_command(“AT + CIPSERVER = 1,80 r n”,1000,DEBUG);//在端口80上打開服務(wù)器 } 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 =“
物聯(lián)網(wǎng)煙霧探測(cè)系統(tǒng)
”; 網(wǎng)頁+ =“
煙霧值是”; 網(wǎng)頁+ = analogSensor; 網(wǎng)頁+ =“
“; if(analogSensor》 400) { 網(wǎng)頁+ =”
危險(xiǎn)!移動(dòng)到其他地方
“; } 其他 { 網(wǎng)頁+ =”
一切正常
“; } 字符串cipSend =”AT + CIPSEND =“; cipSend + = connectionId; cipSend + =“,”; cipSend + = webpage.length(); cipSend + =“ r n”; esp8266_command(cipSend,1000,DEBUG); esp8266_command(網(wǎng)頁,1000,DEBUG); 字符串closeCommand =“AT + CIPCLOSE = “;closeCommand + = connectionId;//追加連接ID closeCommand + =” r n“; esp8266_command( closeCommand,3000,DEBUG); } } } 字符串esp8266_command(字符串命令,const int timeout,布爾調(diào)試) { 字符串響應(yīng)=“”; wifi_module.print(命令); long int time = millis() ; while((時(shí)間+超時(shí))》 millis()) { while(wifi_module.available()) { char c = wifi_module.read(); 響應(yīng)+ = c; } } if(debug) { Serial.print(響應(yīng)); } 返回響應(yīng); }
-
報(bào)警器
+關(guān)注
關(guān)注
12文章
927瀏覽量
108847 -
氣體傳感器
+關(guān)注
關(guān)注
14文章
553瀏覽量
37750 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187559 -
ESP8266
+關(guān)注
關(guān)注
50文章
962瀏覽量
45240
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論