Arduino UNO Q - MQ3 Alkoholsensor
Der MQ3-Alkoholsensor erkennt Ethanoldämpfe in der Luft. Er bietet sowohl einen digitalen Ausgang (Alkohol/kein Alkohol) als auch einen analogen Ausgang (Alkoholkonzentrationsstufe). Mit Bridge und Telegram kann Ihr Arduino UNO Q sofortige Alkoholvergiftungswarnungen an Ihr Telefon senden und sogar als Alkoholtestgerät fungieren.
In diesem Tutorial erfahren Sie:
- Wie der MQ3-Alkoholsensor funktioniert und warum er Aufwärmzeit benötigt
- Wie Sie den MQ3 mit dem Arduino UNO Q MCU verdrahten
- Wie man sowohl die digitalen (DO) als auch die analogen (AO) Ausgänge liest
- Wie man mit Schwellenwert-Stufen ein einfaches Alkoholtestgerät auf dem Arduino UNO Q erstellt
- Wie man Bridge verwendet, um den Alkoholzustand und Ereignisse zur Linux-Seite (Python) freizulegen
- Wie man Telegram-Alkoholvergiftungswarnungen vom Arduino UNO Q erhält
- Wie man OpenClaw auf dem Arduino UNO Q mit dem MQ3-Alkoholsensor verwendet

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über den MQ3 Alkoholsensor
Der MQ3-Alkoholsensor ist ein MOS-Sensor (Metalloxid-Halbleiter), der Ethanoldämpfe (Alkohol) erkennt. Sein internes Zinnoxid-Sensorelement (SnO2) ändert seinen Widerstand bei Anwesenheit von Alkoholdämpfen – eine höhere Alkoholkonzentration senkt den Widerstand, was die Ausgangsspannung erhöht.

Pinbelegung
- VCC-Pin: 5V Stromversorgung (das Heizelement benötigt 5V)
- GND-Pin: Masse
- DO-Pin: Digitaler Ausgang — HIGH = kein Alkohol, LOW = Alkohol erkannt. Die Empfindlichkeit wird durch das Potentiometer auf der Platine angepasst.
- AO-Pin: Analoger Ausgang — höherer Wert = höhere Alkoholkonzentration
LED-Indikatoren
- PWR-LED: Stromversorgungsanzeige
- DO-LED: Leuchtet auf, wenn Alkohol erkannt wird (DO-Pin LOW)
Technische Spezifikationen
- Betriebsspannung: 5V DC
- Heizwiderstand: 33 Ω ± 5%
- Heizleistung: < 800 mW
- Erkennungsbereich: 25 – 500 ppm (Teile pro Million)
Aufwärmung erforderlich
- Erste Verwendung oder nach längerer Lagerung (>1 Monat): 24–48 Stunden aufwärmen
- Normale Verwendung: 5–10 Minuten; erste Messwerte können erhöht sein und stabilisieren sich
Der Code enthält eine 20-Sekunden-Aufwärmverzögerung in setup() als minimale Arbeitsverzögerung.
※ Notiz:
Der MQ3 AO-Pin kann bis zu ~5V ausgeben, wenn er von 5V versorgt wird. Die Arduino UNO Q MCU ADC-Referenz beträgt 3,3V – AO-Werte über 3,3V sättigen sich bei 4095. Verwenden Sie den DO-Pin als primäre Erkennungsmethode. AO-Messwerte dienen nur als relative Intensitätsindikatoren.
Kalibrieren der Alkoholtestgerät-Schwellenwerte
Die Alkoholtestgerät-Schwellenwerte hängen von Ihrem spezifischen Sensor und der Umgebung ab. Zum Kalibrieren:
- Saubere Luft-Basislinie: Betreiben Sie den Sensor in sauberer Luft und notieren Sie den AO-Wert (normalerweise 300–600 im 12-Bit-Bereich nach dem Aufwärmen)
- Test mit Alkoholdämpfen: Verwenden Sie Isopropylalkohol oder Handdesinfektionsmittel (nur Dämpfe – geben Sie keine Flüssigkeit auf den Sensor) und notieren Sie den AO-Wert
- Schwellenwerte setzen: Definieren Sie SOBER_THRESHOLD knapp über Ihrer Basislinie für saubere Luft; setzen Sie DRUNK_THRESHOLD basierend auf Alkoholvergiftungs-Messwerten
Der Beispiel-Code verwendet SOBER_THRESHOLD = 480 und DRUNK_THRESHOLD = 1600 – ersetzen Sie diese durch Ihre kalibrierten Werte.
Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
| MQ3 Alkoholsensor Pin | Arduino UNO Q MCU |
|---|---|
| VCC | 5V |
| GND | GND |
| DO | D2 |
| AO | A0 |
Programmierung für MQ3 Alkoholsensor
- Konfigurieren Sie den DO-Pin als digitalen Eingang:
- Lesen Sie beide Ausgänge:
- Prüfen Sie auf Alkohol vom digitalen Ausgang:
Arduino UNO Q Code
Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten:
- Der STM32 MCU wärmt den Sensor 20 Sekunden lang auf, liest dann alle 500 ms sowohl DO als auch AO
- Der Qualcomm MPU führt Debian Linux mit Wi-Fi aus – in diesem Abschnitt wird nur der MCU programmiert. Ein späterer Abschnitt zeigt, wie beide Prozessoren über Bridge zusammenarbeiten.
Schnelle Schritte
Erste Verwendung mit Arduino UNO Q? Folgen Sie zunächst dem Getting Started with Arduino UNO Q Tutorial.
- Verbinden: Verdrahten Sie den MQ3-Alkoholsensor mit dem Arduino UNO Q MCU wie im Schaltplan dargestellt.
- Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
- Neue App erstellen: Klicken Sie auf die Schaltfläche Create New App.

- Geben Sie der App einen Namen, z.B.: AlcoholSensor
- Klicken Sie Create, um zu bestätigen.

- Sketch einfügen: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Hochladen: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.

- Warten Sie auf die 20-Sekunden-Aufwärm-Nachricht im Serial Monitor.
- Halten Sie vorsichtig Isopropylalkohol-Dämpfe neben den Sensor (verschütten Sie keine Flüssigkeit darauf) und beobachten Sie die Serial Monitor-Ausgabe.
- Passen Sie das Potentiometer an, wenn die DO-LED nicht wie erwartet reagiert.
App Lab-Konsolenausgabe
Arduino UNO Q Code — Alkoholtestgerät
Verwenden Sie den analogen Ausgang (AO), um die Alkoholintensität zu messen und das Ergebnis in Stufen zu klassifizieren: Nüchtern, Im Bereich, oder Hoch.
※ Notiz:
Kalibrieren Sie die Schwellenwerte für Ihren spezifischen Sensor. Ersetzen Sie SOBER_THRESHOLD und DRUNK_THRESHOLD mit Werten, die Sie von Ihrem eigenen Sensor in sauberer Luft und während Alkoholvergiftung gemessen haben.
App Lab-Konsolenausgabe
Bridge: Linux + MCU
Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, damit die Linux-Seite den Alkoholzustand, den Intensitätswert und die Alkoholtestgerät-Stufe über Bridge auslesen kann:
- Der Alkoholsensor ist mit dem MCU verbunden – der MCU wärmt sich 20 Sekunden lang auf und liest dann alle 500 ms DO und AO
- Der MPU kann Sensor-Pins nicht direkt lesen – er ruft Bridge-Funktionen auf, um den Zustand, den Wert, die Stufe oder Ereignisse zu erhalten
- Der MPU hat Wi-Fi – es führt vollständiges Debian Linux aus und kann sofortige Telegram-Warnungen senden, wenn Alkohol erkannt wird
- Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
- ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT durch den Router – öffnen Sie diese nie in Benutzer-Code
MCU Code (Bridge)
Python Code (Bridge)
Schnelle Schritte
- Verbinden: Verdrahten Sie den MQ3-Alkoholsensor mit dem Arduino UNO Q wie im Schaltplan dargestellt.
- Arduino App Lab öffnen und erstellen Sie eine neue App namens AlcoholSensorBridge.
- MCU-Sketch einfügen in sketch/sketch.ino.
- Python-Code einfügen in die Python-Datei.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Hochladen: Klicken Sie auf die Run-Schaltfläche. Warten Sie, bis der Aufwärmzeitraum vorbei ist.

- Setzen Sie den Sensor Alkoholdämpfen aus und beobachten Sie das Ereignis in beiden Konsolen.
App Lab-Konsolenausgabe
Telegram
Erhalten Sie sofortige Telegram-Alkoholvergiftungswarnungen vom Arduino UNO Q und fragen Sie den Sensorstatus, die Intensität oder die Alkoholtestgerät-Stufe aus der Ferne ab.
MCU-Sketch: Behalten Sie denselben MCU-Sketch aus dem vorherigen Bridge-Abschnitt.
Python Code (Telegram)
Schnelle Schritte
- Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN mit Ihrem tatsächlichen Bot-Token von BotFather.
- Ersetzen Sie YOUR_CHAT_ID mit Ihrer Telegram-Chat-ID.
- Fügen Sie diesen Python-Code in die Python-Datei Ihrer App ein (behalten Sie denselben MCU-Sketch bei).
- Klicken Sie auf die Run-Schaltfläche – warten Sie auf das Aufwärmen und setzen Sie dann den Sensor Alkoholdämpfen aus, um die Telegram-Warnung auszulösen.
App Lab-Konsolenausgabe
ArduinoBot
OpenClaw
You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial
Projektideen
Sie können viele nützliche Projekte mit dem MQ3-Alkoholsensor und dem Arduino UNO Q erstellen:
- Intelligentes Alkoholtestgerät mit Telegram-Bericht: Blasen Sie neben den Sensor und erhalten Sie automatisch eine Telegram-Nachricht mit Ihrer Alkoholtestgerät-Stufe (nüchtern / im Bereich / hoch) und dem rohen AO-Intensitätswert – nützlich für eine Demonstration oder ein Bildungsprojekt
- Fahrzeugzündungsverriegelung: Kombinieren Sie den Alkoholsensor mit einem Relaismodul – wenn der Sensor Alkohol über dem DRUNK_THRESHOLD erkennt, verhindert das Relais, dass der Zündkreis geschlossen wird, und eine Telegram-Warnung wird an das Telefon eines Betreuers gesendet
- Partysicherheitsmonitor: Installieren Sie den Sensor in einem Raum – wenn Alkohol über einem bestimmten Niveau für mehr als 5 aufeinanderfolgende Messwerte erkannt wird, sendet der MPU eine Telegram-Benachrichtigung zur Überwachung der Umgebung
- Alkoholvergiftungs-Expositions-Logger: Protokollieren Sie den AO-Wert und die Alkoholtestgerät-Stufe jede Minute in einer CSV-Datei auf der Linux-Seite – senden Sie eine tägliche Telegram-Zusammenfassung mit Spitzenmesswerten und Zeitstempeln
- Multi-Sensor-Sicherheitssystem: Kombinieren Sie den Alkoholsensor mit dem Gas-Sensor-Tutorial – wenn beide gleichzeitig gefährliche Stufen erkennen, senden Sie eine kombinierte Telegram-Warnung mit beiden Messwerten
Fordern Sie sich selbst heraus
Bereit, mit dem MQ3-Alkoholsensor auf dem Arduino UNO Q weiter zu gehen? Versuchen Sie diese Herausforderungen:
- Einfach: Fügen Sie einen /history Telegram-Befehl hinzu, der die letzten 5 Alkoholvergiftungs-Erkennungsereignisse mit ihren AO-Werten und Alkoholtestgerät-Stufen zurückgibt, die in einer Python-Liste gespeichert sind.
- Mittel: Implementieren Sie eine Abkühlungszeit: Nach dem Senden einer alcohol_detected-Warnung warten Sie mindestens 60 Sekunden, bevor Sie eine weitere Warnung senden – auch wenn der Sensor weiterhin Alkohol erkennt – um Telegram-Spam zu vermeiden.
- Fortgeschritten: Erstellen Sie einen automatischen Alkoholtestgerät-Logger – Python speichert bei jedem Erkennungsereignis einen zeitgestempelten Eintrag (Datum, Uhrzeit, AO-Wert, Stufe) in einer JSON-Datei auf Linux, und ein /report Telegram-Befehl gibt die letzten 10 Einträge als lesbares Log zurück.