Arduino UNO Q - Gassensor

Der MQ2-Gassensor erkennt Flüssiggas, Rauch, Alkohol, Propan, Wasserstoff, Methan und Kohlenmonoxid. Er gibt ein digitales Signal (Gas/kein Gas) und ein analoges Signal (Gaskonzentrationsniveau) aus. Mit Bridge und Telegram kann Ihr Arduino UNO Q sofortige Gasalarme an Ihr Telefon senden.

In diesem Lernprogramm erfahren Sie:

Arduino UNO Q Gassensor

※ Notiz:

Verwenden Sie den Gassensor nur zur Frühwarnung. Koppeln Sie ihn immer mit ordnungsgemäßen Gasdetektoren, Belüftung und Sicherheitsausrüstung. Verlassen Sie sich niemals allein auf diesen Sensor für sicherheitskritische Anwendungen.

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino UNO Q
1×MQ2-Gassensor
1×Jumper-Kabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

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 MQ2-Gassensor

Der MQ2 kann erkennen: Flüssiggas, Rauch, Alkohol, Propan, Wasserstoff, Methan und Kohlenmonoxid. Er unterscheidet keine einzelnen Gase — er misst das Gesamtniveau brennbarer/schädlicher Gase.

MQ2-Gassensor-Pinbelegung

Pinbelegung

  • VCC-Pin: 5-V-Stromversorgung (das interne Heizelement erfordert 5 V)
  • GND-Pin: Masse
  • DO-Pin: Digitaler Ausgang — HIGH = kein Gas, LOW = Gas erkannt. Die Empfindlichkeit wird durch den Potenziometer auf der Platine eingestellt.
  • AO-Pin: Analoger Ausgang — höherer Wert = höhere Gaskonzentration

LED-Indikatoren

  • PWR-LED: Stromversorgungsanzeige
  • DO-LED: Leuchtet auf, wenn Gas erkannt wird (DO-Pin LOW)

Aufwärmungsanforderung

Der MQ2 hat einen internen Heizer, der vor genauen Messwerten die Betriebstemperatur erreichen muss:

  • Erste Verwendung nach langer Pause (>1 Monat): 24–48 Stunden aufwärmen
  • Normale Nutzung: 5–10 Minuten Aufwärmung; anfängliche Messwerte können hoch sein, stabilisieren sich aber

Der Code enthält eine minimale Aufwärmungsverzögerung von 20 Sekunden in setup(). Schalten Sie den Sensor ein und warten Sie, bevor Sie den Messwerten vertrauen.

※ Notiz:

Der MQ2-AO-Pin kann bis zu ~5 V ausgeben, wenn er von 5 V versorgt wird. Die ADC-Referenz des Arduino UNO Q MCU ist 3,3 V — Spannungen über 3,3 V sättigen die ADC auf 4095. Verwenden Sie den DO-Pin als primäre Gaserkennungsmethode und AO nur für relative Intensität.

Schaltschema

Arduino UNO Q MQ2 Gassensor-Schaltschema

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

MQ2-Gassensor-Pin Arduino UNO Q MCU
VCC 5V
GND GND
DO D2
AO A0

Programmierung für den Gassensor

  • Konfigurieren Sie den DO-Pin als digitalen Eingang:
pinMode(DO_PIN, INPUT);
  • Lesen Sie beide Ausgänge:
int do_state = digitalRead(DO_PIN); // HIGH = no gas, LOW = gas int ao_value = analogRead(AO_PIN); // 0-4095, higher = more gas
  • Überprüfen Sie Gas vom digitalen Ausgang:
if (do_state == LOW) { Serial.print("Gas DETECTED! Intensity (AO): "); Serial.println(ao_value); }

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
  • Die 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.
/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q 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-uno-q/arduino-uno-q-gas-sensor */ // MQ2 Gas Sensor: // DO pin: HIGH = no gas, LOW = gas detected // AO pin: analog — higher value = more gas (12-bit ADC: 0-4095) // VCC = 5V (heating element requires 5V) // The MCU ADC reference is 3.3V. AO readings above 3.3V will saturate at 4095. // Use DO pin as the primary detection method for reliable gas alerts. #define DO_PIN 2 // The Arduino UNO Q MCU pin connected to DO of the MQ2 sensor #define AO_PIN A0 // The Arduino UNO Q MCU pin connected to AO of the MQ2 sensor void setup() { Serial.begin(9600); pinMode(DO_PIN, INPUT); Serial.println("Warming up the MQ2 sensor..."); delay(20000); // allow sensor to warm up Serial.println("Arduino UNO Q MQ2 Gas Sensor ready"); } void loop() { int do_state = digitalRead(DO_PIN); // HIGH = no gas, LOW = gas int ao_value = analogRead(AO_PIN); // 0-4095, higher = more gas if (do_state == LOW) { Serial.print("Gas DETECTED! Intensity (AO): "); Serial.println(ao_value); } else { Serial.print("No gas. AO value: "); Serial.println(ao_value); } delay(500); }

Schnellschritte

Erste Verwendung mit Arduino UNO Q? Folgen Sie dem Getting Started with Arduino UNO Q Lernprogramm, bevor Sie fortfahren.

  • Verbinden: Verkabeln Sie den MQ2-Gassensor mit dem Arduino UNO Q MCU wie im Schaltschema dargestellt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Create New App (Neue App erstellen).
Neue App in Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, z. B.: GasSensor
  • Klicken Sie zur Bestätigung auf Create (Erstellen).
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Sketch einfügen: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Hochladen: Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen.
Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q
  • Warten Sie, bis die 20-Sekunden-Aufwärmmeldung im Seriellen Monitor beendet ist.
  • Setzen Sie den Sensor sorgfältig einer kleinen Gasmenge aus (z. B. halten Sie ein Feuerzeug ohne Zündung in die Nähe) — beobachten Sie die Ausgabe des Seriellen Monitors.
  • Passen Sie das Potenziometer an, falls die DO-LED nicht reagiert.

App Lab-Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Warming up the MQ2 sensor... [2026-04-29 09:00:21] Arduino UNO Q MQ2 Gas Sensor ready [2026-04-29 09:00:22] No gas. AO value: 312 [2026-04-29 09:00:23] No gas. AO value: 310 [2026-04-29 09:00:24] Gas DETECTED! Intensity (AO): 2187 [2026-04-29 09:00:25] Gas DETECTED! Intensity (AO): 3042 [2026-04-29 09:00:26] No gas. AO value: 315

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie beide Prozessoren des Arduino UNO Q programmieren, damit die Linux-Seite über Bridge den Gaszustand und Ereignisse lesen kann:

  • Der Gassensor ist mit dem MCU verbunden — der MCU wärmt 20 Sekunden lang auf, liest dann alle 500 ms DO und AO
  • Die MPU kann die Sensor-Pins nicht direkt lesen — sie ruft Bridge-Funktionen auf, um Zustand, Intensitätswert oder Ereignisse zu erhalten
  • Die MPU hat Wi-Fi — mit vollständiger Debian Linux kann sie sofortige Telegram-Gasalarme senden, sobald Gas erkannt wird
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router — öffnen Sie sie nie in Benutzercode

MCU-Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q 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-uno-q/arduino-uno-q-gas-sensor */ #include "Arduino_RouterBridge.h" #define DO_PIN 2 // The Arduino UNO Q MCU pin connected to DO of the MQ2 sensor #define AO_PIN A0 // The Arduino UNO Q MCU pin connected to AO of the MQ2 sensor bool cached_gas = false; int cached_ao = 0; bool gas_event = false; bool prev_gas = false; unsigned long last_read_ms = 0; const unsigned long READ_INTERVAL = 500; String get_state(String arg) { return cached_gas ? "gas" : "no_gas"; } String get_value(String arg) { return String(cached_ao); } String get_event(String arg) { if (gas_event) { gas_event = false; return "gas_detected"; } return "none"; } void setup() { Bridge.begin(); Monitor.begin(); pinMode(DO_PIN, INPUT); Monitor.println("Warming up the MQ2 sensor..."); delay(20000); // warm-up before Bridge callbacks start serving data Bridge.provide("get_state", get_state); Bridge.provide("get_value", get_value); Bridge.provide("get_event", get_event); Monitor.println("Arduino UNO Q MQ2 Gas Sensor Bridge ready"); } void loop() { unsigned long now = millis(); if (now - last_read_ms >= READ_INTERVAL) { last_read_ms = now; int do_state = digitalRead(DO_PIN); // LOW = gas detected cached_ao = analogRead(AO_PIN); cached_gas = (do_state == LOW); if (cached_gas && !prev_gas) { gas_event = true; Monitor.print("GAS DETECTED! AO value: "); Monitor.println(cached_ao); } else if (!cached_gas && prev_gas) { Monitor.println("Gas cleared. Air quality normal."); } prev_gas = cached_gas; } }

Python-Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q 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-uno-q/arduino-uno-q-gas-sensor */ from arduino.app_utils import * import time def loop(): state = Bridge.call("get_state") value = Bridge.call("get_value") print(f"Gas state: {state} AO value: {value}") time.sleep(0.5) App.run(user_loop=loop)

Schnellschritte

  • Verbinden: Verkabeln Sie den MQ2-Gassensor mit dem Arduino UNO Q wie im Schaltschema dargestellt.
  • Öffnen Sie Arduino App Lab und erstellen Sie eine neue App mit dem Namen GasSensorBridge.
  • Fügen Sie den MCU-Sketch in sketch/sketch.ino ein.
  • Fügen Sie den Python-Code in die Python-Datei ein.
  • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Add sketch library in Arduino App Lab on Arduino UNO Q
  • Search for Arduino_RouterBridge created by Arduino and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
Arduino_RouterBridge Arduino

This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

0.4.1
Install
More Info
  • Hochladen: Klicken Sie auf die Schaltfläche Ausführen. Warten Sie, bis die Aufwärmungsphase beendet ist.
Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q
  • Setzen Sie den Sensor Gas aus — beobachten Sie das Ereignis in beiden Konsolen.

App Lab-Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Warming up the MQ2 sensor... [2026-04-29 09:00:21] Arduino UNO Q MQ2 Gas Sensor Bridge ready [2026-04-29 09:00:26] GAS DETECTED! AO value: 2187 [2026-04-29 09:00:30] Gas cleared. Air quality normal.
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:22] Gas state: no_gas AO value: 310 [2026-04-29 09:00:24] Gas state: no_gas AO value: 312 [2026-04-29 09:00:26] Gas state: gas AO value: 2187 [2026-04-29 09:00:28] Gas state: gas AO value: 3042 [2026-04-29 09:00:30] Gas state: no_gas AO value: 315

Telegram

Erhalten Sie sofortige Telegram-Gasalarme vom Arduino UNO Q Gassensor und fragen Sie die Luftqualität remote ab.

MCU-Sketch: Behalten Sie denselben MCU-Sketch aus dem vorherigen Bridge-Abschnitt.

Python-Code (Telegram)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q 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-uno-q/arduino-uno-q-gas-sensor */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): # Auto-alert on gas detection event = Bridge.call("get_event") if event == "gas_detected": value = Bridge.call("get_value") print(f"GAS DETECTED! AO value: {value}") send_message(CHAT_ID, f"⚠️ GAS DETECTED! Intensity (AO): {value}. Ventilate immediately!") # Handle Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q Gas Sensor Bot\n" "/state - Current gas state (gas / no_gas)\n" "/value - Read analog intensity (0-4095)\n" "Automatic alert when gas is detected!") elif text == "/state": result = Bridge.call("get_state") send_message(chat_id, f"Gas state: {result}") elif text == "/value": result = Bridge.call("get_value") send_message(chat_id, f"AO intensity value: {result}") else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.3) App.run(user_loop=loop)

Schnellschritte

  • Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihr tatsächliches Bot-Token von BotFather.
  • Ersetzen Sie YOUR_CHAT_ID durch Ihre Telegram-Chat-ID.
  • Fügen Sie diesen Python-Code in die Python-Datei Ihrer App ein (behalten Sie denselben MCU-Sketch).
  • Klicken Sie auf die Schaltfläche Ausführen — warten Sie auf die Aufwärmung, dann setzen Sie den Sensor Gas aus, um den Telegram-Alarm auszulösen.

App Lab-Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:21] Waiting for Telegram messages... [2026-04-29 09:10:26] GAS DETECTED! AO value: 2187 [2026-04-29 09:10:32] Received: /state [2026-04-29 09:10:35] Received: /value
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.

ArduinoBot

bot
Today
⚠️ GAS DETECTED! Intensity (AO): 2187. Ventilate immediately!
10:15 AM
/state
10:16 AM ✓✓
Gas state: no_gas
10:17 AM
/value
10:18 AM ✓✓
AO intensity value: 312
10:19 AM

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 MQ2-Gassensor und Arduino UNO Q erstellen:

  • Hausgas-Leckalarm: Installieren Sie ihn in Ihrer Küche in der Nähe des Herdes — wenn Gas erkannt wird, sendet die MPU einen dringenden Telegram-Alarm mit Intensitätswert und löst auch einen hörbaren Alarm über ein Relais aus
  • Belüftungssteuerung: Kombinieren Sie den Gassensor mit einem relaisgesteuerten Ventilator — wenn AO des Gassensors einen Schwellenwert überschreitet, schaltet der MCU den Ventilator automatisch ein, und Python sendet eine Telegram-Benachrichtigung
  • Luftqualitäts-Logger: Protokollieren Sie jede Minute den Gaszustand und AO-Werte in einer CSV-Datei auf Linux — senden Sie eine tägliche Telegram-Zusammenfassung der Luftqualitätsereignisse und Spitzenwerte
  • Garage-Kohlenmonoxid-Monitor: Stellen Sie den Sensor in einer Garage auf — erhalten Sie einen Telegram-Alarm, wenn das Automotor Kohlenmonoxid in der Luft hinterlässt, mit automatisch gelöschtem Alert, wenn AO auf den Basiscwert zurückfällt
  • Multi-Gas-Sicherheitssystem: Kombinieren Sie den Gassensor mit dem Flammen-Sensor-Lernprogramm — wenn beide gleichzeitig Gefahr erkennen, senden Sie einen "GAS + FIRE" Telegram-Alarm für maximale Dringlichkeit

Fordern Sie sich selbst heraus

Sind Sie bereit, mit dem MQ2-Gassensor auf Arduino UNO Q noch weiter zu gehen? Versuchen Sie diese Herausforderungen:

  • Einfach: Fügen Sie einen /history Telegram-Befehl hinzu, der die letzten 5 Gaserkennungsereignisse mit Zeitstempeln und AO-Intensitätswerten zurückgibt, die in einer Python-Liste gespeichert sind.
  • Mittel: Implementieren Sie einen Filter für Fehlalarme: Gas muss mindestens 3 aufeinanderfolgende Lesevorgänge lang erkannt werden (1,5 Sekunden), bevor die MPU einen Telegram-Alarm sendet — dies verhindert, dass einzelne Lesespitzen Fehlalarme auslösen.
  • Fortgeschritten: Erstellen Sie einen Gasintensitäts-Trend-Monitor: Verfolgen Sie die letzten 20 AO-Messwerte in Python — wenn der Durchschnitt der letzten 10 Messwerte 50 % höher ist als der Durchschnitt der vorherigen 10, senden Sie einen "Gaskonzentration steigt" Telegram-Alarm, noch bevor der DO-Pin auslöst.

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