- Необходими компоненти
- 0.96 'OLED дисплеен модул
- Подготовка на сензора MQ-135
- Схема на интерфейс MQ135 с Arduino
- Изчисляване на R
- Код за измерване на CO2 с помощта на сензор Arduino MQ135
- Тестване на взаимодействието на сензор MQ-135
Нивото на атмосферния CO2 на Земята се увеличава от ден на ден. Средният световен атмосферен въглероден диоксид през 2019 г. е 409,8 части на милион, а през октомври 2020 г. е 411,29. Въглеродният диоксид е ключов парников газ и е отговорен за около три четвърти от емисиите. Така че мониторингът на нивото на CO2 също започна да придобива значение.
В предишния ни проект използвахме Gravity Infrared CO2 сензор за измерване на концентрацията на CO2 във въздуха. В този проект ще използваме сензор MQ-135 с Arduino за измерване на концентрацията на CO2. Измерените стойности на концентрацията на CO2 ще бъдат показани на OLED модула и последно ще сравним показанията на сензора Arduino MQ-135 с показанията на инфрачервения CO2 сензор. Освен CO2, ние също сме измерили концентрацията на пропан-бутан, дим и амоняк, използвайки Arduino.
Необходими компоненти
- Arduino Nano
- MQ-135 сензор
- Джъмперни проводници
- 0.96 'SPI OLED дисплеен модул
- Макет
- 22KΩ резистор
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
Подготовка на сензора MQ-135
MQ-135 Gas Sensor е сензор за качество на въздуха за откриване на широк спектър от газове, включително NH3, NOx, алкохол, бензен, дим и CO2. Сензорът MQ-135 може да бъде закупен като модул или просто като сензор сам. В този проект използваме сензорен модул MQ-135 за измерване на концентрацията на CO2 в PPM. Схемата на платката MQ-135 е дадена по-долу:
Резисторът на натоварване RL играе много важна роля за работа на сензора. Този резистор променя стойността на съпротивлението си в зависимост от концентрацията на газ. Според таблицата с данни MQ-135 стойността на резистора на натоварване може да варира от 10KΩ до 47KΩ. Листът с данни препоръчва да калибрирате детектора за концентрация на NH3 на 100ppm или 50ppm алкохол във въздуха и да използвате стойност на съпротивлението на натоварване (RL) от около 20 KΩ. Но ако проследите следите от вашата печатна платка, за да намерите стойността на вашия RL в платката, можете да видите 1KΩ (102) резистор за натоварване.
Така че, за да измерите подходящите стойности на концентрацията на CO2, трябва да замените резистора 1KΩ с резистор 22KΩ.
Схема на интерфейс MQ135 с Arduino
Пълните схеми за свързване на сензор за газ MQ-135 с Arduino са дадени по-долу:
Веригата е много проста, тъй като свързваме само сензора MQ-135 и модула OLED дисплей с Arduino Nano. Газовият сензор MQ-135 и модулът OLED дисплей се захранват с + 5V и GND. Пинът за аналогов изход на сензора MQ-135 е свързан към щифта 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 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 о ценности, Отидете на документи> Arduino> библиотеки> MQ135-майстор папка и отворете MQ135.h файл и да променят стойностите на RLOAD & RZERO.
/// Устойчивостта на натоварване на платката #define RLOAD 22.0 /// Устойчивост на калибриране при атмосферно ниво на CO2 #define RZERO 5804.99
Сега превъртете надолу и заменете стойността на ATMOCO2 с текущата атмосферна CO2, която е 411,29
/// Атмосферно ниво на CO2 за калибриране #define ATMOCO2 397.13
Код за измерване на CO2 с помощта на сензор Arduino MQ135
Пълният код за свързване на сензор MQ-135 с Arduino е даден в края на документа. Тук обясняваме някои важни части от кода на MQ135 Arduino.
Кодът използва Adafruit_GFX , и Adafruit_SSD1306 , и MQ135.h библиотеки. Тези библиотеки могат да се изтеглят от Мениджъра на библиотеки в IDE на Arduino и да се инсталират от там. За това отворете IDE на Arduino и отидете на Скица <Включване на библиотека <Управление на библиотеки . Сега потърсете Adafruit GFX и инсталирайте библиотеката Adafruit GFX от Adafruit.
По същия начин инсталирайте библиотеките на Adafruit SSD1306 от Adafruit. Библиотеката MQ135 може да бъде изтеглена от тук.
След като инсталирате библиотеките в Arduino IDE, стартирайте кода, като включите необходимите библиотечни файлове.
#include "MQ135.h" #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, където е свързан сензорът MQ-135.
int sensorIn = A0;
Сега във функцията setup () инициализирайте Serial Monitor със скорост на предаване 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 може да се използва за измерване на точен CO2 във въздуха. Пълният MQ135 сензор за качество на въздуха Arduino Code и работещото видео са дадени по-долу. Ако имате някакви съмнения, оставете ги в раздела за коментари.