- Komponenter, der kræves
- 0,96 'OLED-skærmmodul
- Forberedelse af MQ-135 sensoren
- Kredsløbsdiagram til interface MQ135 med Arduino
- Beregning af R
- Kode til måling af CO2 ved hjælp af Arduino MQ135-sensor
- Test af grænsefladen mellem MQ-135-sensoren
Jordens atmosfæriske CO2-niveau stiger dag for dag. Det globale gennemsnitlige atmosfæriske kuldioxid i 2019 var 409,8 dele pr. Million og i oktober 2020 er det 411,29. Kuldioxid er en vigtig drivhusgas og ansvarlig for omkring tre fjerdedele af emissionerne. Så CO2-niveauovervågning er også begyndt at få betydning.
I vores tidligere projekt brugte vi Gravity Infrarød CO2-sensoren til at måle CO2-koncentrationen i luft. I dette projekt skal vi bruge en MQ-135 sensor med Arduino til at måle CO2-koncentrationen. De målte CO2-koncentrationsværdier vises på OLED-modulet og sidst sammenligner vi også Arduino MQ-135 sensoraflæsninger med infrarød CO2-sensoraflæsninger. Bortset fra CO2 har vi også målt koncentrationen af LPG, røg og ammoniakgas ved hjælp af Arduino.
Komponenter, der kræves
- Arduino Nano
- MQ-135 sensor
- Jumper Wires
- 0,96 'SPI OLED-skærmmodul
- Brødbræt
- 22KΩ modstand
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. Du kan også lære mere om det grundlæggende i OLED-skærm og dens typer ved at læse den linkede artikel. Stifterne og dens funktioner forklares i nedenstående tabel:
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
Forberedelse af MQ-135 sensoren
MQ-135 gassensor er en luftkvalitetssensor til detektion af en lang række gasser, herunder NH3, NOx, alkohol, benzen, røg og CO2. MQ-135 sensor kan enten købes som et modul eller bare som en sensor alene. I dette projekt bruger vi et MQ-135 sensormodul til at måle CO2-koncentrationen i PPM. Kredsløbsdiagrammet til MQ-135-kortet er angivet nedenfor:
Belastningsmodstanden RL spiller en meget vigtig rolle for at få sensoren til at fungere. Denne modstand ændrer sin modstandsværdi i henhold til koncentrationen af gas. Ifølge MQ-135 databladet kan belastningsmodstandsværdien variere alt fra 10KΩ til 47KΩ. Dataarket anbefaler, at du kalibrerer detektoren til 100 ppm NH3 eller 50 ppm Alkoholkoncentration i luft og bruger en værdi af belastningsmodstand (RL) på ca. 20 KΩ. Men hvis du sporer dine PCB-spor for at finde værdien af din RL på kortet, kan du se en 1KΩ (102) belastningsmodstand.
Så for at måle de passende CO2-koncentrationsværdier skal du udskifte 1KΩ modstanden med en 22KΩ modstand.
Kredsløbsdiagram til interface MQ135 med Arduino
Det komplette skema til tilslutning af MQ-135 gassensor med Arduino er vist nedenfor:
Kredsløbet er meget simpelt, da vi kun forbinder MQ-135-sensoren og OLED-skærmmodulet med Arduino Nano. MQ-135-gassensor og OLED-skærmmodul er begge forsynet med + 5V og GND. Analog Out-stiften på MQ-135-sensoren er forbundet til 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 Arduino MQ135-sensoropsætningen se ud som nedenfor:
Beregning af R
Nu da vi kender værdien af RL, lad os gå videre, hvordan man beregner R o værdier i ren luft. Her skal vi bruge MQ135.h til at måle CO2-koncentrationen i luften. Så først downloade MQ-135 Bibliotek, så forvarme sensor til 24 timer, før du læser R o værdier. Efter forvarmningsprocessen skal du bruge nedenstående kode til at læse R o- værdierne:
#include "MQ135.h" ugyldig opsætning () {Serial.begin (9600); } ugyldig sløjfe () {MQ135 gasSensor = MQ135 (A0); // Fastgør sensor til pin A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); forsinkelse (1000); }
Når du først har fået R o- værdier, skal du gå til Dokumenter> Arduino> biblioteker> MQ135-master- mappen og åbne MQ135.h- filen og ændre RLOAD & RZERO-værdier.
/// Belastningsmodstanden på tavlen #define RLOAD 22.0 /// Kalibreringsmodstand ved atmosfærisk CO2-niveau #definer RZERO 5804.99
Rul nu ned, og udskift ATMOCO2-værdien med den nuværende atmosfæriske CO2, der er 411,29
/// Atmosfærisk CO2-niveau til kalibreringsformål #definer ATMOCO2 397.13
Kode til måling af CO2 ved hjælp af Arduino MQ135-sensor
Den komplette kode til grænseflade mellem MQ-135-sensor og Arduino findes i slutningen af dokumentet. Her forklarer vi nogle vigtige dele af MQ135 Arduino-koden.
Koden bruger Adafruit_GFX , og Adafruit_SSD1306 , og MQ135.h 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. MQ135-biblioteket kan downloades herfra.
Efter installation af bibliotekerne til Arduino IDE skal du starte koden ved at inkludere de nødvendige biblioteksfiler.
#include "MQ135.h" #include
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 MQ-135-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); display.clearDisplay ();
Inde i loop () - funktionen skal du først læse signalværdierne ved den analoge pin i Arduino ved at ringe til analogRead () - funktionen.
val = analogRead (A0); Serial.print ("rå =");
Ring derefter til gasSensor.getPPM () i den næste linje for at beregne PPM-værdierne. PPM værdierne beregnes ved hjælp belastningsmodstanden, R 0, og læse fra den analoge pin.
flyde ppm = gasSensor.getPPM (); Serial.print ("ppm:"); Serial.println (ppm);
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.setCursor (18,43); display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (ppm);
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 MQ-135-sensoren
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:
Sådan kan en MQ-135 sensor bruges til at måle nøjagtig CO2 i luften. Den komplette MQ135 Arduino-kode for luftkvalitetssensor og arbejdsvideo er angivet nedenfor. Hvis du er i tvivl, skal du lade dem være i kommentarsektionen.