Arduino/ESP32 CO2 Sensor mit OLED Display

Du bist dabei, ein spannendes Projekt zu starten: die Anzeige von Umweltdaten mithilfe des SSD1306 OLED-Displays und eines SCD30 Luftqualitätssensors. Falls du schon den früheren Beitrag zum Einsatz des SCD30 Sensors ohne Display gelesen hast, wirst du feststellen, dass dieses Skript eine erweiterte Anwendung darstellt, indem es die Anzeigefähigkeiten des SSD1306 nutzt.

Zunächst, lass uns die benötigte Hardware durchgehen. Du brauchst:

Hardware

  1. Sensirion SCD30 Luftqualitätssensor.
  2. Ein OLED-Display, gesteuert durch den SSD1306 Chip. Dieser Chip ist ein Standard in der Industrie und unterstützt viele gängige Displays. Für dein Projekt musst du lediglich die Pixelgröße anpassen.
  3. Ein Arduino oder ESP32 Mikrocontroller. Beide sind mit diesem Skript kompatibel.
  4. Verbindungskabel: Zum Anschluss des Sensors an den Mikrocontroller.

Wichtig ist, dass du das Display und den Sensor an die I2C-Anschlüsse deines Mikrocontrollers anschließt. Für den ESP32 sind dies typischerweise die Pins 21 (SDA) und 22 (SCL), während du beim Arduino Uno die A4 (SDA) und A5 (SCL) Pins verwenden solltest.

In deinem Skript initialisierst du zuerst die erforderlichen Bibliotheken und definierst die Bildschirmdimensionen deines Displays. Anschließend initialisierst du den SCD30-Sensor und das SSD1306-Display. Das setup()-Verfahren ist entscheidend, um eine erfolgreiche Kommunikation über I2C sicherzustellen.

In der loop()-Funktion fragst du dann die Daten vom SCD30-Sensor ab und zeigst sie auf dem Display an. Du zeigst den CO2-Wert, die Temperatur und die Luftfeuchtigkeit an. Beachte, dass das Display regelmäßig aktualisiert wird, um die neuesten Messwerte anzuzeigen.

Durch die Kombination von SCD30 und SSD1306 kannst du ein leistungsfähiges Überwachungssystem für die Luftqualität aufbauen, das sowohl informativ als auch visuell ansprechend ist.

#include <Wire.h> // Einbinden der Wire-Bibliothek für I2C-Kommunikation
#include "SparkFun_SCD30_Arduino_Library.h" // Einbinden der Bibliothek für den SCD30-Sensor
#include <Adafruit_GFX.h> // Grafikbibliothek für das Display
#include <Adafruit_SSD1306.h> // Bibliothek für das SSD1306 OLED-Display

#define SCREEN_WIDTH 128 // Breite des OLED-Displays in Pixeln
#define SCREEN_HEIGHT 64 // Höhe des OLED-Displays in Pixeln

SCD30 airSensor; // Erstellen eines SCD30-Sensorobjekts
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Erstellen eines Displayobjekts

void setup() {
  Wire.begin(); // Start der I2C-Kommunikation
  Serial.begin(9600); // Start der seriellen Kommunikation
  airSensor.begin(); // Initialisierung des SCD30-Sensors

  // Initialisierung des OLED-Displays
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { 
    Serial.println(F("SSD1306 allocation failed")); // Fehlermeldung, falls die Initialisierung scheitert
    for(;;); // Endlosschleife bei Fehlschlag
  }
  display.clearDisplay(); // Display säubern
  display.setTextSize(2); // Textgröße einstellen
  display.setTextColor(SSD1306_WHITE); // Textfarbe einstellen
}

void loop() {
  if (airSensor.dataAvailable()) { // Überprüfen, ob Daten vom Sensor verfügbar sind
    display.clearDisplay(); // Display säubern für neue Daten
    display.setCursor(0,0); // Cursor auf Anfang setzen
    display.print(F("CO2: ")); // CO2-Wert anzeigen
    display.println(airSensor.getCO2()); // CO2-Wert vom Sensor abrufen und anzeigen

    display.setCursor(0, 16); // Cursor für die nächste Zeile setzen
    display.print(F("Temp: ")); // Temperatur anzeigen
    display.println(airSensor.getTemperature(), 1); // Temperaturwert vom Sensor abrufen und anzeigen

    display.setCursor(0, 32); // Cursor für die nächste Zeile setzen
    display.print(F("Hum: ")); // Luftfeuchtigkeit anzeigen
    display.println(airSensor.getHumidity(), 1); // Luftfeuchtigkeitswert vom Sensor abrufen und anzeigen

    display.display(); // Angezeigte Daten auf dem Display aktualisieren
  }
  delay(500); // Kurze Verzögerung vor dem nächsten Durchlauf der Schleife
}


🤞 1x pro Monat unsere News, Tipps und Tutorials gebündelt direkt in dein Postfach!

Wir senden keinen Spam! Erfahre mehr in unserer Datenschutzerklärung.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.