- Необходимые компоненты
- Датчик Nova PM SDS011
- 0,96-дюймовый OLED-дисплей
- Принципиальная схема анализатора качества воздуха
- Построение схемы на Perf Board
- Пояснение кода для монитора качества воздуха
- Тестирование монитора качества воздуха Arduino
Загрязнение воздуха является серьезной проблемой во многих городах, и индекс качества воздуха ухудшается с каждым днем. Согласно отчету Всемирной организации здравоохранения, больше людей погибает преждевременно от воздействия опасных частиц, присутствующих в воздухе, чем от автомобильных аварий. По данным Агентства по охране окружающей среды (EPA), воздух в помещении может быть в 2-5 раз токсичнее, чем воздух снаружи. Итак, здесь мы создаем устройство для контроля качества воздуха путем измерения частиц PM2,5 и PM10 в воздухе.
Ранее мы использовали датчик газа MQ135 для монитора качества воздуха и датчик Sharp GP2Y1014AU0F для измерения плотности пыли в воздухе. На этот раз мы используем датчик SDS011 с Arduino Nano для создания анализатора качества воздуха. Датчик SDS011 может рассчитывать концентрацию частиц PM2,5 и PM10 в воздухе. Здесь значения PM2,5 и PM 10 в реальном времени будут отображаться на OLED-дисплее.
Необходимые компоненты
- Ардуино Нано
- Датчик Nova PM SDS011
- 0,96 'SPI OLED-дисплей
- Перемычки
Датчик Nova PM SDS011
Датчик SDS011 - это новейший датчик качества воздуха, разработанный Nova Fitness. Он работает по принципу лазерного рассеяния и может достигать концентрации частиц от 0,3 до 10 мкм в воздухе. Этот датчик состоит из небольшого вентилятора, впускного воздушного клапана, лазерного диода и фотодиода. Воздух поступает через воздухозаборник, где источник света (лазер) освещает частицы, а рассеянный свет преобразуется в сигнал фотодетектором. Затем эти сигналы усиливаются и обрабатываются, чтобы получить концентрацию частиц PM2,5 и PM10.
Технические характеристики датчика SDS011:
- Выход: PM2,5, PM10
- Диапазон измерения: 0,0-999,9 мкг / м3
- Входное напряжение: от 4,7 В до 5,3 В
- Максимальный ток: 100 мА
- Ток сна: 2 мА
- Время отклика: 1 секунда
- Частота последовательного вывода данных: 1 раз в секунду
- Разрешение диаметра частиц: ≤ 0,3 мкм
- Относительная погрешность: 10%
- Диапазон температур: -20 ~ 50 ° C
0,96-дюймовый OLED-дисплей
OLED (Organic Light-Emitting Diodes) - это технология самосветового излучения, созданная путем размещения ряда органических тонких пленок между двумя проводниками. Яркий свет возникает, когда на эти пленки подается электрический ток. В OLED используется та же технология, что и в телевизорах, но в них меньше пикселей, чем в большинстве наших телевизоров.
В этом проекте мы используем монохромный 7-контактный OLED-дисплей SSD1306 0,96 дюйма. Он может работать по трем различным протоколам связи: трехпроводной режим SPI, четырехпроводной режим SPI и режим I2C. Контакты и их функции описаны в таблице ниже:
Имя контакта |
Другие названия |
Описание |
Gnd |
Земля |
Контакт заземления модуля |
Vdd |
Vcc, 5 В |
Вывод питания (допустимое напряжение 3-5 В) |
SCK |
D0, SCL, CLK |
Действует как штифт часов. Используется как для I2C, так и для SPI |
ПДД |
D1, MOSI |
Вывод данных модуля. Используется как для IIC, так и для SPI |
ВИЭ |
RST, СБРОС |
Сбрасывает модуль (полезно во время SPI) |
ОКРУГ КОЛУМБИЯ |
A0 |
Вывод команды данных. Используется для протокола SPI |
CS |
Выбор чипа |
Полезно, когда по протоколу SPI используется более одного модуля |
Мы рассмотрели полную статью об OLED-дисплеях и их типах здесь.
OLED Технические характеристики:
- Микросхема драйвера OLED: SSD1306
- Разрешение: 128 х 64
- Угол обзора:> 160 °
- Входное напряжение: 3,3 В ~ 6 В
- Цвет пикселя: синий
- Рабочая температура: -30 ° C ~ 70 ° C
Узнайте больше об OLED и его взаимодействии с различными микроконтроллерами, перейдя по ссылке.
Принципиальная схема анализатора качества воздуха
Принципиальная схема для измерения частиц PM2,5 и PM10 с помощью Arduino очень проста и представлена ниже.
На модуль датчика SDS011 и OLED-дисплея подается питание + 5 В и заземление. Контакты передатчика и приемника SDS011 подключены к контактам D3 и D4 Arduino Nano. Поскольку модуль OLED-дисплея использует связь SPI, мы установили связь SPI между модулем OLED и Arduino Nano. Подключения показаны в таблице ниже:
S.No |
Вывод модуля OLED |
Штырь Arduino |
1 |
GND |
Земля |
2 |
VCC |
5В |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
ВИЭ |
13 |
6 |
ОКРУГ КОЛУМБИЯ |
11 |
7 |
CS |
12 |
Построение схемы на Perf Board
Я также спаял все компоненты на монтажной плате, чтобы она выглядела аккуратно. Но вы также можете сделать их на макете. Платы, которые я сделал, представлены ниже. Во время пайки не перебирайте провода. Монтажная плата, которую я припаял, показана ниже:
Пояснение кода для монитора качества воздуха
Полный код этого проекта приведен в конце документа. Здесь мы объясняем некоторые важные части кода.
Код использует SDS011, Adafruit_GFX , и Adafruit_SSD1306 библиотеки. Эти библиотеки можно загрузить из диспетчера библиотек в среде разработки Arduino и установить оттуда. Для этого откройте IDE Arduino и перейдите в Sketch> Include Library> Manage Libraries . Теперь найдите SDS011 и установите библиотеку датчиков SDS от R. Zschiegner.
Аналогичным образом установите библиотеки Adafruit GFX и Adafruit SSD1306 от Adafruit.
После установки библиотек в Arduino IDE запустите код, включив необходимые файлы библиотеки.
#включают
В следующих строках определите две переменные для хранения значений PM10 и PM2.5.
поплавок p10, p25;
Затем определите ширину и высоту OLED. В этом проекте мы используем OLED-дисплей 128 × 64 SPI. Вы можете изменить эти переменные SCREEN_WIDTH и SCREEN_HEIGHT в соответствии с вашим отображением.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Затем определите контакты связи SPI, к которым подключен OLED-дисплей.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Затем создайте экземпляр дисплея Adafruit с шириной и высотой, определенной ранее с помощью протокола связи SPI.
Отображение Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Теперь внутри функции setup () инициализируйте Serial Monitor со скоростью 9600 бод для целей отладки. Кроме того, инициализируйте OLED-дисплей и датчик SDS011 с помощью функции begin () .
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Внутри пустого цикла () считайте значения PM10 и PM2,5 с датчика SDS011 и распечатайте их на последовательном мониторе.
void loop () {ошибка = my_sds.read (& p25, & p10); если (! ошибка) {Serial.println ("P2.5:" + String (p25)); Serial.println ("P10:" + String (p10));
После этого установите размер и цвет текста с помощью setTextSize () и setTextColor () .
display.setTextSize (2); display.setTextColor (БЕЛЫЙ);
Затем в следующей строке определите позицию для начала текста с помощью метода setCursor (x, y) . Здесь мы будем отображать значения PM2,5 и PM10 на OLED-дисплее, поэтому первая строка начинается с (0,15), а вторая строка начинается с (0, 40) координат.
display.setCursor (0,15); display.println («PM2.5»); display.setCursor (67,15); display.println (p25); display.setCursor (0,40); display.println ("PM10"); display.setCursor (67,40); display.println (p10);
И, наконец, вызовите метод display () для отображения текста на OLED-дисплее.
display.display (); display.clearDisplay ();
Тестирование монитора качества воздуха Arduino
Когда оборудование и код готовы, самое время протестировать устройство. Для этого подключите Arduino к ноутбуку, выберите плату и порт и нажмите кнопку загрузки. Как вы можете видеть на изображении ниже, значения PM2,5 и PM10 будут отображаться на OLED-дисплее.
Полное рабочее видео и код приведены ниже. Надеюсь, вам понравился урок и вы узнали что-то полезное. Если у вас есть какие-либо вопросы, оставьте их в разделе комментариев или воспользуйтесь нашим форумом для других технических вопросов.