- Components necessaris
- Sensor de CO2 infrarrojos per gravetat
- Mòdul de pantalla OLED de 0,96 '
- Esquema de connexions
- Codi Arduino per mesurar la concentració de CO2
- Prova de la interfície del sensor de CO2 infrarojos per gravetat
L’augment de la concentració de diòxid de carboni a l’aire s’ha convertit en un greu problema ara. Segons l'informe NOAA, la concentració d'ozó CO2 ha arribat al 0,0385 per cent (385 ppm) i és la quantitat més alta en 2,1 milions d'anys. Això significa que en un milió de partícules d’aire hi ha 385 partícules de diòxid de carboni. Aquest augment del nivell de CO2 ha afectat greument el medi ambient i ens ha portat a afrontar la situació com el canvi climàtic i l’escalfament global. Hi ha molts dispositius de mesura de la qualitat de l’aire instal·lats a les carreteres per indicar el nivell de CO2, però també podem construir un dispositiu de mesura de CO2 de bricolatge i instal·lar-lo a la nostra zona.
En aquest tutorial, farem una interfície entre el sensor de CO2 infrarrojos de gravetat i Arduino per mesurar la concentració de CO2 en PPM. El sensor de CO2 per infrarrojos per gravetat és un sensor analògic de CO2 d’alta precisió. Mesura el contingut de CO2 entre 0 i 5000 ppm. També podeu consultar els nostres projectes anteriors en què vam utilitzar el sensor de gas MQ135, el sensor Sharp GP2Y1014AU0F i el sensor Nova PM SDS011 per construir un monitor de qualitat de l’aire.
Components necessaris
- Arduino Nano
- Sensor de CO2 infraroig per gravetat V1.1
- Jumper Wires
- Mòdul de pantalla OLED de 0,96 '
- Taula de pa
Sensor de CO2 infrarrojos per gravetat
El sensor de CO2 infraroig per gravetat V1.1 és l’últim sensor analògic d’infrarojos de CO2 d’alta precisió publicat per DFRobot. Aquest sensor es basa en la tecnologia d’infrarojos no dispersius (NDIR) i té una bona selectivitat i una dependència lliure d’oxigen. Integra la compensació de temperatura i admet la sortida DAC. El rang de mesura efectiu d’aquest sensor és de 0 a 5000 ppm amb una precisió de ± 50 ppm + 3%. Aquest sensor de CO2 per infrarojos es pot utilitzar en climatització, control de qualitat de l’aire interior, processos industrials i protecció de seguretat, agricultura i control de processos de producció de ramaderia.
Sensor d'infrarojos de CO2 :
Com es va esmentar anteriorment, el sensor de CO2 per infrarojos inclou un connector de 3 pins. A la figura i la taula següents es mostren les assignacions de pins per al sensor de CO2 infrarojos:

|
Pin núm. |
Nom del pin |
Descripció |
|---|---|---|
|
1 |
Senyal |
Sortida analògica (0,4 ~ 2V) |
|
2 |
VCC |
VCC (4,5 ~ 5,5 V) |
|
3 |
GND |
GND |
Especificacions i característiques del sensor de CO2 infrarojos :
- Detecció de gasos: diòxid de carboni (CO2)
- Voltatge de funcionament: 4.5 ~ 5.5V DC
- Temps de preescalfament: 3 min
- Temps de resposta: 120 s
- Temperatura de funcionament: 0 ~ 50 ℃
- Humitat de funcionament: 0 ~ 95% HR (sense condensació)
- Impermeable i anticorrosió
- Cicle de vida alt
- Interferència contra el vapor d’aigua
Mòdul de pantalla OLED de 0,96 '
OLED (Organic Light-Emitting Diodes) és una tecnologia autoemissora, construïda col·locant una sèrie de pel·lícules primes orgàniques entre dos conductors. Es produeix una llum brillant quan s’aplica un corrent elèctric a aquestes pel·lícules. Els OLED utilitzen la mateixa tecnologia que els televisors, però tenen menys píxels que a la majoria dels nostres televisors.

Per a aquest projecte, fem servir una pantalla OLED SSD1306 de 0,96 polzades monocroma de 7 pins. Pot funcionar en tres protocols de comunicacions diferents: mode SPI 3 Wire, mode SPI de quatre fils i mode I2C. Els pins i les seves funcions s’expliquen a la taula següent:
Ja hem tractat detalladament l’OLED i els seus tipus a l’article anterior.
|
Nom del pin |
Altres noms |
Descripció |
|
Gnd |
Terra |
Pas de terra del mòdul |
|
Vdd |
Vcc, 5V |
Pin d'alimentació (tolerable de 3-5 V) |
|
SCK |
D0, SCL, CLK |
Actua com el passador del rellotge. S’utilitza tant per a I2C com per a SPI |
|
SDA |
D1, MOSI |
Pin de dades del mòdul. S’utilitza tant per a IIC com per a SPI |
|
RES |
RST, RESET |
Restableix el mòdul (útil durant SPI) |
|
DC |
A0 |
Pin de comandament de dades. S'utilitza per al protocol SPI |
|
CS |
Selecció de xip |
Útil quan s'utilitza més d'un mòdul sota el protocol SPI |
Especificacions OLED:
- IC del controlador OLED: SSD1306
- Resolució: 128 x 64
- Angle visual:> 160 °
- Voltatge d'entrada: 3.3V ~ 6V
- Color de píxels: blau
- Temperatura de treball: -30 ° C ~ 70 ° C
Seguiu l’enllaç per obtenir més informació sobre OLED i la seva interfície amb diferents microcontroladors.
Esquema de connexions
A continuació es mostra el diagrama de circuits per a la interfície del sensor de CO2 infraroig analògic de gravetat.

El circuit és molt senzill, ja que només connectem el sensor de CO2 infraroig de gravetat i el mòdul de pantalla OLED amb Arduino Nano. El sensor infraroig de CO2 i el mòdul de pantalla OLED funcionen amb + 5V i GND. El pin de senyal (sortida analògica) del sensor de CO2 està connectat al pin A0 d’Arduino Nano. Com que el mòdul OLED Display utilitza la comunicació SPI, hem establert una comunicació SPI entre el mòdul OLED i Arduino Nano. Les connexions es mostren a la taula següent:
|
S.No |
Pin del mòdul OLED |
Pin Arduino |
|
1 |
GND |
Terra |
|
2 |
VCC |
5V |
|
3 |
D0 |
10 |
|
4 |
D1 |
9 |
|
5 |
RES |
13 |
|
6 |
DC |
11 |
|
7 |
CS |
12 |
Després de connectar el maquinari segons el diagrama del circuit, hauria de tenir el següent aspecte:

Codi Arduino per mesurar la concentració de CO2
Al final del document es dóna el codi complet d’aquest projecte de sensor de CO2 infraroig analògic per gravetat. Aquí expliquem algunes parts importants del codi.
El codi utilitza el Adafruit_GFX , i Adafruit_SSD1306 biblioteques. Aquestes biblioteques es poden descarregar des del gestor de biblioteques a l'IDE Arduino i instal·lar-les des d'allà. Per a això, obriu l'IDE d'Arduino i aneu a Sketch> Inclou biblioteca> Gestiona biblioteques . Ara cerqueu Adafruit GFX i instal·leu la biblioteca Adafruit GFX d’Adafruit.

De la mateixa manera, instal·leu les biblioteques Adafruit SSD1306 d'Adafruit. El sensor de CO2 infraroig no requereix cap biblioteca, ja que estem llegint els valors de tensió directament des del pin analògic d’Arduino.
Després d’instal·lar les biblioteques a Arduino IDE, inicieu el codi incloent els fitxers de biblioteca necessaris. El sensor de pols no requereix cap biblioteca, ja que la lectura es pren directament del pin analògic d'Arduino.
#incloure
A continuació, definiu l'amplada i l'alçada OLED. En aquest projecte, utilitzem una pantalla OLED de 128 × 64 SPI. Es pot canviar el SCREEN_WIDTH i SCREEN_HEIGHT variables d'acord a la seva pantalla.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
A continuació, definiu els pins de comunicació SPI on està connectada la pantalla OLED.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
A continuació, creeu una instància de visualització d'Adafruit amb l'amplada i l'alçada definides anteriorment amb el protocol de comunicació SPI.
Pantalla Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Després, definiu el pin Arduino on estigui connectat el sensor de CO2.
int sensorIn = A0;
Ara dins de la funció setup () , inicialitzeu el monitor sèrie a una velocitat de transmissió de 9600 per a la depuració. A més, inicialitzeu la pantalla OLED amb la funció begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); analogReference (DEFAULT);
Dins de la funció loop () , primer llegiu els valors del senyal al pin analògic d’Arduino trucant a la funció analogRead () . Després, converteix aquests valors de senyal analògic en valors de tensió.
bucle buit () {int sensorValue = analogRead (sensorIn); tensió flotant = sensorValue * (5000 / 1024.0);
Després, compareu els valors de tensió. Si la tensió és de 0 V, vol dir que s’ha produït algun problema amb el sensor. Si la tensió és superior a 0 V però inferior a 400 V, significa que el sensor encara està en procés de preescalfament.
if (voltatge == 0) {Serial.println ("Falla"); } else if (tensió <400) {Serial.println ("preescalfament"); }
Si el voltatge és igual o superior a 400 V, convertiu-lo en valors de concentració de CO2.
else {int tensió_diferència = voltatge-400; concentració de flotador = diferència_tensió * 50,0 / 16,0;
Després, configureu la mida del text i el color del text amb setTextSize () i setTextColor () .
display.setTextSize (1); display.setTextColor (BLANC);
A continuació, a la línia següent, definiu la posició on comença el text mitjançant el mètode setCursor (x, y) . I imprimiu els valors de CO2 a la pantalla OLED mitjançant la funció display.println () .
display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (concentració);
I, a la darrera, truqueu al mètode display () per mostrar el text a la pantalla OLED.
display.display (); display.clearDisplay ();
Prova de la interfície del sensor de CO2 infrarojos per gravetat
Un cop el maquinari i el codi estiguin preparats, és hora de provar el sensor. Per a això, connecteu l'Arduino a l'ordinador portàtil, seleccioneu la placa i el port i premeu el botó de càrrega. A continuació, obriu el monitor sèrie i espereu un temps (procés de precalentament) i, a continuació, veureu les dades finals.

Els valors es mostraran a la pantalla OLED com es mostra a continuació:

Nota: Abans d’utilitzar el sensor, deixeu-lo escalfar durant aproximadament 24 hores per obtenir els valors PPM correctes. Quan vaig alimentar el sensor per primera vegada, la concentració de CO2 de sortida era de 1500 PPM a 1700PPM i, després d’un procés d’escalfament de 24 hores, la concentració de CO2 de sortida va disminuir a 450 PPM a 500 PPM, que són els valors PPM correctes. Per tant, cal calibrar el sensor abans d’utilitzar-lo per mesurar la concentració de CO2.
Així es pot utilitzar un sensor de CO2 per infrarojos per mesurar la concentració exacta de CO2 a l’aire. A continuació es dóna el codi complet i el vídeo de treball. Si teniu dubtes, deixeu-los a la secció de comentaris o utilitzeu els nostres fòrums per obtenir ajuda tècnica.
