- Szükséges alkatrészek:
- Áramkör és magyarázat:
- Munka magyarázat:
- Kód Magyarázat:
- "; weboldal + =" A levegő minősége "; weboldal + = levegőminőség; weboldal + =" PPM "; weboldal + ="
";
A következő kód meghívja a sendData nevű függvényt, és elküldi az adat- és üzenetfüzéreket a weboldalra, hogy megjelenítse őket.
sendData (cipSend, 1000, DEBUG); sendData (weboldal, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = weboldal.length (); cipSend + = "\ r \ n";
A következő kód kinyomtatja az adatokat az LCD-n. Különböző feltételeket alkalmaztunk a levegőminőség ellenőrzésére, és az LCD a feltételeknek megfelelően kinyomtatja az üzeneteket, és a hangjelző is sípol, ha a szennyezés meghaladja az 1000 PPM-t.
lcd.setCursor (0, 0); lcd.print ("A levegő minősége"); lcd.print (levegőminőség); lcd.print ("PPM"); lcd.setCursor (0,1); if (levegőminőség <= 1000) {lcd.print ("Friss levegő"); digitalWrite (8, LOW);
Végül az alábbi függvény elküldi és megjeleníti az adatokat a weboldalon. A „weblap” nevű karakterláncban tárolt adatokat a „command” nevű karakterláncba menti . Ezután az ESP egyesével beolvassa a karaktert a 'parancsból', és kinyomtatja a weboldalra.
String sendData (String parancs, const int timeout, logikai hibakeresés) {String response = ""; esp8266.print (parancs); // az elolvasott karakter elküldése az esp8266 hosszú int time = millis () értékre; while ((idő + időkorlát)> millis ()) {while (esp8266.available ()) {// Az esp-nek vannak adatai, így a kimenetét jelenítse meg a soros ablakban char c = esp8266.read (); // olvassa el a következő karaktert. válasz + = c; }} if (hibakeresés) {Serial.print (válasz); } visszatérési válasz; }
- A projekt tesztelése és kimenetele:
Ebben a projektben egy IoT-alapú légszennyezés-figyelő rendszert fogunk készíteni, amelyben az internetet használó webszerveren keresztül figyeljük a levegő minőségét, és riasztást váltunk ki, amikor a levegő minősége egy bizonyos szintet meghalad, vagyis ha elegendő mennyiség van káros gázok vannak jelen a levegőben, például CO2, füst, alkohol, benzol és NH3. Meg fogja mutatni a levegő minőségét PPM-ben az LCD-n és a weboldalon, hogy ezt nagyon egyszerűen ellenőrizni tudjuk.
Korábban az MQ6 érzékelőt és az MQ2 érzékelőt használó füstérzékelőt építettük, de ezúttal az MQ135 érzékelőt használtuk levegőminőségi érzékelőként, amely a legjobb választás a levegőminőség ellenőrzésére, mivel képes felismerni a legtöbb káros gázt és meg tudja mérni azok mennyiségét pontosan. Ebben az IOT projektben bárhonnan figyelheti a szennyezés szintjét számítógépe vagy mobilja segítségével. Telepíthetjük ezt a rendszert bárhová, és kiválthatunk néhány eszközt is, ha a szennyezés meghalad valamilyen szintet, például bekapcsolhatjuk a kipufogóventilátort, vagy figyelmeztető SMS-t / levelet küldhetünk a felhasználónak.
Szükséges alkatrészek:
- MQ135 gázérzékelő
- Arduino Uno
- ESP8266 Wi-Fi modul
- 16X2 LCD
- Kenyérlemez
- 10K potenciométer
- 1K ohmos ellenállások
- 220 ohmos ellenállás
- Berregő
A fenti alkatrészeket itt vásárolhatja meg.
Áramkör és magyarázat:
Először az ESP8266-ot fogjuk összekapcsolni az Arduinóval. Az ESP8266 3,3 V-on működik, és ha 5 V-ot ad az Arduino-ból, akkor nem fog megfelelően működni, és sérülést okozhat. Csatlakoztassa a VCC-t és a CH_PD-t az Arduino 3,3 V-os tűjéhez. Az ESP8266 RX-csatlakozója 3,3 V-on működik, és nem fog kommunikálni az Arduinóval, amikor közvetlenül az Arduinóhoz csatlakoztatjuk. Tehát egy feszültségosztót kell készítenünk hozzá, amely átalakítja az 5 V-ot 3,3 V-ra. Ezt úgy tehetjük meg, hogy három ellenállást sorba kötünk, mint ahogy azt az áramkörben tettük. Csatlakoztassa az ESP8266 TX tűjét az Arduino 10 érintkezőjéhez, az esp8266 RX tűjét pedig az ellenállásokon keresztül az Arduino 9 tűjéhez.
Az ESP8266 Wi-Fi modul hozzáférést biztosít a projektjeihez a Wi-Fi-hez vagy az internethez. Ez egy nagyon olcsó eszköz, és a projektjeit nagyon hatékonyá teszi. Bármely mikrovezérlővel képes kommunikálni, és ez az IOT platform vezető eszközei. Tudjon meg többet az ESP8266 használatáról az Arduinóval itt.
Ezután összekapcsoljuk az MQ135 érzékelőt az Arduinóval. Csatlakoztassa a VCC-t és az érzékelő földelőcsapját az Arduino 5V-hoz és földeléséhez, az érzékelő analóg tűjét pedig az Arduino A0-jához.
Csatlakoztasson egy hangjelzőt az Arduino 8. tűjéhez, amely sípolni kezd, amikor a feltétel teljesül.
Végül összekapcsoljuk az LCD-t az Arduinóval. Az LCD csatlakozásai a következők
- Csatlakoztassa az 1. tűt (VEE) a földhöz.
- Csatlakoztassa a 2. tűt (VDD vagy VCC) az 5 V-hoz.
- Csatlakoztassa a 3. tűt (V0) a 10K potenciométer középső csapjához, és a potenciométer másik két végét a VCC-hez és a GND-hez. A potenciométer az LCD képernyő kontrasztjának szabályozására szolgál. A 10K-tól eltérő értékű potenciométer is működik.
- Csatlakoztassa a 4. tűt (RS) az Arduino 12. tűjéhez.
- Csatlakoztassa az 5. tűt (olvasás / írás) az Arduino földjéhez. Ezt a csapot nem használják gyakran, ezért csatlakoztatni fogjuk a földhöz.
- Csatlakoztassa a 6-os (E) csapot az Arduino 11-es csapjához. Az RS és az E tű azok a vezérlő csapok, amelyeket adatok és karakterek küldésére használnak.
- A következő négy érintkezők adatcsapok, amelyek az Arduinóval való kommunikációra szolgálnak.
Csatlakoztassa a 11. tűt (D4) az Arduino 5. tűjéhez.
Csatlakoztassa a 12. tűt (D5) az Arduino 4. tűjéhez.
Csatlakoztassa a 13. tűt (D6) az Arduino 3. tűjéhez.
Csatlakoztassa a 14. tűt (D7) az Arduino 2. tűjéhez.
- Csatlakoztassa a 15. tűt a VCC-hez a 220 ohmos ellenálláson keresztül. Az ellenállást a háttérvilágítás fényerejének beállítására használják. Nagyobb értékek a háttérvilágítást sokkal sötétebbé teszik.
- Csatlakoztassa a 16. tűt a földhöz.
Munka magyarázat:
Az MQ135 érzékelő érzékeli az NH3, NOx, alkoholt, benzolt, füstöt, CO2-ot és néhány más gázt, így tökéletes gázérzékelő a levegőminőség-ellenőrzési projektünkhöz. Amikor összekapcsoljuk az Arduino-val, akkor érzékeli a gázokat, és megkapjuk a szennyezés szintjét PPM-ben (millió per os). Az MQ135 gázérzékelő feszültségszint formájában adja meg a kimenetet, és ezt át kell alakítanunk PPM-re. Tehát a kimenet PPM-ben történő konvertálásához itt egy könyvtárat használtunk az MQ135 érzékelőhöz, amelyet az alábbiakban a „Kódmagyarázat” szakasz részletesen elmagyaráz.
Az érzékelő 90-es értéket adott, amikor nem volt gáz a közelében, és a biztonságos levegőminőség 350 PPM, és nem haladhatja meg az 1000 PPM-t. Ha túllépi az 1000 PPM határt, akkor fejfájást, álmosságot és stagnáló, elavult, fülledt levegőt okoz, és ha meghaladja a 2000 PPM-t, megnövekedett pulzusszámot és sok más betegséget okozhat.
Ha az érték kisebb lesz, mint 1000 PPM, akkor az LCD-n és a weboldalon megjelenik a „Friss levegő” felirat. Ha az érték 1000 PPM-re növekszik, akkor a hangjelző sípolni kezd, és az LCD-n és a weboldalon a „Szegény levegő, nyitott Windows” felirat jelenik meg. Ha 2000-re nő, akkor a hangjelző folyamatosan csipog, és az LCD-n és a weboldalon a „Veszély! Menjen friss levegőre ”.
Kód Magyarázat:
A projekt kódolásának megkezdése előtt először kalibrálnunk kell az MQ135 gázérzékelőt. Az érzékelő kimenetének PPM értékké történő átalakításához rengeteg számítás szükséges, ezt a számítást már korábban elvégeztük előző füstérzékelő projektünkben. De itt a Library for MQ135-et használjuk, innen letöltheti és telepítheti ezt az MQ135 könyvtárat:
Ennek a könyvtárnak a használatával közvetlenül megszerezheti a PPM értékeket az alábbi két sor használatával:
MQ135 gasSensor = MQ135 (A0); float air_quality = gasSensor.getPPM ();
De előtte kalibrálnunk kell az MQ135 érzékelőt, az érzékelő kalibrálásához töltsd fel az alábbi kódot, és hagyd működni 12–24 órán át, majd kapd meg az RZERO értéket.
#include "MQ135.h" void setup () {Serial.begin (9600); } void loop () {MQ135 gasSensor = MQ135 (A0); // Csatlakoztassa az érzékelőt az A0 úszó csaphoz rzero = gasSensor.getRZero (); Soros.println (rzero); késés (1000); }
Miután megkapta a RZERO értéket. Helyezze az RZERO értéket a könyvtárfájlba, amelyet letöltött "MQ135.h": #define RZERO 494.63
Most elkezdhetjük a levegőminőség-ellenőrzési projektünk tényleges kódját.
A kódban először is meghatároztuk a könyvtárakat és a változókat a gázérzékelőhöz és az LCD-hez. A Software Serial Library használatával bármilyen digitális tűt készíthetünk TX és RX tűként. Ebben a kódban az ESP8266 esetében a 9-es tűt fogadtuk RX-tűként, a 10-es tűt pedig TX-tűként. Ezután felvettük a könyvtárat az LCD-hez, és meghatároztuk ennek a csapjait. Meghatároztunk még két változót: egyet az érzékelő analóg csapjához, a másikat pedig az air_quality érték tárolásához.
#include
Ezután deklaráljuk a 8. tűt kimeneti tűnek, ahová csatlakoztattuk a hangjelzőt. Az l cd.begin (16,2) parancs elindítja az LCD-t az adatok fogadására, majd a kurzort az első sorra állítjuk, és kinyomtatjuk az 'circuitdigest' parancsot . Ezután beállítjuk a kurzort a második sorba, és kinyomtatjuk az „Érzékelő felmelegedése” feliratot .
pinMode (8, OUTPUT); lcdbegin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("Érzékelő felmelegedése"); késés (1000);
Ezután beállítjuk a soros kommunikáció adatátviteli sebességét. A különböző ESP-k különböző átviteli sebességgel rendelkeznek, ezért írja be az ESP átviteli sebességének megfelelően. Ezután elküldjük azokat a parancsokat, amelyekkel beállíthatja az ESP-t, hogy kommunikáljon az Arduinóval, és megmutassa az IP-címet a soros monitoron.
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 ();
A kimenet webböngészőben történő nyomtatásához HTML programozást kell használnunk. Létrehoztunk egy web nevű karakterláncot, és a kimenetet benne tároltuk. Kivonjuk a kimenetből a 48-at, mert a read () függvény visszaadja az ASCII tizedesértékét, és az első tizedes szám, amely 0, 48-tól kezdődik.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {késleltetés (1000); int connectionId = esp8266.read () - 48; Karakterlánc-weboldal = "
IOT légszennyezés-figyelő rendszer
"; weboldal + =""; weboldal + =" A levegő minősége "; weboldal + = levegőminőség; weboldal + =" PPM "; weboldal + ="
";
A következő kód meghívja a sendData nevű függvényt, és elküldi az adat- és üzenetfüzéreket a weboldalra, hogy megjelenítse őket.
sendData (cipSend, 1000, DEBUG); sendData (weboldal, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = weboldal.length (); cipSend + = "\ r \ n";
A következő kód kinyomtatja az adatokat az LCD-n. Különböző feltételeket alkalmaztunk a levegőminőség ellenőrzésére, és az LCD a feltételeknek megfelelően kinyomtatja az üzeneteket, és a hangjelző is sípol, ha a szennyezés meghaladja az 1000 PPM-t.
lcd.setCursor (0, 0); lcd.print ("A levegő minősége"); lcd.print (levegőminőség); lcd.print ("PPM"); lcd.setCursor (0,1); if (levegőminőség <= 1000) {lcd.print ("Friss levegő"); digitalWrite (8, LOW);
Végül az alábbi függvény elküldi és megjeleníti az adatokat a weboldalon. A „weblap” nevű karakterláncban tárolt adatokat a „command” nevű karakterláncba menti. Ezután az ESP egyesével beolvassa a karaktert a 'parancsból', és kinyomtatja a weboldalra.
String sendData (String parancs, const int timeout, logikai hibakeresés) {String response = ""; esp8266.print (parancs); // az elolvasott karakter elküldése az esp8266 hosszú int time = millis () értékre; while ((idő + időkorlát)> millis ()) {while (esp8266.available ()) {// Az esp-nek vannak adatai, így a kimenetét jelenítse meg a soros ablakban char c = esp8266.read (); // olvassa el a következő karaktert. válasz + = c; }} if (hibakeresés) {Serial.print (válasz); } visszatérési válasz; }
A projekt tesztelése és kimenetele:
A kód feltöltése előtt ellenőrizze, hogy csatlakozik-e az ESP8266 eszköz Wi-Fi-jéhez. A feltöltés után nyissa meg a soros monitort, és az az alábbiak szerint mutatja az IP-címet.
Gépelje be ezt az IP-címet a böngészőjébe, és az alábbiak szerint jeleníti meg a kimenetet. Újra frissítenie kell az oldalt, ha a jelenlegi levegőminőségi értéket szeretné megtekinteni a PPM-ben.
Beállítottunk egy helyi szervert, hogy bemutassuk működését. Ellenőrizheti az alábbi videót. De a levegő minőségének a világ bármely pontjáról történő nyomon követéséhez továbbítania kell a 80-as portot (HTTP vagy internet számára) az eszköz helyi vagy privát IP-címére (192.168 *). A port továbbítása után az összes bejövő kapcsolat továbbításra kerül erre a helyi címre, és megnyithatja a fent látható weboldalt úgy, hogy bárhonnan megadja az internet nyilvános IP-címét. A port továbbításához jelentkezzen be az útválasztóba (192.168.1.1), és keresse meg a port továbbítás beállításának lehetőségét.