Arduino Nano ESP32 - MQ-3 Alkoholsensor

Dieses Tutorial zeigt Ihnen, wie man den Arduino Nano ESP32 mit dem MQ3-Alkohol-Sensor verwendet, um Ethanol- und Alkoholdampfkonzentrationen zu erkennen und zu messen. Der MQ3-Sensor eignet sich ideal für den Aufbau von Atemalkoholanalysatoren, Alarmsystemen für Alkoholdampf und Instrumenten zur Beurteilung der Luftqualität.

In diesem Tutorial lernen Sie:

Arduino Nano ESP32 mit MQ-3-Alkoholgas-Sensor-Modul

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×MQ3 Alcohol Sensor
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den MQ3-Alkoholsensor

Der MQ3 ist ein Metalloxid-Halbleiter (MOS) Chemiresistor, der das Vorhandensein von Alkohol erkennt, indem er Widerstandsveränderungen in seinem Sensorelement überwacht. Dieser Sensor ist auf die Erkennung von Ethanoldampf spezialisiert und liefert über einen breiten Konzentrationsbereich hinweg eine konsistente Leistung.

Der aktive Bestandteil des Sensors besitzt eine Zinnoxid-Schicht (SnO2), die auf einem Aluminiumoxid-Keramiksubstrat aufgebracht ist. Durch Wärmeaktivierung wird das SnO2-Material gegenüber den umliegenden Alkoholmolekülen reaktiv. Eine Schutzmasche aus Edelstahl umschließt den Sensor und schützt die internen Bauteile, während Gasmoleküle den Zugang zur Detektionskammer ermöglichen.

Typische Anwendungen umfassen selbstgebaute Alkomat-Systeme, Geräte zur Erkennung von Fahruntüchtigkeit, Alkoholdampf-Warnsysteme und Umweltüberwachungsstationen zur Messung von Alkohol in der Luft.

Technische Spezifikationen

  • Betriebsspannung: 5 V Gleichspannung
  • Lastwiderstand: 200 kΩ
  • Heizwiderstand: 33 Ω ± 5%
  • Heizleistung: < 800 mW
  • Sensorwiderstand: 1 MΩ – 8 MΩ
  • Detektionsbereich: 25 – 500 ppm (Teile pro Million)
  • Aufheizzeit: 24–48 Stunden beim ersten Einsatz

Was ist ppm? Der Begriff ppm (Teile pro Million) drückt das Konzentrationsverhältnis der Zielgas-Moleküle zu den Gesamtmolekülen aus. Zum Beispiel bedeuten 500 ppm, dass 500 Alkohol-Moleküle in jedem 1.000.000 Gas-Molekül vorhanden sind, wobei die verbleibenden 999.500 anderen atmosphärischen Bestandteilen darstellen.

Pinbelegung

Das MQ-3-Sensor-Modul bietet vier Anschlussklemmen:

  • VCC-Pin: Mit der +5-V-Stromversorgung verbinden.
  • GND-Pin: Mit dem Masseanschluss (0 V) verbinden.
  • DO-Pin: Der Digitalausgang schaltet auf LOW, wenn der Alkohol den Schwellenwert überschreitet, oder auf HIGH, wenn er darunter liegt. Der Schwellenwert lässt sich über das Potentiometer an Bord einstellen.
  • AO-Pin: Der Analogausgang liefert eine Spannung proportional zur Alkoholkonzentration. Mehr Alkohol erzeugt eine höhere Spannungsausgabe.
MQ3-Alkohol-Sensor-Modul Pinbelegungsdiagramm

Zwei LED-Indikatoren zeigen den visuellen Status:

  • PWR-LED: Leuchtet, wenn das Modul mit Strom versorgt wird.
  • DO-LED: Zeigt den Status des digitalen Ausgangs — leuchtet während der Alkoholerkennung und bleibt ansonsten dunkel.

Wie es funktioniert

Das Detektionsprinzip des MQ-3 beruht auf Widerstandsänderungen in seinem Zinnoxid (SnO2)-Halbleiter:

In sauberer Luft: Durch das Erhitzen haften Sauerstoffmoleküle an der Oberfläche von SnO2, fangen Elektronen ein und bilden eine Verarmungsschicht. Diese eingefangenen Elektronen erzeugen eine Barriere für den Elektronentransport, was zu einem hohen elektrischen Widerstand führt.

Bei Alkoholeinwirkung: Alkoholmoleküle interagieren mit Sauerstoff an der Oberfläche, brechen Bindungen und setzen gefangene Elektronen in das Gitter des Zinn(IV)-Oxids frei. Diese Elektronenfreisetzung erhöht die Leitfähigkeit dramatisch – höhere Alkoholkonzentrationen führen zu niedrigeren Widerstandswerten.

Der Sensor bietet zwei Ausgangsmodi:

Digitalausgang (DO-Pin):

  • Ein eingebautes Trimmpotentiometer steuert die Detektionsschwelle.
  • Die Alkoholerkennung oberhalb des Schwellenwerts setzt DO auf LOW und aktiviert die LED-Anzeige.
  • Die Detektion unterhalb der Schwelle hält DO auf HIGH und die LED ist aus.

Analogausgang (AO-Pin):

  • Die Spannung ist direkt proportional zur Alkoholkonzentration.
  • Erhöhter Alkoholdampf führt zu einer höheren Spannungsausgabe.
  • Verringerter Alkoholdampf führt zu einer geringeren Spannungsausgabe.
  • Hinweis: Das Trimm-Potentiometer beeinflusst nur den digitalen Schwellenwert, nicht die analoge Ausgangsspannung.

Aufwärmen und Kalibrierung

Anforderungen an die Vorheizung

Der MQ-3-Sensor benötigt eine ordnungsgemäße Erwärmung für zuverlässige Messungen:

Erstinbetriebnahme oder längere Lagerung (30+ Tage): Halten Sie die kontinuierliche Erwärmung 24–48 Stunden aufrecht, um den Sensor zu stabilisieren und Messgenauigkeit sicherzustellen.

Bei kürzlicher Nutzung: Eine kurze Aufwärmphase von 5–10 Minuten ist ausreichend. Anfangswerte können zunächst hoch erscheinen, normalisieren sich jedoch schnell.

Um den Sensor zu erwärmen, schließen Sie VCC und GND an 5 V bzw. Masse an – entweder über eine dedizierte Stromversorgung oder direkt an die Versorgungspins Ihres Arduino Nano ESP32.

Schwellenwerte finden

Gassensoren mit Heizelementen wie dem MQ-3 können nach der Lagerung Kalibrierungsabweichungen aufweisen. Für Projekte mit Atemalkoholmessgeräten legen Sie durch diese Kalibrierungssequenz geeignete Schwellenwerte fest:

  1. Messung der Baseline bei sauberer Luft: Führe den Sensor in frischer Luft aus, ohne Alkohol. Notiere den analogen Wert (typischerweise 100-150).
  2. Test mit Alkoholdampf: Positioniere Isopropanol oder Handdesinfektionsmittel in der Nähe des Sensors (berühre ihn nicht), damit der Dampf den Detektor erreicht. Notiere die erhöhten Messwerte (üblich 400-900, abhängig von der Dampfkonzentration).
  3. Definition der Detektionsschwellenwerte: Verwende deine aufgezeichneten Daten, um Detektionszonen festzulegen:
  • Nüchterner Bereich: Werte unter Basiswert + 20 (Beispiel: < 120)
  • Mittlerer Bereich: Werte im mittleren Bereich (Beispiel: 120-400)
  • Hoher Bereich: Werte, die das moderate Limit überschreiten (Beispiel: > 400)

Wichtig: Einzelne Sensoreinheiten und Umweltbedingungen erzeugen unterschiedliche Werte. Kalibrieren Sie immer mit Ihrer spezifischen Hardware, bevor Sie sie einsetzen.

Festlegen der digitalen Schwelle

Konfigurieren Sie den Aktivierungspunkt des DO-Pins mithilfe des Potentiometers des Moduls:

  1. Setze den Sensor dem Alkoholdampf aus.
  2. Drehe das Potentiometer im Uhrzeigersinn, bis die LED aktiviert wird.
  3. Drehe das Potentiometer allmählich gegen den Uhrzeigersinn, bis die LED sich deaktiviert.
  4. Der digitale Schwellenwert ist jetzt kalibriert.

Verdrahtungsdiagramm

Das MQ-3-Modul bietet sowohl digitale als auch analoge Ausgänge. Wählen Sie entweder einen Ausgang aus oder verwenden Sie beide gleichzeitig, je nach den Anforderungen Ihrer Anwendung.

  • Das Verdrahtungsdiagramm zwischen Arduino Nano ESP32 und dem MQ-3-Alkoholsensor bei Stromversorgung über den USB-Port.
Arduino Nano ESP32 MQ-3 Alkoholsensor-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

MQ3 Alcohol SensorArduino Nano ESP32
VCC5V
GNDGND
DOD2
AOA5
  • Das Verdrahtungsdiagramm zwischen dem Arduino Nano ESP32 und dem MQ-3-Alkoholsensor, wenn die Stromversorgung über den Vin-Pin erfolgt.
Arduino Nano ESP32 Alkoholdetektor-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino Nano ESP32 Code - Digitalausgang-Auslesen

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano-esp32/arduino-nano-esp32-mq3-alcohol-sensor */ #define PIN_DO D2 // The Arduino Nano ESP32's pin connected to the DO pin of the MQ3 sensor void setup() { // Initialize serial communication Serial.begin(9600); // Initialize the Arduino Nano ESP32's pin as an input pinMode(PIN_DO, INPUT); // Warm-up message Serial.println("Warming up the MQ3 sensor"); delay(20000); // 20 seconds warm-up time for recently used sensor } void loop() { int gasState = digitalRead(PIN_DO); if (gasState == HIGH) { Serial.println("Alcohol is NOT detected"); } else { Serial.println("Alcohol is detected"); } delay(1000); }

Schnelle Schritte

  • Wenn Sie Arduino Nano ESP32 zum ersten Mal verwenden, sehen Sie sich wie man die Umgebung für Arduino Nano ESP32 in der Arduino IDE einrichtet an.
  • Kopieren Sie den obigen Code in die Arduino IDE.
  • Klicken Sie auf die Hochladen-Schaltfläche, um Arduino Nano ESP32 zu programmieren.
  • Bringen Sie eine Alkoholdampfquelle in die Nähe des MQ-3-Sensors (Händedesinfektionsmittel oder Isopropanol auf Baumwolle funktionieren gut).
  • Sehen Sie sich die Detektionsergebnisse im Serial Monitor an.
COM6
Send
Alcohol is NOT detected Alcohol is NOT detected Alcohol is NOT detected Alcohol is detected Alcohol is detected Alcohol is detected Alcohol is detected Alcohol is NOT detected Alcohol is NOT detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Beachten Sie, dass Sie das Potentiometer einstellen müssen, wenn der LED-Status ständig ein- oder ausgeschaltet bleibt, um die Empfindlichkeit des Sensors für eine genaue Erkennung fein abzustimmen.

Arduino Nano ESP32 Code - Analoge Ausgabe auslesen

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano-esp32/arduino-nano-esp32-mq3-alcohol-sensor */ #define PIN_AO A5 // The Arduino Nano ESP32's pin connected to the AO pin of the MQ3 sensor void setup() { // Initialize serial communication Serial.begin(9600); // Set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); // Warm-up message Serial.println("Warming up the MQ3 sensor"); delay(20000); // 20 seconds warm-up time for recently used sensor } void loop() { int gasValue = analogRead(PIN_AO); Serial.print("MQ3 sensor AO value: "); Serial.println(gasValue); delay(1000); }

Schnelle Schritte

  • Kopieren Sie den obenstehenden Code in die Arduino-IDE
  • Klicken Sie auf die Hochladen-Schaltfläche, um den Arduino Nano ESP32 zu programmieren
  • Führen Sie dem Sensor Alkoholdampf zu (Handdesinfektionsmittel- oder Isopropylalkohol-Dämpfe)
  • Überwachen Sie die Werte im Serial Monitor
COM6
Send
MQ3 sensor AO value: 120 MQ3 sensor AO value: 125 MQ3 sensor AO value: 128 MQ3 sensor AO value: 450 MQ3 sensor AO value: 620 MQ3 sensor AO value: 850 MQ3 sensor AO value: 920 MQ3 sensor AO value: 980 MQ3 sensor AO value: 950 MQ3 sensor AO value: 680 MQ3 sensor AO value: 420
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Mit digitalen oder analogen Ausgängen können Sie eine schwellenwertbasierte Logik erstellen, um Alarme auszulösen, Warnanzeigen zu steuern oder Daten für Anwendungen mit Atemalkoholtests zu erfassen.

Arduino Nano ESP32 Code - Atemalkoholtester mit Schwellwert-Erkennung

Dieser Code demonstriert die Auswertung des analogen Ausgangs anhand kalibrierter Schwellenwerte zur Bestimmung des Alkoholkonsums.

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano-esp32/arduino-nano-esp32-mq3-alcohol-sensor */ #define PIN_AO A5 // The Arduino Nano ESP32's pin connected to the AO pin of the MQ3 sensor // Threshold values - REPLACE THESE with your calibrated values! // Run calibration first to find these values for your sensor #define SOBER_THRESHOLD 120 // Below this = sober #define DRUNK_THRESHOLD 400 // Above this = drunk, between = drinking but within limits void setup() { // Initialize serial communication Serial.begin(9600); // Set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); // Warm-up message Serial.println("MQ3 Alcohol Sensor - Breathalyzer"); Serial.println("Warming up sensor..."); delay(20000); // 20 second warm-up for recently used sensor Serial.println("Sensor ready!"); Serial.println(); } void loop() { int gasLevel = analogRead(PIN_AO); // Read the analog value from sensor // Print sensor value Serial.print("Sensor Value: "); Serial.print(gasLevel); Serial.print(" | Status: "); // Determine status based on thresholds if (gasLevel < SOBER_THRESHOLD) { Serial.println("Stone Cold Sober"); } else if (gasLevel >= SOBER_THRESHOLD && gasLevel < DRUNK_THRESHOLD) { Serial.println("Drinking but within limits"); } else { Serial.println("DRUNK"); } delay(1000); // Wait 1 second between readings }

Schnelle Schritte

  • Wesentlich: Kalibrieren Sie zunächst Ihren spezifischen Sensor mit dem Beispiel der analogen Messung, um geeignete Schwellenwerte zu finden.
  • Ersetzen Sie die Konstanten SOBER_THRESHOLD und DRUNK_THRESHOLD im Code durch Ihre kalibrierten Werte.
  • Laden Sie den geänderten Code auf das Arduino Nano ESP32 hoch.
  • Testen Sie, indem Sie es dem Alkoholdampf aussetzen (Isopropylalkohol oder Dampf von Handdesinfektionsmitteln).
  • Beobachten Sie die Statusmeldungen im seriellen Monitor.
COM6
Send
Sensor Value: 115 | Status: Stone Cold Sober Sensor Value: 118 | Status: Stone Cold Sober Sensor Value: 350 | Status: Drinking but within limits Sensor Value: 480 | Status: DRUNK Sensor Value: 520 | Status: DRUNK Sensor Value: 290 | Status: Drinking but within limits Sensor Value: 125 | Status: Stone Cold Sober
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Haftungsausschluss: Dies ist ausschließlich ein Bildungsprojekt. Verwenden Sie dieses Gerät niemals als gesetzlich zulässigen Atemalkoholtester oder zur Beurteilung der Fahrtüchtigkeit.

※ Notiz:

Dieses Tutorial verwendet die Funktion analogRead(), um Werte von einem ADC (Analog-Digital-Wandler) zu lesen, der mit einem Sensor oder Bauteil verbunden ist. Der ADC des Arduino Nano ESP32 ist für Projekte geeignet, die keine hohe Genauigkeit erfordern. Allerdings sollten Sie bei Projekten, die präzise Messungen erfordern, Folgendes beachten:

  • Der ADC des Arduino Nano ESP32 ist nicht völlig genau und könnte eine Kalibrierung für korrekte Ergebnisse erfordern.
  • Jedes Arduino Nano ESP32-Board kann sich leicht unterscheiden, daher ist eine Kalibrierung für jedes einzelne Board erforderlich.
  • Die Kalibrierung kann anspruchsvoll sein, insbesondere für Anfänger, und liefert möglicherweise nicht immer die gewünschten exakten Ergebnisse.

Für Projekte, die eine hohe Genauigkeit erfordern, sollten Sie die Verwendung eines externen ADC (z. B. ADS1115) mit dem Arduino Nano ESP32 in Betracht ziehen oder die Verwendung eines anderen Arduino-Boards, wie dem Arduino Uno R4 WiFi, das über einen zuverlässigeren ADC verfügt. Wenn Sie den ADC des Arduino Nano ESP32 dennoch kalibrieren möchten, lesen Sie den ESP32 ADC Calibration Driver.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!