Что такое загрязнение воздуха?
Загрязнение воздуха – это наличие в нем чрезмерного количества нежелательных и вредных твердых и газообразных веществ.
Причины и последствия загрязнения воздуха
В последнее время быстрая урбанизация многих городов мира привела к увеличению уровня загрязнения воздуха. Загрязнение воздуха признано одним из основных факторов, вредных для здоровья человека. Изменение климата является одной из наиболее серьезных проблем, вызванных загрязнением воздуха.
Как контролировать загрязнение воздуха?
Загрязнение воздуха обычно измеряется как индекс качества воздуха (Air Quality Index, AQI) в ppm, который в основном является показателем для оценки содержания таких загрязнителей, как PM 2.5, NO2, O3, CO и т. д. В настоящее время в связи с расширением номенклатуры электронных компонентов и появлением различных новых датчиков разрабатываются многочисленные системы для контроля количества загрязняющих веществ в воздухе. В этой статье я подробно расскажу о системе мониторинга и измерения загрязнения воздуха с помощью Arduino.
Необходимые компоненты:
- Arduino Uno
- MQ-135
- Потенциометр 1 кОм
- ЖК индикатор 16 × 2
- Светодиод
- Излучатель звука
- Резистор 220 Ом
- Резистор 1 кОм
- Беспаечная макетная плата
- Транзистор BC547 / BC337
- Соединительные провода
Купить эти компоненты вы можете здесь: https://utsource.net.
Подключение компонентов
Сначала установите ЖКИ на макетную плату, как показано на рисунке.
Подключение ЖКИ к Arduino:
- D4 – Цифровой вывод 3
- D5 – Цифровой вывод 4
- D6 – Цифровой вывод 5
- D7 – Цифровой вывод 6
- E – Цифровой вывод 8
- RS – Цифровой вывод 9
Теперь подключите контакт ЖКИ A к +5V через резистор 220 Ом, а контакт K – к земле. Наконец, подключите VO к средней точке потенциометра, VDD – к +5V, а VSS и RW – к земле. Кроме того, соедините +5V (коричневый провод) и Ground (черный провод) с потенциометром, как показано на рисунке.
Теперь очень просто подключить остальные компоненты. Вывод A0 датчика MQ-135 соедините с входом A3 платы Arduino, VCC подключите к +5V, а GND подключите к земле. Анод светодиода (+) подключите к цифровому выводу 5 Arduino, а катод (-) – к земле через резистор 220 Ом. Затем подключите положительный вывод звукового излучателя к +5V, а отрицательный вывод – к коллектору транзистора. Базу транзистора через резистор 1 кОм соедините c контактом 2 Arduino и в конце подключите эмиттер к земле.
Работа схемы
Arduino Uno – это главное ядро проекта, а для измерения AQI в ppm я использовал датчик качества воздуха MQ-135. Сначала датчик MQ-135 будет измерять количество загрязнителя в воздухе и выводить аналоговый сигнал на вход A3 Arduino. Затем Arduino отправит инструкции на ЖКИ для отображения значения качества воздуха, измеренного MQ-135. Кроме того, пороговое значение, при котором надо предупредить пользователя, я установил в коде равным 250 ppm. Таким образом, если измеренное значение AQI превышает 250 ppm, светодиод будет мигать, а излучатель звука будет издавать сигнал, чтобы предупредить пользователя о плохом качестве воздуха.
Программа
Для программирования платы Arduino Uno от https://utsource.net я использовал Arduino IDE. Сначала надо вставить в код заголовочный файл LiquidCrystal.h:
#include LiquidCrystal.h // Заголовочный файл для ЖКИ
Определение переменных для различных контактов платы Arduino для ЖКИ, излучателя звука и MQ-135. Кроме того, установка порога 250 ppm:
const int rs = 9, en = 8, d4 = 3, d5 = 4, d6 = 5, d7 = 6; // Выводы ЖКИ, подключенные к Arduino.
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // Функция управления ЖКИ
int buz = 2; // Излучатель звука подключается к выводу 2
int led = 5; // Светодиод подключается к выводу 5
const int aqsensor = A3; // Выход mq-135 подключается к выводу A3 Arduino
int threshold = 250; // Пороговый уровень качества воздуха
Это процедура будет выполняться один раз. Здесь нам нужно установить излучатель звука, светодиод в качестве устройства вывода и MQ-135 в качестве устройства ввода для Arduino Uno. Также инициализируются последовательный UART и ЖКИ.
void setup()
{
pinMode(buz, OUTPUT); // Излучатель звука подключен к Arduino как выходное устройство
pinMode(led, OUTPUT); // ЖКИ подключен к Arduino как выходное устройство
pinMode(aqsensor, INPUT); // MQ135 подключен к Arduino как входное устройство
Serial.begin(9600); // Начало последовательного обмена со скоростью 9600 бод
lcd.clear(); // Очистка ЖКИ
lcd.begin(16, 2); // ЖКИ 16,2
}
Это бесконечный цикл, в котором выполняется чтение данных из датчика MQ-135 и отображение их на экране ЖКИ, а также проверяются условия для включения и выключения светодиода и звукового излучателя.
void loop()
{
int ppm = analogRead(aqsensor); // Считать аналоговые данные с выхода A0MQ135 и сохранить значение в ppm
Serial.print("Air Quality: "); // Вывод сообщения на последовательный монитор
Serial.println(ppm); // Вывод на последовательный монитор значения ppm
lcd.setCursor(0, 0); // Установить курсор ЖКИ в позицию 1 строки 1
lcd.print("Air Qualit: "); // Вывод сообщения на ЖКИ
lcd.print(ppm); // Вывод показаний MQ135
if (ppm > threshold) // ppm выше порогового значения, или нет?
{
lcd.setCursor(1, 1); // Переход сюда, если ppm превышает порог
lcd.print("AQ Level HIGH");
Serial.println("AQ Level HIGH");
tone(led, 1000, 200); // Мигание светодиода: включение на 1000 мс, выключение на 200 мс
digitalWrite(buz, HIGH); // Выключить излучатель звука
}
else
{
digitalWrite(led, LOW); // Переход сюда, если ppm не превышает порога, и выключить светодиод
digitalWrite(buz, LOW); // Выключить излучатель звука
lcd.setCursor(1, 1);
lcd.print("AQ Level Good");
Serial.println("AQ Level Good");
}
delay(500);
}
Материал предоставлен компанией Utsource