[Mikrocontroller]

Arduino/ESP32 CO2 Sensor mit OLED Display

/arduino-esp32-co2-sensor-mit-oled-display
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.


Hardware

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

  • SSD1306 OLED-Display
  • SCD30 Luftqualitätssensor
  • Mikrocontroller (z. B. ESP32 oder Arduino Uno)
  • I2C-Verbindungskabel

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 Pins A4 (SDA) und A5 (SCL) verwenden solltest.


Funktionsweise des Skripts

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. Angezeigt werden:

  • CO₂-Wert
  • Temperatur
  • Luftfeuchtigkeit

Das Display wird regelmäßig aktualisiert, um immer die neuesten Messwerte darzustellen.

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


Beispielcode

#include <Wire.h> // Einbinden der Wire-Bibliothek für I2C-Kommunikation
#include "SparkFun_SCD30_Arduino_Library.h" // 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; // SCD30-Sensorobjekt
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Displayobjekt

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"));
    for(;;); // Endlosschleife bei Fehlschlag
  }

  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(SSD1306_WHITE);
}

void loop() {
  if (airSensor.dataAvailable()) {
    display.clearDisplay();
    display.setCursor(0, 0);
    display.print(F("CO2: "));
    display.println(airSensor.getCO2());

    display.setCursor(0, 16);
    display.print(F("Temp: "));
    display.println(airSensor.getTemperature(), 1);

    display.setCursor(0, 32);
    display.print(F("Hum: "));
    display.println(airSensor.getHumidity(), 1);

    display.display();
  }
  delay(500);
}

Anzeige

/comments0 Einträge

Kommentare

> NO_COMMENTS_FOUND

> INITIATE_COMMENT_PROTOCOL

MARKDOWN_SUPPORT: ENABLED
CHARS: 0