- Erforderliche Komponenten
- 0,96 'OLED-Anzeigemodul
- Vorbereiten des MQ-135-Sensors
- Schaltplan zur Schnittstelle MQ135 mit Arduino
- Berechnung des R.
- Code zur Messung von CO2 mit dem Arduino MQ135 Sensor
- Testen der Schnittstelle des MQ-135-Sensors
Der atmosphärische CO2-Gehalt der Erde steigt von Tag zu Tag. Das weltweite durchschnittliche atmosphärische Kohlendioxid betrug 2019 409,8 ppm und im Oktober 2020 411,29. Kohlendioxid ist ein wichtiges Treibhausgas und für etwa drei Viertel der Emissionen verantwortlich. Daher hat auch die Überwachung des CO2-Gehalts an Bedeutung gewonnen.
In unserem vorherigen Projekt haben wir den Gravitations-Infrarot-CO2-Sensor verwendet, um die CO2-Konzentration in Luft zu messen. In diesem Projekt werden wir einen MQ-135-Sensor mit Arduino verwenden, um die CO2-Konzentration zu messen. Die gemessenen CO2-Konzentrationswerte werden auf dem OLED-Modul angezeigt. Zuletzt werden auch die Messwerte des Arduino MQ-135-Sensors mit den Messwerten des Infrarot-CO2-Sensors verglichen. Neben CO2 haben wir auch die Konzentration von LPG, Rauch und Ammoniakgas mit Arduino gemessen.
Erforderliche Komponenten
- Arduino Nano
- MQ-135 Sensor
- Überbrückungsdrähte
- 0,96 'SPI OLED-Anzeigemodul
- Steckbrett
- 22KΩ Widerstand
0,96 'OLED-Anzeigemodul
OLED (Organic Light Emitting Diodes) ist eine selbstleuchtende Technologie, bei der eine Reihe organischer Dünnfilme zwischen zwei Leitern angeordnet werden. Ein helles Licht wird erzeugt, wenn ein elektrischer Strom an diese Filme angelegt wird. OLEDs verwenden dieselbe Technologie wie Fernseher, haben jedoch weniger Pixel als die meisten unserer Fernseher.
Für dieses Projekt verwenden wir ein monochromes 7-poliges SSD1306 0,96-Zoll-OLED-Display. Es kann mit drei verschiedenen Kommunikationsprotokollen arbeiten: SPI 3-Drahtmodus, SPI-Vierdrahtmodus und I2C-Modus. Weitere Informationen zu den Grundlagen der OLED-Anzeige und ihren Typen finden Sie im verlinkten Artikel. Die Stifte und ihre Funktionen werden in der folgenden Tabelle erläutert:
Pin Name |
Andere Namen |
Beschreibung |
Gnd |
Boden |
Erdungsstift des Moduls |
Vdd |
Vcc, 5V |
Stromanschluss (3-5V tolerierbar) |
SCK |
D0, SCL, CLK |
Dient als Clock. Wird sowohl für I2C als auch für SPI verwendet |
SDA |
D1, MOSI |
Daten-Pin des Moduls. Wird sowohl für IIC als auch für SPI verwendet |
RES |
RST, RESET |
Setzt das Modul zurück (nützlich während SPI) |
DC |
A0 |
Datenbefehls-Pin. Wird für das SPI-Protokoll verwendet |
CS |
Chipauswahl |
Nützlich, wenn mehr als ein Modul unter dem SPI-Protokoll verwendet wird |
OLED-Spezifikationen:
- OLED-Treiber-IC: SSD1306
- Auflösung: 128 x 64
- Sichtwinkel:> 160 °
- Eingangsspannung: 3,3 V ~ 6 V.
- Pixelfarbe: Blau
- Arbeitstemperatur: -30 ° C ~ 70 ° C.
Vorbereiten des MQ-135-Sensors
Der Gassensor MQ-135 ist ein Luftqualitätssensor zur Erfassung einer Vielzahl von Gasen, einschließlich NH3, NOx, Alkohol, Benzol, Rauch und CO2. Der MQ-135-Sensor kann entweder als Modul oder nur als Sensor erworben werden. In diesem Projekt verwenden wir ein MQ-135-Sensormodul, um die CO2-Konzentration in PPM zu messen. Das Schaltbild für die MQ-135-Karte ist unten angegeben:
Der Lastwiderstand RL spielt eine sehr wichtige Rolle, damit der Sensor funktioniert. Dieser Widerstand ändert seinen Widerstandswert entsprechend der Gaskonzentration. Gemäß dem Datenblatt MQ-135 kann der Lastwiderstandswert zwischen 10 kΩ und 47 kΩ liegen. Im Datenblatt wird empfohlen, den Detektor auf eine Alkoholkonzentration von 100 ppm NH3 oder 50 ppm in Luft zu kalibrieren und einen Wert für den Lastwiderstand (RL) von etwa 20 KΩ zu verwenden. Wenn Sie jedoch Ihre Leiterplattenspuren verfolgen, um den Wert Ihres RL auf der Platine zu ermitteln, sehen Sie einen Lastwiderstand von 1 kΩ (102).
Um die entsprechenden CO2-Konzentrationswerte zu messen, müssen Sie den 1KΩ-Widerstand durch einen 22KΩ-Widerstand ersetzen.
Schaltplan zur Schnittstelle MQ135 mit Arduino
Die vollständigen Schaltpläne zum Verbinden des Gassensors MQ-135 mit Arduino sind nachstehend aufgeführt:
Die Schaltung ist sehr einfach, da wir nur den MQ-135-Sensor und das OLED-Anzeigemodul mit Arduino Nano verbinden. Der Gassensor MQ-135 und das OLED-Anzeigemodul werden beide mit +5 V und GND betrieben. Der Analogausgang des MQ-135-Sensors ist mit dem A0-Pin des Arduino Nano verbunden. Da das OLED-Display-Modul SPI-Kommunikation verwendet, haben wir eine SPI-Kommunikation zwischen dem OLED-Modul und Arduino Nano hergestellt. Die Verbindungen sind in der folgenden Tabelle aufgeführt:
S.No. |
OLED-Modul-Pin |
Arduino Pin |
1 |
GND |
Boden |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
Nach dem Anschließen der Hardware gemäß Schaltplan sollte das Sensor-Setup des Arduino MQ135 wie folgt aussehen:
Berechnung des R.
Nachdem wir den Wert von RL kennen, fahren wir mit der Berechnung der RO- Werte in sauberer Luft fort. Hier verwenden wir MQ135.h, um die CO2-Konzentration in der Luft zu messen. Laden Sie also zuerst die MQ-135-Bibliothek herunter und heizen Sie den Sensor dann 24 Stunden lang vor, bevor Sie die Ro- Werte ablesen. Verwenden Sie nach dem Vorheizen den folgenden Code, um die Ro- Werte zu lesen:
#include "MQ135.h" void setup () {Serial.begin (9600); } void loop () {MQ135 gasSensor = MQ135 (A0); // Sensor an Pin A0 anschließen float rzero = gasSensor.getRZero (); Serial.println (rzero); Verzögerung (1000); }}
Nun, wenn Sie bekam die R o Werte, Gehen Sie zu Dokumente> Arduino> Bibliotheken> MQ135-Master - Ordner und öffnen Sie die MQ135.h Datei und ändern Sie die RLAST & RZERO Werte.
/// Der Lastwiderstand auf der Platine #define RLOAD 22.0 /// Kalibrierungswiderstand bei atmosphärischem CO2-Gehalt #define RZERO 5804.99
Scrollen Sie nun nach unten und ersetzen Sie den ATMOCO2-Wert durch das aktuelle atmosphärische CO2 von 411,29
/// Atmosphärischer CO2-Wert für Kalibrierungszwecke #define ATMOCO2 397.13
Code zur Messung von CO2 mit dem Arduino MQ135 Sensor
Der vollständige Code für die Verbindung des MQ-135-Sensors mit Arduino ist am Ende des Dokuments angegeben. Hier erklären wir einige wichtige Teile des MQ135 Arduino-Codes.
Der Code verwendet die Adafruit_GFX , und Adafruit_SSD1306 , und MQ135.h Bibliotheken. Diese Bibliotheken können vom Bibliotheksmanager in der Arduino IDE heruntergeladen und von dort installiert werden. Öffnen Sie dazu die Arduino IDE und gehen Sie zu Skizze <Bibliothek einschließen <Bibliotheken verwalten . Suchen Sie nun nach Adafruit GFX und installieren Sie die Adafruit GFX-Bibliothek von Adafruit.
Installieren Sie in ähnlicher Weise die Adafruit SSD1306-Bibliotheken von Adafruit. Die MQ135-Bibliothek kann hier heruntergeladen werden.
Starten Sie nach der Installation der Bibliotheken in Arduino IDE den Code, indem Sie die erforderlichen Bibliotheksdateien einschließen.
#include "MQ135.h" #include
Definieren Sie dann die Breite und Höhe der OLED. In diesem Projekt verwenden wir ein 128 × 64 SPI OLED-Display. Sie können die Variablen SCREEN_WIDTH und SCREEN_HEIGHT entsprechend Ihrer Anzeige ändern.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Definieren Sie dann die SPI-Kommunikationspins, an denen das OLED-Display angeschlossen ist.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Erstellen Sie dann eine Adafruit-Anzeigeinstanz mit der zuvor mit dem SPI-Kommunikationsprotokoll definierten Breite und Höhe.
Adafruit_SSD1306-Anzeige (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Definieren Sie anschließend den Arduino-Pin, an den der MQ-135-Sensor angeschlossen ist.
int sensorIn = A0;
Initialisieren Sie nun in der Funktion setup () den seriellen Monitor für Debugging-Zwecke mit einer Baudrate von 9600. Initialisieren Sie außerdem die OLED-Anzeige mit der Funktion begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay ();
Lesen Sie innerhalb der Funktion loop () zuerst die Signalwerte am Analog-Pin von Arduino, indem Sie die Funktion analogRead () aufrufen.
val = analogRead (A0); Serial.print ("raw =");
Rufen Sie dann in der nächsten Zeile gasSensor.getPPM () auf, um die PPM-Werte zu berechnen. Die PPM-Werte werden unter Verwendung des Lastwiderstands R 0 und Ablesen vom analogen Pin berechnet.
float ppm = gasSensor.getPPM (); Serial.print ("ppm:"); Serial.println (ppm);
Stellen Sie danach die Textgröße und die Textfarbe mit setTextSize () und setTextColor () ein .
display.setTextSize (1); display.setTextColor (WHITE);
Definieren Sie dann in der nächsten Zeile die Position, an der der Text mit der Methode setCursor (x, y) beginnt. Drucken Sie die CO2-Werte auf dem OLED-Display mit der Funktion 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);
Rufen Sie im letzten Schritt die Methode display () auf, um den Text auf dem OLED-Display anzuzeigen.
display.display (); display.clearDisplay ();
Testen der Schnittstelle des MQ-135-Sensors
Sobald die Hardware und der Code fertig sind, ist es Zeit, den Sensor zu testen. Verbinden Sie dazu das Arduino mit dem Laptop, wählen Sie das Board und den Port aus und klicken Sie auf die Schaltfläche zum Hochladen. Öffnen Sie dann Ihren seriellen Monitor und warten Sie einige Zeit (Vorheizvorgang), dann werden die endgültigen Daten angezeigt. Die Werte werden wie folgt auf dem OLED-Display angezeigt:
Auf diese Weise kann ein MQ-135-Sensor verwendet werden, um genaues CO2 in der Luft zu messen. Der vollständige Arduino-Code des MQ135-Luftqualitätssensors und das Arbeitsvideo sind unten angegeben. Wenn Sie irgendwelche Zweifel haben, lassen Sie sie im Kommentarbereich.