- Mga Kinakailangan na Bahagi:
- Circuit Diagram at Paliwanag:
- Paggawa ng Paliwanag:
- Paliwanag sa Code:
- "; webpage + =" Ang Kalidad ng Air ay "; webpage + = air_quality; webpage + =" PPM "; webpage + ="
";
Tatawag ang sumusunod na code ng isang pagpapaandar na pinangalanang sendData at ipapadala ang mga data at mga string ng mensahe sa webpage upang maipakita.
sendData (cipSend, 1000, DEBUG); sendData (webpage, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = koneksyonId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Ang sumusunod na code ay i-print ang data sa LCD. Nag-apply kami ng iba't ibang mga kundisyon para sa pag-check sa kalidad ng hangin, at i-print ng LCD ang mga mensahe ayon sa mga kundisyon at ang buzzer ay beep din kung ang polusyon ay lumampas sa 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Ang Kalidad ng Hangin ay"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); kung (air_quality <= 1000) {lcd.print ("Fresh Air"); digitalWrite (8, LOW);
Sa wakas ang pagpapaandar sa ibaba ay magpapadala at magpapakita ng data sa webpage. Ang data na naimbak namin sa string na pinangalanang 'webpage' ay mai-save sa string na pinangalanang 'command' . Pagkatapos ay babasahin ng ESP ang karakter nang paisa-isa mula sa 'utos' at i-print ito sa webpage.
String sendData (String command, const int timeout, boolean debug) {String response = ""; esp8266.print (utos); // send the read character to the esp8266 long int time = millis (); habang ((time + timeout)> millis ()) {habang (esp8266.available ()) {// Ang esp ay may data kaya ipakita ang output nito sa serial window char c = esp8266.read (); // basahin ang susunod na tauhan. tugon + = c; }} kung (debug) {Serial.print (tugon); } tugon sa pagbalik; }
- Pagsubok at Paglabas ng Proyekto:
Sa proyektong ito gagawa kami ng isang IoT Batay sa Air Pollution Monitoring System kung saan susubaybayan namin ang Kalidad ng Hangin sa isang webserver gamit ang internet at mag-uudyok ng isang alarma kapag bumaba ang kalidad ng hangin na lampas sa isang tiyak na antas, nangangahulugang kapag may sapat na halaga ng mga mapanganib na gas ay naroroon sa hangin tulad ng CO2, usok, alkohol, benzene at NH3. Ipapakita nito ang kalidad ng hangin sa PPM sa LCD at pati na rin sa webpage upang madali naming masubaybayan ito.
Dati itinayo namin ang detektor ng LPG gamit ang MQ6 sensor at Smoke detector na gumagamit ng MQ2 sensor ngunit sa pagkakataong ito ay ginamit namin ang MQ135 sensor bilang sensor ng kalidad ng hangin na pinakamainam na pagpipilian para sa pagsubaybay sa Kalidad ng Hangin dahil maaari nitong makita ang pinakapinsalang mga gas at masusukat ang kanilang halaga tama. Sa proyektong IOT na ito, maaari mong subaybayan ang antas ng polusyon mula sa kahit saan gamit ang iyong computer o mobile. Maaari naming mai-install ang sistemang ito saanman at maaari ring magpalitaw ng ilang aparato kapag ang polusyon ay lampas sa ilang antas, tulad ng maaari naming i-on ang Exhaust fan o maaaring magpadala ng alerto na SMS / mail sa gumagamit.
Mga Kinakailangan na Bahagi:
- MQ135 Gas sensor
- Arduino Uno
- Module ng Wi-Fi na ESP8266
- 16X2 LCD
- Breadboard
- 10K potensyomiter
- 1K ohm resistors
- 220 ohm risistor
- Buzzer
Maaari kang bumili ng lahat ng mga sangkap sa itaas mula dito.
Circuit Diagram at Paliwanag:
Una sa lahat ay ikonekta namin ang ESP8266 sa Arduino. Ang ESP8266 ay tumatakbo sa 3.3V at kung bibigyan mo ito ng 5V mula sa Arduino pagkatapos ay hindi ito gagana nang maayos at maaari itong makapinsala. Ikonekta ang VCC at ang CH_PD sa 3.3V pin ng Arduino. Gumagana ang RX pin ng ESP8266 sa 3.3V at hindi ito makikipag-usap sa Arduino kapag ikonekta namin ito nang direkta sa Arduino. Kaya, kakailanganin nating gumawa ng isang divider ng boltahe para dito na iko-convert ang 5V sa 3.3V. Maaari itong magawa sa pamamagitan ng pagkonekta ng tatlong resistors sa serye tulad ng ginawa namin sa circuit. Ikonekta ang pin ng TX ng ESP8266 sa pin 10 ng Arduino at ang RX pin ng esp8266 sa pin 9 ng Arduino sa pamamagitan ng mga resistors.
Ang module ng Wi-Fi ng ESP8266 ay nagbibigay sa iyong mga proyekto ng pag- access sa Wi-Fi o internet. Ito ay isang napaka-murang aparato at gawin ang iyong mga proyekto napakalakas. Maaari itong makipag-usap sa anumang microcontroller at ito ang pinakapangunahing aparato sa platform ng IOT. Dagdagan ang nalalaman tungkol sa paggamit ng ESP8266 sa Arduino dito.
Pagkatapos ay ikonekta namin ang MQ135 sensor sa Arduino. Ikonekta ang VCC at ang ground pin ng sensor sa 5V at ground ng Arduino at ang Analog pin ng sensor sa A0 ng Arduino.
Ikonekta ang isang buzzer sa pin 8 ng Arduino na magsisimulang beep kapag ang kondisyon ay naging totoo.
Sa huli, ikonekta namin ang LCD sa Arduino. Ang mga koneksyon ng LCD ay ang mga sumusunod
- Ikonekta ang pin 1 (VEE) sa lupa.
- Ikonekta ang pin 2 (VDD o VCC) sa 5V.
- Ikonekta ang pin 3 (V0) sa gitnang pin ng 10K potentiometer at ikonekta ang iba pang dalawang dulo ng potensyomiter sa VCC at sa GND. Ginagamit ang potentiometer upang makontrol ang pagkakaiba ng screen ng LCD. Ang potensyomiter ng mga halagang iba sa 10K ay gagana rin.
- Ikonekta ang pin 4 (RS) sa pin 12 ng Arduino.
- Ikonekta ang pin 5 (Basahin / Isulat) sa lupa ng Arduino. Ang pin na ito ay hindi madalas gamitin kaya ikonekta namin ito sa lupa.
- Ikonekta ang pin 6 (E) sa pin 11 ng Arduino. Ang RS at E pin ay ang mga control pin na ginagamit upang magpadala ng data at mga character.
- Ang mga sumusunod na apat na pin ay mga pin ng data na ginagamit upang makipag-usap sa Arduino.
Ikonekta ang pin 11 (D4) sa pin 5 ng Arduino.
Ikonekta ang pin 12 (D5) sa pin 4 ng Arduino.
Ikonekta ang pin 13 (D6) sa pin 3 ng Arduino.
Ikonekta ang pin 14 (D7) sa pin 2 ng Arduino.
- Ikonekta ang pin 15 sa VCC sa pamamagitan ng resistor na 220 ohm. Gagamitin ang risistor upang maitakda ang liwanag ng likod ng ilaw. Ang mas malalaking mga halaga ay magpapadilim sa likod.
- Ikonekta ang pin 16 sa Ground.
Paggawa ng Paliwanag:
Ang MQ135 sensor ay maaaring kahulugan NH3, Nox, alak, bensina, usok, CO2 at ilang iba pang mga gas, kaya ito ay perpekto gas sensor para sa ating Air Quality Monitoring Project. Kapag ikonekta namin ito sa Arduino pagkatapos ay madarama nito ang mga gas, at makukuha natin ang antas ng polusyon sa PPM (mga bahagi bawat milyon). Ang MQ135 gas sensor ay nagbibigay ng output sa anyo ng mga antas ng boltahe at kailangan naming i-convert ito sa PPM. Kaya para sa pag-convert ng output sa PPM, dito nagamit namin ang isang silid-aklatan para sa MQ135 sensor, ipinaliwanag ito nang detalyado sa seksyong "Pagpapaliwanag ng Code" sa ibaba.
Binibigyan kami ng Sensor ng halagang 90 kapag walang gas na malapit dito at ang ligtas na antas ng kalidad ng hangin ay 350 PPM at hindi ito dapat lumagpas sa 1000 PPM. Kapag lumagpas ito sa limitasyon ng 1000 PPM, pagkatapos ay nagsisimula ito sanhi ng pananakit ng ulo, pag-aantok at pagwawalang-baho, lipas, malamig na hangin at kung lumagpas sa 2000 PPM kung gayon maaari itong maging sanhi ng pagtaas ng rate ng puso at maraming iba pang mga sakit.
Kapag ang halaga ay magiging mas mababa sa 1000 PPM, pagkatapos ay ipapakita ng LCD at webpage ang "Fresh Air". Kailan man tataas ang halaga ng 1000 PPM, pagkatapos ang buzzer ay magsisimulang mag-beep at ipapakita ng LCD at webpage ang "Mahinang Air, Buksan ang Windows". Kung tataas nito ang 2000 kung gayon ang buzzer ay mananatiling beep at ang LCD at webpage ay magpapakita ng "Panganib! Lumipat sa sariwang Hangin ”.
Paliwanag sa Code:
Bago simulan ang pag-coding para sa proyektong ito, kailangan muna nating i-Calibrate ang MQ135 Gas sensor. Maraming mga kalkulasyon na kasangkot sa pag-convert ng output ng sensor sa halaga ng PPM, nagawa namin ang pagkalkula na ito bago sa aming nakaraang proyekto sa Smoke Detector. Ngunit narito ginagamit namin ang Library para sa MQ135, maaari mong i-download at mai-install ang MQ135 library na ito mula dito:
Gamit ang library na ito maaari mong direktang makuha ang mga halaga ng PPM, sa pamamagitan lamang ng paggamit sa ibaba ng dalawang linya:
MQ135 gasSensor = MQ135 (A0); float air_quality = gasSensor.getPPM ();
Ngunit bago ito kailangan naming i- calibrate ang MQ135 sensor, para sa pag-calibrate ng sensor i-upload ang ibinigay na code sa ibaba at hayaan itong tumakbo ng 12 hanggang 24 na oras at pagkatapos ay makuha ang RZERO na halaga.
# isama ang "MQ135.h" walang bisa na pag-set up () {Serial.begin (9600); } void loop () {MQ135 gasSensor = MQ135 (A0); // Attach sensor to pin A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); pagkaantala (1000); }
Matapos makuha ang halaga ng RZERO . Ilagay ang halagang RZERO sa file ng library na na -download mo ang "MQ135.h": #define RZERO 494.63
Maaari na nating simulan ang aktwal na code para sa aming proyekto sa pagsubaybay sa kalidad ng Air.
Sa code, una sa lahat ay tinukoy namin ang mga aklatan at mga variable para sa Gas sensor at LCD. Sa pamamagitan ng paggamit ng Software Serial Library, makakagawa kami ng anumang digital pin bilang TX at RX pin. Sa code na ito, ginawa namin ang Pin 9 bilang RX pin at ang pin 10 bilang TX pin para sa ESP8266. Pagkatapos ay isinama namin ang silid-aklatan para sa LCD at tinukoy ang mga pin para sa pareho. Natukoy din namin ang dalawa pang mga variable: isa para sa sensor analog pin at iba pa para sa pagtatago ng halaga ng air_quality .
# isama
Pagkatapos ay idedeklara namin ang pin 8 bilang output pin kung saan namin nakakonekta ang buzzer. l cd.begin (16,2) utos ay magsisimula ang LCD upang makatanggap ng data at pagkatapos ay itatakda namin ang cursor sa unang linya at i-print ang 'circuitdigest' . Pagkatapos ay itatakda namin ang cursor sa pangalawang linya at i-print ang 'Sensor Warming' .
pinMode (8, OUTPUT); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("Sensor Warming"); pagkaantala (1000);
Pagkatapos ay itatakda namin ang rate ng baud para sa serial na komunikasyon. Ang magkakaibang ESP ay may magkakaibang baud rate kaya isulat ito ayon sa rate ng baud ng iyong ESP. Pagkatapos ay magpapadala kami ng mga utos upang itakda ang ESP upang makipag-usap sa Arduino at ipakita ang IP address sa serial monitor.
Serial.begin (115200); esp8266.begin (115200); sendData ("AT + RST \ r \ n", 2000, DEBUG); sendData ("AT + CWMODE = 2 \ r \ n", 1000, DEBUG); sendData ("AT + CIFSR \ r \ n", 1000, DEBUG); sendData ("AT + CIPMUair_quality = 1 \ r \ n", 1000, DEBUG); sendData ("AT + CIPSERVER = 1,80 \ r \ n", 1000, DEBUG); pinMode (sensorPin, INPUT); lcd.clear ();
Para sa pag-print ng output sa webpage sa web browser, kakailanganin naming gumamit ng HTML program. Kaya, lumikha kami ng isang string na pinangalanang webpage at naimbak ang output dito. Ibinabawas namin ang 48 mula sa output dahil ang function na nabasa () ay nagbabalik ng ASCII decimal na halaga at ang unang decimal number na 0 ay nagsisimula sa 48.
kung (esp8266.available ()) {kung (esp8266.find ("+ IPD,")) {pagkaantala (1000); int connectionId = esp8266.read () - 48; String webpage = "
IOT Air Pollution Monitoring System
"; webpage + =""; webpage + =" Ang Kalidad ng Air ay "; webpage + = air_quality; webpage + =" PPM "; webpage + ="
";
Tatawag ang sumusunod na code ng isang pagpapaandar na pinangalanang sendData at ipapadala ang mga data at mga string ng mensahe sa webpage upang maipakita.
sendData (cipSend, 1000, DEBUG); sendData (webpage, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = koneksyonId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Ang sumusunod na code ay i-print ang data sa LCD. Nag-apply kami ng iba't ibang mga kundisyon para sa pag-check sa kalidad ng hangin, at i-print ng LCD ang mga mensahe ayon sa mga kundisyon at ang buzzer ay beep din kung ang polusyon ay lumampas sa 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Ang Kalidad ng Hangin ay"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); kung (air_quality <= 1000) {lcd.print ("Fresh Air"); digitalWrite (8, LOW);
Sa wakas ang pagpapaandar sa ibaba ay magpapadala at magpapakita ng data sa webpage. Ang data na naimbak namin sa string na pinangalanang 'webpage' ay mai-save sa string na pinangalanang 'command' . Pagkatapos ay babasahin ng ESP ang karakter nang paisa-isa mula sa 'utos' at i-print ito sa webpage.
String sendData (String command, const int timeout, boolean debug) {String response = ""; esp8266.print (utos); // send the read character to the esp8266 long int time = millis (); habang ((time + timeout)> millis ()) {habang (esp8266.available ()) {// Ang esp ay may data kaya ipakita ang output nito sa serial window char c = esp8266.read (); // basahin ang susunod na tauhan. tugon + = c; }} kung (debug) {Serial.print (tugon); } tugon sa pagbalik; }
Pagsubok at Paglabas ng Proyekto:
Bago i-upload ang code, tiyaking nakakonekta ka sa Wi-Fi ng iyong aparato na ESP8266. Matapos ang pag-upload, buksan ang serial monitor at ipapakita nito ang IP address tulad ng ipinakita sa ibaba.
I-type ang IP address na ito sa iyong browser, ipapakita nito sa iyo ang output tulad ng ipinakita sa ibaba. Kailangan mong i-refresh muli ang pahina kung nais mong makita ang kasalukuyang Halaga ng Kalidad ng Air sa PPM.
Mayroon kaming pag-set up ng isang lokal na server upang maipakita ang paggana nito, maaari mong suriin ang Video sa ibaba. Ngunit upang subaybayan ang kalidad ng hangin mula sa kahit saan sa mundo, kailangan mong ipasa ang port 80 (ginamit para sa HTTP o internet) sa iyong lokal o pribadong IP address (192.168 *) ng iyong aparato. Pagkatapos ng pagpapasa ng port ng lahat ng mga papasok na koneksyon ay ipapasa sa lokal na address na ito at maaari mong buksan sa itaas ang ipinakita na webpage sa pamamagitan lamang ng pagpasok ng pampublikong IP address ng iyong internet mula saanman. Maaari mong ipasa ang port sa pamamagitan ng pag-log in sa iyong router (192.168.1.1) at hanapin ang pagpipilian upang i-setup ang pagpapasa ng port.