- Потрібні компоненти
- 0,96 'OLED-модуль дисплея
- Підготовка датчика MQ-135
- Схема до інтерфейсу MQ135 з Arduino
- Обчислення R
- Код для вимірювання CO2 за допомогою датчика Arduino MQ135
- Тестування взаємодії датчика MQ-135
Рівень СО2 в атмосфері Землі зростає з кожним днем. Середній глобальний атмосферний діоксид вуглецю в 2019 році становив 409,8 частин на мільйон, а в жовтні-2020 - 411,29. Вуглекислий газ є ключовим парниковим газом і відповідає за три чверті викидів. Тож моніторинг рівня СО2 також почав набувати важливого значення.
У нашому попередньому проекті ми використовували гравітаційний інфрачервоний датчик CO2 для вимірювання концентрації CO2 у повітрі. У цьому проекті ми будемо використовувати датчик MQ-135 з Arduino для вимірювання концентрації CO2. Виміряні значення концентрації CO2 відображатимуться на модулі OLED, і останнє ми також порівняємо показання датчика Arduino MQ-135 з показаннями інфрачервоного CO2. Окрім СО2, ми також вимірювали концентрацію зрідженого газу, диму та аміаку в газі за допомогою Arduino.
Потрібні компоненти
- Arduino Nano
- Датчик MQ-135
- Провід перемички
- 0,96 'SPI OLED-модуль дисплея
- Макет
- Резистор 22 кОм
0,96 'OLED-модуль дисплея
OLED (органічні світлодіоди) - це самовипромінююча технологія, побудована шляхом розміщення низки органічних тонких плівок між двома провідниками. Яскраве світло утворюється, коли до цих плівок подається електричний струм. OLED використовують ту саму технологію, що і телевізори, але мають менше пікселів, ніж у більшості наших телевізорів.
Для цього проекту ми використовуємо монохромний 7-контактний OLED-дисплей SSD1306 0,96 ”. Він може працювати на трьох різних протоколах зв'язку: SPI 3 Wire, SPI 4-wire і I2C. Ви також можете дізнатись більше про основи OLED-дисплея та його типи, прочитавши зв’язану статтю. Шпильки та її функції пояснюються в таблиці нижче:
Ім'я 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: SSD1306
- Роздільна здатність: 128 x 64
- Кут зору:> 160 °
- Вхідна напруга: 3,3 В ~ 6 В
- Колір пікселя: синій
- Робоча температура: -30 ° C ~ 70 ° C
Підготовка датчика MQ-135
MQ-135 Gas Sensor - датчик якості повітря для виявлення широкого спектру газів, включаючи NH3, NOx, алкоголь, бензол, дим та CO2. Датчик MQ-135 можна придбати як модуль, так і просто як датчик. У цьому проекті ми використовуємо сенсорний модуль MQ-135 для вимірювання концентрації CO2 у PPM. Принципова схема плати MQ-135 наведена нижче:
Навантажувальний резистор RL відіграє дуже важливу роль у спрацьовуванні датчика. Цей резистор змінює значення опору відповідно до концентрації газу. Згідно з таблицею даних MQ-135, значення резистора навантаження може коливатися де-небудь від 10KΩ до 47KΩ. В таблиці технічних даних рекомендується калібрувати детектор на концентрацію NH3 або 50ppm алкоголю у повітрі та використовувати значення опору навантаження (RL) близько 20 КОм. Але якщо ви відстежуєте сліди вашої друкованої плати, щоб знайти значення вашого RL на платі, ви можете побачити резистор навантаження 1 кОм (102).
Отже, щоб виміряти відповідні значення концентрації CO2, вам слід замінити резистор 1KΩ резистором 22KΩ.
Схема до інтерфейсу MQ135 з Arduino
Повна схема підключення газового датчика MQ-135 до Arduino наведена нижче:
Схема дуже проста, оскільки ми лише підключаємо датчик MQ-135 та модуль OLED-дисплея до Arduino Nano. Газовий датчик MQ-135 та OLED-модуль дисплея живляться від + 5 В та GND. Висновок аналогового виходу датчика MQ-135 підключений до виводу A0 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 |
Після підключення апаратного забезпечення за принциповою схемою налаштування датчика Arduino MQ135 має виглядати приблизно так:
Обчислення R
Тепер, коли ми знаємо значення RL, давайте приступимо до того, як розрахувати значення R o в чистому повітрі. Тут ми будемо використовувати MQ135.h для вимірювання концентрації CO2 у повітрі. Тож спочатку завантажте бібліотеку MQ-135, а потім попередньо нагрійте датчик протягом 24 годин, перш ніж читати значення R o. Після процесу попереднього нагрівання використовуйте наведений нижче код, щоб прочитати значення R o:
#include "MQ135.h" void setup () {Serial.begin (9600); } порожня петля () {MQ135 gasSensor = MQ135 (A0); // Приєднати датчик до штифта A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); затримка (1000); }
Тепер, як тільки ви отримали значення R o, перейдіть до Документи> Arduino> бібліотеки> Основна папка MQ135 і відкрийте файл MQ135.h та змініть значення RLOAD & RZERO.
/// Опір навантаженню на платі #define RLOAD 22.0 /// Калібрувальна стійкість при атмосферному рівні CO2 #define RZERO 5804.99
Тепер прокрутіть вниз і замініть значення ATMOCO2 поточним атмосферним CO2, який становить 411,29
/// Рівень СО2 в атмосфері для калібрування # визначити ATMOCO2 397.13
Код для вимірювання CO2 за допомогою датчика Arduino MQ135
Повний код взаємодії датчика MQ-135 з Arduino наведено в кінці документа. Тут ми пояснюємо деякі важливі частини коду Arduino MQ135.
Код використовує Adafruit_GFX , і Adafruit_SSD1306 , і MQ135.h бібліотеки. Ці бібліотеки можна завантажити з Менеджера бібліотек в IDE Arduino та встановити звідти. Для цього відкрийте IDE Arduino і перейдіть до Sketch <Include Library <Manage Libraries . Тепер шукайте Adafruit GFX та встановіть бібліотеку Adafruit GFX від Adafruit.
Подібним чином встановіть бібліотеки Adafruit SSD1306 фірми Adafruit. Бібліотеку MQ135 можна завантажити звідси.
Після встановлення бібліотек в Arduino IDE запустіть код, включивши необхідні файли бібліотек.
#include "MQ135.h" #include
Потім визначте ширину та висоту 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);
Після цього визначте штифт Arduino, куди підключений датчик MQ-135.
int датчикIn = A0;
Тепер усередині функції setup () ініціалізуйте послідовний монітор зі швидкістю передачі в 9600 для цілей налагодження. Крім того, ініціалізуйте OLED-дисплей за допомогою функції begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay ();
Усередині функції loop () спочатку прочитайте значення сигналу на аналоговому штифті Arduino, викликавши функцію analogRead () .
val = analogRead (A0); Serial.print ("raw =");
Потім у наступному рядку зателефонуйте gasSensor.getPPM () для обчислення значень PPM. Значення PPM обчислюються за допомогою резистора навантаження, R 0, та зчитування з аналогового штифта.
float ppm = gasSensor.getPPM (); Serial.print ("ppm:"); Serial.println (ppm);
Після цього встановіть розмір та колір тексту за допомогою setTextSize () та setTextColor () .
display.setTextSize (1); display.setTextColor (БІЛИЙ);
Потім у наступному рядку визначте позицію, з якої починається текст, за допомогою методу setCursor (x, y) . І роздрукуйте значення CO2 на OLED-дисплеї за допомогою функції display.println () .
display.setCursor (18,43); display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (ppm);
І нарешті, зателефонуйте методу display () для відображення тексту на OLED-дисплеї.
display.display (); display.clearDisplay ();
Тестування взаємодії датчика MQ-135
Коли обладнання та код готові, настав час протестувати датчик. Для цього підключіть Arduino до ноутбука, виберіть плату та порт і натисніть кнопку завантаження. Потім відкрийте свій послідовний монітор і почекайте деякий час (процес попереднього нагрівання), тоді ви побачите кінцеві дані. Значення будуть відображатися на OLED-дисплеї, як показано нижче:
Ось як датчик MQ-135 можна використовувати для вимірювання точного СО2 у повітрі. Повний датчик якості повітря MQ135 Arduino Code та робоче відео наведені нижче. Якщо у вас є якісь сумніви, залиште їх у розділі коментарів.