- Потрібні компоненти
- Nova PM Sensor SDS011
- 0,96 'OLED-модуль дисплея
- Принципова схема для аналізатора якості повітря
- Побудова схеми на платі Perf
- Пояснення коду для монітора якості повітря
- Тестування монітора якості повітря Arduino
Забруднення повітря є головною проблемою у багатьох містах, і показник якості повітря з кожним днем погіршується. Згідно з доповіддю Всесвітньої організації охорони здоров’я, більше людей вбивається передчасно внаслідок дії небезпечних частинок, що знаходяться в повітрі, ніж внаслідок автомобільних аварій. За даними Агентства з охорони навколишнього середовища (EPA), повітря в приміщеннях може бути в 2–5 разів токсичнішим, ніж повітря на відкритому повітрі. Тож тут ми будуємо пристрій для контролю якості повітря шляхом вимірювання частинок PM2,5 та PM10 у повітрі.
Раніше ми використовували газовий датчик MQ135 для монітора якості повітря та датчик Sharp GP2Y1014AU0F для вимірювання щільності пилу в повітрі. Цього разу ми використовуємо датчик SDS011 з Arduino Nano для створення Аналізатора якості повітря. Датчик SDS011 може розрахувати концентрацію частинок PM2,5 та PM10 у повітрі. Тут значення OL2.5 та PM 10 у реальному часі відображатимуться на OLED-дисплеї.
Потрібні компоненти
- Arduino Nano
- Nova PM Sensor SDS011
- 0,96 'SPI OLED-модуль дисплея
- Провід перемички
Nova PM Sensor 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 (органічні світлодіоди) - це самовипромінююча технологія, побудована шляхом розміщення низки органічних тонких плівок між двома провідниками. Яскраве світло утворюється, коли до цих плівок подається електричний струм. OLED використовують ту саму технологію, що і телевізори, але мають менше пікселів, ніж у більшості наших телевізорів.
Для цього проекту ми використовуємо монохромний 7-контактний OLED-дисплей SSD1306 0,96 ”. Він може працювати на трьох різних протоколах зв'язку: SPI 3 Wire, SPI 4-wire і I2C. Шпильки та її функції пояснюються в таблиці нижче:
Ім'я PIN-коду |
Інші імена |
Опис |
Gnd |
Земля |
Штифт заземлення модуля |
Vdd |
Vcc, 5 В. |
Штифт живлення (3-5 В допустимий) |
SCK |
D0, SCL, CLK |
Діє як годинниковий штифт. Використовується як для I2C, так і для SPI |
SDA |
D1, MOSI |
Штифт даних модуля. Використовується як для IIC, так і для SPI |
ВДЕ |
RST, RESET |
Скидає модуль (корисно під час SPI) |
Постійного струму |
A0 |
Командний штифт даних. Використовується для протоколу SPI |
CS |
Вибір чіпа |
Корисно, коли за протоколом SPI використовується більше одного модуля |
Тут ми розглянули повну статтю про OLED-дисплеї та їх типи.
Технічні характеристики OLED:
- Схема драйвера OLED: SSD1306
- Роздільна здатність: 128 x 64
- Кут зору:> 160 °
- Вхідна напруга: 3,3 В ~ 6 В
- Колір пікселя: синій
- Робоча температура: -30 ° C ~ 70 ° C
Дізнайтеся більше про OLED та його взаємодію з різними мікроконтролерами, перейшовши за посиланням.
Принципова схема для аналізатора якості повітря
Схема вимірювання частинок PM2,5 і PM10 за допомогою Arduino дуже проста і подана нижче.
Датчик SDS011 і модуль OLED-дисплея живляться від + 5 В і GND. Виводи передавача і приймача SDS011 з'єднані з виводами D3 і D4 Arduino Nano. Оскільки модуль дисплея OLED використовує зв'язок SPI, ми встановили зв'язок SPI між модулем OLED та Arduino Nano. З'єднання показані в таблиці нижче:
С.Ні |
PIN-код модуля OLED |
Pin Arduino |
1 |
GND |
Земля |
2 |
VCC |
5 В |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
ВДЕ |
13 |
6 |
Постійного струму |
11 |
7 |
CS |
12 |
Побудова схеми на платі Perf
Я також припаяв усі компоненти на платформі, щоб вона виглядала акуратно. Але ви можете зробити їх і на макетній дошці. Дошки, які я зробив, є нижче. Під час пайки переконайтеся, що не сортуєте дроти. Дошка перфів, яку я припаяв, показана нижче:
Пояснення коду для монітора якості повітря
Повний код цього проекту наведено в кінці документа. Тут ми пояснюємо деякі важливі частини коду.
Код використовує SDS011, Adafruit_GFX , і Adafruit_SSD1306 бібліотеки. Ці бібліотеки можна завантажити з Менеджера бібліотек в IDE Arduino і встановити звідти. Для цього відкрийте IDE Arduino і перейдіть до Ескіз> Включити бібліотеку> Керувати бібліотеками . Тепер шукайте SDS011 та встановіть бібліотеку SDS Sensor Р. 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 () ініціалізуйте послідовний монітор зі швидкістю передачі в 9600 для цілей налагодження. Крім того, ініціалізуйте OLED-дисплей і датчик SDS011 за допомогою функції start () .
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Усередині петлі порожнечі () зчитуйте значення PM10 та PM2.5 з датчика SDS011 і друкуйте показання на послідовному моніторі.
недійсний цикл () {помилка = my_sds.read (& p25, & p10); if (! error) {Serial.println ("P2.5:" + String (p25)); Serial.println ("P10:" + Рядок (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-дисплеї.
Повне робоче відео та код наведені нижче. Сподіваюся, вам сподобався підручник і ви дізналися щось корисне. Якщо у вас виникли запитання, залиште їх у розділі коментарів або скористайтеся нашими форумами для інших технічних запитань.