
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.
Kommentare