- Požadované komponenty:
- Schéma zapojení a vysvětlení:
- Pracovní vysvětlení:
- Vysvětlení kódu:
- "; webpage + =" Kvalita ovzduší je "; webpage + = air_quality; webpage + =" PPM "; webpage + ="
";
Následující kód zavolá funkci s názvem sendData a odešle řetězce dat a zpráv na webovou stránku k zobrazení.
sendData (cipSend, 1000, DEBUG); sendData (webová stránka, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Následující kód vytiskne data na LCD. Pro kontrolu kvality vzduchu jsme použili různé podmínky a LCD bude tisknout zprávy podle podmínek a bzučák také pípne, pokud znečištění překročí 1000 PPM.
lcd.setCursor (0, 0); lcd.print („Kvalita ovzduší je“); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Fresh Air"); digitalWrite (8, LOW);
Nakonec níže uvedená funkce odešle a zobrazí data na webové stránce. Data, která jsme uložili v řetězci s názvem „webová stránka“, budou uložena v řetězci s názvem „příkaz“ . ESP poté načte znak po jednom z „příkazu“ a vytiskne jej na webové stránce.
String sendData (String command, const int timeout, boolean debug) {String response = ""; esp8266.print (příkaz); // pošle přečtený znak na esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// ESP má data, takže zobrazí jeho výstup do sériového okna char c = esp8266.read (); // přečte další znak. odezva + = c; }} if (debug) {Serial.print (response); } návratová odpověď; }
- Testování a výstup projektu:
V tomto projektu budeme vyrábět monitorovací systém znečištění ovzduší založený na IoT, ve kterém budeme monitorovat kvalitu ovzduší přes webový server pomocí internetu a spustíme alarm, když kvalita ovzduší poklesne nad určitou úroveň, tj. Když je dostatečné množství ve vzduchu jsou přítomny škodlivé plyny jako CO2, kouř, alkohol, benzen a NH3. Ukáže kvalitu vzduchu v PPM na LCD a také na webové stránce, abychom ji mohli velmi snadno sledovat.
Dříve jsme sestavili detektor LPG pomocí senzoru MQ6 a detektor kouře pomocí senzoru MQ2, ale tentokrát jsme jako senzor kvality vzduchu použili senzor MQ135, který je nejlepší volbou pro monitorování kvality vzduchu, protože dokáže detekovat většinu škodlivých plynů a může měřit jejich množství přesně. V tomto projektu IOT můžete monitorovat úroveň znečištění odkudkoli pomocí počítače nebo mobilního telefonu. Tento systém můžeme nainstalovat kdekoli a můžeme také spustit nějaké zařízení, když znečištění překročí určitou úroveň, například můžeme zapnout výfukový ventilátor nebo poslat výstražné SMS / e-mail uživateli.
Požadované komponenty:
- Senzor plynu MQ135
- Arduino Uno
- Wi-Fi modul ESP8266
- 16x2 LCD
- Nepájivá deska
- 10K potenciometr
- 1K ohmové rezistory
- 220 ohmový rezistor
- Bzučák
Všechny výše uvedené komponenty si můžete zakoupit zde.
Schéma zapojení a vysvětlení:
Nejprve propojíme ESP8266 s Arduino. ESP8266 běží na 3.3V a pokud mu dáte 5V od Arduina, pak to nebude fungovat správně a může se poškodit. Připojte VCC a CH_PD ke kolíku 3,3 V Arduina. Pin RX ESP8266 funguje na 3,3 V a nebude komunikovat s Arduinem, když jej připojíme přímo k Arduinu. Budeme tedy muset vytvořit dělič napětí, který převede 5V na 3,3V. Toho lze dosáhnout zapojením tří rezistorů do série, jako jsme to udělali v obvodu. Připojte pin TX ESP8266 ke kolíku 10 Arduina a kolík RX esp8266 ke kolíku 9 Arduina přes rezistory.
Modul Wi-Fi ESP8266 poskytuje vašim projektům přístup k Wi-Fi nebo internetu. Je to velmi levné zařízení a vaše projekty budou velmi výkonné. Může komunikovat s jakýmkoli mikrokontrolérem a je to nejdůležitější zařízení na platformě IOT. Další informace o používání ESP8266 s Arduinem najdete zde.
Poté připojíme senzor MQ135 k Arduinu. Připojte VCC a zemnicí kolík snímače k 5 V a zemi Arduina a analogový kolík snímače k A0 Arduina.
Připojte bzučák ke kolíku 8 Arduina, který začne pípat, jakmile se podmínka stane skutečnou.
Nakonec připojíme LCD k Arduinu. Připojení displeje LCD je následující
- Připojte kolík 1 (VEE) k zemi.
- Připojte kolík 2 (VDD nebo VCC) k 5V.
- Připojte kolík 3 (V0) ke střednímu kolíku 10K potenciometru a připojte další dva konce potenciometru k VCC a GND. Potenciometr se používá k ovládání kontrastu obrazovky LCD. Funguje také potenciometr hodnot jiných než 10K.
- Připojte pin 4 (RS) ke kolíku 12 Arduina.
- Připojte kolík 5 (čtení / zápis) k uzemnění Arduina. Tento pin se často nepoužívá, takže ho připojíme k zemi.
- Připojte kolík 6 (E) k kolíku 11 Arduina. Pin RS a E jsou ovládací piny, které se používají k odesílání dat a znaků.
- Následující čtyři piny jsou datové piny, které se používají ke komunikaci s Arduinem.
Připojte pin 11 (D4) ke kolíku 5 Arduina.
Připojte kolík 12 (D5) ke kolíku 4 Arduina.
Připojte kolík 13 (D6) ke kolíku 3 Arduina.
Připojte kolík 14 (D7) ke kolíku 2 Arduina.
- Připojte kolík 15 k VCC přes odpor 220 ohmů. Rezistor se použije k nastavení jasu podsvícení. Větší hodnoty způsobí, že zadní světlo bude mnohem tmavší.
- Připojte kolík 16 k zemi.
Pracovní vysvětlení:
Senzor MQ135 dokáže snímat NH3, NOx, alkohol, benzen, kouř, CO2 a některé další plyny, takže je dokonalým senzorem plynu pro náš projekt monitorování kvality ovzduší. Když jej připojíme k Arduinu, bude snímat plyny a dostaneme úroveň znečištění v PPM (části na milion). Senzor plynu MQ135 poskytuje výstup ve formě napěťových úrovní a musíme jej převést na PPM. Takže pro převod výstupu v PPM jsme zde použili knihovnu pro senzor MQ135, je to podrobně vysvětleno v části „Vysvětlení kódu“ níže.
Senzor nám dával hodnotu 90, když poblíž nebyl žádný plyn a bezpečná úroveň kvality vzduchu je 350 PPM a neměla by překročit 1000 PPM. Když překročí hranici 1 000 PPM, začne to způsobovat bolesti hlavy, ospalost a stagnující, zatuchlý, dusný vzduch a pokud překročí 2 000 PPM, může to způsobit zvýšenou srdeční frekvenci a mnoho dalších onemocnění.
Pokud bude hodnota nižší než 1 000 PPM, na LCD a webové stránce se zobrazí „Fresh Air“. Kdykoli se hodnota zvýší na 1 000 PPM, začne bzučák pípat a na LCD a webové stránce se zobrazí „Špatný vzduch, otevřená okna“. Pokud se zvýší na 2000, pak bzučák bude stále pípat a na LCD a webové stránce se zobrazí „Nebezpečí! Přesun na čerstvý vzduch “.
Vysvětlení kódu:
Před zahájením programování tohoto projektu musíme nejprve kalibrovat plynový senzor MQ135. Existuje spousta výpočtů zapojených do převodu výstupu snímače na hodnotu PPM, tento výpočet jsme provedli dříve v našem předchozím projektu detektoru kouře. Ale tady používáme Knihovnu pro MQ135, tuto knihovnu MQ135 si můžete stáhnout a nainstalovat zde:
Pomocí této knihovny můžete přímo získat hodnoty PPM pomocí níže uvedených dvou řádků:
MQ135 gasSensor = MQ135 (A0); float air_quality = gasSensor.getPPM ();
Ale předtím musíme kalibrovat senzor MQ135, pro kalibraci senzoru nahrajte níže uvedený kód a nechejte ho běžet 12 až 24 hodin a poté získejte hodnotu RZERO .
#include "MQ135.h" void setup () {Serial.begin (9600); } void loop () {MQ135 gasSensor = MQ135 (A0); // Připojte senzor k pinu A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); zpoždění (1000); }
Po získání hodnoty RZERO . Vložte hodnotu RZERO do souboru knihovny, který jste stáhli „MQ135.h“: #define RZERO 494.63
Nyní můžeme začít skutečný kód pro náš projekt monitorování kvality ovzduší.
V kódu jsme nejdříve definovali knihovny a proměnné pro plynový senzor a LCD. Pomocí softwarové sériové knihovny můžeme vytvořit jakýkoli digitální pin jako TX a RX. V tomto kódu jsme vyrobili Pin 9 jako RX pin a pin 10 jako TX pin pro ESP8266. Pak jsme zahrnuli knihovnu pro LCD a definovali jsme piny pro stejné. Rovněž jsme definovali další dvě proměnné: jednu pro analogový pin snímače a druhou pro ukládání hodnoty air_quality .
#zahrnout
Pak deklarujeme pin 8 jako výstupní pin, kde jsme připojili bzučák. l cd.begin (16,2), příkaz spustí LCD pro příjem dat, a pak se vydáme kurzor na prvním řádku a vytiskne ‚circuitdigest‘. Poté nastavíme kurzor na druhý řádek a vytiskneme „Sensor Warming“ .
pinMode (8, VÝSTUP); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("Zahřívání senzoru"); zpoždění (1000);
Poté nastavíme přenosovou rychlost pro sériovou komunikaci. Různé ESP mají různé přenosové rychlosti, takže to napište podle přenosové rychlosti vašeho ESP. Poté pošleme příkazy pro nastavení ESP na komunikaci s Arduino a zobrazení IP adresy na sériovém monitoru.
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 ();
Pro tisk výstupu na webovou stránku ve webovém prohlížeči budeme muset použít programování HTML. Vytvořili jsme tedy řetězec s názvem webová stránka a uložili jsme do něj výstup. Odečítáme 48 od výstupu, protože funkce read () vrací desítkovou hodnotu ASCII a první desetinné číslo, které je 0, začíná na 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {delay (1000); int connectionId = esp8266.read () - 48; Řetězcová webová stránka = "
Systém sledování znečištění ovzduší IOT
"; webová stránka + =""; webpage + =" Kvalita ovzduší je "; webpage + = air_quality; webpage + =" PPM "; webpage + ="
";
Následující kód zavolá funkci s názvem sendData a odešle řetězce dat a zpráv na webovou stránku k zobrazení.
sendData (cipSend, 1000, DEBUG); sendData (webová stránka, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Následující kód vytiskne data na LCD. Pro kontrolu kvality vzduchu jsme použili různé podmínky a LCD bude tisknout zprávy podle podmínek a bzučák také pípne, pokud znečištění překročí 1000 PPM.
lcd.setCursor (0, 0); lcd.print („Kvalita ovzduší je“); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Fresh Air"); digitalWrite (8, LOW);
Nakonec níže uvedená funkce odešle a zobrazí data na webové stránce. Data, která jsme uložili v řetězci s názvem „webová stránka“, budou uložena v řetězci s názvem „příkaz“ . ESP poté načte znak po jednom z „příkazu“ a vytiskne jej na webové stránce.
String sendData (String command, const int timeout, boolean debug) {String response = ""; esp8266.print (příkaz); // pošle přečtený znak na esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// ESP má data, takže zobrazí jeho výstup do sériového okna char c = esp8266.read (); // přečte další znak. odezva + = c; }} if (debug) {Serial.print (response); } návratová odpověď; }
Testování a výstup projektu:
Před nahráním kódu se ujistěte, že jste připojeni k Wi-Fi vašeho zařízení ESP8266. Po nahrání otevřete sériový monitor a zobrazí IP adresu, jak je uvedeno níže.
Zadejte tuto adresu IP do prohlížeče, zobrazí se vám výstup, jak je uvedeno níže. Pokud chcete zobrazit aktuální hodnotu kvality ovzduší v PPM, budete muset stránku znovu obnovit.
Nastavili jsme místní server, abychom ukázali jeho fungování, můžete zkontrolovat video níže. Chcete-li však sledovat kvalitu ovzduší odkudkoli na světě, musíte port 80 (používaný pro HTTP nebo internet) předat na vaši místní nebo soukromou IP adresu (192.168 *) vašeho zařízení. Po přesměrování portů budou všechna příchozí připojení přesměrována na tuto místní adresu a výše uvedenou webovou stránku můžete otevřít pouhým zadáním veřejné IP adresy vašeho internetu odkudkoli. Port můžete přeposlat po přihlášení do routeru (192.168.1.1) a najít možnost nastavení přesměrování portu.