[Mikrocontroller]

Integration eines CO2-Sensors in Arduino und ESP32 Projekte

/integration-eines-co2-sensors-in-arduino-und-esp32-projekte
Integration eines CO2-Sensors in Arduino und ESP32 Projekte

In diesem Beitrag erkläre ich, wie ihr einen CO₂-Sensor – konkret den Sensirion SCD30 – mit einem Arduino oder einem ESP32 nutzen könnt. Dieser Sensor ist besonders vielseitig, da er nicht nur CO₂, sondern auch Temperatur und Luftfeuchtigkeit messen kann.


Warum den Sensirion SCD30?

Der SCD30 von :contentReference[oaicite:0]{index=0} ist ein präziser und zuverlässiger Sensor, der über eine I²C-Schnittstelle kommuniziert. Dadurch lässt er sich relativ einfach an die meisten Mikrocontroller anbinden.

Ihr müsst lediglich die I²C-Pins eures Mikrocontrollers identifizieren.
Beim ESP32 Dev Kit, das ich für dieses Beispiel verwende, sind dies in der Regel:

  • Pin 21 → SDA
  • Pin 22 → SCL

Zusätzlich benötigt der Sensor eine Stromversorgung:
- 3V oder 5V → VCC
- GND → GND des Mikrocontrollers


Benötigte Teile

Für dieses Projekt werden folgende Komponenten benötigt:

  • Sensirion SCD30 CO₂-Sensor
  • Mikrocontroller (z. B. Arduino oder ESP32)
  • Jumper-Kabel
  • USB-Kabel für Programmierung und Stromversorgung

Der Programmcode

Der folgende Code ist sowohl für Arduino-Boards von :contentReference[oaicite:1]{index=1} als auch für ESP32-Boards von :contentReference[oaicite:2]{index=2} geeignet.

Zuerst müssen die notwendigen Bibliotheken eingebunden werden:

#include <Wire.h>
#include "SparkFun_SCD30_Arduino_Library.h" 

SCD30 airSensor;
````

---

### setup()

Im `setup()` wird die I²C-Kommunikation, die serielle Schnittstelle und der Sensor initialisiert:

```cpp
void setup()  
{
  Wire.begin();           // Startet die I2C-Kommunikation
  Serial.begin(9600);     // Startet die serielle Kommunikation
  airSensor.begin();      // Initialisiert den Sensor
}

loop()

Die eigentliche Messarbeit passiert in der loop()-Funktion:

void loop()  
{
  if (airSensor.dataAvailable()) 
  {
    Serial.print("CO2 (ppm): ");
    Serial.print(airSensor.getCO2());

    Serial.print(", Temp (C): ");
    Serial.print(airSensor.getTemperature(), 1);

    Serial.print(", Humidity (%): ");
    Serial.print(airSensor.getHumidity(), 1);

    Serial.println();
  }
  else
  {
    // Serial.println("Warte auf Daten..."); // Optional
  }

  delay(500); // Kurze Pause zwischen den Messungen
}

Gesamter Code

#include <Wire.h>
#include "SparkFun_SCD30_Arduino_Library.h" 

SCD30 airSensor;

void setup()  
{
  Wire.begin();                 // Startet die I2C-Kommunikation
  Serial.begin(9600);           // Serielle Kommunikation mit 9600 Baud
  airSensor.begin();            // Initialisiert den SCD30-Sensor
}

void loop()  
{
  if (airSensor.dataAvailable()) // Prüft, ob neue Sensordaten vorliegen
  {
    Serial.print("CO2 (ppm): ");
    Serial.print(airSensor.getCO2());

    Serial.print(", Temp (C): ");
    Serial.print(airSensor.getTemperature(), 1);

    Serial.print(", Humidity (%): ");
    Serial.print(airSensor.getHumidity(), 1);

    Serial.println();
  }
  else
  {
    // Optional: Ausgabe, wenn keine Daten verfügbar sind
    // Serial.println("Warte auf Daten...");
  }

  delay(500); // 500 ms Pause bis zur nächsten Messung
}

Fazit

Mit diesem einfachen Setup könnt ihr euren Arduino oder ESP32 in eine kompakte Umweltüberwachungsstation verwandeln. Der Sensirion SCD30 eignet sich hervorragend für Projekte, bei denen zuverlässige Messungen von CO₂, Temperatur und Luftfeuchtigkeit gefragt sind.

Anzeige

/comments0 Einträge

Kommentare

> NO_COMMENTS_FOUND

> INITIATE_COMMENT_PROTOCOL

MARKDOWN_SUPPORT: ENABLED
CHARS: 0