ESP32 - Geluidsensor - Relay

In deze handleiding onderzoeken we hoe een geluidsensor gebruikt kan worden om een relais te bedienen. We bekijken specifiek twee interessante toepassingen:

Door het relais te verbinden met een lamp, ledstrip, motor of actuator, kunnen we met de geluidsensor deze apparaten bedienen.

Hardware Benodigdheden

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB Kabel Type-C
1×Geluidsensor
1×Relay (relais)
1×Jumperdraden
1×(Optioneel) Solenoïde slot
1×(Optioneel) 12V Voedingsadapter
1×(Optioneel) DC Voedingsconnector
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

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 relais en geluidsensoren (bijvoorbeeld pinout, werking of programmering), leer er dan meer over in de volgende tutorials:

Bedradingsschema

ESP32 Geluidsensor Relay Bedradingsschema

This image is created using Fritzing. Click to enlarge image

ESP32 Code - Geluidsschakelaar schakelt Relay

De onderstaande code zorgt ervoor dat de staat van het relais telkens wordt omgeschakeld zodra er geluid wordt gedetecteerd.

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

Snelle Stappen

  • Gebruik u ESP32 voor het eerst? Lees dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Maak de bedrading zoals in de afbeelding hierboven.
  • Verbind de ESP32 met uw pc via een micro USB-kabel.
  • Open de Arduino IDE op uw pc.
  • Selecteer de juiste ESP32 board (bijvoorbeeld ESP32 Dev Module) en de juiste COM-poort.
  • Verbind ESP32 via USB-kabel met de pc
  • Open Arduino IDE, selecteer het juiste board en poort
  • Kopieer de bovenstaande code en open deze in de Arduino IDE
  • Klik op de Upload-knop in Arduino IDE om de code naar ESP32 te uploaden
Arduino IDE Upload Code
  • Klap in uw handen vlak voor de geluidsensor
  • Zie de verandering in de staat van het relais

Code Uitleg

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

ESP32 Code - Geluid-geactiveerd Relay voor een bepaalde tijd

De onderstaande code zet het relais aan voor een bepaalde tijd zodra er geluid wordt gedetecteerd. Na deze periode wordt het relais automatisch uitgeschakeld.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-sound-sensor-relay */ #define SENSOR_PIN 25 // The ESP32 pin GPIO25 connected to the sound sensor #define RELAY_PIN 26 // The ESP32 pin GPIO26 connected to the relay #define TIME_PERIOD 5000 // in milliseconds int prev_sound_state; // the previous state of sound sensor int sound_state; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set ESP32 pin to input mode pinMode(RELAY_PIN, OUTPUT); // set ESP32 pin to output mode sound_state = digitalRead(SENSOR_PIN); } void loop() { prev_sound_state = sound_state; // save the last state sound_state = digitalRead(SENSOR_PIN); // read new state if (prev_sound_state == HIGH && sound_state == 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 dat de bovenstaande code de delay()-functie gebruikt voor eenvoud. Als u echter extra code toevoegt, kan deze geblokkeerd worden tijdens de wachttijd. Om dit te voorkomen, gebruikt de volgende code een non-blocking benadering met de ezLED bibliotheek. De ezLED bibliotheek maakt gebruik van de millis()-functie in plaats van delay om blokkering te vermijden.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-sound-sensor-relay */ #include <ezLED.h> // ezLED library #define SENSOR_PIN 25 // The ESP32 pin GPIO25 connected to the sound sensor #define RELAY_PIN 26 // The ESP32 pin GPIO26 connected to the relay #define TIME_PERIOD 5000 // in milliseconds ezLED relay(RELAY_PIN); // create a relay object that attach to pin RELAY_PIN int prev_sound_state; // the previous state of sound sensor int sound_state; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set ESP32 pin to input mode sound_state = digitalRead(SENSOR_PIN); } void loop() { relay.loop(); // MUST call the relay.loop() function in loop() prev_sound_state = sound_state; // save the last state sound_state = digitalRead(SENSOR_PIN); // read new state if (prev_sound_state == HIGH && sound_state == 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

  • Gebruik u ESP32 voor het eerst? Zie hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Maak de bedrading zoals in de afbeelding hierboven.
  • Verbind de ESP32 met uw pc via een micro USB-kabel.
  • Open de Arduino IDE op uw pc.
  • Selecteer het juiste ESP32 board (bijvoorbeeld ESP32 Dev Module) en de juiste COM-poort.
  • Verbind de ESP32 via USB-kabel met de pc
  • Open Arduino IDE, selecteer het juiste board en poort
  • Klik op het Bibliotheken-icoon in de linkerbalk van Arduino IDE.
  • Zoek op “ezLED”, en vind de led bibliotheek van ArduinoGetStarted
  • Klik op Installeren om de ezLED bibliotheek te installeren.
ESP32 led library
  • Kopieer de bovenstaande code en open deze in Arduino IDE
  • Klik op de Upload-knop in Arduino IDE om de code naar ESP32 te uploaden
Arduino IDE Upload Code
  • Klap in uw handen vlak voor de geluidsensor
  • Zie de verandering in de staat van het relais

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 bij het opzetten van de geluidsensor met relais op de ESP32.

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