- Požadované komponenty:
- Schéma zapojenia a vysvetlenie:
- Pracovné vysvetlenie:
- Vysvetlenie kódu:
- "; webová stránka + =" Kvalita ovzdušia je "; webová stránka + = kvalita ovzdušia; webová stránka + =" PPM "; webová stránka + ="
";
Nasledujúci kód zavolá funkciu s názvom sendData a odošle reťazce údajov a správ na webovú stránku, ktorá sa má zobraziť.
sendData (cipSend, 1000, DEBUG); sendData (webova stranka, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Nasledujúci kód vytlačí údaje na LCD. Na kontrolu kvality vzduchu sme použili rôzne podmienky a LCD bude správy tlačiť podľa podmienok a bzučiak tiež pípne, ak znečistenie prekročí 1000 PPM.
lcd.setCursor (0, 0); lcd.print („Kvalita ovzdušia je“); lcd.print (kvalita_vzduchu); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("čerstvý vzduch"); digitalWrite (8, LOW);
Nakoniec funkcia uvedená nižšie odošle a zobrazí údaje na webovej stránke. Údaje, ktoré sme uložili do reťazca s názvom „webová stránka“ , sa uložia do reťazca s názvom „príkaz“ . ESP potom načíta znak po jednom z príkazu a vytlačí ho na webovú stránku.
String sendData (String command, const int timeout, boolean debug) {String response = ""; esp8266.print (príkaz); // pošle prečítaný znak na esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// ESP má dáta, takže zobrazuje ich výstup do sériového okna char c = esp8266.read (); // prečítať nasledujúci znak. odpoveď + = c; }} if (debug) {Serial.print (odpoveď); } návratová odpoveď; }
- Testovanie a výstup projektu:
V tomto projekte vytvoríme systém monitorovania znečistenia ovzdušia založený na IoT, v ktorom budeme monitorovať kvalitu ovzdušia cez webový server pomocou internetu a spustíme alarm, keď kvalita ovzdušia klesne nad určitú úroveň, to znamená v prípade, že existuje dostatočné množstvo vo vzduchu sú prítomné škodlivé plyny ako CO2, dym, alkohol, benzén a NH3. Kvalitu ovzdušia ukáže v PPM na LCD a tiež na webovej stránke, aby sme ju mohli veľmi ľahko monitorovať.
Predtým sme vytvorili detektor LPG využívajúci snímač MQ6 a detektor dymu využívajúci snímač MQ2, ale tentoraz sme ako snímač kvality vzduchu použili snímač MQ135, ktorý je najlepšou voľbou na sledovanie kvality vzduchu, pretože dokáže detekovať väčšinu škodlivých plynov a dokáže zmerať ich množstvo. presne. V tomto projekte IOT môžete monitorovať hladinu znečistenia odkiaľkoľvek pomocou počítača alebo mobilného telefónu. Tento systém môžeme nainštalovať kdekoľvek a môžeme tiež spustiť niektoré zariadenie, keď znečistenie prekročí určitú úroveň, napríklad môžeme zapnúť výfukový ventilátor alebo poslať používateľovi výstražné SMS / e-maily.
Požadované komponenty:
- MQ135 Plynový senzor
- Arduino Uno
- Wi-Fi modul ESP8266
- 16 x 2 LCD
- Nepál
- 10K potenciometer
- 1K ohmové odpory
- 220 ohmový odpor
- Bzučiak
Všetky vyššie uvedené komponenty si môžete kúpiť tu.
Schéma zapojenia a vysvetlenie:
Najskôr prepojíme ESP8266 s Arduinom. ESP8266 beží na 3.3V a ak mu dáte 5V od Arduina, nebude to fungovať správne a môže sa poškodiť. Pripojte VCC a CH_PD k kolíku 3,3 V Arduina. Pin RX ESP8266 funguje na 3.3V a nebude komunikovať s Arduinom, keď ho pripojíme priamo k Arduinu. Budeme teda musieť preň vytvoriť delič napätia, ktorý premení 5V na 3,3V. To sa dá dosiahnuť pripojením troch rezistorov do série, ako sme to urobili v obvode. Cez odpory pripojte pin TX na ESP8266 na pin 10 na Arduine a pin RX na esp8266 na pin 9 na Arduine.
Modul Wi-Fi ESP8266 poskytuje vašim projektom prístup k sieti Wi-Fi alebo internetu. Je to veľmi lacné zariadenie a vaše projekty budú veľmi výkonné. Môže komunikovať s akýmkoľvek mikrokontrolérom a je to najvýznamnejšie zariadenie na platforme IOT. Viac informácií o používaní ESP8266 s Arduino sa dozviete tu.
Potom pripojíme snímač MQ135 k Arduinu. Pripojte VCC a zemniaci kolík snímača k 5 V a uzemnenie Arduina a analógový kolík snímača k A0 Arduina.
Pripojte bzučiak na pin 8 Arduina, ktorý začne pípať, keď sa stav stane skutočným.
Na záver spojíme LCD s Arduinom. Pripojenia LCD sú nasledujúce
- Pripojte kolík 1 (VEE) k zemi.
- Pripojte pin 2 (VDD alebo VCC) k 5V.
- Pripojte kolík 3 (V0) k strednému kolíku potenciometra 10K a ďalšie dva konce potenciometra pripojte k VCC a GND. Potenciometer sa používa na riadenie kontrastu obrazovky LCD. Funguje aj potenciometer iných hodnôt ako 10K.
- Pripojte pin 4 (RS) k pinu 12 Arduina.
- Pripojte pin 5 (čítanie / zápis) k zemi Arduino. Tento pin sa často nepoužíva, takže ho pripojíme k zemi.
- Pripojte pin 6 (E) k kolíku 11 Arduina. Pin RS a E sú kontrolné piny, ktoré sa používajú na odosielanie údajov a znakov.
- Nasledujúce štyri piny sú dátové piny, ktoré sa používajú na komunikáciu s Arduinom.
Pripojte pin 11 (D4) k pin 5 na Arduine.
Pripojte pin 12 (D5) k pin 4 na Arduine.
Pripojte pin 13 (D6) k pin 3 na Arduine.
Pripojte pin 14 (D7) k pin 2 na Arduine.
- Pripojte pin 15 k VCC cez odpor 220 ohmov. Rezistor sa použije na nastavenie jasu podsvietenia. Väčšie hodnoty spôsobia, že zadné svetlo bude oveľa tmavšie.
- Pripojte pin 16 k zemi.
Pracovné vysvetlenie:
Senzor MQ135 dokáže snímať NH3, NOx, alkohol, benzén, dym, CO2 a niektoré ďalšie plyny, takže je dokonalým senzorom plynu pre náš projekt monitorovania kvality ovzdušia. Keď ho pripojíme k Arduinu, bude vnímať plyny a dostaneme úroveň znečistenia v PPM (časti na milión). Senzor plynu MQ135 poskytuje výstup vo forme napäťových úrovní a musíme ho previesť na PPM. Takže na prevod výstupu v PPM sme tu použili knižnicu pre snímač MQ135, ktorá je podrobne vysvetlená v časti „Vysvetlenie kódu“ nižšie.
Senzor nám dával hodnotu 90, keď v jeho blízkosti nebol žiadny plyn a bezpečná úroveň kvality vzduchu je 350 PPM a nemala by prekročiť 1 000 PPM. Keď prekročí hranicu 1 000 PPM, začne to spôsobovať bolesti hlavy, ospalosť a stagnáciu, zatuchnutý, dusný vzduch a ak prekročí hranicu 2 000 PPM, môže to spôsobiť zvýšenú srdcovú frekvenciu a mnoho ďalších chorôb.
Ak bude hodnota nižšia ako 1 000 PPM, na LCD a webovej stránke sa zobrazí „Fresh Air“. Kedykoľvek sa hodnota zvýši na 1 000 PPM, začne bzučiak pípať a na LCD a webovej stránke sa zobrazí „Poor Air, Open Windows“. Ak sa zvýši na 2 000, bzučiak bude stále pípať a na LCD a webovej stránke sa zobrazí „Nebezpečenstvo! Presun na čerstvý vzduch “.
Vysvetlenie kódu:
Pred začatím programovania tohto projektu je potrebné najskôr Kalibrovať plynový senzor MQ135. Existuje veľa výpočtov zapojených do prepočtu výstupu snímača na hodnotu PPM, tento výpočet sme vykonali predtým v našom predchádzajúcom projekte detektora dymu. Ale tu používame Knižnicu pre MQ135, túto knižnicu MQ135 si môžete stiahnuť a nainštalovať odtiaľto:
Pomocou tejto knižnice môžete priamo získať hodnoty PPM pomocou nasledujúcich dvoch riadkov:
MQ135 gasSensor = MQ135 (A0); float air_quality = gasSensor.getPPM ();
Ale predtým musíme kalibrovať senzor MQ135, pre kalibráciu senzora nahrajte nižšie uvedený kód a nechajte ho bežať 12 až 24 hodín a potom získajte hodnotu RZERO .
#include "MQ135.h" void setup () {Serial.begin (9600); } void loop () {MQ135 gasSensor = MQ135 (A0); // Pripojte senzor k kolíku A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); oneskorenie (1 000); }
Po získaní hodnoty RZERO . Vložte hodnotu RZERO do súboru knižnice, ktorý ste si stiahli „MQ135.h“: #define RZERO 494.63
Teraz môžeme začať so skutočným kódom pre náš projekt monitorovania kvality ovzdušia.
V kóde sme v prvom rade definovali knižnice a premenné pre plynový senzor a LCD. Použitím softvérovej sériovej knižnice môžeme vytvoriť akýkoľvek digitálny pin ako TX a RX. V tomto kóde sme pre ESP8266 vytvorili Pin 9 ako pin RX a pin 10 ako TX pin. Potom sme zahrnuli knižnicu pre LCD a definovali sme piny pre to isté. Definovali sme tiež ďalšie dve premenné: jednu pre analógový pin snímača a druhú pre ukladanie hodnoty air_quality .
#include
Potom deklarujeme pin 8 ako výstupný pin, kde sme pripojili bzučiak. l cd.begin (16,2), príkaz spustí LCD pre príjem dát, a potom sa vydáme kurzor na prvom riadku a vytlačí , circuitdigest ' . Potom nastavíme kurzor na druhý riadok a vytlačíme „Senzor zahrievania“ .
pinMode (8, VÝSTUP); lcd.začiatok (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("Zahrievanie senzora"); oneskorenie (1 000);
Potom nastavíme prenosovú rýchlosť pre sériovú komunikáciu. Rôzne ESP majú rozdielnu prenosovú rýchlosť, takže ich napíšte podľa prenosovej rýchlosti ESP. Potom pošleme príkazy na nastavenie ESP na komunikáciu s Arduinom a zobrazenie IP adresy na sériovom monitore.
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 ();
Na tlač výstupu na webovú stránku vo webovom prehliadači budeme musieť použiť programovanie HTML. Takže sme vytvorili reťazec s názvom webová stránka a uložili sme doň výstup. Odčítame 48 od výstupu, pretože funkcia read () vráti desatinnú hodnotu ASCII a prvé desatinné číslo, ktoré je 0, sa začína na 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {oneskorenie (1000); int connectionId = esp8266.read () - 48; Reťazcová webová stránka = "
Systém monitorovania znečistenia ovzdušia IOT
"; webova stránka + =""; webová stránka + =" Kvalita ovzdušia je "; webová stránka + = kvalita ovzdušia; webová stránka + =" PPM "; webová stránka + ="
";
Nasledujúci kód zavolá funkciu s názvom sendData a odošle reťazce údajov a správ na webovú stránku, ktorá sa má zobraziť.
sendData (cipSend, 1000, DEBUG); sendData (webova stranka, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Nasledujúci kód vytlačí údaje na LCD. Na kontrolu kvality vzduchu sme použili rôzne podmienky a LCD bude správy tlačiť podľa podmienok a bzučiak tiež pípne, ak znečistenie prekročí 1000 PPM.
lcd.setCursor (0, 0); lcd.print („Kvalita ovzdušia je“); lcd.print (kvalita_vzduchu); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("čerstvý vzduch"); digitalWrite (8, LOW);
Nakoniec funkcia uvedená nižšie odošle a zobrazí údaje na webovej stránke. Údaje, ktoré sme uložili do reťazca s názvom „webová stránka“ , sa uložia do reťazca s názvom „príkaz“ . ESP potom načíta znak po jednom z príkazu a vytlačí ho na webovú stránku.
String sendData (String command, const int timeout, boolean debug) {String response = ""; esp8266.print (príkaz); // pošle prečítaný znak na esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// ESP má dáta, takže zobrazuje ich výstup do sériového okna char c = esp8266.read (); // prečítať nasledujúci znak. odpoveď + = c; }} if (debug) {Serial.print (odpoveď); } návratová odpoveď; }
Testovanie a výstup projektu:
Pred nahraním kódu sa uistite, že ste pripojení k sieti Wi-Fi vášho zariadenia ESP8266. Po načítaní otvorte sériový monitor, ktorý zobrazí adresu IP, ako je uvedené nižšie.
Zadajte túto adresu IP do prehľadávača a zobrazí sa vám výstup, ako je uvedené nižšie. Ak chcete vidieť aktuálnu hodnotu kvality ovzdušia v PPM, budete musieť stránku znova obnoviť.
Nastavili sme miestny server, aby sme demonštrovali jeho funkčnosť, môžete skontrolovať video uvedené nižšie. Ak však chcete monitorovať kvalitu ovzdušia kdekoľvek na svete, musíte presmerovať port 80 (používaný pre HTTP alebo internet) na vašu miestnu alebo súkromnú IP adresu (192.168 *) vášho zariadenia. Po presmerovaní portov budú všetky prichádzajúce spojenia presmerované na túto miestnu adresu a vyššie uvedenú webovú stránku môžete otvoriť zadaním verejnej IP adresy vášho internetu odkiaľkoľvek. Port môžete poslať ďalej prihlásením sa do smerovača (192.168.1.1) a vyhľadaním možnosti nastavenia presmerovania portov.