ESP32 - MQ3 Alkohol Sensor

Diese Anleitung führt Sie durch die Verbindung des MQ3 Alkohol Sensors mit ESP32, um Ethanol- und Alkoholdampfkonzentrationen in der Umgebungsluft zu erkennen und zu messen. Der MQ3 Sensor dient als grundlegende Komponente für Alkoholtester-Projekte, Alkoholerkennungssysteme und Luftqualitätsüberwachungsanwendungen.

In diesem Leitfaden behandeln wir:

ESP32 mit MQ3 Alkohol Gas Sensor Modul

Benötigte Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×(Alternativ) ESP32 Uno-form board
1×(Alternativ) ESP32 S3 Uno-form board
1×USB Kabel Type-C
1×MQ3 Alkohol Sensor
1×Breadboard (Steckplatine)
1×Jumper Wires (Verbindungskabel)
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
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 Alkohol Sensor

Als Chemiresistor klassifiziert, verwendet der MQ3 Metal Oxide Semiconductor (MOS) Technologie, um Alkohol durch Widerstandsveränderungen in seiner Erkennungsschicht zu detektieren. Dieser Sensor zeigt außergewöhnliche Empfindlichkeit gegenüber Ethanoldampf bei verschiedenen Konzentrationsstufen.

Das Herz des Sensors besteht aus Zinndioxid (SnO2), das auf ein Aluminiumoxid-Keramiksubstrat aufgebracht ist. Das Erhitzen dieses Materials ermöglicht es, mit Alkoholmolekülen zu interagieren. Ein schützender Edelstahlfilter (Explosionsschutzgitter) umhüllt das Sensorelement und schützt das Heizelement, während gleichzeitig die Gasdiffusion in die Messkammer ermöglicht wird.

Häufige Anwendungen umfassen Alkohltestergeräte, Alkohol-Detektionsausrüstung für das Fahren unter Alkoholeinfluss, Alkoholalarmanlagen und Umgebungs-Alkohldampfüberwachung.

Technische Spezifikationen

  • Betriebsspannung: 5V DC
  • Lastwiderstand: 200 KΩ
  • Heizwiderstand: 33Ω ± 5%
  • Heizleistung: < 800mW
  • Messwiderstand: 1 MΩ – 8 MΩ
  • Erkennungsbereich: 25 – 500 ppm (parts per million)
  • Vorheizzeit: 24-48 Stunden bei der ersten Verwendung

Über ppm: Parts-per-million (ppm) drückt das Konzentrationsverhältnis von Zielmolekülen zu Gesamtgasmolekülen aus. Zum Beispiel bedeutet ein 500 ppm Messwert, dass 500 Alkoholmoleküle pro 1.000.000 Gesamtmolekülen existieren, wobei 999.500 andere atmosphärische Bestandteile sind.

Pinout

Das MQ3 Sensor Modul verfügt über vier Anschlusspins:

  • VCC Pin: An +5V Stromversorgung anschließen.
  • GND Pin: An Masse (0V) anschließen.
  • DO Pin: Digital Output—wird LOW wenn Alkohol den Schwellenwert überschreitet, andernfalls HIGH. Schwellenwert über das eingebaute Potentiometer einstellbar.
  • AO Pin: Analog Output—Spannung variiert mit Alkoholkonzentration. Höherer Alkoholgehalt erzeugt höhere Spannung.
MQ3 Alkohol Sensor Modul Pinout Diagramm

Visuelle Indikatoren umfassen zwei LEDs:

  • PWR-LED: Leuchtet auf, wenn das Modul Strom erhält.
  • DO-LED: Spiegelt den Digital Output Zustand—leuchtet während Alkoholerkennung, bleibt dunkel andernfalls.

Funktionsweise

Der MQ3 arbeitet durch Widerstandsänderungen in seinem Zinndioxid (SnO2) Halbleitermaterial:

Saubere Luft Zustand: Das Erhitzen des SnO2 bewirkt, dass Sauerstoffmoleküle an seiner Oberfläche anhaften, Elektronen einfangen und eine Verarmungsschicht bilden. Diese Elektroneneinfangung erzeugt eine Leitfähigkeitsbarriere und erhält hohen Widerstand aufrecht.

Alkoholpräsenz: Alkoholmoleküle reagieren mit Oberflächensauerstoff, brechen Bindungen auf und geben eingefangene Elektronen zurück in das Zinndioxid frei. Dies steigert die Leitfähigkeit—höhere Alkoholwerte bedeuten niedrigeren Widerstand.

Der Sensor bietet zwei Ausgabemodi:

Digital Output (DO Pin):

  • Schwellenwerteinstellung über eingebautes Potentiometer.
  • DO gibt LOW aus (LED an) wenn Alkohol den Schwellenwert überschreitet.
  • DO gibt HIGH aus (LED aus) wenn Alkohol unter dem Schwellenwert bleibt.

Analog Output (AO Pin):

  • Spannungsausgang proportional zur Alkoholkonzentration.
  • Erhöhter Alkohol = erhöhte Spannungsausgabe.
  • Verringerter Alkohol = verringerte Spannungsausgabe.
  • Hinweis: Potentiometer beeinflusst nur Digital Output, nicht die Analogmessungen.

Aufwärmung und Kalibrierung

Vorheizanforderungen

Der MQ3 erfordert Aufheizung vor der Erzeugung genauer Messungen:

  • Erste Verwendung oder lange Lagerung (30+ Tage): Stromversorgung für 24-48 Stunden aufrechterhalten für Sensorstabilisierung und Messgenauigkeit.
  • Häufige Verwendung: Eine 5-10 Minuten Aufwärmung genügt. Frühe Messwerte können Spitzen zeigen, stabilisieren sich aber.

Verbinden Sie einfach VCC und GND mit 5V Stromversorgung oder den Stromanschlüssen Ihres ESP32 für die Aufwärmzeit.

Bestimmung von Schwellenwerten

Heizungsbasierte Sensoren wie der MQ3 können während der Lagerung driften. Stellen Sie genaue Alkoholtester-Schwellenwerte durch diese Kalibrierung fest:

  1. Saubere Luft Basis: Betreiben Sie den Sensor in frischer Luft und notieren Sie Analogwerte (typischerweise 100-150).
  2. Alkoholexposition: Positionieren Sie Isopropylalkohol oder Handdesinfektionsmittel in der Nähe (nicht berührend) des Sensors und lassen Sie nur Dämpfe den Sensor erreichen. Notieren Sie die erhöhten Messwerte (üblicherweise 400-900 abhängig von der Dampfstärke).
  3. Bereiche festlegen: Verwenden Sie die notierten Werte um Zonen zu definieren:
  • Nüchtern Zustand: Unter Basis + 20 (z.B., < 120)
  • Leichter Konsum: Mittlere Bereichswerte (z.B., 120-400)
  • Starker Konsum: Über moderatem Schwellenwert (z.B., > 400)

Kritisch: Sensoreigenschaften variieren zwischen Geräten und Umgebungen. Kalibrieren Sie immer mit Ihrer spezifischen Hardware vor der Verwendung.

Einstellung des Digital Schwellenwerts

Stellen Sie den DO Pin Auslösepegel mit dem Trimmpotenziometer ein:

  1. Setzen Sie den Sensor Alkoholdampf aus.
  2. Drehen Sie das Potentiometer im Uhrzeigersinn bis die LED aktiviert wird.
  3. Drehen Sie gegen den Uhrzeigersinn langsam bis die LED gerade deaktiviert wird.
  4. Der Schwellenwert ist jetzt kalibriert.

Schaltplan

Das MQ3 Modul bietet beide Ausgangspins. Verwenden Sie einen oder beide je nach Ihren Projektanforderungen.

MQ3 Alkohol SensorESP32
VCC3.3V
GNDGND
DOGPIO 19
AOGPIO 36 (ADC0)
ESP32 und MQ3 Alkohol Sensor Schaltplan mit Pin-Verbindungen

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

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

ESP32 Code - Digital Output Lesen

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser 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/esp32/esp32-mq3-alcohol-sensor */ // Define the pin for digital output from the sensor #define PIN_DO 14 // ESP32 pin GPIO14 connected to DO pin of MQ3 sensor void setup() { // Initialize serial communication at 9600 baud rate Serial.begin(9600); // Set the DO pin as an input pinMode(PIN_DO, INPUT); // Give the MQ3 sensor time to warm up (20 seconds) Serial.println("Warming up the MQ3 sensor..."); delay(20000); // Wait 20 seconds for sensor warm-up Serial.println("MQ3 sensor is ready!"); } void loop() { // Read the digital output from the sensor int alcoholState = digitalRead(PIN_DO); // Check if alcohol is detected if (alcoholState == LOW) { Serial.println("Alcohol is detected"); } else { Serial.println("Alcohol is NOT detected"); } delay(1000); // Wait 1 second before next reading }

Schnelle Schritte

  • Falls Sie ESP32 zum ersten Mal verwenden, siehe Einrichtung der Umgebung für ESP32 in Arduino IDE.
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit Arduino IDE
  • Klicken Sie auf den Upload Button in Arduino IDE um den Code auf ESP32 hochzuladen
  • Platzieren Sie eine Alkoholdampfquelle in der Nähe des MQ3 Sensors (Handdesinfektionsmittel oder Reinigungsalkohol auf Watte funktioniert gut)
  • Sehen Sie das Ergebnis im Serial Monitor
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  

Hinweis: Falls die Messwerte nicht mit der Realität übereinstimmen (Fehlauslösungen oder verpasste Erkennungen), justieren Sie das Potentiometer des Moduls. Im Uhrzeigersinn erhöht die Empfindlichkeit; gegen den Uhrzeigersinn verringert sie. Feineinstellung bis sich die Genauigkeit verbessert.

ESP32 Code - Analog Output Lesen

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser 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/esp32/esp32-mq3-alcohol-sensor */ // Define the pin for analog output from the sensor #define PIN_AO 36 // ESP32 pin GPIO36 (ADC0) connected to AO pin of MQ3 sensor void setup() { // Initialize serial communication at 9600 baud rate Serial.begin(9600); // Give the MQ3 sensor time to warm up (20 seconds) Serial.println("Warming up the MQ3 sensor..."); delay(20000); // Wait 20 seconds for sensor warm-up Serial.println("MQ3 sensor is ready!"); } void loop() { // Read the analog output from the sensor int alcoholValue = analogRead(PIN_AO); // Print the analog value to Serial Monitor Serial.print("MQ3 sensor AO value: "); Serial.println(alcoholValue); delay(1000); // Wait 1 second before next reading }

Schnelle Schritte

  • Kopieren Sie den obigen Code und öffnen Sie ihn mit Arduino IDE
  • Klicken Sie auf den Upload Button in Arduino IDE um den Code auf ESP32 hochzuladen
  • Führen Sie Alkoholdampf zum Sensor (Handdesinfektionsmittel oder Isopropylalkohol)
  • Überprüfen Sie das Ergebnis 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 Digital oder Analog Output können Sie Schwellenlogik implementieren, um Alarme auszulösen, Warnlichter zu aktivieren oder Daten für Alkoholtester-Anwendungen zu protokollieren.

※ Notiz:

Diese Anleitung verwendet die analogRead() Funktion um Werte von einem ADC (Analog-to-Digital Converter) zu lesen, der mit einem Sensor oder Bauteil verbunden ist. Der ADC des ESP32 ist für Projekte geeignet, die keine hohe Genauigkeit erfordern. Für Projekte, die präzise Messungen benötigen, beachten Sie jedoch folgende Punkte:

  • Der ADC des ESP32 ist nicht perfekt genau und könnte eine Kalibrierung für korrekte Ergebnisse erfordern. Jede ESP32-Platine kann leicht variieren, daher ist eine Kalibrierung für jede einzelne Platine notwendig.
  • Die Kalibrierung kann herausfordernd sein, besonders für Anfänger, und liefert möglicherweise nicht immer die exakten Ergebnisse, die Sie wünschen.

Für Projekte, die hohe Präzision erfordern, erwägen Sie die Verwendung eines externen ADC (z.B. ADS1115) mit dem ESP32 oder die Verwendung eines anderen Arduino, wie dem Arduino Uno R4 WiFi, der einen zuverlässigeren ADC hat. Falls Sie dennoch den ADC des ESP32 kalibrieren möchten, lesen Sie den ESP32 ADC Calibration Driver.

ESP32 Code - Alkoholtester mit Schwellenwert-Erkennung

Dieses Beispiel zeigt, wie Analog Output durch kalibrierte Schwellenwerte interpretiert wird, um Intoxikationsstufen zu schätzen.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser 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/esp32/esp32-mq3-alcohol-sensor */ // Define the pin for analog output from the sensor #define PIN_AO 36 // ESP32 pin GPIO36 (ADC0) connected to AO pin of MQ3 sensor // Define threshold values (calibrate these based on your sensor and environment) const int SOBER_THRESHOLD = 120; // Below this value = sober const int DRUNK_THRESHOLD = 400; // Above this value = drunk void setup() { // Initialize serial communication at 9600 baud rate Serial.begin(9600); // Give the MQ3 sensor time to warm up (20 seconds) Serial.println("Warming up the MQ3 sensor..."); delay(20000); // Wait 20 seconds for sensor warm-up Serial.println("MQ3 sensor is ready!"); Serial.println("=== Breathalyzer Test ==="); } void loop() { // Read the analog output from the sensor int alcoholValue = analogRead(PIN_AO); // Print the sensor value Serial.print("Sensor Value: "); Serial.print(alcoholValue); Serial.print(" | Status: "); // Determine intoxication level based on thresholds if (alcoholValue < SOBER_THRESHOLD) { Serial.println("Stone Cold Sober"); } else if (alcoholValue < DRUNK_THRESHOLD) { Serial.println("Drinking but within limits"); } else { Serial.println("DRUNK"); } delay(2000); // Wait 2 seconds before next reading }

Schnelle Schritte

  • Wichtig: Kalibrieren Sie zuerst Ihren Sensor mit dem Analog-Lese-Beispiel, um passende Schwellenwerte für Ihr Setup zu finden.
  • Ändern Sie die SOBER_THRESHOLD und DRUNK_THRESHOLD Konstanten mit Ihren kalibrierten Werten.
  • Kopieren Sie den geänderten Code und öffnen Sie ihn mit Arduino IDE
  • Klicken Sie auf den Upload Button in Arduino IDE um den Code auf ESP32 hochzuladen
  • Testen Sie mit Alkoholdampf (Isopropylalkohol oder Handdesinfektionsmittel-Dampf)
  • Überprüfen Sie Statusmeldungen im Serial 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: Dieses Projekt dient nur Bildungszwecken. Verwenden Sie dieses Gerät niemals für rechtliche Alkohltester-Zwecke oder Fahrsicherheitsbewertungen.

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.

Funktionsreferenzen

※ 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!