Рубрики
Схемы на Arduino

Анализатор качества воздуха с определением частиц PM2.5 и PM10 на Arduino и Nova PM Sensor SDS011

Загрязнение воздуха становится все более актуальной проблемой для современных городов – индекс качества воздуха в большинстве из них ухудшается с каждым годом. При этом согласно докладу организации Environmental Protection Agency (EPA) воздух внутри помещений может быть от 2 до 5 более токсичен чем наружный воздух. При этом в последнее время все больше внимания в этой тематике уделяется ультрадисперсным взвешенным частицам PM2.5 и PM10, оказывающим значительное негативное воздействие на здоровье человека. В интернете на эту тематику очень много публикаций – можете почитать если интересно.

Ранее на нашем сайте мы уже рассматривали анализатор качества воздуха на основе датчика MQ135 и платы Arduino, в этой же статье мы рассмотрим создание на основе платы Arduino Nano и датчика SDS011 более «продвинутого» анализатора качества воздуха. Датчик SDS011 способен определять концентрацию в воздухе частиц PM2.5 и PM10, поэтому иногда его называют датчиком обнаружения пыли. В нашем проекте концентрация данных частиц будет отображаться на экране OLED дисплея.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Nova PM Sensor SDS011 (датчик SDS011 от компании Nova) (купить на AliExpress).
  3. 0.96’ SPI OLED Display Module – модуль OLED дисплея с диагональю 0.96’ и поддержкой интерфейса SPI (купить на AliExpress — если будете покупать по приведенной ссылке, то выбирайте модель OLED дисплея с 7 контактами).
  4. Соединительные провода.

Nova PM Sensor SDS011

Датчик SDS011 – недавно появившийся на рынке анализатор качества воздуха, разработанный компанией Nova Fitness. Принцип его работы основан на активной лазерной спектроскопии (анализ рассеяния луча лазера). Данный датчик способен обнаруживать в воздухе частицы с размерами от 0.3 до 10μm (микрометров). Датчик состоит из небольшого вентилятора, клапана впуска воздуха, лазерного диода и фотодиода. Воздух в датчик поступает через клапан впуска (air inlet). Внутри датчика работает лазерный диод, который освещает поступивший внутрь датчика воздух и частицы, содержащиеся в нем. Получившийся рассеянный свет преобразуется в электрический сигнал с помощью фотодетектора. Этот сигнал затем усиливается и обрабатывается. В результате обработки вычисляется концентрация частиц PM2.5 и PM10.

Технические характеристик датчика SDS011:

  • обнаружение частиц: PM2.5, PM10;
  • диапазон измерений: 0.0-999.9μg/m3;
  • входное напряжение: от 4.7V до 5.3V;
  • максимальный ток: 100mA;
  • ток покоя (в «спящем» состоянии): 2mA;
  • время отклика: 1 секунда;
  • разрешающая способность при обнаружении частиц: ≤ 0.3μm;
  • относительная ошибка: 10% ;
  • диапазон рабочих температур: -20~50°C.

Модуль OLED дисплея (0.96’ OLED Display Module)

OLED (Organic Light-Emitting Diodes, органический светоизлучающий диод) – это светоизлучающая технология, которая применяется в большинстве современных телевизоров. В OLED дисплеях используется тот же принцип формирования изображения, что и в современных телевизорах, только количество пикселей в них значительно меньше.

Для нашего проекта мы использовали монохромный 7-ми контактный OLED дисплей SSD1306 с диагональю 0.96”. Он может использовать 3 различных коммуникационных протокола: 3-х проводный SPI, 4-х проводный SPI и I2C.

Назначение его контактов (распиновка) приведены в следующей таблице.

Номер контакта Название контакта Альтернативное название контакта Назначение контакта
1 Gnd Ground земля
2 Vdd Vcc, 5V напряжение питания (в диапазоне 3-5 В)
3 SCK D0, SCL, CLK используется как контакт часов (clock pin). Применяется в интерфейсах I2C и SPI
4 SDA D1, MOSI контакт данных. Применяется в интерфейсах I2C и SPI
5 RES RST, RESET контакт сброса модуля. Применяется в интерфейсе SPI
6 DC A0 контакт команд (Data Command pin). Применяется в интерфейсе SPI
7 CS Chip Select (выбор чипа) используется когда несколько устройств взаимодействуют по интерфейсу SPI

Подключение данного дисплея к плате Arduino рассматривалось в этой статье, а все проекты с использованием данного дисплея на нашем сайте вы можете посмотреть по следующей ссылке.

Технические характеристики OLED дисплея SSD1306:

  • драйвер микросхемы OLED: SSD1306;
  • разрешение: 128 x 64;
  • угол зрения: >160°;
  • входное напряжение: 3.3V ~ 6V;
  • цвет пикселов: синий;
  • диапазон рабочих температур: -30°C ~ 70°C.

Схема проекта

Схема анализатора качества воздуха на Arduino для определения частиц PM2.5 и PM10 представлена на следующем рисунке.

Датчик SDS011 и OLED дисплей запитываются от напряжения +5V. Контакты передатчика и приемника датчика SDS011 подключены к контактам D3 и D4 платы Arduino Nano. OLED дисплей в нашем проекте подключен к плате Arduino Nano по интерфейсу SPI. Его соединения с платой Arduino Nano представлены в следующей таблице.

OLED дисплей Плата Arduino Nano
GND Ground
VCC 5V
D0 10
D1 9
RES 13
DC 11
CS 12

Внешний вид получившейся у нас конструкции проекта показан на следующем рисунке.

Для сборки конструкции проекта мы использовали перфорированную плату. Внешний вид этой платы с установленными компонентами проекта показан на рисунке ниже. Но вы при желании можете использовать макетную или печатную плату для сборки проекта.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Код программы использует библиотеки SDS011, Adafruit_GFX и Adafruit_SSD1306. Все эти библиотеки можно скачать и установить в менеджере библиотек (Library Manager) в Arduino IDE. Для этого в Arduino IDE откройте пункт меню Sketch > Include Library > Manage Libraries. Запустите в нем поиск SDS011 и установите библиотеку SDS Sensor library, написанную R. Zschiegner.

Аналогичным образом установите библиотеки Adafruit GFX и Adafruit SSD1306 от компании Adafruit.

После установки всех необходимых библиотек код программы начнем с подключения заголовочных файлов данных библиотек.

Далее объявим две переменные для хранения концентрации частиц PM10 и PM2.5.

Затем в программе определим (укажем) ширину и высоту OLED дисплея (в пикселах) – для используемого нами дисплея это будут, соответственно, значения 128 и 64.

Далее определим (укажем) контакты интерфейса SPI, к которым подключен OLED дисплей.

Затем создадим объект для работы с OLED дисплеем.

После этого в функции setup() мы инициализируем последовательную связь со скоростью 9600 бод для целей отладки. Также мы инициализируем OLED дисплей (с помощью функции begin()) и датчик SDS011.

В функции void loop() мы будем считывать значения концентрации частиц PM10 и PM2.5 с датчика SDS011 и выводить их в окно монитора последовательной связи.

После этого установим размер и цвет текста на OLED дисплее с помощью функций setTextSize() и setTextColor().

Далее установим позицию для начала вывода текста с помощью функции setCursor(x,y). Мы будем выводить на экран OLED дисплея значения концентрации частиц  PM2.5 и PM10, поэтому установим для их вывода начальные позиции (0,15) и (0, 40).

И, наконец, с помощью функции display() мы отобразим необходимый нам текст на экране OLED дисплея.

Тестирование работы проекта

После того как аппаратная часть проекта будет готова, подсоедините плату Arduino к компьютеру, выберите в Arduino IDE правильный вид платы и порт, к которому она подключена, и загрузите код программы в плату. После этого вы должны увидеть как на экране OLED будут показываться измеренные значения частиц PM2.5 и PM10.

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *