- Erforderliche Komponenten
- Schwerkraft-Infrarot-CO2-Sensor
- 0,96 'OLED-Anzeigemodul
- Schaltplan
- Arduino-Code zur Messung der CO2-Konzentration
- Testen der Schnittstelle des Schwerkraft-Infrarot-CO2-Sensors
Die zunehmende Konzentration von Kohlendioxid in der Luft ist mittlerweile zu einem ernsthaften Problem geworden. Laut NOAA-Bericht hat die Ozon-CO2-Konzentration 0,0385 Prozent (385 ppm) erreicht und ist die höchste Menge seit 2,1 Millionen Jahren. Dies bedeutet, dass in einer Million Luftpartikeln 385 Kohlendioxidpartikel enthalten sind. Dieser steigende CO2-Gehalt hat die Umwelt stark beeinträchtigt und uns dazu veranlasst, uns Situationen wie dem Klimawandel und der globalen Erwärmung zu stellen. Auf Straßen sind viele Luftqualitätsmessgeräte installiert, um den CO2-Wert zu ermitteln. Wir können jedoch auch ein DIY-CO2-Messgerät bauen und in unserer Region installieren.
In diesem Tutorial werden wir den Gravitations-Infrarot-CO2-Sensor mit Arduino verbinden, um die CO2-Konzentration in PPM zu messen. Der Schwerkraft- Infrarot-CO2-Sensor ist ein hochpräziser analoger CO2-Sensor. Es misst den CO2-Gehalt im Bereich von 0 bis 5000 ppm. Sie können auch unsere früheren Projekte überprüfen, in denen wir den MQ135-Gassensor, den Sharp GP2Y1014AU0F-Sensor und den Nova PM-Sensor SDS011 verwendet haben, um einen Luftqualitätsmonitor zu bauen.
Erforderliche Komponenten
- Arduino Nano
- Schwerkraft-Infrarot-CO2-Sensor V1.1
- Überbrückungsdrähte
- 0,96 'SPI OLED-Anzeigemodul
- Steckbrett
Schwerkraft-Infrarot-CO2-Sensor
Der Schwerkraft-Infrarot-CO2-Sensor V1.1 ist der neueste hochpräzise analoge Infrarot-CO2-Sensor von DFRobot. Dieser Sensor basiert auf der nichtdispersiven Infrarot (NDIR) -Technologie und weist eine gute Selektivität und sauerstofffreie Abhängigkeit auf. Es integriert die Temperaturkompensation und unterstützt den DAC-Ausgang. Der effektive Messbereich dieses Sensors liegt zwischen 0 und 5000 ppm mit einer Genauigkeit von ± 50 ppm + 3%. Dieser Infrarot-CO2-Sensor kann in den Bereichen HLK, Überwachung der Luftqualität in Innenräumen, Überwachung von Industrieprozessen und Sicherheitsschutz, Landwirtschaft und Überwachung von Produktionsprozessen in der Tierhaltung eingesetzt werden.
Pinbelegung des Infrarot-CO2-Sensors :
Wie bereits erwähnt, wird der Infrarot-CO2-Sensor mit einem 3-poligen Stecker geliefert. Die folgende Abbildung und Tabelle zeigt die Pinbelegung für den Infrarot-CO2-Sensor:
Pin Nr. |
Pin Name |
Beschreibung |
---|---|---|
1 |
Signal |
Analogausgang (0,4 ~ 2 V) |
2 |
VCC |
VCC (4,5 ~ 5,5 V) |
3 |
GND |
GND |
Technische Daten und Merkmale des Infrarot-CO2-Sensors :
- Gasdetektion: Kohlendioxid (CO2)
- Betriebsspannung: 4,5 ~ 5,5 V DC
- Vorheizzeit: 3min
- Reaktionszeit: 120s
- Betriebstemperatur: 0 ~ 50 ° C.
- Betriebsfeuchtigkeit: 0 ~ 95% rF (keine Kondensation)
- Wasserdicht und korrosionsbeständig
- Hohe Lebensdauer
- Anti-Wasserdampf-Interferenz
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. Die Stifte und ihre Funktionen werden in der folgenden Tabelle erläutert:
Wir haben OLED und seine Typen bereits im vorherigen Artikel ausführlich behandelt.
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.
Erfahren Sie mehr über OLED und seine Schnittstelle zu verschiedenen Mikrocontrollern, indem Sie dem Link folgen.
Schaltplan
Das Schaltbild für die Schnittstelle des analogen Gravitations-Infrarot-CO2-Sensors für Arduino ist nachstehend aufgeführt:
Die Schaltung ist sehr einfach, da wir nur den Schwerkraft-Infrarot-CO2-Sensor und das OLED-Anzeigemodul mit Arduino Nano verbinden. Der Infrarot-CO2-Sensor und das OLED-Anzeigemodul werden beide mit +5 V und GND betrieben. Der Signal-Pin (Analog Out) des CO2-Sensors ist mit dem A0-Pin von 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 sie wie folgt aussehen:
Arduino-Code zur Messung der CO2-Konzentration
Der vollständige Code für dieses analoge Gravitations-Infrarot-CO2-Sensor für Arduino- Projekt ist am Ende des Dokuments angegeben. Hier erklären wir einige wichtige Teile des Codes.
Der Code verwendet die Adafruit_GFX , und Adafruit_SSD1306 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. Der Infrarot-CO2-Sensor benötigt keine Bibliothek, da wir die Spannungswerte direkt vom analogen Pin von Arduino lesen.
Starten Sie nach der Installation der Bibliotheken in Arduino IDE den Code, indem Sie die erforderlichen Bibliotheksdateien einschließen. Der Staubsensor benötigt keine Bibliothek, da der Messwert direkt vom analogen Pin von Arduino stammt.
#einschließen
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 dem der CO2-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); analogReference (DEFAULT);
Lesen Sie innerhalb der Funktion loop () zuerst die Signalwerte am Analog-Pin von Arduino, indem Sie die Funktion analogRead () aufrufen. Wandeln Sie danach diese analogen Signalwerte in Spannungswerte um.
void loop () {int sensorValue = analogRead (sensorIn); Erhaltungsspannung = sensorValue * (5000 / 1024.0);
Vergleichen Sie danach die Spannungswerte. Wenn die Spannung 0 V beträgt, bedeutet dies, dass ein Problem mit dem Sensor aufgetreten ist. Wenn die Spannung größer als 0 V, aber kleiner als 400 V ist, bedeutet dies, dass sich der Sensor noch im Vorheizprozess befindet.
if (Spannung == 0) {Serial.println ("Fehler"); } else if (Spannung <400) {Serial.println ("Vorheizen"); }}
Wenn die Spannung gleich oder größer als 400 V ist, wandeln Sie sie in CO2-Konzentrationswerte um.
sonst {int Spannungs_Differenz = Spannung-400; Schwimmerkonzentration = Spannungsdifferenz * 50,0 / 16,0;
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.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (Konzentration);
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 Schwerkraft-Infrarot-CO2-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:
Hinweis: Lassen Sie den Sensor vor der Verwendung des Sensors ca. 24 Stunden lang aufheizen, um die richtigen PPM-Werte zu erhalten. Als ich den Sensor zum ersten Mal mit Strom versorgte, betrug die CO2-Ausgangskonzentration 1500 ppm bis 1700 ppm, und nach einem 24-stündigen Aufheizprozess verringerte sich die CO2-Ausgangskonzentration auf 450 ppm bis 500 ppm, was den korrekten PPM-Werten entspricht. Daher muss der Sensor kalibriert werden, bevor die CO2-Konzentration gemessen werden kann.
Auf diese Weise kann ein Infrarot-CO2-Sensor verwendet werden, um die genaue CO2-Konzentration in der Luft zu messen. Der vollständige Code und das Arbeitsvideo sind unten angegeben. Wenn Sie irgendwelche Zweifel haben, lassen Sie sie im Kommentarbereich oder nutzen Sie unsere Foren für technische Hilfe.