- Обязательные компоненты:
- Принципиальная схема и пояснения:
- Рабочее объяснение:
- Пояснение к коду:
- "; webpage + =" Качество воздуха "; webpage + = air_quality; webpage + =" PPM "; webpage + ="
";
Следующий код вызовет функцию с именем sendData и отправит строки данных и сообщений на веб-страницу для отображения.
sendData (cipSend, 1000, ОТЛАДКА); sendData (веб-страница, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ г \ п";
Следующий код распечатает данные на ЖК-дисплее. Мы применили различные условия для проверки качества воздуха, ЖК-дисплей будет печатать сообщения в соответствии с условиями, а зуммер также подаст звуковой сигнал, если уровень загрязнения превышает 1000 PPM.
lcd.setCursor (0, 0); lcd.print («Качество воздуха такое»); lcd.print (качество воздуха); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Свежий воздух"); digitalWrite (8, LOW);
Наконец, функция ниже отправит и покажет данные на веб-странице. Данные, которые мы сохранили в строке с именем 'webpage', будут сохранены в строке с именем 'command' . Затем ESP будет считывать символы один за другим из «команды» и распечатывать его на веб-странице.
String sendData (команда String, время ожидания const int, логическая отладка) {String response = ""; esp8266.print (команда); // отправляем прочитанный символ в esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// У esp есть данные, поэтому отобразите их вывод в окне последовательного порта char c = esp8266.read (); // читаем следующий символ. ответ + = c; }} если (отладка) {Serial.print (ответ); } вернуть ответ; }
- Тестирование и вывод проекта:
В этом проекте мы собираемся создать систему мониторинга загрязнения воздуха на основе Интернета вещей, в которой мы будем контролировать качество воздуха через веб-сервер с использованием Интернета и запускать сигнал тревоги, когда качество воздуха выходит за пределы определенного уровня, то есть когда есть достаточное количество вредных газов, присутствующих в воздухе, таких как CO2, дым, спирт, бензол и NH3. Он покажет качество воздуха в PPM на ЖК-дисплее, а также на веб-странице, чтобы мы могли легко его контролировать.
Ранее мы построили детектор LPG с датчиком MQ6 и детектор дыма с датчиком MQ2, но на этот раз мы использовали датчик MQ135 в качестве датчика качества воздуха, который является лучшим выбором для мониторинга качества воздуха, поскольку он может обнаруживать наиболее вредные газы и может измерять их количество. точно. В этом проекте IOT вы можете отслеживать уровень загрязнения из любого места с помощью компьютера или мобильного телефона. Мы можем установить эту систему где угодно, а также можем активировать какое-либо устройство, когда загрязнение выходит за пределы определенного уровня, например, мы можем включить вытяжной вентилятор или отправить пользователю SMS / письмо с предупреждением.
Обязательные компоненты:
- MQ135 Датчик газа
- Ардуино Уно
- Модуль 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 к выводу 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, на ЖК-дисплее и на веб-странице отобразится «Fresh Air». Каждый раз, когда значение увеличивается на 1000 PPM, зуммер начинает пищать, а на ЖК-дисплее и на веб-странице отображается сообщение «Плохой воздух, откройте 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); } void loop () {MQ135 gasSensor = MQ135 (A0); // Присоединяем датчик к выводу A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); задержка (1000); }
После получения значения RZERO . Поместите значение RZERO в файл библиотеки, который вы загрузили "MQ135.h": #define RZERO 494.63
Теперь мы можем приступить к написанию кода для нашего проекта мониторинга качества воздуха.
В коде мы прежде всего определили библиотеки и переменные для датчика газа и ЖК-дисплея. Используя последовательную библиотеку программного обеспечения, мы можем сделать любой цифровой вывод как вывод TX и RX. В этом коде мы сделали вывод 9 как вывод RX, а вывод 10 как вывод TX для ESP8266. Затем мы включили библиотеку для ЖК-дисплея и определили контакты для него. Мы также определили еще две переменные: одну для аналогового вывода датчика, а другую для хранения значения air_quality .
#включают
Затем мы объявим контакт 8 как выходной контакт, к которому мы подключили зуммер. Команда l cd.begin (16,2) запустит ЖК-дисплей для приема данных, а затем мы установим курсор на первую строку и напечатаем 'circuitdigest' . Затем мы установим курсор на вторую строку и напечатаем «Sensor Warming» .
pinMode (8, ВЫХОД); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("обзор схемы"); 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, ОТЛАДКА); sendData ("AT + CIPMUair_quality = 1 \ r \ n", 1000, ОТЛАДКА); sendData ("AT + CIPSERVER = 1,80 \ r \ n", 1000, ОТЛАДКА); pinMode (sensorPin, ВХОД); lcd.clear ();
Для печати вывода на веб-страницу в веб-браузере нам придется использовать HTML-программирование. Итак, мы создали строку с именем webpage и сохранили в ней вывод. Мы вычитаем 48 из вывода, потому что функция read () возвращает десятичное значение ASCII, а первое десятичное число, равное 0, начинается с 48.
если (esp8266.available ()) {если (esp8266.find ("+ IPD,")) {задержка (1000); int connectionId = esp8266.read () - 48; Строка webpage = "
Система мониторинга загрязнения воздуха IOT
"; веб-страница + =""; webpage + =" Качество воздуха "; webpage + = air_quality; webpage + =" PPM "; webpage + ="
";
Следующий код вызовет функцию с именем sendData и отправит строки данных и сообщений на веб-страницу для отображения.
sendData (cipSend, 1000, ОТЛАДКА); sendData (веб-страница, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = webpage.length (); cipSend + = "\ г \ п";
Следующий код распечатает данные на ЖК-дисплее. Мы применили различные условия для проверки качества воздуха, ЖК-дисплей будет печатать сообщения в соответствии с условиями, а зуммер также подаст звуковой сигнал, если уровень загрязнения превышает 1000 PPM.
lcd.setCursor (0, 0); lcd.print («Качество воздуха такое»); lcd.print (качество воздуха); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Свежий воздух"); digitalWrite (8, LOW);
Наконец, функция ниже отправит и покажет данные на веб-странице. Данные, которые мы сохранили в строке с именем 'webpage', будут сохранены в строке с именем 'command' . Затем ESP будет считывать символы один за другим из «команды» и распечатывать его на веб-странице.
String sendData (команда String, время ожидания const int, логическая отладка) {String response = ""; esp8266.print (команда); // отправляем прочитанный символ в esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// У esp есть данные, поэтому отобразите их вывод в окне последовательного порта char c = esp8266.read (); // читаем следующий символ. ответ + = c; }} если (отладка) {Serial.print (ответ); } вернуть ответ; }
Тестирование и вывод проекта:
Перед загрузкой кода убедитесь, что вы подключены к Wi-Fi вашего устройства ESP8266. После загрузки откройте монитор последовательного порта, и он покажет IP-адрес, как показано ниже.
Введите этот IP-адрес в свой браузер, он покажет вам результат, как показано ниже. Вам придется снова обновить страницу, если вы хотите увидеть текущее значение качества воздуха в PPM.
Мы настроили локальный сервер, чтобы продемонстрировать его работу, вы можете посмотреть видео ниже. Но для мониторинга качества воздуха из любой точки мира вам необходимо перенаправить порт 80 (используемый для HTTP или Интернета) на ваш локальный или частный IP-адрес (192.168 *) вашего устройства. После переадресации порта все входящие соединения будут перенаправляться на этот локальный адрес, и вы можете открыть показанную выше веб-страницу, просто введя общедоступный IP-адрес своего Интернета из любого места. Вы можете перенаправить порт, войдя в свой маршрутизатор (192.168.1.1) и найдя опцию для настройки перенаправления портов.