ESP32 - Geluidssensor - LED

In deze tutorial gaan we ontdekken hoe u een geluidssensor kunt gebruiken om een LED te bedienen. We behandelen hierbij twee interessante toepassingen:

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB Type-C Kabel
1×Geluidssensor
1×LED Kit
1×LED (red)
1×220 ohm weerstand
1×Breadboard (experimenteerprint)
1×Jumperdraden
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 LED en Geluidssensor

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

Bedradingsschema

ESP32 Geluidssensor LED Bedradingsschema

This image is created using Fritzing. Click to enlarge image

ESP32 Code - Geluidsschakelaar schakelt LED aan/uit

De onderstaande code schakelt de status van de LED om telkens wanneer 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-led */ #define SENSOR_PIN 25 // The ESP32 pin GPIO25 connected to the sound sensor #define LED_PIN 26 // The ESP32 pin GPIO26 connected to the LED int prev_sound_state; // the previous state of sound sensor int sound_state; // the current state of sound sensor int led_state = LOW; // the current state of LED void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set ESP32 pin to input mode pinMode(LED_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 LED led_state = !led_state; // control LED arccoding to the toggled state digitalWrite(LED_PIN, led_state); } }

Snelle Stappen

  • Als u voor het eerst de ESP32 gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Maak de bedrading zoals in bovenstaande afbeelding.
  • Verbind de ESP32 met uw PC via een micro USB-kabel.
  • Open Arduino IDE op uw PC.
  • Selecteer de juiste ESP32-board (bijv. ESP32 Dev Module) en poort (COM-port).
  • Verbind ESP32 met PC via USB-kabel
  • Open Arduino IDE, selecteer het juiste board en poort
  • 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 Code Uploaden
  • Klap in uw handen voor de geluidssensor
  • Observeer de verandering in de status van de LED

Code-uitleg

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

ESP32 Code - Geluid-geactiveerde LED voor een bepaalde periode

De onderstaande code zet de LED aan voor een bepaalde tijd wanneer er geluid wordt gedetecteerd. Na deze periode wordt de LED weer uitgezet.

/* * 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-led */ #define SENSOR_PIN 25 // The ESP32 pin GPIO25 connected to the sound sensor #define LED_PIN 26 // The ESP32 pin GPIO26 connected to the LED #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(LED_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 LED digitalWrite(LED_PIN, HIGH); delay(TIME_PERIOD); // turn off LED digitalWrite(LED_PIN, LOW); } }

Let op: de vorige code maakt gebruik van de delay()-functie, wat eenvoudig te begrijpen is. Echter kan de delay()-functie blokkades veroorzaken wanneer er extra code wordt toegevoegd tijdens de wachttijd. Om dit te voorkomen, maakt de volgende code gebruik van een niet-blokkerende aanpak door de ezLED bibliotheek te gebruiken. De ezLED bibliotheek werkt achter de schermen met de millis()-functie in plaats van delay en voorkomt zo blokkering.

/* * 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-led */ #include <ezLED.h> // ezLED library #define SENSOR_PIN 25 // The ESP32 pin GPIO25 connected to the sound sensor #define LED_PIN 26 // The ESP32 pin GPIO26 connected to the LED #define TIME_PERIOD 5000 // in milliseconds ezLED led(LED_PIN); // create a LED object that attach to pin LED_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() { led.loop(); // MUST call the led.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"); led.turnON(); // turn on immediately led.turnOFF(TIME_PERIOD); // turn off after TIME_PERIOD } }

Snelle Stappen

  • Als u voor het eerst de ESP32 gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Maak de bedrading zoals in bovenstaande afbeelding.
  • Verbind de ESP32 met uw PC via een micro USB-kabel.
  • Open Arduino IDE op uw PC.
  • Selecteer de juiste ESP32-board (bijv. ESP32 Dev Module) en poort (COM-port).
  • Verbind ESP32 met PC via USB-kabel
  • Open Arduino IDE, selecteer het juiste board en poort
  • Klik op het Libraries-icoon in de linkerzijbalk van Arduino IDE.
  • Zoek naar “ezLED” en zoek de led-bibliotheek van ArduinoGetStarted.
  • Klik op de Installeren-knop om de ezLED bibliotheek te installeren.
ESP32 led bibliotheek
  • 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 Code Uploaden
  • Klap in uw handen voor de geluidssensor
  • Observeer de verandering in de status van de LED

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 het project te voltooien.

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