Zum Inhalt springen
Alkoholsensor Arduino ESP: Atemalkohol messen & LED-Streifen Anzeige

Alkoholsensor Arduino: Atemalkohol messen & LED-Streifen Anzeige

In diesem Projekt baust du einen Atemalkoholtester mit einem MQ-3 Sensor und einem Arduino/ESP. Das Messergebnis wird auf einem LED-Streifen visualisiert.

Dieses Projekt ist nur ein Lern- und Spaßprojekt.
Der Sensor ersetzt keinen medizinischen oder polizeilichen Alkoholtester.
Alkohol ist gesundheitsschädlich und kann gefährlich sein – bitte verantwortungsvoll konsumieren und niemals unter Alkoholeinfluss ein Fahrzeug führen.


Beispiele für die Anwendung:

  • Party-Gadget zur spielerischen Demonstration von Alkoholwerten
  • Lernprojekt für Sensorik und Datenvisualisierung
  • Workshop-Thema für Arduino-Einsteiger
  • Experimentelle Anzeige von Luftqualität und Gasen
  • Erweiterung für DIY-Smart-Home-Messsysteme

Projektbeschreibung

Der Alkoholsensor MQ-3 misst die Konzentration von Alkohol in der Atemluft. In Verbindung mit einem Arduino oder ESP kannst du die Werte in Echtzeit erfassen und kreativ darstellen. Die LEDs reagieren auf die gemessene Konzentration und zeigen so sofort ein visuelles Feedback.
Herausforderungen sind die richtige Kalibrierung des Sensors, die Spannungsversorgung (3,3 V vs. 5 V) und die Interpretation der analogen Werte. Mit etwas Geduld lässt sich jedoch ein funktionierendes System aufbauen.


Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


Alkoholsensor Arduino ESP: Atemalkohol messen & LED-Streifen Anzeige in Action

Teileliste (Bill of Materials)

  • Arduino UNO oder kompatibel / ESP32 / ESP8266 D1 Mini
  • MQ-3 Gassensor (Alkoholsensor)
  • LED-Streifen WS2812B (NeoPixel, 5 V, 30 LEDs/m)
  • 220–330 Ω Widerstand für Datenleitung LED
  • Netzteil 5 V / ≥2 A für LED-Streifen
  • Breadboard + Jumperkabel

Aufbau & Schaltung

Der MQ-3 arbeitet mit 5 V. Der analoge Ausgang wird an den ADC des Boards angeschlossen. Der LED-Streifen benötigt eine stabile 5 V-Versorgung. Bei ESPs auf 3,3 V sollte ein Level-Shifter oder mindestens ein Vorwiderstand genutzt werden.

Arduino UNO

Alkoholsensor Arduino: Atemalkohol messen & LED-Streifen Anzeige Schaltplan für Arduino UNO
SignalModul/KomponenteBoard-PinHinweis
VCCMQ-35VVersorgung
GNDMQ-3GNDMasse
AOUTMQ-3A0Analoger Eingang
DINWS2812BD6Mit 220 Ω Widerstand
VCCWS2812B5VExterne 5 V Versorgung
GNDWS2812BGNDGemeinsame Masse

ESP32

Alkoholsensor ESP32: Atemalkohol messen & LED-Streifen Anzeige Schaltplan für ESP32
SignalModul/KomponenteBoard-PinHinweis
VCCMQ-35VVersorgung
GNDMQ-3GNDMasse
AOUTMQ-3GPIO34ADC-fähiger Eingang
DINWS2812BGPIO4Mit 220 Ω Widerstand
VCCWS2812B5VExterne 5 V Versorgung
GNDWS2812BGNDGemeinsame Masse

ESP8266 / D1 Mini

Alkoholsensor: Atemalkohol messen & LED-Streifen Anzeige Schaltplan für D1 Mini ESP8266
SignalModul/KomponenteBoard-PinHinweis
VCCMQ-35VVersorgung
GNDMQ-3GNDMasse
AOUTMQ-3A0Max. 3,3 V beachten
DINWS2812BD4/GPIO2Mit 220 Ω Widerstand
VCCWS2812B5VExterne 5 V Versorgung
GNDWS2812BGNDGemeinsame Masse

Bibliotheken & Installation

  • Adafruit NeoPixel (Arduino Library Manager)

Code für Arduino UNO/Nano

Dieser Code liest den analogen Wert des MQ-3 und zeigt ihn auf dem LED-Streifen an. Im Seriellen Monitor werden die Werte ausgegeben.

#include <Adafruit_NeoPixel.h> // Bibliothek für WS2812B

#define LED_PIN 6 // LED Datenpin D6
#define LED_COUNT 10 // Anzahl LEDs
#define SENSOR_PIN A0 // MQ-3 analoger Ausgang

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // LED-Setup

void setup() {
  Serial.begin(115200); // Serielle Kommunikation starten
  strip.begin(); // LED-Streifen initialisieren
  strip.show(); // Alle LEDs aus
}

void loop() {
  int value = analogRead(SENSOR_PIN); // MQ-3 Wert lesen
  Serial.println(value); // Wert ausgeben

  int ledCount = map(value, 0, 1023, 0, LED_COUNT); // Umrechnen
  strip.clear(); // LEDs löschen

  for (int i = 0; i < ledCount; i++) { // LEDs setzen
    strip.setPixelColor(i, strip.Color(255, 0, 0)); // Rot
  }

  strip.show(); // LEDs aktualisieren
  delay(200); // kleine Pause
}

Code für ESP32

#include <Adafruit_NeoPixel.h> // Bibliothek für WS2812B

#define LED_PIN 4 // GPIO4 für LED-Streifen
#define LED_COUNT 10 // Anzahl LEDs
#define SENSOR_PIN 34 // MQ-3 analoger Ausgang an GPIO34

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // LED-Setup

void setup() {
  Serial.begin(115200); // Serielle Kommunikation starten
  strip.begin(); // LED initialisieren
  strip.show(); // LEDs aus
}

void loop() {
  int value = analogRead(SENSOR_PIN); // Wert lesen
  Serial.println(value); // Wert im Monitor

  int ledCount = map(value, 0, 4095, 0, LED_COUNT); // ESP32 12-Bit ADC
  strip.clear(); // Reset LEDs

  for (int i = 0; i < ledCount; i++) { // LEDs setzen
    strip.setPixelColor(i, strip.Color(0, 255, 0)); // Grün
  }
  strip.show(); // LEDs anzeigen
  delay(200); // Pause
}

Code für ESP8266 / D1 Mini

#include <Adafruit_NeoPixel.h> // Bibliothek für WS2812B

#define LED_PIN D4 // D4/GPIO2
#define LED_COUNT 10 // Anzahl LEDs
#define SENSOR_PIN A0 // MQ-3 analoger Ausgang

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // LED-Setup

void setup() {
  Serial.begin(115200); // Serielle Schnittstelle
  strip.begin(); // LEDs starten
  strip.show(); // LEDs aus
}

void loop() {
  int value = analogRead(SENSOR_PIN); // MQ-3 Wert lesen
  Serial.println(value); // Ausgabe im Monitor

  int ledCount = map(value, 0, 1023, 0, LED_COUNT); // Umrechnung
  strip.clear(); // Reset

  for (int i = 0; i < ledCount; i++) { // LEDs durchgehen
    strip.setPixelColor(i, strip.Color(0, 0, 255)); // Blau
  }
  strip.show(); // Anzeigen
  delay(200); // kurze Pause
}

Troubleshooting

  • Keine LED-Reaktion → Falscher Pin → Pinbelegung prüfen
  • LED flackert → Stromversorgung zu schwach → 5 V Netzteil ≥2 A nutzen
  • Sensorwert bleibt 0 → MQ-3 nicht aufgewärmt → 1–2 Minuten warten
  • Werte immer hoch → MQ-3 falsch angeschlossen → GND/VCC prüfen
  • Kompiliert nicht → Bibliothek fehlt → Adafruit NeoPixel installieren
  • Serielle Ausgabe wirr → Baudrate falsch → Monitor auf 115200 stellen
  • LEDs gehen nicht an → Widerstand in Datenleitung fehlt → 220–330 Ω einfügen
  • MQ-3 am ESP8266 → A0 über 3,3 V → Spannungsteiler nutzen

Projektideen/Erweiterungen

  • Mehrfarbige Anzeige (grün = ok, rot = kritisch)
  • Soundausgabe über Buzzer bei Überschreitung
  • OLED-Display mit exaktem Wert in ppm
  • Logging der Daten in InfluxDB/Grafana
  • WLAN-Anbindung mit MQTT-Übertragung
  • Batterie- oder Powerbank-Betrieb für Mobilität
  • Kombi mit CO2-Sensor für Raumluftanzeige

Weiterführend/Alternativen


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

  • Die beliebtesten Arduino-Projekte von StartHardware
  • Inklusive Schaltplan, Beschreibung und Code
  • Arduino-Schnellstart-Kapitel
  • Kompakter Programmierkurs


0 0 votes
Article Rating
Abonnieren
Benachrichtige mich bei

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

0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
Alle Kommentare anzeigen
0
Ich würde mich über deine Meinung freuen.x