Реле Tianbo - ресурс 10 млн переключений
РадиоЛоцман - Все об электронике

Система контроля качества воздуха на основе Arduino

Arduino Arduino Uno

Что такое загрязнение воздуха?

Загрязнение воздуха – это наличие в нем чрезмерного количества нежелательных и вредных твердых и газообразных веществ.

Причины и последствия загрязнения воздуха

В последнее время быстрая урбанизация многих городов мира привела к увеличению уровня загрязнения воздуха. Загрязнение воздуха признано одним из основных факторов, вредных для здоровья человека. Изменение климата является одной из наиболее серьезных проблем, вызванных загрязнением воздуха.

Технология правильного хранения аккумуляторов и батареек по рекомендациям FANSO и EVE Energy

Как контролировать загрязнение воздуха?

Загрязнение воздуха обычно измеряется как индекс качества воздуха (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

Сначала установите ЖКИ на макетную плату, как показано на рисунке.

Подключение ЖКИ к 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

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: Air Pollution Monitoring and Alert System Using Arduino

Элитан
Россия
Arduino-Uno-R3-Atmega1 301 ₽
T-electron
Россия и страны СНГ
ARDUINOUNO237 273 ₽
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Без калибрации - это не измерительный прибор. Настоящая находка зеленого паникера.
  • Калибровки.