ESP32 - Sensor de sonido - Relé

En este tutorial, exploraremos cómo utilizar el sensor de sonido para controlar un relé. Específicamente, profundizaremos en dos aplicaciones emocionantes:

Conectando el relé a una bombilla, una tira de LEDs, un motor o un actuador... Podemos usar el sensor de sonido para controlar la bombilla, la tira de LEDs, el motor o el actuador...

Acerca de Relé y Sensor de Sonido

Si no conoces el relé y el sensor de sonido (disposición de pines, cómo funciona, cómo programarlo...), aprende sobre ellos en los siguientes tutoriales:

Diagrama de Cableado

Diagrama de cableado del sensor de sonido y del relé para ESP32.

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

Código ESP32 - El interruptor de sonido conmuta el relé.

El código a continuación alterna el estado del relé cada vez que se detecta el sonido.

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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); } }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Realiza el cableado como en la imagen de arriba.
  • Conecta la placa ESP32 a tu PC mediante un cable micro USB.
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Conecta la placa ESP32 al PC mediante un cable USB.
  • Abre Arduino IDE, selecciona la placa y el puerto correctos.
  • Copia el código anterior y ábrelo con Arduino IDE.
  • Haz clic en el botón Subir en Arduino IDE para subir el código al ESP32.
Subir código al IDE de Arduino
  • Aplaude frente al sensor de sonido
  • Observa el cambio en el estado del relé

Explicación del código

Lee la explicación línea por línea en las líneas de comentario del código fuente.

Código ESP32 - Relé activado por sonido durante un período de tiempo

El código siguiente enciende el relé durante un período de tiempo cuando se detecta un sonido. Después de ese período, el relé se apaga.

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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); } }

Tenga en cuenta que el código mencionado anteriormente utiliza la función delay() por simplicidad. Sin embargo, si incorpora código adicional, podría bloquearse durante el tiempo de retardo. Para abordar esto, el siguiente código implementa un enfoque no bloqueante utilizando la biblioteca ezLED. Detrás de escena, la biblioteca ezLED emplea la función millis() en lugar de delay para evitar bloquearse.

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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 } }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Realiza el cableado tal como se muestra en la imagen de arriba.
  • Conecta la placa ESP32 a tu PC mediante un cable USB micro.
  • Abre el IDE de Arduino en tu PC.
  • Selecciona la placa ESP32 adecuada (p. ej., ESP32 Dev Module) y el puerto COM.
  • Conecta la placa ESP32 al PC mediante un cable USB.
  • Abre el IDE de Arduino, selecciona la placa y el puerto correcto.
  • Haz clic en el icono Libraries en la barra izquierda del Arduino IDE.
  • Busca “ezLED”, luego encuentra la librería ezLED de ArduinoGetStarted.
  • Haz clic en el botón Install para instalar la librería ezLED.
Biblioteca de LED para ESP32
  • Copia el código anterior y ábrelo con el IDE de Arduino
  • Haz clic en el botón Subir en el IDE de Arduino para cargar el código en el ESP32
Cargar código en el IDE de Arduino
  • Aplaude frente al sensor de sonido
  • Observa el cambio en el estado del relé

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!