- Потрібні компоненти
- Гравітаційний інфрачервоний датчик CO2
- 0,96 'OLED-модуль дисплея
- Кругова діаграма
- Код Arduino для вимірювання концентрації CO2
- Тестування взаємодії гравітаційного інфрачервоного датчика CO2
Зростаюча концентрація вуглекислого газу в повітрі стала серйозною проблемою в даний час. Згідно з повідомленням NOAA, концентрація озону СО2 досягла 0,0385 відсотків (385 проміле), і це найвища кількість за 2,1 мільйона років. Це означає, що в одному мільйоні частинок повітря знаходиться 385 частинок вуглекислого газу. Цей підвищений рівень СО2 негативно позначився на навколишньому середовищі та змусив зіткнутися з такою ситуацією, як зміна клімату та глобальне потепління. На дорогах встановлено багато приладів для вимірювання якості повітря, щоб визначити рівень СО2, але ми також можемо створити прилад для вимірювання СО2, який можна зробити самостійно, і встановити його в нашій місцевості.
У цьому посібнику ми збираємось поєднати гравітаційний інфрачервоний датчик CO2 з Arduino для вимірювання концентрації CO2 у PPM. Гравітаційний інфрачервоний датчик CO2 - це високоточний аналоговий датчик CO2. Він вимірює вміст CO2 у діапазоні від 0 до 5000 ppm. Ви також можете перевірити наші попередні проекти, де ми використовували датчик газу MQ135, датчик Sharp GP2Y1014AU0F та датчик Nova PM SDS011 для створення монітора якості повітря.
Потрібні компоненти
- Arduino Nano
- Гравітаційний інфрачервоний датчик CO2 V1.1
- Провід перемички
- 0,96 'SPI OLED-модуль дисплея
- Макет
Гравітаційний інфрачервоний датчик CO2
Гравітаційний інфрачервоний датчик CO2 V1.1 - це останній високоточний аналоговий інфрачервоний датчик CO2, випущений DFRobot. Цей датчик заснований на технології недисперсного інфрачервоного випромінювання (NDIR) і має гарну селективність та безкисневу залежність. Він інтегрує температурну компенсацію і підтримує вихід ЦАП. Ефективний діапазон вимірювань датчика становить від 0 до 5000 ppm з точністю ± 50 ppm + 3%. Цей інфрачервоний датчик СО2 може бути використаний у системах опалення, вентиляції та кондиціонування повітря, контролю якості повітря в приміщеннях, промислових процесів та контролю безпеки, сільського господарства та моніторингу виробничих процесів тваринництва.
Висновок інфрачервоного датчика CO2 :
Як вже згадувалося раніше, інфрачервоний датчик CO2 постачається з 3-контактним роз’ємом. На малюнку та в таблиці нижче показано призначення контактів для інфрачервоного датчика CO2:
No контакту |
Ім'я PIN-коду |
Опис |
---|---|---|
1 |
Сигнал |
Аналоговий вихід (0,4 ~ 2 В) |
2 |
VCC |
VCC (4,5 ~ 5,5 В) |
3 |
GND |
GND |
Характеристики та характеристики інфрачервоного датчика CO2 :
- Виявлення газу: вуглекислий газ (CO2)
- Робоча напруга: 4,5 ~ 5,5 В постійного струму
- Час попереднього нагрівання: 3 хв
- Час відгуку: 120 с
- Робоча температура: 0 ~ 50 ℃
- Робоча вологість: 0 ~ 95% вологості (без конденсації)
- Водонепроникний та антикорозійний
- Високий цикл життя
- Інтерференція водяної пари
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
Дізнайтеся більше про OLED та його взаємодію з різними мікроконтролерами, перейшовши за посиланням.
Кругова діаграма
Принципова схема для взаємодії аналогового інфрачервоного датчика CO2 для гравітації для Arduino наведена нижче:
Схема дуже проста, оскільки ми лише підключаємо гравітаційний інфрачервоний датчик CO2 та OLED-дисплейний модуль до Arduino Nano. Інфрачервоний датчик CO2 і модуль OLED-дисплея живляться від + 5 В і GND. Штифт сигналу (аналогового виходу) датчика CO2 підключений до виводу 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 для вимірювання концентрації CO2
Повний код цього аналогового інфрачервоного датчика CO2 для проекту Arduino наведено в кінці документа. Тут ми пояснюємо деякі важливі частини коду.
Код використовує Adafruit_GFX , і Adafruit_SSD1306 бібліотеки. Ці бібліотеки можна завантажити з Менеджера бібліотек в IDE Arduino та встановити звідти. Для цього відкрийте IDE Arduino і перейдіть до Ескіз> Включити бібліотеку> Керувати бібліотеками . Тепер шукайте Adafruit GFX та встановіть бібліотеку Adafruit GFX від Adafruit.
Подібним чином встановіть бібліотеки Adafruit SSD1306 фірми Adafruit. Для інфрачервоного датчика CO2 не потрібна бібліотека, оскільки ми зчитуємо значення напруги безпосередньо з аналогового штифта Arduino.
Після встановлення бібліотек в Arduino IDE запустіть код, включивши необхідні файли бібліотеки. Датчик пилу не потребує бібліотеки, оскільки зчитування здійснюється безпосередньо з аналогового штифта Arduino.
#включати
Потім визначте ширину та висоту 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, куди підключений датчик CO2.
int датчикIn = A0;
Тепер усередині функції setup () ініціалізуйте послідовний монітор зі швидкістю передачі в 9600 для цілей налагодження. Крім того, ініціалізуйте OLED-дисплей за допомогою функції begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); analogReference (DEFAULT);
Усередині функції loop () спочатку прочитайте значення сигналу на аналоговому штифті Arduino, викликавши функцію analogRead () . Після цього перетворіть ці значення аналогового сигналу у значення напруги.
void loop () {int sensorValue = analogRead (sensorIn); поплавкова напруга = значенняValue * (5000 / 1024.0);
Після цього порівняйте значення напруги. Якщо напруга 0 В, це означає, що з датчиком сталася якась проблема. Якщо напруга перевищує 0 В, але менше 400 В, це означає, що датчик все ще знаходиться в процесі попереднього нагрівання.
if (напруга == 0) {Serial.println ("Помилка"); } ще if (напруга <400) {Serial.println ("попереднє нагрівання"); }
Якщо напруга дорівнює або перевищує 400 В, перетворіть його у значення концентрації CO2.
ще {int напруга_диференція = напруга-400; концентрація поплавка = різниця_напруги * 50,0 / 16,0;
Після цього встановіть розмір та колір тексту за допомогою setTextSize () та setTextColor () .
display.setTextSize (1); display.setTextColor (БІЛИЙ);
Потім у наступному рядку визначте позицію, з якої починається текст, за допомогою методу setCursor (x, y) . І роздрукуйте значення CO2 на OLED-дисплеї за допомогою функції display.println () .
display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (концентрація);
І нарешті, зателефонуйте методу display () для відображення тексту на OLED-дисплеї.
display.display (); display.clearDisplay ();
Тестування взаємодії гравітаційного інфрачервоного датчика CO2
Коли обладнання та код готові, настав час протестувати датчик. Для цього підключіть Arduino до ноутбука, виберіть плату та порт і натисніть кнопку завантаження. Потім відкрийте свій послідовний монітор і почекайте деякий час (процес попереднього нагрівання), тоді ви побачите кінцеві дані.
Значення будуть відображатися на OLED-дисплеї, як показано нижче:
Примітка: Перш ніж використовувати датчик, дайте йому нагрітися приблизно протягом 24 годин, щоб отримати правильні значення PPM. Коли я ввімкнув датчик вперше, вихідна концентрація СО2 становила від 1500 до 1700 годин на хвилину, а після 24-годинного процесу нагрівання вихідна концентрація СО2 знизилася до 450 до 500 проміле, що є правильними значеннями PPM Тому необхідно відкалібрувати датчик, перш ніж використовувати його для вимірювання концентрації CO2.
Так можна використовувати інфрачервоний датчик CO2 для вимірювання точної концентрації CO2 у повітрі. Повний код та робоче відео наведено нижче. Якщо у вас є якісь сумніви, залиште їх у розділі коментарів або скористайтеся нашими форумами для отримання технічної допомоги.