- Nepieciešamās sastāvdaļas:
- Shēmas shēma un skaidrojums:
- Darba skaidrojums:
- Koda skaidrojums:
- "; vietne + =" Gaisa kvalitāte ir "; vietne + = gaisa_kvalitāte; tīmekļa lapa + =" PPM "; vietne + ="
";
Šis kods izsauks funkciju sendData un nosūtīs datu un ziņojumu virknes uz vietni, lai tās parādītu.
sendData (cipSend, 1000, DEBUG); sendData (vietne, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = tīmekļa lapa.length (); cipSend + = "\ r \ n";
Šis kods drukās datus uz LCD. Mēs esam piemērojuši dažādus nosacījumus gaisa kvalitātes pārbaudei, un LCD drukās ziņojumus atbilstoši apstākļiem, un skaņas signāls arī pīkstēs, ja piesārņojums pārsniedz 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Gaisa kvalitāte ir"); lcd.print (gaisa_kvalitāte); lcd.print ("PPM"); lcd.setCursor (0,1); if (gaisa_kvalitāte <= 1000) {lcd.print ("Svaigs gaiss"); digitalWrite (8, LOW);
Visbeidzot, šī funkcija nosūtīs un parādīs datus tīmekļa lapā. Dati, kurus mēs glabājām virknē ar nosaukumu “webpage”, tiks saglabāti virknē ar nosaukumu “komanda” . Pēc tam ESP nolasīs rakstzīmi pa vienam no komandas un izdrukās to tīmekļa lapā.
String sendData (virkne komanda, const int taimauts, Būla atkļūdošana) {String response = ""; esp8266.print (komanda); // nosūtīt lasīto rakstzīmi uz esp8266 long int time = millis (); while ((laiks + taimauts)> milis ()) {while (esp8266.available ()) {// Esp ir dati, tāpēc parādiet tā izvadi seriālajā logā char c = esp8266.read (); // lasīt nākamo rakstzīmi. atbilde + = c; }} if (atkļūdot) {Serial.print (atbilde); } atgriešanās atbilde; }
- Projekta pārbaude un rezultāts:
Šajā projektā mēs izveidosim IoT balstītu gaisa piesārņojuma uzraudzības sistēmu, kurā mēs uzraudzīsim gaisa kvalitāti, izmantojot tīmekļa serveri, izmantojot internetu, un izraisīsim trauksmi, kad gaisa kvalitāte pazemināsies virs noteikta līmeņa, tas nozīmē, ja ir pietiekams daudzums gaisā ir kaitīgu gāzu, piemēram, CO2, dūmu, alkohola, benzola un NH3. Tas parādīs gaisa kvalitāti PPM uz LCD un mājas lapā, lai mēs to varētu ļoti viegli uzraudzīt.
Iepriekš mēs esam izveidojuši LPG detektoru, izmantojot MQ6 sensoru un dūmu detektoru, izmantojot MQ2 sensoru, bet šoreiz mēs izmantojām MQ135 sensoru kā gaisa kvalitātes sensoru, kas ir labākā izvēle gaisa kvalitātes kontrolei, jo tas var noteikt visvairāk kaitīgo gāzu un var izmērīt to daudzumu precīzi. Šajā IOT projektā jūs varat kontrolēt piesārņojuma līmeni no jebkuras vietas, izmantojot datoru vai mobilo tālruni. Mēs varam instalēt šo sistēmu jebkur un arī iedarbināt kādu ierīci, ja piesārņojums pārsniedz kādu līmeni, piemēram, mēs varam ieslēgt izplūdes ventilatoru vai varam nosūtīt brīdinājuma īsziņu / pastu lietotājam.
Nepieciešamās sastāvdaļas:
- MQ135 Gāzes sensors
- Arduino Uno
- Wi-Fi modulis ESP8266
- 16X2 LCD
- Maizes dēlis
- 10K potenciometrs
- 1K omu rezistori
- 220 omu rezistors
- Buzzer
Visus iepriekš minētos komponentus varat iegādāties šeit.
Shēmas shēma un skaidrojums:
Vispirms mēs savienosim ESP8266 ar Arduino. ESP8266 darbojas ar 3,3 V, un, ja jūs to piešķirat 5 V no Arduino, tas nedarbosies pareizi, un tas var sabojāt. Pievienojiet VCC un CH_PD Arduino 3,3 V tapai. ESP8266 RX tapa darbojas ar 3.3V, un tā nesazināsies ar Arduino, kad mēs to tieši savienosim ar Arduino. Tātad mums būs jāizveido sprieguma dalītājs, kas pārveidos 5V par 3.3V. To var izdarīt, sērijveidā savienojot trīs rezistorus, kā mēs to darījām ķēdē. Savienojiet ESP8266 TX tapu ar Arduino tapu 10 un esp8266 RX tapu ar Arduino tapu 9 caur rezistoriem.
ESP8266 Wi-Fi modulis ļauj jūsu projektiem piekļūt Wi-Fi vai internetam. Tā ir ļoti lēta ierīce, kas jūsu projektus padara ļoti spēcīgus. Tas var sazināties ar jebkuru mikrokontrolleru, un tas ir visvairāk vadošās ierīces IOT platformā. Uzziniet vairāk par ESP8266 izmantošanu ar Arduino šeit.
Tad mēs savienosim MQ135 sensoru ar Arduino. Savienojiet VCC un sensora zemējuma tapu ar Arduino 5V un zemi, bet sensora analogo tapu ar Arduino A0.
Pievienojiet skaņas signālu Arduino tapai 8, kas sāks pīkstēt, kad nosacījums kļūs pareizs.
Visbeidzot, mēs savienosim LCD ar Arduino. LCD savienojumi ir šādi
- Pievienojiet 1. tapu (VEE) zemei.
- Pievienojiet 2. kontaktu (VDD vai VCC) 5 V.
- Savienojiet tapu 3 (V0) ar 10K potenciometra vidējo tapu un pārējos divus potenciometra galus pievienojiet VCC un GND. Potenciometru izmanto, lai kontrolētu LCD ekrāna kontrastu. Darbosies arī potenciometrs ar vērtībām, kas nav 10K.
- Savienojiet 4. kontaktu (RS) ar Arduino 12. kontaktu.
- Pievienojiet 5. tapu (lasīšanas / rakstīšanas) Arduino zemei. Šo tapu bieži neizmanto, tāpēc mēs to savienosim ar zemi.
- Pievienojiet 6. kontaktu (E) Arduino 11. tapai. RS un E tapa ir vadības tapas, ko izmanto datu un rakstzīmju nosūtīšanai.
- Šīs četras tapas ir datu tapas, kuras izmanto, lai sazinātos ar Arduino.
Pievienojiet 11. tapu (D4) Arduino 5. tapai.
Pievienojiet tapu 12 (D5) Arduino 4. tapai.
Savienojiet tapu 13 (D6) ar Arduino 3. tapu.
Savienojiet tapu 14 (D7) ar Arduino 2. tapu.
- Savienojiet tapu 15 ar VCC caur 220 omu rezistoru. Rezistors tiks izmantots, lai iestatītu aizmugures apgaismojuma spilgtumu. Lielākas vērtības padarīs aizmugures gaismu daudz tumšāku.
- Savienojiet tapu 16 ar zemi.
Darba skaidrojums:
MQ135 sensors spēj uztvert NH3, NOx, spirtu, benzolu, dūmus, CO2 un dažas citas gāzes, tāpēc tas ir ideāls gāzes sensors mūsu gaisa kvalitātes uzraudzības projektam. Kad mēs to savienosim ar Arduino, tas jutīs gāzes, un mēs saņemsim piesārņojuma līmeni PPM (daļas uz miljonu). MQ135 gāzes sensors dod izeju sprieguma līmeņu formā, un mums tas jāpārvērš PPM. Tātad, lai pārveidotu izeju PPM, šeit mēs izmantojām bibliotēku MQ135 sensoram, tas ir sīki izskaidrots zemāk esošajā sadaļā “Koda skaidrojums”.
Sensors mums sniedza vērtību 90, ja tā tuvumā nebija gāzes, un drošais gaisa kvalitātes līmenis ir 350 PPM, un tam nevajadzētu pārsniegt 1000 PPM. Kad tas pārsniedz 1000 PPM robežu, tas sāk izraisīt galvassāpes, miegainību un nemainīgu, novecojušu, aizliktu gaisu un, ja tas pārsniedz 2000 PPM, tas var izraisīt paaugstinātu sirdsdarbības ātrumu un daudzas citas slimības.
Kad vērtība būs mazāka par 1000 PPM, LCD ekrānā un tīmekļa lapā tiks parādīts uzraksts “Fresh Air”. Ikreiz, kad vērtība palielināsies par 1000 PPM, skaņas signāls sāks pīkstēt, un LCD ekrānā un tīmekļa lapā būs redzams uzraksts “Poor Air, Open Windows”. Ja tas palielināsies par 2000, skaņas signāls turpinās pīkstēt, un LCD ekrānā un tīmekļa lapā būs redzams paziņojums “Bīstami! Pārvietoties svaigā gaisā ”.
Koda skaidrojums:
Pirms sākt kodēt šo projektu, mums vispirms jākalibrē MQ135 gāzes sensors. Sensora izejas pārveidošana PPM vērtībā ir saistīta ar daudziem aprēķiniem, mēs jau esam veikuši šo aprēķinu mūsu iepriekšējā dūmu detektora projektā. Bet šeit mēs izmantojam bibliotēku MQ135, jūs varat lejupielādēt un instalēt šo MQ135 bibliotēku šeit:
Izmantojot šo bibliotēku, jūs varat tieši iegūt PPM vērtības, vienkārši izmantojot zemāk redzamās divas rindas:
MQ135 gasSensor = MQ135 (A0); pludiņa gaisa_kvalitāte = gasSensor.getPPM ();
Bet pirms tam mums jākalibrē sensors MQ135, sensora kalibrēšanai augšupielādējiet zemāk norādīto kodu un ļaujiet tam darboties 12 līdz 24 stundas un pēc tam iegūstiet RZERO vērtību.
#include "MQ135.h" void iestatīšana () {Serial.begin (9600); } void loop () {MQ135 gasSensor = MQ135 (A0); // Pievienojiet sensoru tapai A0 pludiņš rzero = gasSensor.getRZero (); Serial.println (rzero); kavēšanās (1000); }
Pēc RZERO vērtības iegūšanas. Ievietojiet RZERO vērtību bibliotēkas failā, kuru lejupielādējāt "MQ135.h": #define RZERO 494.63
Tagad mēs varam sākt faktisko kodu mūsu Gaisa kvalitātes monitoringa projektam.
Kodā vispirms esam definējuši bibliotēkas un mainīgos gāzes sensoram un LCD. Izmantojot programmatūras sērijas bibliotēku, mēs varam izveidot jebkuru digitālo tapu kā TX un RX kontaktu. Šajā kodā ESP8266 tapu 9 esam izveidojuši kā RX tapu un tapu 10 kā TX tapu. Tad mēs esam iekļāvuši bibliotēku LCD un definējuši tapas tam pašam. Mēs esam definējuši arī vēl divus mainīgos: vienu sensora analogajai tapai un otru gaisa_kvalitātes vērtības glabāšanai.
# iekļaut
Tad mēs paziņosim tapu 8 par izejas tapu vietā, kur esam pievienojuši skaņas signālu. Komanda l cd.begin (16,2) sāks LCD, lai saņemtu datus, un pēc tam mēs iestatīsim kursoru uz pirmo rindu un izdrukāsim “circuitdigest” . Tad mēs iestatīsim kursoru otrajā rindā un izdrukāsim "Sensor Warming" .
pinMode (8, OUTPUT); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("Sensora sasilšana"); kavēšanās (1000);
Tad mēs iestatīsim sērijveida sakaru pārraides ātrumu. Dažādiem ESP ir atšķirīgs datu pārraides ātrums, tāpēc uzrakstiet to atbilstoši savam ESP pārraides ātrumam. Tad mēs nosūtīsim komandas, lai iestatītu ESP sazināties ar Arduino un sērijveida monitorā parādītu IP adresi.
Sērijas sākums (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 (sensorsPin, INPUT); lcd.clear ();
Lai izdrukātu izvadi tīmekļa pārlūkprogrammā, mums būs jāizmanto HTML programmēšana. Tātad, mēs esam izveidojuši virkni ar nosaukumu webpage un saglabājuši tajā izvadi. No izejas mēs atņemam 48, jo funkcija read () atgriež ASCII decimālo vērtību un pirmais decimālskaitlis, kas ir 0, sākas ar 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {aizkavēšanās (1000); int savienojumsId = esp8266.lasīt () - 48; Virknes vietne = "
IOT gaisa piesārņojuma uzraudzības sistēma
"; vietne + =""; vietne + =" Gaisa kvalitāte ir "; vietne + = gaisa_kvalitāte; tīmekļa lapa + =" PPM "; vietne + ="
";
Šis kods izsauks funkciju sendData un nosūtīs datu un ziņojumu virknes uz vietni, lai tās parādītu.
sendData (cipSend, 1000, DEBUG); sendData (vietne, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = tīmekļa lapa.length (); cipSend + = "\ r \ n";
Šis kods drukās datus uz LCD. Mēs esam piemērojuši dažādus nosacījumus gaisa kvalitātes pārbaudei, un LCD drukās ziņojumus atbilstoši apstākļiem, un skaņas signāls arī pīkstēs, ja piesārņojums pārsniedz 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Gaisa kvalitāte ir"); lcd.print (gaisa_kvalitāte); lcd.print ("PPM"); lcd.setCursor (0,1); if (gaisa_kvalitāte <= 1000) {lcd.print ("Svaigs gaiss"); digitalWrite (8, LOW);
Visbeidzot, šī funkcija nosūtīs un parādīs datus tīmekļa lapā. Dati, kurus mēs glabājām virknē ar nosaukumu “webpage”, tiks saglabāti virknē ar nosaukumu “komanda” . Pēc tam ESP nolasīs rakstzīmi pa vienam no komandas un izdrukās to tīmekļa lapā.
String sendData (virkne komanda, const int taimauts, Būla atkļūdošana) {String response = ""; esp8266.print (komanda); // nosūtīt lasīto rakstzīmi uz esp8266 long int time = millis (); while ((laiks + taimauts)> milis ()) {while (esp8266.available ()) {// Esp ir dati, tāpēc parādiet tā izvadi seriālajā logā char c = esp8266.read (); // lasīt nākamo rakstzīmi. atbilde + = c; }} if (atkļūdot) {Serial.print (atbilde); } atgriešanās atbilde; }
Projekta pārbaude un rezultāts:
Pirms koda augšupielādes pārliecinieties, vai ir izveidots savienojums ar ierīces ESP8266 Wi-Fi. Pēc augšupielādes atveriet sērijveida monitoru, un tajā tiks parādīta IP adrese, kā parādīts zemāk.
Ierakstiet šo IP adresi pārlūkprogrammā, tā parādīs izvadi, kā parādīts zemāk. Jums būs vēlreiz jāatsvaidzina lapa, ja vēlaties redzēt pašreizējo gaisa kvalitātes vērtību PPM.
Mēs esam iestatījuši vietējo serveri, lai parādītu tā darbību. Tālāk varat pārbaudīt videoklipu. Bet, lai uzraudzītu gaisa kvalitāti no jebkuras vietas pasaulē, jums jāpārsūta 80. ports (izmantots HTTP vai internetam) uz savas ierīces vietējo vai privāto IP adresi (192.168 *). Pēc ostas pārsūtīšanas visi ienākošie savienojumi tiks pārsūtīti uz šo vietējo adresi, un jūs varat atvērt iepriekš redzamo vietni, vienkārši ievadot sava interneta publisko IP adresi no jebkuras vietas. Portu var pārsūtīt, piesakoties maršrutētājā (192.168.1.1) un atrodot opciju, kā iestatīt porta pārsūtīšanu.