- Komponenter, der kræves
- Gravity Infrarød CO2-sensor
- 0,96 'OLED-skærmmodul
- Kredsløbsdiagram
- Arduino-kode til måling af CO2-koncentration
- Test af grænsefladen mellem tyngdekraftsinfrarød CO2-sensor
Den stigende koncentration af kuldioxid i luften er blevet et alvorligt problem nu. Ifølge NOAA-rapporten har ozon-CO2-koncentrationen nået 0,0385 procent (385 ppm), og det er den højeste mængde på 2,1 millioner år. Dette betyder, at der i en million luftpartikler er 385 partikler kuldioxid. Dette stigende niveau af CO2 har påvirket miljøet dårligt og ført os til at møde situationen som klimaændringer og global opvarmning. Der er mange luftkvalitetsmåleapparater installeret på veje for at fortælle CO2-niveauet, men vi kan også bygge et DIY CO2-måleapparat og kan installere det i vores område.
I denne vejledning skal vi interface Gravity Infrared CO2 Sensor med Arduino for at måle CO2-koncentrationen i PPM. Gravity Infrarød CO2-sensor er en høj præcision analog CO2-sensor. Det måler CO2-indholdet i området fra 0 til 5000 ppm. Du kan også kontrollere vores tidligere projekter, hvor vi brugte MQ135-gassensoren, Sharp GP2Y1014AU0F-sensoren og Nova PM-sensoren SDS011 til at opbygge en luftkvalitetsmonitor.
Komponenter, der kræves
- Arduino Nano
- Gravity Infrarød CO2-sensor V1.1
- Jumper Wires
- 0,96 'SPI OLED-skærmmodul
- Brødbræt
Gravity Infrarød CO2-sensor
Gravity Infrarød CO2-sensor V1.1 er den seneste højpræcisions analoge infrarøde CO2-sensor frigivet af DFRobot. Denne sensor er baseret på ikke-dispersiv infrarød (NDIR) teknologi og har god selektivitet og iltfri afhængighed. Det integrerer temperaturkompensation og understøtter DAC-output. Det effektive måleområde for denne sensor er fra 0 til 5000 ppm med en nøjagtighed på ± 50 ppm + 3%. Denne infrarøde CO2-sensor kan bruges til HVAC, overvågning af indendørs luftkvalitet, industriel proces og sikkerhedsbeskyttelse, landbrug og overvågning af produktion af husdyrproduktion.
Infrarød CO2 sensor pinout:
Som tidligere nævnt leveres infrarød CO2-sensor med et 3-polet stik. Nedenstående figur og tabel viser pin-tildelingen til den infrarøde CO2-sensor:
Pin nr. |
Pin-navn |
Beskrivelse |
---|---|---|
1 |
Signal |
Analog udgang (0,4 ~ 2V) |
2 |
VCC |
VCC (4,5 ~ 5,5V) |
3 |
GND |
GND |
Infrarød CO2-sensor Specifikationer og funktioner:
- Gasdetektion: Kuldioxid (CO2)
- Driftsspænding: 4,5 ~ 5,5V DC
- Forvarmningstid: 3 min
- Svartid: 120s
- Driftstemperatur: 0 ~ 50 ℃
- Driftsfugtighed: 0 ~ 95% relativ luftfugtighed (ingen kondens)
- Vandtæt og korrosionsbeskyttende
- Høj cyklus liv
- Anti-vanddamp interferens
0,96 'OLED-skærmmodul
OLED (Organic Light-Emitting Diodes) er en selvlysende teknologi, konstrueret ved at placere en række organiske tynde film mellem to ledere. Et stærkt lys produceres, når der tilføres en elektrisk strøm til disse film. OLED'er bruger den samme teknologi som fjernsyn, men har færre pixels end i de fleste af vores tv'er.
Til dette projekt bruger vi en monokrom 7-benet SSD1306 0,96 ”OLED-skærm. Det kan arbejde på tre forskellige kommunikationsprotokoller: SPI 3 Wire-tilstand, SPI-firetrådstilstand og I2C-tilstand. Stifterne og dens funktioner forklares i nedenstående tabel:
Vi har allerede dækket OLED og dens typer i detaljer i den foregående artikel.
Pin-navn |
Andre navne |
Beskrivelse |
Gnd |
Jord |
Jordstiften på modulet |
Vdd |
Vcc, 5V |
Power pin (3-5V tolerabel) |
SCK |
D0, SCL, CLK |
Fungerer som urstiften. Bruges til både I2C og SPI |
SDA |
D1, MOSI |
Modulets datapind. Bruges til både IIC og SPI |
RES |
RST, RESET |
Nulstiller modulet (nyttigt under SPI) |
DC |
A0 |
Data Command pin. Bruges til SPI-protokol |
CS |
Chip Select |
Nyttigt, når der bruges mere end et modul under SPI-protokol |
OLED Specifikationer:
- OLED Driver IC: SSD1306
- Opløsning: 128 x 64
- Visuel vinkel:> 160 °
- Indgangsspænding: 3,3V ~ 6V
- Pixelfarve: Blå
- Arbejdstemperatur: -30 ° C ~ 70 ° C
Lær mere om OLED og dets grænseflade til forskellige mikrocontrollere ved at følge linket.
Kredsløbsdiagram
Circuit Diagram for interfacing Gravity Analog Infrared CO2 Sensor for Arduino er angivet nedenfor:
Kredsløbet er meget simpelt, da vi kun forbinder Gravity Infrarød CO2-sensor og OLED-skærmmodul med Arduino Nano. Infrarød CO2-sensor og OLED-skærmmodul er begge forsynet med + 5V og GND. Signalstiften (Analog Out) på CO2-sensoren er tilsluttet A0-stiften i Arduino Nano. Da OLED Display-modulet bruger SPI-kommunikation, har vi etableret en SPI-kommunikation mellem OLED-modulet og Arduino Nano. Forbindelserne er vist i nedenstående tabel:
S. nr |
OLED-modulstift |
Arduino Pin |
1 |
GND |
Jord |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
Efter tilslutning af hardware i henhold til kredsløbsdiagrammet skal det se ud som nedenfor:
Arduino-kode til måling af CO2-koncentration
Den komplette kode til dette Gravity Analog Infrarød CO2-sensor til Arduino- projektet findes i slutningen af dokumentet. Her forklarer vi nogle vigtige dele af koden.
Koden bruger Adafruit_GFX , og Adafruit_SSD1306 biblioteker. Disse biblioteker kan downloades fra Library Manager i Arduino IDE og installere det derfra. For det skal du åbne Arduino IDE og gå til Skitse> Inkluder bibliotek> Administrer biblioteker . Søg nu efter Adafruit GFX og installer Adafruit GFX-biblioteket af Adafruit.
Installer ligeledes Adafruit SSD1306-bibliotekerne af Adafruit. Den infrarøde CO2-sensor kræver ikke noget bibliotek, da vi læser spændingsværdierne direkte fra den analoge pin fra Arduino.
Efter installation af bibliotekerne til Arduino IDE skal du starte koden ved at inkludere de nødvendige biblioteksfiler. Støvsensor kræver ikke noget bibliotek, da læsning er taget direkte fra den analoge pin fra Arduino.
#omfatte
Definer derefter OLED-bredde og højde. I dette projekt bruger vi en 128 × 64 SPI OLED-skærm. Du kan ændre variablerne SCREEN_WIDTH og SCREEN_HEIGHT i henhold til din skærm.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Definer derefter SPI-kommunikationsnålene, hvor OLED Display er tilsluttet.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Opret derefter en Adafruit-skærmforekomst med bredden og højden defineret tidligere med SPI-kommunikationsprotokollen.
Adafruit_SSD1306 skærm (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Derefter defineres Arduino-stiften, hvor CO2-sensoren er tilsluttet.
int sensorIn = A0;
Initialiser nu Serial Monitor med en baudhastighed på 9600 til fejlfindingsformål inden for setup () -funktionen. Initialiser også OLED-displayet med funktionen start () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); analogReference (DEFAULT);
Inde i loop () - funktionen skal du først læse signalværdierne ved den analoge pin i Arduino ved at ringe til analogRead () - funktionen. Derefter konverteres disse analoge signalværdier til spændingsværdier.
void loop () {int sensorValue = analogRead (sensorIn); flydespænding = sensorValue * (5000 / 1024.0);
Derefter skal du sammenligne spændingsværdierne. Hvis spændingen er 0 V, betyder det, at der er opstået et problem med sensoren. Hvis spændingen er større end 0 V, men mindre end 400 V, betyder det, at sensoren stadig er i forvarmningsprocessen.
if (voltage == 0) {Serial.println ("Fejl"); } ellers hvis (spænding <400) {Serial.println ("forvarmning"); }
Hvis spændingen er lig med eller større end 400 V, så konverter den til CO2-koncentrationsværdier.
ellers {int voltage_diference = voltage-400; flydekoncentration = spændingsdifferens * 50,0 / 16,0;
Derefter skal du indstille tekststørrelsen og tekstfarven ved hjælp af setTextSize () og setTextColor () .
display.setTextSize (1); display.setTextColor (HVID);
Derefter defineres positionen, hvor teksten starter ved hjælp af metoden setCursor (x, y), i den næste linje. Og udskriv CO2-værdierne på OLED-skærm ved hjælp af display.println () -funktionen.
display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (koncentration);
Og til sidst skal du ringe til display () -metoden for at få vist teksten på OLED Display.
display.display (); display.clearDisplay ();
Test af grænsefladen mellem tyngdekraftsinfrarød CO2-sensor
Når hardware og kode er klar, er det tid til at teste sensoren. Til det, tilslut Arduino til den bærbare computer, vælg Board og Port, og tryk på upload-knappen. Åbn derefter din serielle skærm og vent et stykke tid (forvarmningsproces), så ser du de endelige data.
Værdierne vises på OLED-display som vist nedenfor:
Bemærk: Før sensoren bruges, skal sensoren opvarmes i ca. 24 timer for at få de korrekte PPM-værdier. Da jeg tændte sensoren for første gang, var CO2-udgangskoncentrationen 1500 PPM til 1700PPM, og efter en 24 timers opvarmningsproces faldt CO2-udgangskoncentrationen til 450 PPM til 500 PPM, hvilket er de korrekte PPM-værdier. Så det er nødvendigt at kalibrere sensoren, før den bruges til at måle CO2-koncentrationen.
Sådan kan en infrarød CO2-sensor bruges til at måle den nøjagtige CO2-koncentration i luften. Den komplette kode og arbejdsvideo er angivet nedenfor. Hvis du er i tvivl, skal du lade dem være i kommentarsektionen eller bruge vores fora til teknisk hjælp.