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.

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

Signal | Modul/Komponente | Board-Pin | Hinweis |
---|---|---|---|
VCC | MQ-3 | 5V | Versorgung |
GND | MQ-3 | GND | Masse |
AOUT | MQ-3 | A0 | Analoger Eingang |
DIN | WS2812B | D6 | Mit 220 Ω Widerstand |
VCC | WS2812B | 5V | Externe 5 V Versorgung |
GND | WS2812B | GND | Gemeinsame Masse |
ESP32

Signal | Modul/Komponente | Board-Pin | Hinweis |
---|---|---|---|
VCC | MQ-3 | 5V | Versorgung |
GND | MQ-3 | GND | Masse |
AOUT | MQ-3 | GPIO34 | ADC-fähiger Eingang |
DIN | WS2812B | GPIO4 | Mit 220 Ω Widerstand |
VCC | WS2812B | 5V | Externe 5 V Versorgung |
GND | WS2812B | GND | Gemeinsame Masse |
ESP8266 / D1 Mini

Signal | Modul/Komponente | Board-Pin | Hinweis |
---|---|---|---|
VCC | MQ-3 | 5V | Versorgung |
GND | MQ-3 | GND | Masse |
AOUT | MQ-3 | A0 | Max. 3,3 V beachten |
DIN | WS2812B | D4/GPIO2 | Mit 220 Ω Widerstand |
VCC | WS2812B | 5V | Externe 5 V Versorgung |
GND | WS2812B | GND | Gemeinsame 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