- Необходими компоненти:
- Електрическа схема и обяснение:
- Работно обяснение:
- Обяснение на кода:
- "; webpage + =" Качеството на въздуха е "; webpage + = air_quality; webpage + =" PPM "; webpage + ="
";
Следващият код ще извика функция с име sendData и ще изпрати данните и низовете на съобщенията на уеб страницата, за да се покаже.
sendData (cipSend, 1000, DEBUG); sendData (уеб страница, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Следният код ще отпечата данните на LCD дисплея. Приложихме различни условия за проверка на качеството на въздуха и LCD ще отпечата съобщенията според условията и зумер също ще издава звуков сигнал, ако замърсяването надхвърли 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Качеството на въздуха е"); lcd.print (въздушно_качество); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Fresh Air"); digitalWrite (8, LOW);
Накрая функцията по-долу ще изпрати и покаже данните на уеб страницата. Данните, които съхраняваме в низ с име „уеб страница“, ще бъдат запазени в низ с име „команда“ . След това ESP ще прочете символа един по един от „командата“ и ще го отпечата на уеб страницата.
String sendData (String command, const int timeout, boolean debug) {String response = ""; esp8266.print (команда); // изпращаме прочетения знак на esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// Esp има данни, така че покажете изхода си в серийния прозорец char c = esp8266.read (); // прочетете следващия знак. отговор + = c; }} if (отстраняване на грешки) {Serial.print (отговор); } отговор за връщане; }
- Тестване и извеждане на проекта:
В този проект ще направим система за мониторинг на замърсяването на въздуха, базирана на IoT, в която ще наблюдаваме качеството на въздуха през уеб сървър, използващ интернет, и ще задействаме аларма, когато качеството на въздуха спадне над определено ниво, т.е. когато има достатъчно количество на вредни газове присъстват във въздуха като CO2, дим, алкохол, бензен и NH3. Той ще покаже качеството на въздуха в PPM на LCD дисплея, както и на уеб страницата, така че да можем да го наблюдаваме много лесно.
Преди това сме изградили LPG детектор, използвайки сензор MQ6, и детектор за дим, използвайки сензор MQ2, но този път сме използвали сензор MQ135 като сензор за качество на въздуха, което е най-добрият избор за мониторинг на качеството на въздуха, тъй като може да открива най-вредните газове и да измерва тяхното количество точно. В този проект IOT можете да наблюдавате нивото на замърсяване от всяко място с помощта на компютъра или мобилния си телефон. Можем да инсталираме тази система навсякъде и също така да задействаме някакво устройство, когато замърсяването надхвърли някакво ниво, като например да включим вентилатора на изпускателната система или да изпратим предупредителни SMS / поща до потребителя.
Необходими компоненти:
- MQ135 Газов сензор
- Arduino Uno
- Wi-Fi модул ESP8266
- 16X2 LCD
- Макет
- 10K потенциометър
- 1K ом резистори
- 220 ома резистор
- Звънец
Можете да закупите всички горепосочени компоненти от тук.
Електрическа схема и обяснение:
На първо място ще свържем ESP8266 с Arduino. ESP8266 работи на 3.3V и ако му дадете 5V от Arduino, той няма да работи правилно и може да получи щети. Свържете VCC и CH_PD към 3.3V щифт на Arduino. RX щифтът на ESP8266 работи на 3.3V и няма да комуникира с Arduino, когато го свържем директно с Arduino. Така че, ще трябва да направим делител на напрежението за него, който да преобразува 5V в 3.3V. Това може да стане чрез последователно свързване на три резистора, както направихме във веригата. Свържете TX щифта на ESP8266 към щифта 10 на Arduino и RX щифта на esp8266 към щифта 9 на Arduino чрез резисторите.
Wi-Fi модулът ESP8266 дава на вашите проекти достъп до Wi-Fi или интернет. Това е много евтино устройство и прави вашите проекти много мощни. Той може да комуникира с всеки микроконтролер и е най-водещото устройство в платформата IOT. Научете повече за използването на ESP8266 с Arduino тук.
След това ще свържем сензора MQ135 с Arduino. Свържете VCC и заземяващия щифт на сензора към 5V и масата на Arduino и аналоговия щифт на сензора към A0 на Arduino.
Свържете зумер към щифт 8 на Arduino, който ще започне да издава звуков сигнал, когато състоянието стане вярно.
Накрая ще свържем LCD с Arduino. Връзките на LCD са както следва
- Свържете щифт 1 (VEE) към земята.
- Свържете щифт 2 (VDD или VCC) към 5V.
- Свържете щифт 3 (V0) към средния щифт на потенциометъра 10K и свържете другите два края на потенциометъра към VCC и GND. Потенциометърът се използва за управление на контраста на екрана на LCD. Потенциометърът на стойности, различни от 10K, също ще работи.
- Свържете щифт 4 (RS) към щифт 12 на Arduino.
- Свържете щифт 5 (четене / запис) към земята на Arduino. Този щифт не се използва често, така че ще го свържем със земята.
- Свържете щифт 6 (E) към щифт 11 на Arduino. RS и E щифтът са контролните щифтове, които се използват за изпращане на данни и символи.
- Следващите четири извода са изводи за данни, които се използват за комуникация с Arduino.
Свържете щифт 11 (D4) към щифт 5 на Arduino.
Свържете щифт 12 (D5) към щифт 4 на Arduino.
Свържете щифт 13 (D6) към щифт 3 на Arduino.
Свържете щифт 14 (D7) към щифт 2 на Arduino.
- Свържете щифт 15 към VCC чрез 220 омов резистор. Резисторът ще се използва за настройка на яркостта на задната светлина. По-големите стойности ще направят задната светлина много по-тъмна.
- Свържете щифт 16 към земята.
Работно обяснение:
Сензорът MQ135 може да усеща NH3, NOx, алкохол, бензен, дим, CO2 и някои други газове, така че е идеален сензор за газ за нашия проект за мониторинг на качеството на въздуха. Когато го свържем с Arduino, тогава той ще усети газовете и ще получим нивото на замърсяване в PPM (части на милион). Газовият сензор MQ135 дава изхода под формата на нива на напрежение и ние трябва да го преобразуваме в PPM. Така че за преобразуване на изхода в PPM, тук използваме библиотека за сензор MQ135, което е обяснено подробно в раздела „Обяснение на кода“ по-долу.
Сензорът ни дава стойност 90, когато няма газ близо до него и безопасното ниво на качеството на въздуха е 350 PPM и не трябва да надвишава 1000 PPM. Когато надхвърли границата от 1000 PPM, тогава започва да причинява главоболие, сънливост и застоял, остарял, задушен въздух и ако надвишава над 2000 PPM, това може да причини повишен сърдечен ритъм и много други заболявания.
Когато стойността ще бъде по-малка от 1000 PPM, тогава LCD и уеб страницата ще покажат “Fresh Air”. Винаги, когато стойността ще се увеличи 1000 PPM, зумерът ще започне да издава звуков сигнал и LCD и уеб страницата ще покаже „Беден въздух, отворен Windows“. Ако ще се увеличи 2000, зумерът ще продължи да издава звуков сигнал и LCD и уеб страницата ще покажат „Опасност! Преместете се на чист въздух ”.
Обяснение на кода:
Преди да започнем кодирането за този проект, първо трябва да калибрираме сензора за газ MQ135. Има много изчисления, участващи в преобразуването на изхода на сензора в PPM стойност, ние сме правили това изчисление преди в нашия предишен проект за детектор на дим. Но тук използваме библиотеката за MQ135, можете да изтеглите и инсталирате тази библиотека MQ135 от тук:
Използвайки тази библиотека, можете директно да получите PPM стойностите, като просто използвате следните два реда:
MQ135 gasSensor = MQ135 (A0); float air_quality = gasSensor.getPPM ();
Но преди това трябва да калибрираме сензора MQ135, за калибриране на сензора качваме дадения по-долу код и го оставяме да работи 12 до 24 часа и след това получаваме стойността RZERO .
#include "MQ135.h" void setup () {Serial.begin (9600); } празен контур () {MQ135 gasSensor = MQ135 (A0); // Прикрепете сензор към щифт A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); забавяне (1000); }
След получаване на стойността RZERO . Поставете стойността RZERO във файла на библиотеката, който сте изтеглили "MQ135.h": #define RZERO 494.63
Сега можем да започнем действителния код за нашия проект за мониторинг на качеството на въздуха.
В кода, на първо място, дефинирахме библиотеките и променливите за газовия сензор и LCD дисплея. Използвайки софтуерната серийна библиотека, можем да направим всеки цифров щифт като TX и RX щифт. В този код сме направили Pin 9 като RX щифт и pin 10 като TX щифт за ESP8266. След това включихме библиотеката за LCD и сме определили щифтовете за същото. Дефинирали сме и още две променливи: една за аналоговия щифт на сензора и друга за съхраняване на стойността air_quality .
#include
След това ще декларираме щифта 8 като изходния щифт, където сме свързали зумера. Командата l cd.begin (16,2) ще стартира LCD дисплея за получаване на данни и след това ще настроим курсора на първи ред и ще отпечатаме 'circuitdigest' . След това ще зададем курсора на втория ред и ще отпечатаме „Загряване на сензора“ .
pinMode (8, ИЗХОД); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("Затопляне на сензора"); забавяне (1000);
След това ще зададем скоростта на предаване за серийната комуникация. Различните ESP имат различни скорости на предаване, така че го напишете според скоростта на предаване на вашия ESP. След това ще изпратим командите, за да настроим ESP да комуникира с Arduino и да покажем IP адреса на серийния монитор.
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 ();
За отпечатване на изхода на уеб страницата в уеб браузър ще трябва да използваме HTML програмиране. И така, създадохме низ с име уеб страница и съхранихме изхода в него. Изваждаме 48 от изхода, защото функцията read () връща десетичната стойност ASCII и първото десетично число, което е 0, започва от 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {delay (1000); int connectionId = esp8266.read () - 48; Низ уеб страница = "
IOT Система за наблюдение на замърсяването на въздуха
"; уеб страница + =""; webpage + =" Качеството на въздуха е "; webpage + = air_quality; webpage + =" PPM "; webpage + ="
";
Следващият код ще извика функция с име sendData и ще изпрати данните и низовете на съобщенията на уеб страницата, за да се покаже.
sendData (cipSend, 1000, DEBUG); sendData (уеб страница, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Следният код ще отпечата данните на LCD дисплея. Приложихме различни условия за проверка на качеството на въздуха и LCD ще отпечата съобщенията според условията и зумер също ще издава звуков сигнал, ако замърсяването надхвърли 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Качеството на въздуха е"); lcd.print (въздушно_качество); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Fresh Air"); digitalWrite (8, LOW);
Накрая функцията по-долу ще изпрати и покаже данните на уеб страницата. Данните, които съхраняваме в низ с име „уеб страница“, ще бъдат запазени в низ с име „команда“ . След това ESP ще прочете символа един по един от „командата“ и ще го отпечата на уеб страницата.
String sendData (String command, const int timeout, boolean debug) {String response = ""; esp8266.print (команда); // изпращаме прочетения знак на esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// Esp има данни, така че покажете изхода си в серийния прозорец char c = esp8266.read (); // прочетете следващия знак. отговор + = c; }} if (отстраняване на грешки) {Serial.print (отговор); } отговор за връщане; }
Тестване и извеждане на проекта:
Преди да качите кода, уверете се, че сте свързани към Wi-Fi на вашето устройство ESP8266. След качването отворете серийния монитор и той ще покаже IP адреса, както е показано по-долу.
Въведете този IP адрес във вашия браузър, той ще ви покаже изхода, както е показано по-долу. Ще трябва да опресните страницата отново, ако искате да видите текущата стойност на качеството на въздуха в PPM.
Настроихме локален сървър, за да демонстрира своята работа, можете да проверите видеото по-долу. Но за да наблюдавате качеството на въздуха от всяка точка на света, трябва да препратите порт 80 (използван за HTTP или интернет) към вашия локален или частен IP адрес (192.168 *) на вашето устройство. След пренасочването на портовете всички входящи връзки ще бъдат препратени към този локален адрес и можете да отворите показаната по-горе уеб страница, като просто въведете публичния IP адрес на вашия интернет от всяко място. Можете да препратите порта, като влезете във вашия рутер (192.168.1.1) и намерите опцията за настройка на пренасочването на порта.