- Необхідні компоненти:
- Електрична схема та пояснення:
- Робоче пояснення:
- Пояснення коду:
- "; веб-сторінка + =" Якість повітря "; веб-сторінка + = повітря_якість; веб-сторінка + =" PPM "; веб-сторінка + ="
";
Наступний код буде викликати функцію з іменем sendData і надсилатиме дані та рядки повідомлень на веб-сторінку для показу.
sendData (cipSend, 1000, DEBUG); sendData (веб-сторінка, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Наступний код роздрукує дані на РК-дисплеї. Ми застосували різні умови для перевірки якості повітря, і РК-дисплей надрукує повідомлення відповідно до умов, а зумер також подасть звуковий сигнал, якщо забруднення перевищить 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Якість повітря"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Fresh Air"); digitalWrite (8, LOW);
Нарешті, наведена нижче функція надішле і покаже дані на веб-сторінці. Дані, які ми зберігали у рядку з назвою 'webpage', будуть збережені в рядку з назвою 'command' . Потім ESP прочитає символ по черзі з "команди" і надрукує його на веб-сторінці.
Рядок sendData (команда рядка, час очікування const int, логічна налагодження) {Відповідь рядка = ""; 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 на РК-дисплеї, а також на веб-сторінці, щоб ми могли дуже легко відстежувати його.
Раніше ми побудували детектор зрідженого газу з використанням датчика MQ6 та детектор диму з використанням датчика MQ2, але цього разу ми використовували датчик MQ135 як датчик якості повітря, який є найкращим вибором для контролю якості повітря, оскільки він може виявляти найбільш шкідливі гази та вимірювати їх кількість точно. У цьому проекті IOT ви можете контролювати рівень забруднення з будь-якого місця, використовуючи свій комп’ютер або мобільний телефон. Ми можемо встановити цю систему де завгодно, а також може спрацьовувати деякий пристрій, коли забруднення перевищує певний рівень, наприклад, ми можемо увімкнути вентилятор вихлопу або надіслати сповіщення SMS / пошту користувачеві.
Необхідні компоненти:
- MQ135 Датчик газу
- Arduino Uno
- Модуль Wi-Fi ESP8266
- РК-дисплей 16X2
- Макет
- Потенціометр 10K
- Резистори 1 кОм
- Резистор 220 Ом
- Зумер
Ви можете придбати всі вищезазначені компоненти тут.
Електрична схема та пояснення:
Перш за все ми підключимо ESP8266 до Arduino. ESP8266 працює на 3,3 В, і якщо ви дасте йому 5 В від Arduino, він не працюватиме належним чином і може отримати пошкодження. Підключіть VCC і CH_PD до 3,3 В виводу Arduino. RX-штифт ESP8266 працює на 3,3 В, і він не буде взаємодіяти з Arduino, коли ми підключимо його безпосередньо до Arduino. Отже, нам доведеться зробити для нього дільник напруги, який перетворить 5 В на 3,3 В. Це можна зробити, підключивши три резистори послідовно, як це було зроблено в схемі. Через резистори підключіть TX-штифт ESP8266 до штифта 10 Arduino, а RX-штифт esp8266 до pin 9 Arduino.
Модуль Wi-Fi ESP8266 надає вашим проектам доступ до Wi-Fi або Інтернету. Це дуже дешевий пристрій і робить ваші проекти дуже потужними. Він може спілкуватися з будь-яким мікроконтролером, і це найпровідніші пристрої на платформі IOT. Дізнайтеся більше про використання ESP8266 з Arduino тут.
Тоді ми підключимо датчик MQ135 до Arduino. Підключіть VCC і штир заземлення датчика до 5 В і заземлення Arduino і аналоговий штифт датчика до A0 Arduino.
Підключіть зуммер до штифта 8 Arduino, який почне подавати звуковий сигнал, коли стан стане істинним.
Нарешті, ми підключимо РК-дисплей до Arduino. Підключення РК-дисплея здійснюються наступним чином
- Приєднайте штифт 1 (VEE) до землі.
- Підключіть контакт 2 (VDD або VCC) до 5В.
- Підключіть контакт 3 (V0) до середнього контакту потенціометра 10K, а два інших кінця потенціометра підключіть до VCC і GND. Потенціометр використовується для контролю контрастності екрану РК-дисплея. Потенціометр значень, відмінних від 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, тоді на РК-дисплеї та веб-сторінці відображатиметься «Свіже повітря». Щоразу, коли значення буде збільшуватися на 1000 PPM, зумер почне подавати звуковий сигнал, а на РК-дисплеї та веб-сторінці з’явиться повідомлення „Poor Air, Open Windows”. Якщо він збільшиться на 2000, тоді зумер продовжить подавати звуковий сигнал, а на РК-дисплеї та веб-сторінці з’явиться повідомлення «Небезпека! Переїхати на свіже повітря ”.
Пояснення коду:
Перш ніж розпочати кодування для цього проекту, нам потрібно спочатку відкалібрувати газовий датчик 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
Тепер ми можемо розпочати фактичний код нашого проекту моніторингу якості повітря.
У коді, перш за все, ми визначили бібліотеки та змінні для газового датчика та РК-дисплея. Використовуючи послідовну бібліотеку програмного забезпечення, ми можемо зробити будь-який цифровий штифт як TX та RX. У цьому коді ми зробили Pin 9 як RX-штифт, а pin 10 як TX-штифт для ESP8266. Потім ми включили бібліотеку для РК-дисплея і визначили шпильки для них. Ми також визначили ще дві змінні: одну для аналогового виводу датчика та іншу для зберігання значення air_quality .
#включати
Тоді ми оголосимо штифт 8 вихідним штифтом, куди ми підключили зумер. Команда l cd.begin (16,2) запустить РК-дисплей для прийому даних, а потім ми встановимо курсор на перший рядок і надрукуємо '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, ДЕБУГ); sendData ("AT + CWMODE = 2 \ r \ n", 1000, ДЕБУГ); sendData ("AT + CIFSR \ r \ n", 1000, DEBUG); sendData ("AT + CIPMUair_quality = 1 \ r \ n", 1000, DEBUG); sendData ("AT + CIPSERVER = 1,80 \ r \ n", 1000, ДЕБУГ); pinMode (sensorPin, INPUT); lcd.clear ();
Для друку вихідних даних на веб-сторінці у веб-браузері нам доведеться використовувати програмування HTML. Отже, ми створили рядок із назвою веб-сторінка і зберегли в ньому вихідні дані. Ми віднімаємо з виходу 48, оскільки функція read () повертає десяткове значення ASCII, а перше десяткове число, яке дорівнює 0, починається з 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {затримка (1000); int connectionId = esp8266.read () - 48; Рядок веб-сторінки = "
Система моніторингу забруднення повітря IOT
"; веб-сторінка + =""; веб-сторінка + =" Якість повітря "; веб-сторінка + = повітря_якість; веб-сторінка + =" PPM "; веб-сторінка + ="
";
Наступний код буде викликати функцію з іменем sendData і надсилатиме дані та рядки повідомлень на веб-сторінку для показу.
sendData (cipSend, 1000, DEBUG); sendData (веб-сторінка, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ r \ n";
Наступний код роздрукує дані на РК-дисплеї. Ми застосували різні умови для перевірки якості повітря, і РК-дисплей надрукує повідомлення відповідно до умов, а зумер також подасть звуковий сигнал, якщо забруднення перевищить 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("Якість повітря"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Fresh Air"); digitalWrite (8, LOW);
Нарешті, наведена нижче функція надішле і покаже дані на веб-сторінці. Дані, які ми зберігали у рядку з назвою 'webpage', будуть збережені в рядку з назвою 'command' . Потім ESP прочитає символ по черзі з "команди" і надрукує його на веб-сторінці.
Рядок sendData (команда рядка, час очікування const int, логічна налагодження) {Відповідь рядка = ""; 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) і знайти опцію налаштування переадресації портів.