- Componente necesare
- Senzor de CO2 cu infraroșu gravitațional
- Modul de afișaj OLED de 0,96 '
- Diagrama circuitului
- Cod Arduino pentru măsurarea concentrației de CO2
- Testarea interfaței senzorului de CO2 cu infrarosu gravitațional
Concentrația crescândă de dioxid de carbon în aer a devenit o problemă serioasă acum. Conform raportului NOAA, concentrația de ozon CO2 a atins 0,0385% (385 ppm) și este cea mai mare cantitate din 2,1 milioane de ani. Aceasta înseamnă că într-un milion de particule de aer există 385 de particule de dioxid de carbon. Acest nivel crescut de CO2 a afectat grav mediul și ne-a determinat să ne confruntăm cu situația precum schimbările climatice și încălzirea globală. Există multe dispozitive de măsurare a calității aerului instalate pe drumuri pentru a indica nivelul de CO2, dar putem construi și un dispozitiv DIY de măsurare a CO2 și îl putem instala în zona noastră.
În acest tutorial, vom interfața senzorul de gravitate cu infraroșu CO2 cu Arduino pentru a măsura concentrația de CO2 în PPM. Gravity Infrared CO2 Sensor este un senzor analogic de înaltă precizie CO2. Măsoară conținutul de CO2 în intervalul de la 0 la 5000 ppm. De asemenea, puteți verifica proiectele noastre anterioare în care am folosit senzorul de gaz MQ135, senzorul Sharp GP2Y1014AU0F și senzorul Nova PM SDS011 pentru a construi un monitor al calității aerului.
Componente necesare
- Arduino Nano
- Senzor de gravitate cu infraroșu CO2 V1.1
- Sârme jumper
- Modul de afișaj SPI OLED de 0,96 '
- Breadboard
Senzor de CO2 cu infraroșu gravitațional
Senzorul de gravitate cu infraroșu CO2 V1.1 este cel mai recent senzor analogic de înaltă precizie cu emisii de CO2 lansat de DFRobot. Acest senzor se bazează pe tehnologia cu infraroșu non-dispersiv (NDIR) și are o selectivitate bună și o dependență fără oxigen. Integra compensarea temperaturii și acceptă ieșirea DAC. Gama efectivă de măsurare a acestui senzor este de la 0 la 5000ppm cu o precizie de ± 50ppm + 3%. Acest senzor de infraroșu CO2 poate fi utilizat în HVAC, monitorizarea calității aerului interior, procesele industriale și monitorizarea protecției securității, agricultura și monitorizarea procesului de producție a zootehniei.
Senzor de infraroșu CO2 Pinout:
Așa cum am menționat mai devreme, senzorul de infraroșu CO2 vine cu un conector cu 3 pini. Figura și tabelul de mai jos prezintă atribuirea pinilor pentru senzorul de infraroșu CO2:
Pin nr. |
Nume PIN |
Descriere |
---|---|---|
1 |
Semnal |
Iesire analogica (0,4 ~ 2V) |
2 |
VCC |
VCC (4,5 ~ 5,5 V) |
3 |
GND |
GND |
Specificații și caracteristici ale senzorului cu infraroșu CO2 :
- Detectarea gazelor: dioxid de carbon (CO2)
- Tensiune de operare: 4.5 ~ 5.5V DC
- Timp de preîncălzire: 3min
- Timp de răspuns: 120s
- Temperatura de funcționare: 0 ~ 50 ℃
- Umiditate de funcționare: 0 ~ 95% RH (fără condens)
- Impermeabil și anticoroziv
- Durată de viață ridicată
- Interferență anti-vapori de apă
Modul de afișaj OLED de 0,96 '
OLED (Organic Light-Emitting Diodes) este o tehnologie auto-emitentă de lumină, construită prin plasarea unei serii de filme organice subțiri între doi conductori. O lumină puternică este produsă atunci când se aplică un curent electric acestor filme. OLED-urile folosesc aceeași tehnologie ca și televizoarele, dar au mai puțini pixeli decât în majoritatea televizoarelor noastre.
Pentru acest proiect, folosim un ecran OLED monocrom cu 7 pini SSD1306 0,96 ”. Poate funcționa pe trei protocoale de comunicații diferite: modul SPI 3 Wire, modul SPI cu patru fire și modul I2C. Pinii și funcțiile sale sunt explicate în tabelul de mai jos:
Am tratat deja OLED și tipurile sale în detaliu în articolul anterior.
Nume PIN |
Alte nume |
Descriere |
Gnd |
Sol |
Pinul de masă al modulului |
Vdd |
Vcc, 5V |
Pin de alimentare (3-5V tolerabil) |
SCK |
D0, SCL, CLK |
Acționează ca știftul ceasului. Folosit atât pentru I2C, cât și pentru SPI |
SDA |
D1, MOSI |
Pinul de date al modulului. Folosit atât pentru IIC, cât și pentru SPI |
RES |
RST, RESET |
Resetează modulul (util în timpul SPI) |
DC |
A0 |
Pinul de comandă a datelor. Folosit pentru protocolul SPI |
CS |
Chip Select |
Util când sunt utilizate mai multe module în cadrul protocolului SPI |
Specificații OLED:
- IC driver OLED: SSD1306
- Rezoluție: 128 x 64
- Unghi vizual:> 160 °
- Tensiunea de intrare: 3.3V ~ 6V
- Culoare pixel: albastru
- Temperatura de lucru: -30 ° C ~ 70 ° C
Aflați mai multe despre OLED și interfața acestuia cu diferite microcontrolere, urmând linkul.
Diagrama circuitului
Diagrama circuitului pentru interfața senzorului de gravitate analogic cu infraroșu CO2 pentru Arduino este prezentată mai jos:
Circuitul este foarte simplu, deoarece conectăm doar senzorul de gravitate cu infraroșu CO2 și modulul de afișare OLED cu Arduino Nano. Senzorul de infraroșu CO2 și modulul de afișare OLED sunt alimentate cu + 5V și GND. Pinul de semnal (ieșire analogică) al senzorului de CO2 este conectat la pinul A0 al Arduino Nano. Deoarece modulul OLED Display utilizează comunicarea SPI, am stabilit o comunicare SPI între modulul OLED și Arduino Nano. Conexiunile sunt prezentate în tabelul de mai jos:
S. Nu |
Pin modul OLED |
Pinul Arduino |
1 |
GND |
Sol |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
După conectarea hardware-ului conform schemei de circuite, ar trebui să arate ca mai jos:
Cod Arduino pentru măsurarea concentrației de CO2
Codul complet pentru acest proiect Gravity Analog Infrared CO2 Sensor pentru proiectul Arduino este dat la sfârșitul documentului. Aici explicăm câteva părți importante ale codului.
Codul folosește Adafruit_GFX , și Adafruit_SSD1306 biblioteci. Aceste biblioteci pot fi descărcate din Managerul de biblioteci din Arduino IDE și le pot instala de acolo. Pentru aceasta, deschideți IDE-ul Arduino și accesați Sketch> Include Library> Manage Libraries . Acum căutați Adafruit GFX și instalați biblioteca Adafruit GFX de la Adafruit.
În mod similar, instalați bibliotecile Adafruit SSD1306 de la Adafruit. Senzorul de infraroșu CO2 nu necesită nicio bibliotecă, deoarece citim valorile tensiunii direct de la pinul analogic al Arduino.
După instalarea bibliotecilor pe Arduino IDE, porniți codul incluzând fișierele bibliotecii necesare. Senzorul de praf nu necesită nicio bibliotecă, deoarece citirea este preluată direct de la pinul analogic al Arduino.
#include
Apoi, definiți lățimea și înălțimea OLED. În acest proiect, folosim un ecran OLED 128 × 64 SPI. Puteți schimba SCREEN_WIDTH și SCREEN_HEIGHT variabile în funcție de ecran.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Apoi definiți pinii de comunicație SPI unde este conectat ecranul OLED.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Apoi, creați o instanță de afișare Adafruit cu lățimea și înălțimea definite anterior cu protocolul de comunicație SPI.
Afișaj Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
După aceea, definiți pinul Arduino unde este conectat senzorul de CO2.
int sensorIn = A0;
Acum, în interiorul funcției setup () , inițializați Serial Monitor la o rată de transmisie de 9600 în scopuri de depanare. De asemenea, inițializați afișajul OLED cu funcția begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); analogReference (DEFAULT);
În interiorul funcției loop () , citiți mai întâi valorile semnalului la pinul analogic al Arduino apelând funcția analogRead () . După aceea, convertiți aceste valori ale semnalului analogic în valori de tensiune.
bucla void () {int sensorValue = analogRead (sensorIn); tensiune de plutire = sensorValue * (5000 / 1024.0);
După aceea, comparați valorile tensiunii. Dacă tensiunea este 0 V, înseamnă că a apărut o problemă cu senzorul. Dacă tensiunea este mai mare de 0 V, dar mai mică de 400 V, atunci înseamnă că senzorul este încă în procesul de preîncălzire.
if (tensiune == 0) {Serial.println ("Defecțiune"); } else if (tensiune <400) {Serial.println ("preîncălzire"); }
Dacă tensiunea este egală sau mai mare de 400 V, convertiți-o în valori ale concentrației de CO2.
else {int tensiune_diferență = tensiune-400; concentrația plutitorului = tensiune_diferență * 50,0 / 16,0;
După aceea, setați dimensiunea și culoarea textului folosind setTextSize () și setTextColor () .
display.setTextSize (1); display.setTextColor (ALB);
Apoi, în linia următoare, definiți poziția în care începe textul folosind metoda setCursor (x, y) . Și tipăriți valorile CO2 pe afișajul OLED utilizând funcția display.println () .
display.println („CO2”); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (concentrare);
Și în ultimul rând, apelați metoda display () pentru a afișa textul pe ecranul OLED.
display.display (); display.clearDisplay ();
Testarea interfaței senzorului de CO2 cu infrarosu gravitațional
Odată ce hardware-ul și codul sunt gata, este timpul să testați senzorul. Pentru aceasta, conectați Arduino la laptop, selectați placa și portul și apăsați butonul de încărcare. Apoi deschideți monitorul serial și așteptați ceva timp (procesul de preîncălzire), apoi veți vedea datele finale.
Valorile vor fi afișate pe afișajul OLED așa cum se arată mai jos:
Notă: Înainte de a utiliza senzorul, lăsați senzorul să se încălzească timp de aproximativ 24 de ore pentru a obține valori PPM corecte. Când am alimentat senzorul pentru prima dată, concentrația de CO2 de ieșire a fost de 1500 PPM la 1700PPM și după un proces de încălzire de 24 de ore, concentrația de CO2 de ieșire a scăzut la 450 PPM la 500 PPM, care sunt valorile PPM corecte. Deci, este necesar să calibrați senzorul înainte de al utiliza pentru a măsura concentrația de CO2.
Acesta este modul în care un senzor de infraroșu CO2 poate fi utilizat pentru a măsura concentrația exactă de CO2 în aer. Codul complet și videoclipul de lucru sunt prezentate mai jos. Dacă aveți nelămuriri, lăsați-le în secțiunea de comentarii sau folosiți forumurile noastre pentru ajutor tehnic.