In diesem kleinen Projekte möchte ich dir zeigen, wie du ein Relais mit Geräuschdetektor am Arduino UNO schalten kannst.
Die Idee zu diesem kleinen Projekt entstand aus einem Kommentar von einem Leser meines Blogs. Hier sei Ernst T. bestens gegrüßt.
Natürlich kannst du für diesen Aufbau auch einen anderen Mikrocontroller als den Arduino UNO verwenden. Es geht also auch genauso mit einem Arduino Nano, Leonardo, Pro Mini usw.
Benötigte Bauteile für dieses Projekt
Für dieses Projekt benötigst du folgende Bauteile:
- einen Arduino UNO*,
- ein Relaismodul*,
- ein Geräuschdetektor KY-037*,
- sechs Breadboardkabel*, 20 cm, Stecker – Buchse
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Das Relaismodul / Relaisshield habe ich bereits im Beitrag Arduino Lektion 13: 2 fach Relaisplatine ansteuern und den Geräuschdetektor KY-037 im Beitrag Arduino Lektion 19 – Teil 1: Hochempfindlicher Geräuschdetektor „Klatschdetektor“ ausführlich behandelt.
Aufbau & Schaltung
Die Sensoren / Aktoren werden mit dem Arduino UNO wiefolgt verbunden:
Sensor / Aktor | Arduino UNO |
---|---|
Geräuschdetektor | |
A0 | analoger Pin A0 |
G | GND |
+ | 5V |
Relaismodul | |
In1 | digitaler Pin D8 |
VCC | 5V |
GND | GND |
Dadurch das wir an beiden Sensoren / Aktoren 5V Spannung benötigen, empfehle ich zusätzlich die Verwendung von einem 170 Pin Breadboard.
Programmieren
Im Nachfolgenden möchte ich dir zwei Möglichkeiten zeigen, wie du das Relais steuern kannst.
Einfaches Programm um ein Relais mit Geräuschdetektor am Arduino schalten
Da die gesamte Schaltung mit wenigen Bauteilen daher kommt, ist der Quellcode selber sehr übersichtlich.
#define relaisPin 8 //Relaismodul am digitalen Pin D8 #define soundSensor A0 //Geräuschdetektor am analogen Pin A0 void setup(){ Serial.begin(9600); //digitalen Pin des Relais als Ausgang definieren pinMode(relaisPin, OUTPUT); //analogen Pin des Geräuschdetektor als Eingang definieren pinMode(soundSensor, INPUT); } void loop(){ //lesen des aktuellen Wertes des Geräuschdetektors int value = analogRead(soundSensor); Serial.println(value); //wenn der Wert größer als 300 ist dann... if(value > 300){ //Relais aktivieren digitalWrite(relaisPin, LOW); } else { //Relais deaktivieren digitalWrite(relaisPin, HIGH); } }
In dem oben gezeigten Sketch musst du den Schwellwert für das aktivieren / deaktivieren des Relais “hart” in den Quellcode schreiben. D.h. immer, wenn du diesen Wert ändern möchtest, musst du einen neuen Sketch auf den Mikrocontroller schreiben.
Video
Drehpotentiometer zum Regeln des Schwellwertes für das aktivieren / deaktivieren des Relais
Der Drehpotentiometer verfügt über 3 Beinchen somit benötigen wir zusätzlich 3 weitere Breadboardkabel (Stecker – Stecker) sowie ein 170 Pin Breadboard.
Auf dem Geräuschsensor KY-037 ist ein Drehpotentiometer verbaut, über welchen man den Schwellwert für das aktivieren / deaktivieren des digitalen Ausgangs des Sensors einstellen kann. Jedoch hat man das Problem das dieser Drehpotentiometer nicht vernünftig erreichbar ist man kann zbps. keine Kappe montieren oder diesen aus dem Gehäuse führen, um diesen zu bedienen.
Aufbau der Schaltung
In der neuen Schaltung verwende ich einen Arduino Nano. Dieser kleine Mikrocontroller ist dem Arduino UNO ähnlich und verfügt über dieselbe Anzahl der Pins.
Ein großer Vorteil ist die kleine Bauform, sodass, dieser auf ein Breadboard 400 oder 720 Pin gesteckt werden kann.
Zusätzlich verbauen wir einen Drehpotentiometer welcher an den analogen Pin A1 angeschlossen wird.
Programmieren
Der neue Sketch wird lediglich um den zusätzlichen Drehpotentiometer erweitert.
#define relaisPin 8 //Relaismodul am digitalen Pin D8 #define soundSensor A0 //Geräuschdetektor am analogen Pin A0 #define rotaryResistor A1 //Drehpotentiometer am analogen Pin A1 void setup(){ //digitalen Pin des Relais als Ausgang definieren pinMode(relaisPin, OUTPUT); //analogen Pin des Geräuschdetektor als Eingang definieren pinMode(soundSensor, INPUT); //Ausgang des Drehpotentiometers als Eingang am Microcontroller definieren pinMode(rotaryResistor, INPUT); } void loop(){ //lesen des aktuellen Wertes des Geräuschdetektors int value = analogRead(soundSensor); //wenn der Wert größer als der eingestellte Wert am Drehpotentiometer ist dann... if(value > analogRead(rotaryResistor)){ //Relais aktivieren digitalWrite(relaisPin, HIGH); } else { //Relais deaktivieren digitalWrite(relaisPin, LOW); } }