- Componenten vereist
- 0.96 'OLED-weergavemodule
- Voorbereiding van de MQ-135-sensor
- Schakelschema voor interface MQ135 met Arduino
- Berekenen van de R
- Code om CO2 te meten met behulp van de Arduino MQ135-sensor
- De interface van de MQ-135-sensor testen
Het atmosferische CO2-niveau van de aarde neemt met de dag toe. De wereldwijde gemiddelde atmosferische kooldioxide in 2019 was 409,8 delen per miljoen en in oktober 2020 is het 411,29. Kooldioxide is een belangrijk broeikasgas en verantwoordelijk voor ongeveer driekwart van de uitstoot. Dus de monitoring van het CO2-niveau begint ook aan belang te winnen.
In ons vorige project hebben we de Gravity Infrared CO2-sensor gebruikt om de CO2-concentratie in lucht te meten. In dit project gaan we een MQ-135 sensor met Arduino gebruiken om de CO2-concentratie te meten. De gemeten CO2-concentratiewaarden worden weergegeven op de OLED-module en als laatste zullen we ook de Arduino MQ-135-sensormetingen vergelijken met infrarood-CO2-sensormetingen. Behalve CO2 hebben we met Arduino ook de concentratie LPG, Rook en Ammoniakgas gemeten.
Componenten vereist
- Arduino Nano
- MQ-135-sensor
- Doorverbindingsdraden
- 0.96 'SPI OLED-weergavemodule
- Breadboard
- 22KΩ weerstand
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. U kunt ook meer te weten komen over de basisprincipes van OLED-schermen en de typen door het gekoppelde artikel te lezen. De pinnen en zijn functies worden uitgelegd in de onderstaande tabel:
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
Voorbereiding van de MQ-135-sensor
De MQ-135-gassensor is een luchtkwaliteitssensor voor het detecteren van een breed scala aan gassen, waaronder NH3, NOx, alcohol, benzeen, rook en CO2. De MQ-135-sensor kan als module worden gekocht of alleen als sensor. In dit project gebruiken we een MQ-135 sensormodule om de CO2-concentratie in PPM te meten. Het schakelschema voor het MQ-135-bord wordt hieronder weergegeven:
De belastingsweerstand RL speelt een zeer belangrijke rol bij het laten werken van de sensor. Deze weerstand verandert zijn weerstandswaarde volgens de gasconcentratie. Volgens het MQ-135-gegevensblad kan de belastingsweerstandswaarde variëren van 10KΩ tot 47KΩ. Het gegevensblad beveelt aan dat u de detector kalibreert voor 100 ppm NH3 of 50 ppm alcoholconcentratie in lucht en een belastingsweerstand (RL) gebruikt van ongeveer 20 KΩ. Maar als u uw PCB-sporen volgt om de waarde van uw RL in het bord te vinden, kunt u een belastingsweerstand van 1KΩ (102) zien.
Dus om de juiste CO2-concentratiewaarden te meten, moet je de 1KΩ-weerstand vervangen door een 22KΩ-weerstand.
Schakelschema voor interface MQ135 met Arduino
Het volledige schema om de MQ-135-gassensor met Arduino te verbinden, wordt hieronder gegeven:
Het circuit is heel eenvoudig omdat we alleen de MQ-135-sensor en OLED-displaymodule verbinden met Arduino Nano. MQ-135 Gassensor en OLED-displaymodule worden beide gevoed met + 5V en GND. De Analog Out-pin van de MQ-135-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 |
Na het aansluiten van de hardware volgens het schakelschema, zou de Arduino MQ135 sensor setup er ongeveer zo uit moeten zien:
Berekenen van de R
Nu we de waarde van RL kennen, gaan we verder met het berekenen van de R o- waarden in schone lucht. Hier gaan we MQ135.h gebruiken om de CO2-concentratie in de lucht te meten. Download dus eerst de MQ-135 Library, verwarm daarna de sensor 24 uur voor voordat je de R o- waarden afleest. Gebruik na het voorverwarmingsproces de onderstaande code om de R o- waarden te lezen:
#inclusief "MQ135.h" void setup () {Serial.begin (9600); } void loop () {MQ135 gasSensor = MQ135 (A0); // Bevestig sensor aan pin A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); vertraging (1000); }
Zodra je de R o- waarden hebt, ga je naar Documenten> Arduino> bibliotheken> MQ135-master- map en open je het MQ135.h- bestand en verander je de RLOAD & RZERO-waarden.
/// De belastingsweerstand op het bord #define RLOAD 22.0 /// Kalibratieweerstand op atmosferisch CO2-niveau #define RZERO 5804.99
Scroll nu naar beneden en vervang de ATMOCO2-waarde door de huidige Atmosferische CO2 die 411,29 is
/// Atmosferisch CO2-niveau voor kalibratiedoeleinden #define ATMOCO2 397.13
Code om CO2 te meten met behulp van de Arduino MQ135-sensor
De volledige code voor het koppelen van de MQ-135-sensor met Arduino staat aan het einde van het document. Hier leggen we enkele belangrijke onderdelen van de MQ135 Arduino-code uit.
De code maakt gebruik van de Adafruit_GFX , en Adafruit_SSD1306 , en MQ135.h 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 <Inclusief bibliotheek <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 MQ135-bibliotheek kan hier worden gedownload.
Na het installeren van de bibliotheken op Arduino IDE, start u de code door de benodigde bibliothekenbestanden op te nemen.
#include "MQ135.h" #include
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 MQ-135-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); display.clearDisplay ();
Lees binnen de functie loop () eerst de signaalwaarden op de analoge pin van Arduino door de functie analogRead () aan te roepen.
val = analogRead (A0); Serial.print ("raw =");
Roep vervolgens in de volgende regel gasSensor.getPPM () aan om de PPM-waarden te berekenen. De PPM-waarden worden berekend met behulp van de belastingsweerstand, R 0, en aflezen van de analoge pin.
drijven ppm = gasSensor.getPPM (); Serial.print ("ppm:"); Serial.println (ppm);
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.setCursor (18,43); display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (ppm);
En als laatste roept u de methode display () aan om de tekst op het OLED-scherm weer te geven.
display.display (); display.clearDisplay ();
De interface van de MQ-135-sensor testen
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:
Op deze manier kan een MQ-135 sensor worden gebruikt om nauwkeurig CO2 in de lucht te meten. De volledige MQ135 luchtkwaliteitssensor Arduino-code en werkvideo worden hieronder gegeven. Als je twijfels hebt, laat ze dan achter in het commentaargedeelte.