Gasleck-Alarm¶
Dieses Projekt dreht sich um die Simulation eines Gaslecks mittels eines Arduino Uno Boards. Durch die Integration eines MQ-2 Gassensors und einer RGB-LED erfasst die Demonstration fortlaufend die Gaskonzentration. Überschreitet diese einen voreingestellten Grenzwert, wird ein Alarm (Summer) ausgelöst und die RGB-LED leuchtet rot auf. Bleibt die Konzentration unter dem Grenzwert, bleibt der Alarm inaktiv und die LED zeigt Grün. Es ist wichtig zu betonen, dass diese Demonstration rein illustrativ ist und echte Gasleck-Detektionssysteme nicht ersetzen sollte.
1. Schaltungsaufbau¶
2. Code¶
Öffnen Sie die Datei
02-Gas_leak_alarm.ino
im Verzeichnisultimate-sensor-kit\fun_project\02-Gas_leak_alarm
oder kopieren Sie den Code in die Arduino IDE.
3. Code-Erklärung¶
Das Kernprinzip des Projekts besteht darin, kontinuierlich die Gaskonzentration zu überwachen. Wenn die gemessene Konzentration einen bestimmten Schwellenwert überschreitet, wird der Alarm ausgelöst und die LED wechselt zu Rot. Dies dient als simulierter Warnmechanismus für potenziell gefährliche Zustände. Fällt die Konzentration unter den Schwellenwert, wird der Alarm deaktiviert und die LED wechselt zu Grün, was auf eine sichere Umgebung hinweist.
Konstanten und Variablen definieren
Diese Zeilen deklarieren und initialisieren die Pinnummern für verschiedene Komponenten. Der
sensorPin
gibt den analogen Pin an, an dem der MQ-2-Gassensor angeschlossen ist.sensorValue
ist eine Ganzzahl, die den analogen Ausgang des Sensors speichert. DerbuzzerPin
kennzeichnet den digitalen Pin für den Summer. Schließlich sindRPin
undGPin
die Pins für die roten und grünen Kanäle der RGB-LED.// Define the pin numbers for the Gas Sensor const int sensorPin = A0; int sensorValue; // Define the pin number for the buzzer const int buzzerPin = 9; // Define pin numbers for the RGB LED const int RPin = 5; // R channel of RGB LED const int GPin = 6; // G channel of RGB LED
Initialisierung in
setup()
Die Funktion
setup()
initialisiert die benötigten Einstellungen. Die serielle Kommunikation beginnt mit einer Baudrate von 9600, was die Anzeige der Sensorwerte im Serial Monitor ermöglicht. Die Pins für Summer und RGB-LED werden alsOUTPUT
festgelegt, um Signale an externe Komponenten zu senden.void setup() { Serial.begin(9600); // Start serial communication at 9600 baud rate // Initialize the buzzer and RGB LED pins as output pinMode(buzzerPin, OUTPUT); pinMode(RPin, OUTPUT); pinMode(GPin, OUTPUT); }
Hauptprogrammschleife: Sensorauslesen und Alarm auslösen
Die Funktion
loop()
liest kontinuierlich den Ausgang des Gassensors aus. Der Wert wird dann im Serial Monitor zur Beobachtung angezeigt. Je nach Sensorwert können zwei Szenarien eintreten:Überschreitet der Wert 300, wird der Summer mittels
tone()
aktiviert und die RGB-LED leuchtet rot.Liegt der Wert unter 300, wird der Summer mit
noTone()
stummgeschaltet und die LED leuchtet grün.
Zuletzt wird eine Verzögerung von 50 Millisekunden eingeführt, bevor die nächste Iteration der Schleife beginnt, um die Auslesefrequenz zu regulieren und die CPU-Last zu verringern.
void loop() { // Read the analog value of the gas sensor sensorValue = analogRead(sensorPin); // Print the sensor value to the serial monitor Serial.print("Analog output: "); Serial.println(sensorValue); // If the sensor value exceeds the threshold, trigger the alarm and make the RGB LED red if (sensorValue > 300) { tone(buzzerPin, 500, 300); digitalWrite(GPin, LOW); digitalWrite(RPin, HIGH); } else { // If the sensor value is below the threshold, turn off the alarm and make the RGB LED green noTone(buzzerPin); digitalWrite(RPin, LOW); digitalWrite(GPin, HIGH); } // Wait for 50 milliseconds before the next loop iteration delay(50); }