Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
Lektion 38: Gasaustrittsalarm
In diesem Projekt geht es darum, ein Szenario zur Erkennung von Gaslecks mit einem Arduino Uno Board zu simulieren. Durch die Verwendung eines MQ-2 Gassensors und einer RGB-LED wird kontinuierlich die Gaskonzentration gemessen. Überschreitet diese Konzentration einen vordefinierten Schwellenwert, wird ein Alarm (Summer) aktiviert und die RGB-LED leuchtet rot. Bleibt die Konzentration unter diesem Schwellenwert, bleibt der Alarm inaktiv und die LED leuchtet grün. Es ist wichtig zu beachten, dass diese Demo rein illustrativ ist und keine echten Gasleck-Erkennungssysteme ersetzen sollte.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ITEMS IN THIS KIT |
LINK |
|---|---|---|
Universal Maker Sensor Kit |
94 |
Man kann sie auch einzeln über die untenstehenden Links kaufen.
Component Introduction |
Purchase Link |
|---|---|
Arduino UNO R3 or R4 |
|
- |
|
Verkabelung
Code
Code-Analyse
Das Kernprinzip des Projekts besteht darin, die Gaskonzentration kontinuierlich zu überwachen. Wenn die gemessene Gaskonzentration einen bestimmten Schwellenwert überschreitet, wird ein Alarm ausgelöst und die LED wechselt die Farbe auf Rot. Dies dient als simuliertes Warnsystem und weist auf potenziell gefährliche Bedingungen hin. Sinkt die Konzentration unter den Schwellenwert, wird der Alarm deaktiviert und die LED wechselt zu Grün, was auf eine sichere Umgebung hinweist.
Definition von Konstanten und Variablen
Diese Zeilen deklarieren und initialisieren die Pinnummern für verschiedene Komponenten. Der
sensorPinbezeichnet den analogen Pin, an den der MQ-2 Gassensor angeschlossen ist.sensorValueist eine Ganzzahlvariable, die den analogen Ausgang des Sensors speichert. DerbuzzerPingibt den digitalen Pin an, an den der Summer angeschlossen ist. Schließlich sind dieRPinundGPindie 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 erforderlichen Einstellungen. Die serielle Kommunikation beginnt mit einer Baudrate von 9600, sodass wir die Sensordaten im seriellen Monitor anzeigen können. Die Pins für den Summer und die RGB-LED werden alsOUTPUTgesetzt, was bedeutet, dass sie Signale an externe Komponenten 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); }
Hauptschleife: Sensorlesen und Alarm auslösen
Die Funktion
loop()liest kontinuierlich den Ausgang des Gassensors. Die Messwerte werden dann im seriellen Monitor zur Beobachtung angezeigt. Abhängig vom Sensorwert können zwei Szenarien auftreten:Wenn der Wert 300 überschreitet, wird der Summer mit
tone()aktiviert und die RGB-LED leuchtet rot.Wenn der Wert unter 300 liegt, wird der Summer mit
noTone()stummgeschaltet und die LED leuchtet grün.
Abschließend wird eine Verzögerung von 50 Millisekunden eingefügt, bevor die nächste Schleifeniteration beginnt, um die Lesehäufigkeit zu steuern und die CPU-Belastung zu reduzieren.
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); }