- Componenten vereist
- Zwaartekracht infrarood CO2-sensor
- 0.96 'OLED-weergavemodule
- Schakelschema
- Arduino-code om de CO2-concentratie te meten
- Testen van de interface van de zwaartekracht infrarood CO2-sensor
De toenemende concentratie kooldioxide in de lucht is nu een serieus probleem geworden. Volgens het NOAA-rapport heeft de ozon-CO2-concentratie 0,0385 procent (385 ppm) bereikt en is dit het hoogste aantal in 2,1 miljoen jaar. Dit betekent dat er in een miljoen luchtdeeltjes 385 deeltjes kooldioxide zitten. Dit stijgende CO2-niveau heeft het milieu ernstig aangetast en heeft ons ertoe gebracht om het hoofd te bieden aan de klimaatverandering en de opwarming van de aarde. Op wegen zijn veel meetapparatuur voor luchtkwaliteit geïnstalleerd om het CO2-niveau te bepalen, maar we kunnen ook een doe-het-zelf CO2-meetapparaat bouwen en in onze omgeving installeren.
In deze tutorial gaan we de Gravity Infrared CO2-sensor koppelen aan Arduino om de CO2-concentratie in PPM te meten. Gravity Infrarood CO2-sensor is een zeer nauwkeurige analoge CO2-sensor. Het meet het CO2-gehalte in het bereik van 0 tot 5000 ppm. Je kunt ook onze eerdere projecten bekijken waarbij we de MQ135-gassensor, Sharp GP2Y1014AU0F-sensor en Nova PM-sensor SDS011 hebben gebruikt om een luchtkwaliteitsmonitor te bouwen.
Componenten vereist
- Arduino Nano
- Zwaartekracht infrarood CO2-sensor V1.1
- Doorverbindingsdraden
- 0.96 'SPI OLED-weergavemodule
- Breadboard
Zwaartekracht infrarood CO2-sensor
Gravity Infrarood CO2-sensor V1.1 is de nieuwste zeer nauwkeurige analoge infrarood CO2-sensor die is uitgebracht door DFRobot. Deze sensor is gebaseerd op non-dispersive infrarood (NDIR) technologie en heeft een goede selectiviteit en zuurstofvrije afhankelijkheid. Het integreert temperatuurcompensatie en ondersteunt DAC-output. Het effectieve meetbereik van deze sensor is van 0 tot 5000ppm met een nauwkeurigheid van ± 50ppm + 3%. Deze infrarood CO2-sensor kan worden gebruikt in HVAC, bewaking van de binnenluchtkwaliteit, bewaking van industriële processen en veiligheidsbescherming, bewaking van landbouw- en veeteeltproductieprocessen.
Infrarood CO2-sensor Pinout:
Zoals eerder vermeld, wordt de infrarood CO2-sensor geleverd met een 3-pins connector. De onderstaande afbeelding en tabel tonen de pintoewijzingen voor de infrarood CO2-sensor:
Pin nr. |
Pin Naam |
Omschrijving |
---|---|---|
1 |
Signaal |
Analoge uitgang (0,4 ~ 2V) |
2 |
VCC |
VCC (4,5 ~ 5,5 V) |
3 |
GND |
GND |
Specificaties en kenmerken van infrarood CO2-sensor :
- Gasdetectie: kooldioxide (CO2)
- Bedrijfsspanning: 4,5 ~ 5,5 V DC
- Voorverwarmingstijd: 3min
- Reactietijd: 120s
- Bedrijfstemperatuur: 0 ~ 50 ℃
- Luchtvochtigheid: 0 ~ 95% RH (geen condensatie)
- Waterdicht en anticorrosief
- Hoge levensduur
- Anti-waterdampinterferentie
0.96 'OLED-weergavemodule
OLED (Organic Light-Emitting Diodes) is een self light-emitting technologie, geconstrueerd door een reeks organische dunne films tussen twee geleiders te plaatsen. Een helder licht wordt geproduceerd wanneer een elektrische stroom op deze films wordt toegepast. OLED's gebruiken dezelfde technologie als televisies, maar hebben minder pixels dan bij de meeste van onze tv's.
Voor dit project gebruiken we een monochroom 7-pins SSD1306 0,96 ”OLED-scherm. Het kan werken op drie verschillende communicatieprotocollen: SPI 3-draadsmodus, SPI-vierdraadsmodus en I2C-modus. De pinnen en zijn functies worden uitgelegd in de onderstaande tabel:
We hebben OLED en zijn typen al in detail besproken in het vorige artikel.
Pin Naam |
Andere namen |
Omschrijving |
GND |
Grond |
Aardingspin van de module |
Vdd |
Vcc, 5V |
Power pin (3-5V aanvaardbaar) |
SCK |
D0, SCL, CLK |
Fungeert als de klokpen. Wordt gebruikt voor zowel I2C als SPI |
SDA |
D1, MOSI |
Datapin van de module. Wordt gebruikt voor zowel IIC als SPI |
RES |
RST, RESET |
Reset de module (handig tijdens SPI) |
DC |
A0 |
Data Command-pin. Gebruikt voor SPI-protocol |
CS |
Chip selecteren |
Handig als er meer dan één module wordt gebruikt onder het SPI-protocol |
OLED-specificaties:
- OLED-stuurprogramma IC: SSD1306
- Resolutie: 128 x 64
- Visuele hoek:> 160 °
- Ingangsspanning: 3.3V ~ 6V
- Pixelkleur: blauw
- Werktemperatuur: -30 ° C ~ 70 ° C
Lees meer over OLED en de koppeling met verschillende microcontrollers door de link te volgen.
Schakelschema
Het schakelschema voor het koppelen van zwaartekracht analoge infrarood CO2-sensor voor Arduino wordt hieronder gegeven:
Het circuit is heel eenvoudig omdat we alleen Gravity Infrared CO2-sensor en OLED-displaymodule verbinden met Arduino Nano. Infrarood CO2-sensor en OLED-displaymodule worden beide gevoed met + 5V en GND. De Signal (Analog Out) pin van de CO2 sensor is verbonden met de A0 pin van Arduino Nano. Omdat de OLED-displaymodule SPI-communicatie gebruikt, hebben we een SPI-communicatie tot stand gebracht tussen de OLED-module en Arduino Nano. De aansluitingen zijn weergegeven in de onderstaande tabel:
S.No |
OLED-modulepen |
Arduino-pin |
1 |
GND |
Grond |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
Nadat de hardware volgens het schakelschema is aangesloten, zou het er ongeveer zo uit moeten zien:
Arduino-code om de CO2-concentratie te meten
De volledige code voor dit gravity analoge infrarood CO2-sensor voor Arduino- project wordt aan het einde van het document gegeven. Hier leggen we enkele belangrijke delen van de code uit.
De code maakt gebruik van de Adafruit_GFX , en Adafruit_SSD1306 bibliotheken. Deze bibliotheken kunnen worden gedownload vanuit de Library Manager in de Arduino IDE en vanaf daar installeren. Open daarvoor de Arduino IDE en ga naar Sketch> Bibliotheek opnemen> Bibliotheken beheren . Zoek nu naar Adafruit GFX en installeer de Adafruit GFX-bibliotheek van Adafruit.
Installeer op dezelfde manier de Adafruit SSD1306-bibliotheken van Adafruit. De infrarood CO2-sensor heeft geen bibliotheek nodig, omdat we de spanningswaarden rechtstreeks van de analoge pin van Arduino lezen.
Nadat u de bibliotheken op Arduino IDE hebt geïnstalleerd, start u de code door de benodigde bibliotheekbestanden op te nemen. De stofsensor heeft geen bibliotheek nodig, aangezien het lezen rechtstreeks vanaf de analoge pin van Arduino wordt gedaan.
# omvatten
Definieer vervolgens de OLED-breedte en hoogte. In dit project gebruiken we een 128 × 64 SPI OLED-scherm. U kunt de variabelen SCREEN_WIDTH en SCREEN_HEIGHT aanpassen aan uw weergave.
# definiëren SCREEN_WIDTH 128 # definiëren SCREEN_HEIGHT 64
Definieer vervolgens de SPI-communicatiepinnen waarop het OLED-scherm is aangesloten.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Maak vervolgens een Adafruit-weergave-instantie met de breedte en hoogte die eerder zijn gedefinieerd met het SPI-communicatieprotocol.
Adafruit_SSD1306-scherm (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Definieer daarna de Arduino-pin waarop de CO2-sensor is aangesloten.
int sensorIn = A0;
Initialiseer nu in de functie setup () de seriële monitor met een baudrate van 9600 voor foutopsporingsdoeleinden. Initialiseer ook het OLED-scherm met de functie begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); analogReference (DEFAULT);
Lees binnen de functie loop () eerst de signaalwaarden op de analoge pin van Arduino door de functie analogRead () aan te roepen. Converteer daarna deze analoge signaalwaarden naar spanningswaarden.
void loop () {int sensorValue = analogRead (sensorIn); zwevende spanning = sensorValue * (5000 / 1024.0);
Vergelijk daarna de spanningswaarden. Als de spanning 0 V is, betekent dit dat er een probleem is opgetreden met de sensor. Als de spanning groter is dan 0 V maar kleiner dan 400 V, betekent dit dat de sensor nog in het voorverwarmingsproces zit.
if (voltage == 0) {Serial.println ("Fault"); } else if (voltage <400) {Serial.println ("voorverwarmen"); }
Als de spanning gelijk is aan of groter is dan 400 V, converteer deze dan naar CO2-concentratiewaarden.
anders {int voltage_diference = voltage-400; float concentratie = voltage_diference * 50.0 / 16.0;
Stel daarna de tekstgrootte en tekstkleur in met behulp van setTextSize () en setTextColor () .
display.setTextSize (1); display.setTextColor (WIT);
Definieer vervolgens in de volgende regel de positie waar de tekst begint met de methode setCursor (x, y) . En print de CO2-waarden op het OLED-scherm met behulp van de functie display.println () .
display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (concentratie);
En als laatste roept u de methode display () aan om de tekst op het OLED-scherm weer te geven.
display.display (); display.clearDisplay ();
Testen van de interface van de zwaartekracht infrarood CO2-sensor
Zodra de hardware en code klaar zijn, is het tijd om de sensor te testen. Sluit daarvoor de Arduino aan op de laptop, selecteer het bord en de poort en druk op de uploadknop. Open vervolgens uw seriële monitor en wacht enige tijd (voorverwarmingsproces), dan ziet u de definitieve gegevens.
De waarden worden weergegeven op het OLED-scherm zoals hieronder weergegeven:
Opmerking: Voordat u de sensor gebruikt, moet u de sensor ongeveer 24 uur laten opwarmen om de juiste PPM-waarden te krijgen. Toen ik de sensor voor de eerste keer aanzette, was de output CO2-concentratie 1500 PPM tot 1700 PPM en na een opwarmproces van 24 uur daalde de output CO2-concentratie tot 450 PPM tot 500 PPM, wat de juiste PPM-waarden zijn. Het is dus noodzakelijk om de sensor te kalibreren voordat u deze gebruikt om de CO2-concentratie te meten.
Op deze manier kan een infrarood CO2-sensor worden gebruikt om de nauwkeurige CO2-concentratie in lucht te meten. De volledige code en werkvideo worden hieronder gegeven. Als je twijfels hebt, laat ze dan achter in het commentaargedeelte of gebruik onze forums voor technische hulp.