- Необходими компоненти
- Гравитационен инфрачервен CO2 сензор
- 0.96 'OLED дисплеен модул
- Електрическа схема
- Код на Arduino за измерване на концентрацията на CO2
- Тестване на взаимодействието на гравитационния инфрачервен CO2 сензор
Нарастващата концентрация на въглероден диоксид във въздуха се превърна в сериозен проблем сега. Според доклада на NOAA, концентрацията на озон CO2 е достигнала 0,0385% (385 ppm) и е най-високото количество от 2,1 милиона години. Това означава, че в един милион частици въздух има 385 частици въглероден диоксид. Това нарастващо ниво на CO2 се отрази зле на околната среда и ни накара да се изправим пред ситуацията като изменението на климата и глобалното затопляне. Има много устройства за измерване на качеството на въздуха, инсталирани по пътищата, за да определят нивото на CO2, но ние също можем да изградим DIY устройство за измерване на CO2 и да го инсталираме в нашата област.
В този урок ще свържем гравитационния инфрачервен 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) и има добра селективност и зависимост без кислород. Той интегрира температурна компенсация и поддържа изход DAC. Ефективният обхват на измерване на този сензор е от 0 до 5000 ppm с точност от ± 50 ppm + 3%. Този инфрачервен CO2 сензор може да се използва в ОВК, мониторинг на качеството на въздуха в помещенията, промишлен процес и мониторинг на защитата на сигурността, селско стопанство и мониторинг на производствения процес на животновъдството.
Инфрачервен извод за сензор за CO2 :
Както бе споменато по-рано, инфрачервеният CO2 сензор се предлага с 3-пинов конектор. Фигурата и таблицата по-долу показват заданията на щифтовете за инфрачервения CO2 сензор:
ПИН No. |
Име на ПИН |
Описание |
---|---|---|
1 |
Сигнал |
Аналогов изход (0.4 ~ 2V) |
2 |
VCC |
VCC (4.5 ~ 5.5V) |
3 |
GND |
GND |
Спецификации и характеристики на инфрачервения CO2 сензор :
- Откриване на газ: Въглероден диоксид (CO2)
- Работно напрежение: 4.5 ~ 5.5V DC
- Време за предварително загряване: 3 минути
- Време за реакция: 120 сек
- Работна температура: 0 ~ 50 ℃
- Работна влажност: 0 ~ 95% относителна влажност (без конденз)
- Водоустойчив и антикорозионен
- Живот с висок цикъл
- Смущения срещу водни пари
0.96 'OLED дисплеен модул
OLED (Organic Light-Emitting Diodes) е технология за самоизлъчване, конструирана чрез поставяне на серия от органични тънки филми между два проводника. Ярка светлина се получава, когато към тези филми се прилага електрически ток. OLED използват същата технология като телевизорите, но имат по-малко пиксели, отколкото в повечето от нашите телевизори.
За този проект използваме монохромен 7-пинов SSD1306 0.96 ”OLED дисплей. Може да работи върху три различни комуникационни протокола: SPI 3 Wire режим, SPI четирижилен режим и I2C режим. Щифтовете и неговите функции са обяснени в таблицата по-долу:
Вече разгледахме OLED и неговите видове в подробности в предишната статия.
Име на ПИН |
Други имена |
Описание |
Gnd |
Земя |
Заземен щифт на модула |
Vdd |
Vcc, 5V |
Захранващ щифт (3-5V поносим) |
SCK |
D0, SCL, CLK |
Действа като щифт на часовника. Използва се както за I2C, така и за SPI |
SDA |
D1, MOSI |
ПИН за данни на модула. Използва се както за IIC, така и за SPI |
ВЕИ |
RST, RESET |
Нулира модула (полезно по време на SPI) |
DC |
A0 |
ПИН за команда за данни. Използва се за протокол SPI |
CS |
Избор на чип |
Полезно, когато по протокол SPI се използват повече от един модул |
Спецификации на OLED:
- ИС на драйвери за OLED: SSD1306
- Разделителна способност: 128 x 64
- Визуален ъгъл:> 160 °
- Входно напрежение: 3.3V ~ 6V
- Цвят на пиксела: син
- Работна температура: -30 ° C ~ 70 ° C
Научете повече за OLED и неговото взаимодействие с различни микроконтролери, като следвате връзката.
Електрическа схема
Схема за свързване на гравитационен аналогов инфрачервен CO2 сензор за Arduino е дадена по-долу:
Веригата е много проста, тъй като ние свързваме само гравитационния инфрачервен сензор за CO2 и модула OLED дисплей с Arduino Nano. Инфрачервеният CO2 сензор и OLED дисплейният модул се захранват с + 5V и GND. Сигналният (аналогов изход) щифт на CO2 сензора е свързан към щифта A0 на Arduino Nano. Тъй като OLED дисплейният модул използва SPI комуникация, ние установихме SPI комуникация между OLED модула и Arduino Nano. Връзките са показани в таблицата по-долу:
S.No |
ПИН на модула OLED |
Arduino Pin |
1 |
GND |
Земя |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
ВЕИ |
13 |
6 |
DC |
11. |
7 |
CS |
12 |
След свързване на хардуера според схемата на веригата, той трябва да изглежда по следния начин:
Код на Arduino за измерване на концентрацията на CO2
Пълният код за този Gravity Analog Infrared CO2 Sensor за Arduino проект е даден в края на документа. Тук обясняваме някои важни части от кода.
Кодът използва Adafruit_GFX , и Adafruit_SSD1306 библиотеки. Тези библиотеки могат да се изтеглят от Мениджъра на библиотеки в IDE на Arduino и да се инсталират от там. За това отворете IDE на Arduino и отидете на Sketch> Include Library> Manage Libraries . Сега потърсете Adafruit GFX и инсталирайте библиотеката Adafruit GFX от Adafruit.
По същия начин инсталирайте библиотеките на Adafruit SSD1306 от Adafruit. Инфрачервеният CO2 сензор не изисква никаква библиотека, тъй като четем стойностите на напрежението директно от аналоговия щифт на Arduino.
След като инсталирате библиотеките в Arduino IDE, стартирайте кода, като включите необходимите библиотечни файлове. Сензорът за прах не изисква никаква библиотека, тъй като четенето се извършва директно от аналоговия щифт на Arduino.
#include
След това дефинирайте OLED ширината и височината. В този проект използваме 128 × 64 SPI OLED дисплей. Можете да промените променливите 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 sensorIn = A0;
Сега във функцията setup () инициализирайте Serial Monitor със скорост на предаване 9600 за целите на отстраняване на грешки. Също така инициализирайте OLED дисплея с функцията begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); analogReference (ПО подразбиране);
Вътре във функцията loop () първо прочетете стойностите на сигнала на аналоговия щифт на Arduino, като извикате функцията analogRead () . След това преобразувайте тези аналогови стойности на сигнала в стойности на напрежението.
void loop () {int sensorValue = analogRead (sensorIn); плаващо напрежение = сензорValue * (5000 / 1024.0);
След това сравнете стойностите на напрежението. Ако напрежението е 0 V, това означава, че е възникнал проблем със сензора. Ако напрежението е по-голямо от 0 V, но по-малко от 400 V, това означава, че сензорът все още е в процес на предварително загряване.
if (напрежение == 0) {Serial.println ("Грешка"); } иначе ако (напрежение <400) {Serial.println ("предварително загряване"); }
Ако напрежението е равно или по-голямо от 400 V, преобразувайте го в стойности на концентрацията на CO2.
else {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 стойности. Когато за първи път захранвах сензора, изходната концентрация на CO2 беше 1500 PPM до 1700PPM и след 24-часов процес на загряване, изходната концентрация на CO2 намаля до 450 PPM до 500 PPM, които са правилните стойности на PPM Затова е необходимо да калибрирате сензора, преди да го използвате за измерване на концентрацията на CO2.
Ето как може да се използва инфрачервен CO2 сензор за измерване на точната концентрация на CO2 във въздуха. Пълният код и работещото видео са дадени по-долу. Ако имате някакви съмнения, оставете ги в раздела за коментари или използвайте нашите форуми за техническа помощ.