- Komponenter krävs
- 0,96-tums OLED-skärmmodul
- Förbereda MQ-135-sensorn
- Kretsschema för gränssnitt MQ135 med Arduino
- Beräkning av R
- Kod för att mäta CO2 med Arduino MQ135-sensor
- Testa gränssnittet mellan MQ-135-sensorn
Jordens atmosfäriska CO2-nivå ökar dag för dag. Den globala genomsnittliga atmosfäriska koldioxiden år 2019 var 409,8 delar per miljon och i oktober 2020 är den 411,29. Koldioxid är en viktig växthusgas och ansvarar för cirka tre fjärdedelar av utsläppen. Så CO2-övervakning har också börjat få betydelse.
I vårt tidigare projekt använde vi Gravity Infrared CO2-sensorn för att mäta CO2-koncentrationen i luft. I det här projektet ska vi använda en MQ-135-sensor med Arduino för att mäta CO2-koncentrationen. De uppmätta CO2-koncentrationsvärdena visas på OLED-modulen och senast kommer vi också att jämföra Arduino MQ-135 sensoravläsningar med infraröd CO2-sensoravläsningar. Förutom CO2 har vi också mätt koncentrationen av LPG, rök och ammoniakgas med Arduino.
Komponenter krävs
- Arduino Nano
- MQ-135-sensor
- Bygeltrådar
- 0,96 'SPI OLED-skärmmodul
- Bakbord
- 22KΩ motstånd
0,96-tums OLED-skärmmodul
OLED (Organic Light-Emitting Diodes) är en självljusemitterande teknik, konstruerad genom att placera en serie organiska tunna filmer mellan två ledare. Ett starkt ljus produceras när en elektrisk ström appliceras på dessa filmer. OLED-enheter använder samma teknik som tv-apparater, men har färre pixlar än i de flesta av våra tv-apparater.
För detta projekt använder vi en monokrom 7-stifts SSD1306 0,96 ”OLED-skärm. Det kan fungera på tre olika kommunikationsprotokoll: SPI 3 Wire-läge, SPI-fyrtrådsläge och I2C-läge. Du kan också lära dig mer om grunderna för OLED-skärm och dess typer genom att läsa den länkade artikeln. Stiften och dess funktioner förklaras i tabellen nedan:
Pin-namn |
Andra namn |
Beskrivning |
Gnd |
Jord |
Jordens stift på modulen |
Vdd |
Vcc, 5V |
Strömstift (3-5 V acceptabelt) |
SCK |
D0, SCL, CLK |
Fungerar som klockstift. Används för både I2C och SPI |
SDA |
D1, MOSI |
Modulens datapinne. Används för både IIC och SPI |
RES |
RST, RESET |
Återställer modulen (användbar under SPI) |
DC |
A0 |
Data Command pin. Används för SPI-protokoll |
CS |
Chip Select |
Användbar när mer än en modul används under SPI-protokollet |
OLED-specifikationer:
- OLED Driver IC: SSD1306
- Upplösning: 128 x 64
- Synvinkel:> 160 °
- Ingångsspänning: 3,3V ~ 6V
- Pixelfärg: Blå
- Arbetstemperatur: -30 ° C ~ 70 ° C
Förbereda MQ-135-sensorn
MQ-135 gassensor är en luftkvalitetssensor för att detektera ett stort antal gaser, inklusive NH3, NOx, alkohol, bensen, rök och CO2. MQ-135-sensorn kan antingen köpas som en modul eller bara som en sensor ensam. I detta projekt använder vi en sensormodul MQ-135 för att mäta CO2-koncentrationen i PPM. Kretsschemat för MQ-135-kortet ges nedan:
Lastmotståndet RL spelar en mycket viktig roll för att få sensorn att fungera. Detta motstånd ändrar sitt motståndsvärde i enlighet med koncentrationen av gas. Enligt databladet MQ-135 kan lastmotståndsvärdet variera var som helst från 10KΩ till 47KΩ. Databladet rekommenderar att du kalibrerar detektorn för 100 ppm NH3 eller 50 ppm Alkoholkoncentration i luft och använder ett värde på belastningsmotstånd (RL) på cirka 20 KΩ. Men om du spårar dina PCB-spår för att hitta värdet på din RL i kortet kan du se ett 1KΩ (102) belastningsmotstånd.
Så för att mäta lämpliga CO2-koncentrationsvärden måste du byta ut 1KΩ-motståndet mot ett 22KΩ-motstånd.
Kretsschema för gränssnitt MQ135 med Arduino
Det fullständiga schemat för att ansluta MQ-135 gassensor med Arduino ges nedan:
Kretsen är väldigt enkel eftersom vi bara ansluter MQ-135-sensorn och OLED-skärmmodulen med Arduino Nano. MQ-135-gassensorn och OLED-skärmmodulen drivs båda med + 5V och GND. Den analoga utstiften på MQ-135-sensorn är ansluten till A0-stiftet på Arduino Nano. Eftersom OLED Display-modulen använder SPI-kommunikation har vi upprättat en SPI-kommunikation mellan OLED-modulen och Arduino Nano. Anslutningarna visas i nedanstående tabell:
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 att ha anslutit hårdvaran enligt kretsschemat bör Arduino MQ135-sensorinställningen se ut som nedan:
Beräkning av R
Nu när vi vet värdet på RL, låt oss fortsätta med hur vi beräknar R o- värdena i ren luft. Här ska vi använda MQ135.h för att mäta CO2-koncentrationen i luften. Så först hämta MQ-135 Library, sedan förvärma sensorn i 24 timmar innan du läser R o värden. Efter förvärmningsprocessen använder du koden nedan för att läsa R o- värdena:
#include "MQ135.h" ogiltig installation () {Serial.begin (9600); } ogiltig slinga () {MQ135 gasSensor = MQ135 (A0); // Fäst sensorn till stift A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); fördröjning (1000); }
Nu när du fått R o värderingar Gå till Dokument> Arduino> bibliotek> MQ135-master mapp och öppna MQ135.h filen och ändra Rload & rnoll värden.
/// Lastmotståndet på kortet #define RLOAD 22.0 /// Kalibreringsmotstånd vid atmosfärisk CO2-nivå #define RZERO 5804.99
Rulla nu ner och ersätt ATMOCO2-värdet med det nuvarande atmosfäriska CO2 som är 411,29
/// Atmosfärisk CO2-nivå för kalibreringsändamål #definiera ATMOCO2 397.13
Kod för att mäta CO2 med Arduino MQ135-sensor
Den kompletta koden för gränssnitt mellan MQ-135-sensorn och Arduino ges i slutet av dokumentet. Här förklarar vi några viktiga delar av MQ135 Arduino-koden.
Koden använder Adafruit_GFX , och Adafruit_SSD1306 , och MQ135.h bibliotek. Dessa bibliotek kan laddas ner från Library Manager i Arduino IDE och installera det därifrån. För det, öppna Arduino IDE och gå till Skiss <Inkludera bibliotek <Hantera bibliotek . Sök nu efter Adafruit GFX och installera Adafruit GFX-biblioteket av Adafruit.
Installera på samma sätt Adafruit SSD1306-biblioteken av Adafruit. MQ135-biblioteket kan laddas ner härifrån.
Efter att ha installerat biblioteken till Arduino IDE, starta koden genom att inkludera de biblioteksfiler som behövs.
#include "MQ135.h" #include
Definiera sedan OLED-bredd och höjd. I det här projektet använder vi en 128 × 64 SPI OLED-skärm. Du kan ändra variablerna SCREEN_WIDTH och SCREEN_HEIGHT enligt din skärm.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Definiera sedan SPI-kommunikationsnålarna där OLED Display är ansluten.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Skapa sedan en Adafruit-skärminstans med bredden och höjden definierad tidigare med SPI-kommunikationsprotokollet.
Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Därefter definierar du Arduino-stiftet där MQ-135-sensorn är ansluten.
int sensorIn = A0;
Nu inne i setup () funktion, initiera Serial Monitor vid en baudhastighet av 9600 för felsökning. Initiera även OLED-skärmen med funktionen start () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay ();
Inuti loop () -funktionen, läs först signalvärdena vid den analoga stiftet i Arduino genom att ringa funktionen analogRead () .
val = analogRead (A0); Serial.print ("raw =");
Sedan i nästa rad, ring gasSensor.getPPM () för att beräkna PPM-värdena. PPM-värdena beräknas med hjälp av belastningsmotståndet, R 0 och avläsning från den analoga stiftet.
float ppm = gasSensor.getPPM (); Serial.print ("ppm:"); Serial.println (ppm);
Därefter ställer du in textstorlek och textfärg med setTextSize () och setTextColor () .
display.setTextSize (1); display.setTextColor (WHITE);
Definiera sedan i nästa rad positionen där texten börjar med metoden setCursor (x, y) . Och skriv ut CO2-värdena på OLED-skärmen med funktionen display.println () .
display.setCursor (18,43); display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (ppm);
Och till sist, ring display () -metoden för att visa texten på OLED Display.
display.display (); display.clearDisplay ();
Testa gränssnittet mellan MQ-135-sensorn
När hårdvaran och koden är klara är det dags att testa sensorn. För det ansluter du Arduino till den bärbara datorn, väljer styrelsen och porten och trycker på uppladdningsknappen. Öppna sedan din seriella bildskärm och vänta en stund (förvärmningsprocess), då ser du slutdata. Värdena visas på OLED-skärmen enligt nedan:
Så här kan en MQ-135-sensor användas för att mäta korrekt CO2 i luften. Den kompletta MQ135 Arduino-koden för luftkvalitetssensor och arbetsvideo ges nedan. Om du är osäker, lämna dem i kommentarsektionen.