Arduino - Geluidsensor - Relay

In deze tutorial gaan we onderzoeken hoe u een geluidsensor kunt gebruiken om een relay te besturen. We bekijken twee interessante toepassingen:

Door de relay aan te sluiten op een gloeilamp, ledstrip, motor of actuator kunnen we de geluidsensor gebruiken om deze apparaten te bedienen.

Hardware Vereist

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×Geluidsensor
1×Relais
1×Jumperdraden
1×(Optioneel) Magneetslot (Solenoid Lock)
1×(Optioneel) 12V Voedingsadapter
1×(Optioneel) DC Voedingsconnector
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over Relay en Geluidsensor

Als u nog niet bekend bent met relay en geluidsensor (pinout, werking, programmeren, etc.), leer er meer over in de volgende tutorials:

Bedradingsschema

Arduino Geluidsensor Relay Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Arduino Code - Geluidsschakelaar schakelt Relay

De onderstaande code schakelt de relay telkens als een geluid wordt gedetecteerd van aan naar uit of andersom.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-sound-sensor-relay */ #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define RELAY_PIN A2 // Arduino pin connected to LED's pin int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor int relayState = LOW; // the current state of relay void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); // toggle state of relay relayState = !relayState; // control relay arccoding to the toggrelay state digitalWrite(RELAY_PIN, relayState); } }

Snelle Stappen

  • Sluit de Arduino met een USB-kabel aan op de PC
  • Open de Arduino IDE, selecteer het juiste board en de juiste poort
  • Kopieer bovenstaande code naar de Arduino IDE
  • Klik op de knop Upload in de Arduino IDE om de code naar de Arduino te uploaden
Arduino IDE Code Uploaden
  • Klap in uw handen voor de geluidsensor
  • Observeer de verandering in de staat van de relay

Code Uitleg

Lees de regel-voor-regel uitleg in de commentaarregels van de broncode!

Arduino Code - Geluid-geactiveerde Relay voor een tijdsperiode

De onderstaande code schakelt de relay voor een bepaalde tijd aan wanneer geluid wordt gedetecteerd. Na deze tijd wordt de relay uitgeschakeld.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-sound-sensor-relay */ #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define RELAY_PIN A2 // Arduino pin connected to the relay's pin #define TIME_PERIOD 5000 // in milliseconds int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode pinMode(RELAY_PIN, OUTPUT); // set arduino pin to output mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); // turn on relay digitalWrite(RELAY_PIN, HIGH); delay(TIME_PERIOD); // turn off relay digitalWrite(RELAY_PIN, LOW); } }

Let op: de bovenstaande code gebruikt de delay() functie voor eenvoud. Als u meer code toevoegt, kan die tijdens de delay tijd geblokkeerd worden. Om dit op te lossen gebruikt de volgende code een niet-blokkerende aanpak met de ezLED library. Deze library gebruikt intern de millis() functie in plaats van delay om blokkeren te voorkomen.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-sound-sensor-relay */ #include <ezLED.h> // ezLED library #define SENSOR_PIN A0 // Arduino pin connected to sound sensor's pin #define RELAY_PIN A2 // Arduino pin connected to the relay's pin #define TIME_PERIOD 5000 // in milliseconds ezLED relay(RELAY_PIN); // create a relay object that attach to pin RELAY_PIN int lastSoundState; // the previous state of sound sensor int currentSoundState; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set arduino pin to input mode currentSoundState = digitalRead(SENSOR_PIN); } void loop() { relay.loop(); // MUST call the relay.loop() function in loop() lastSoundState = currentSoundState; // save the last state currentSoundState = digitalRead(SENSOR_PIN); // read new state if (lastSoundState == HIGH && currentSoundState == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); relay.turnON(); // turn on relay immediately relay.turnOFF(TIME_PERIOD); // turn off relay after TIME_PERIOD } }

Snelle Stappen

  • Sluit Arduino met USB-kabel aan op PC
  • Open Arduino IDE, selecteer juiste board en poort
  • Klik op het Libraries-icoon in de linkerzijbalk van Arduino IDE
  • Zoek op “ezLED”, en selecteer de led library van ArduinoGetStarted
  • Klik op de knop Install om de ezLED library te installeren
Arduino LED library
  • Kopieer de bovenstaande code en open in Arduino IDE
  • Klik op Upload om de code naar Arduino te uploaden
Arduino IDE Code Uploaden
  • Klap in uw handen voor de geluidsensor
  • Observeer de verandering in de staat van de relay

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap om de geluidsensor en relay samen te gebruiken.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!