El verano pasado, hice una máquina de sonido MP3 ESP8266 usando ESPHome para reproducir sonidos calmantes cuando mi hijo se va a dormir. Usé ESPHome para desarrollar el firmware para que pudiera comunicarse con mi plataforma Home Automation, Home Assistant. Bueno, los requisitos cambian y los proyectos deben actualizarse. Así que durante las vacaciones, creé una v2.0 del proyecto.
Para la nueva versión, quería:
- Admite dos pistas diferentes, lo que significa un segundo botón para activar / desactivar localmente
- Un mejor recinto y un circuito más permanente
El proyecto todavía utiliza el DFPlayer Mini para leer los MP3 para reproducir desde una tarjeta SD y un ESP8266 NodeMCU para conectividad inalámbrica.
Mi familia está usando esto para reproducir sonidos calmantes de ruido blanco para que nuestro bebé se duerma. También puede usar esto como un reloj despertador conectado a WiFi, jugar a los ladridos de perros como prevención de intrusos o cualquier otra cosa en la que tenga sentido reproducir un MP3 desde una tarjeta SD.
Hardware
No ha habido muchos cambios en el componente de hardware desde la primera versión del proyecto. Lo principal fue agregar un segundo botón para admitir la reproducción de dos pistas diferentes.
Las piezas que necesita para construir su propia máquina de sonido ESP8266 se enumeran a continuación:
Articulo | Comentarios |
---|---|
NodeMCU | La placa NodeMCU para agregar conectividad WiFi y controlar el reproductor MP3. |
Reproductor MP3 con tarjeta SD | Reproductor MP3 que reproduce desde tarjeta SD. Controlable mediante interfaz en serie. |
Altavoz de 3 vatios y 8 ohmios | Altavoz que se puede utilizar con el reproductor MP3 |
Botones | Botones para control local |
Protoboard | Protoboard para soldar el circuito |
El botón se hace de la misma manera que antes, usando una resistencia pull-up interna para llevar el voltaje del botón a 3.3V. Cuando se presiona el botón, el interruptor se cierra y el pin se conecta a GND para que el software pueda detectar que se presionó el botón.
Otro cambio que hice en el hardware fue obtener algunos botones nuevos que eran más fáciles de presionar. Conseguir algunos buenos botones grandes como estas Hágalo fácil de presionar por la noche cuando intente encender la máquina de sonido.
Puesta en producción
También decidí hacer el circuito un poco más permanente soldando todo en un protoboard. Si leíste mi última publicación de blog, solo estaba usando una placa de pruebas, lo cual estaba bien, pero quería hacerlo un poco más robusto. Puede ver en el protoboard a continuación, los dos terminales de tornillo superiores van a los botones y el inferior va al altavoz.
Finalmente, diseñé una caja 3D para encapsular la placa. Comencé con esta caja paramétrica que personalicé en OpenSCAD. Después de exportar un archivo STL, lo llevé a Tinkercad para hacer recortes en el panel superior para los botones y el altavoz. Tener un conjunto de calibradores digitales hace que sea bastante fácil hacerlo bien sin desperdiciar un montón de impresiones. La impresión de cajas como esta generalmente funciona sin problemas en la configuración de mi impresora 3D.
En general, estoy bastante contento con cómo resultó el hardware en este. No es la cosa más bonita del mundo, pero se puede enchufar en la habitación de mi hijo y no ser una monstruosidad o un peligro de asfixia. La caja y el protoboard proporcionan un agradable recinto permanente para el proyecto, así que sé que las cosas no se desconectarán accidentalmente. La tarjeta SD sigue siendo muy accesible desenroscando y quitando la parte superior, por lo que si necesito cambiar las pistas, es bastante fácil de hacer.
Software
Mucho cambió en el lado del software. Anteriormente, estaba usando esphome y escribí mi propio componente “Salida personalizada” para usar con DFPlayer Mini. En la versión 1.14.0 de noviembre de 2019, DFPlayer obtuvo su propio integración de componentes de primera clase. Entonces decidí migrar al nuevo componente.
Agregar el componente DFPlayer es bastante sencillo. El ESP8266 se comunica con DFPlayer a través de UART (comunicación en serie asíncrona), por lo que debe habilitar el componente UART junto con el componente DFPlayer. El componente UART RX / TX debe coincidir con su esquema.
1
2
3
4
5
6
|
uart:
tx_alfiler: D2
rx_alfiler: D5
baudios_Velocidad: 9600
dfplayer:
|
La siguiente parte complicada fue integrar los botones. Para mi proyecto, quería que cada botón estuviera vinculado a una pista en la tarjeta SD. Cuando vaya a iniciar una pista, la otra debería detenerse. Para adaptarse a esto, creé dos interruptores y sensores binarios.
Los interruptores, cuando están encendidos, asegúrese de apagar el otro interruptor y luego comience a reproducir la pista. Aquí hay un pequeño retraso para que DFPlayer tenga tiempo de detener la pista anterior antes de iniciar la nueva.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# Cambia las pistas para reproducir
cambiar:
– plataforma: modelo
nombre: “Pista 1”
carné de identidad: pista 1
optimista: cierto
giro_en_acción:
luego:
– cambiar.giro_apagado: track2
– retrasar: 1 s
– dfplayer.jugar:
expediente: 1
lazo: cierto
giro_apagado_acción:
luego:
– dfplayer.detener
– plataforma: modelo
nombre: “Pista 2”
carné de identidad: track2
optimista: cierto
giro_en_acción:
luego:
– cambiar.giro_apagado: pista 1
– retrasar: 1 s
– dfplayer.jugar:
expediente: 2
lazo: cierto
giro_apagado_acción:
luego:
– dfplayer.detener
# Botones físicos para anulación local
binario_sensor:
– plataforma: gpio
nombre: Botón
interno: cierto
alfiler:
número: 5
modo: INPUT_PULLUP
filtros:
– retrasado_en: 10 ms
– retrasado_apagado: 10 ms
en_lanzamiento:
luego:
– cambiar.palanca: pista 1
– plataforma: gpio
nombre: Botón
interno: cierto
alfiler:
número: 12
modo: INPUT_PULLUP
filtros:
– retrasado_en: 10 ms
– retrasado_apagado: 10 ms
en_lanzamiento:
luego:
– cambiar.palanca: track2
|
Finalmente, los botones se utilizan para simplemente alternar los interruptores. Usan resistencias pullup internas atadas a 3.3V hasta que alguien las presiona físicamente y las lleva a tierra. Hay un filtro en cada botón para eliminar cualquier ruido mecánico.
Para ver la configuración completa de ESPHome y mis otros dispositivos ESPHome, consulte mi GitHub. Administro la configuración de mi Home Assistant y los dispositivos ESPHome a través de git.
Envolviendolo
Este es uno de esos dispositivos que se utilizan todos los días en nuestra casa. Tenemos una escena de “noche infantil” que enciende las luces de nuestra casa y enciende la máquina de sonido para comenzar a reproducir ruido blanco. Tener la máquina controlable desde Home Assistant le permite crear cualquier tipo de automatización que pueda imaginar. Espero que este diseño de máquina de sonido MP3 ESP8266 sea un proyecto fácil de probar e integrar en su plataforma de automatización del hogar.
Gracias por leer mi tutorial sobre cómo crear su propia máquina de sonido inteligente para el hogar. Si te gustan los proyectos basados en ESP8266, es posible que te gusten estos otros artículos en mi blog:
- Detección de presencia de silla mediante sensor de distancia ultrasónico
- Controlador de rociadores WiFi DIY con ESP8266
- Automatización de un ventilador de techo de varias velocidades con Home Assistant
. ¡Gracias por leer!