4. Reproductor de Música en la Nube¶
El objetivo de este proyecto es crear un reproductor de música usando Blynk. La música se reproduce de la misma manera que en 5.7 Tone() o noTone(), escribiendo la canción en el programa y reproduciéndola con un zumbador pasivo. Sin embargo, en este ejemplo, podemos hacer clic en el interruptor para reproducir/pausar y deslizar el deslizador para cambiar el progreso de reproducción.
Componentes Necesarios
Para este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí tienes el enlace:
Nombre |
ELEMENTOS DE ESTE KIT |
ENLACE |
---|---|---|
3 in 1 Starter Kit |
380+ |
También puedes comprarlos por separado en los siguientes enlaces.
INTRODUCCIÓN DEL COMPONENTE |
ENLACE DE COMPRA |
---|---|
1. Construir el Circuito
Nota
El módulo ESP8266 requiere una alta corriente para proporcionar un entorno operativo estable, así que asegúrate de que la batería de 9V esté conectada.
2. Editar el Tablero de Mandos
Crea un Datastream de tipo Virtual Pin en la página Datastream como el valor modificado por el widget deslizador añadido más tarde o por código. Establece el TIPO DE DATOS en Integer y MIN y MAX en 0 y 30.
También crea otro Datastream de tipo Virtual Pin para mostrar el nombre de la música, y establece el TIPO DE DATOS en
String
.Ve a la página Wed Dashboard, arrastra un widget Switch y establece Datastream en V0 (V0 ya está configurado en 2. Obtener Datos de Blynk); arrastra un widget Label y configúralo en V3; arrastra un widget Slider y configúralo en V2.
Nota
Tus pines virtuales pueden ser diferentes a los míos, los tuyos prevalecerán, pero necesitarás modificar el número de pin correspondiente en el código.
3. Ejecutar el Código
Abre el archivo
4.cloud_music_player.ino
en la ruta3in1-kit\iot_project\4.cloud_music_player
.Reemplaza el
Template ID
,Device Name
yAuth Token
con los tuyos. También necesitas introducir elssid
ypassword
del WiFi que estás utilizando. Para tutoriales detallados, consulta 1.4 Conectando la placa R3 a Blynk.Después de seleccionar la placa y puerto correctos, haz clic en el botón Upoad.
Abre el monitor serial(configura la tasa de baudios a 115200) y espera a que aparezca un aviso como una conexión exitosa.
Nota
Si aparece el mensaje
ESP is not responding
al conectar, sigue estos pasos.Asegúrate de que la batería de 9V esté conectada.
Reinicia el módulo ESP8266 conectando el pin RST a GND durante 1 segundo, luego desconéctalo.
Presiona el botón de reinicio en la placa R3.
A veces, puede ser necesario repetir la operación anterior 3-5 veces, por favor sé paciente.
Ahora, puedes usar el widget de Control de Botón de Blynk para iniciar/pausar la música y el Deslizador para ajustar el progreso de reproducción, y también verás el nombre de la música.
Si quieres usar Blynk en dispositivos móviles, consulta ¿Cómo usar Blynk en dispositivos móviles?.
¿Cómo funciona?
El datastream V0 se utiliza para obtener el estado del widget Interruptor y asignarlo a la variable musicPlayFlag, que controla la pausa y reproducción de la música.
int musicPlayFlag=0;
BLYNK_WRITE(V0)
{
musicPlayFlag = param.asInt(); // START/PAUSE MUSIC
}
El datastream V2 se utiliza para obtener el valor del widget deslizador y asignarlo a la variable scrubBar cuando se mueve el deslizador.
int scrubBar=0;
BLYNK_WRITE(V2)
{
scrubBar=param.asInt();
}
Cuando el dispositivo está conectado al Blynk Cloud, escribe el nombre de la música para el datastream V3 y luego muéstralo con el widget Label.
BLYNK_CONNECTED() {
String songName = "Ode to Joy";
Blynk.virtualWrite(V3, songName);
}
El Blynk Timer se ejecutará cada segundo. La música se reproduce si musicPlayFlag no es 0, es decir, si el widget Switch está activado.
Tan pronto como se toquen dos notas, la variable de la barra de progreso scrubBar
se incrementa en 2, y el valor se escribe luego en el Blynk Cloud, lo que sincroniza el valor del widget Slider.
void myTimerEvent()
{
if(musicPlayFlag!=0)
{
tone(buzzerPin,melody[scrubBar],250);
scrubBar=(scrubBar+1)%(sizeof(melody)/sizeof(int));
delay(500);
tone(buzzerPin,melody[scrubBar],250);
scrubBar=(scrubBar+1)%(sizeof(melody)/sizeof(int));
Serial.println(scrubBar);
Blynk.virtualWrite(V2, scrubBar);
}
}