ESP32, tenemos formas de hacerle hablar
Una de nuestras escenas favoritas del [James Bond] franquicia es el clásico intercambio entre [Goldfinger] y [Bond]. [Connery] (el Único Vínculo Verdadero) dice: "¿Estás esperando a que hable?" Y la respuesta es: "¡No Sr. Bond, espero que muera!" Sin embargo, cuando se trata del ESP32, aparentemente [XTronical] Espere que hable. Publicó una biblioteca para simplificar la reproducción de archivos WAV en el ESP32. También hay una película visual para ver a continuación.
De hecho, es posible que desee reservar para su publicación anterior, donde conecta un altavoz a través de uno de los convertidores de digital a analógico en la placa. En esa publicación, solo saca algunas formas de onda simples, pero el hardware es el mismo diseño que usa para reproducir los archivos WAV.
Envolviendo el código WAV en una biblioteca, [XTronical] simplifica la reproducción real. Aquí está el núcleo de su sencillo ejemplo:
void loop() { static uint32_t i=0; // simple counter to output if(ForceWithYou.Completed) // if completed playing, play again DacAudio.PlayWav(&ForceWithYou); // play the wav (pass the wav class object created at top of code Serial.println(i); // print out the value of i i++; // increment the value of i }
No es muy difícil, pero, por supuesto, el trabajo pesado está oculto en los dos objetos. PlayWav
y ForceWithYou
. El video explica cómo puede agregar más, pero probablemente también pueda adivinar. La versión corta es que usa Audacity para preparar el archivo WAV y luego un editor de cursor para insertar los bytes en una matriz. Dado que muchos de nosotros usamos Linux o Cygwin, podríamos tener la tentación de usar od o hexdump, pero hagas lo que hagas, debería terminar en una matriz.
Si desea experimentar más sobre la generación de formas de onda, [Elliot Williams] hizo una buena parte de ella. También puede obtener algunas ideas de nuestro generador de señales.
Ostraco dice:
Por alguna razón, los villanos malos siempre quieren contarle sus planes al chico bueno.
Olsen dice:
Nunca haria eso.
Supongo que eso los empeora.regaño dice:
Me recuerda a Froson de los Increíbles
“Me llevó justo donde quería, pero lo que estaba empezando a hacer. ¡Empieza el monólogo!
Que no dice:
Estos villanos se esforzaron mucho en organizar una mala trama y, sin apreciación, simplemente se sentirá incompleta.
Todo el mundo de las redes sociales en línea se basa en el concepto, por lo que es bastante universal.
Olsen dice:
No veo dónde resultan útiles los beneficios inalámbricos del ESP32.
creo [XTronical] solo tenía una puesta. Podría estar equivocado.Dieléctrico dice:
Reloj inalámbrico oral para que no necesite tubos Nixie. ¡Es el futuro! Una biblioteca aceptable de números leídos por su persona favorita podría ingresar en un flash interno, pero no lo sé. Tal vez necesite afiliarse a SPIFFS o algo similar.
Fred dice:
¿Podría usarse el ESP32 para generar el archivo de tabla y reproducirlo directamente? Sé que esto lo envuelve en una biblioteca, pero puede que no sea la mejor implementación en una plataforma inalámbrica.
lwatcdr dice:
tal vez soporte para transmisión RTP? ¿SORBO?
robot dice:
El ESP32 tiene un dispositivo integrado compatible con I2S, que puede usar para emitir sonido estéreo directamente a través del DAC interno (2 canales), entre otras opciones. Y todo esto es posible con la transferencia DMA.
Combinado con la unidad Wifi, incluso puede usarlo como radio por Internet: https://github.com/Edzelf/ESP32-Radio
stevojo dice:
Este proyecto utiliza un chip decodificador externo para la decodificación de mp3.
Incluso puedes ir un paso más allá y hacerlo con el propio ESP32 como en este proyecto:
https://github.com/kodera2t/ESP32_OLED_webradio
Herbert dice:
utilizar voip para configurar un módem acústico
mala ciencia dice:
Si usa audacity para "preparar" un archivo wav, también puede usarlo para preparar un archivo raw y reproducirlo con nodemcu. Construí una campana de reloj para el 8266-01. Obtiene su sincronización de mi enrutador y reproduce 1/2, 1/2. 3/4 / y el anillo completo de Westminster durante un cuarto, medio, tres cuartos y una hora, y explota la hora, así como un reloj de pie.
Roger Schaefer dice:
¿Quieres compartir tu código?
Mats Engstrom (@matseng) dice:
No es necesario convertir el archivo de audio en una matriz para insertarlo en un archivo .h. La cadena de herramientas y los archivos MAKE hacen esto automáticamente. Simplemente ponga una referencia al archivo en el "componente.mk" como este:
COMPONENT_EMBED_FILES: = sonido.wav
y luego declare una matriz en la fuente de la siguiente manera:
extern const uint8_t sono[] asm ("_ duuma_sono.wav_start");
fácil ...
Roger Schaefer dice:
No es exactamente fácil. Un ejemplo ayudaría mucho
Redhatter (VK4MSL) dice:
Una pequeña corrección para la frecuencia de muestreo ... no es una medida del número de "bytes", es una medida del número de muestras ... de lo contrario, se llamaría "velocidad de bytes". A veces, medimos la calidad por unidades de datos por segundo; normalmente llamamos a esto la tasa de bits. Una muestra de prueba es solo una variable que decide la velocidad de bits del sonido sin comprimir.
Tasa de bits = Tasa de muestreo × bits por muestra × canales
Entonces, cuando se trata de sonido mono de 8 bits, en realidad obtiene una velocidad de muestreo = "tasa de bytes", pero eso no se aplicará si, por ejemplo, utiliza muestras de 16 bits.
Con respecto a la frecuencia de muestreo mínima, un factor grande será la frecuencia significativa más alta en la forma de onda.
https://stuartl.longlandclan.id.au/blog/2015/01/03/a-horn-for-the-bicycle/
El efecto de sonido de campana es un ejemplo de que ir a una muestra de 4kHz no es suficiente, ya que el componente de frecuencia más alto es de alrededor de 2.2kHz. Si prueba esto a 4kHz, obtendrá un alias de ese elemento a 200Hz. Audacity probablemente intentará filtrar ese alias que podría cambiar por completo el sonido que deseaba reproducir.
Es aconsejable observar el análisis espectral de la forma de onda de interés antes de decidir la frecuencia de muestreo, elegir la frecuencia significativa más alta, duplicarla y luego agregar un poco más para obtener una banda de transición.
RoboMonkey dice:
Algunos lugares donde las tablas y la transmisión se pueden usar de manera efectiva, realmente ... pero escribe bien en ambos sentidos
Adivina quién hará sonar la alarma en los sensores del frigorífico en la domótica .... HEHEHE La unidad casada se calmará. La comida será comestible.
RoboMonkey dice:
Oye, sacó mis etiquetas malas en las ratas HEHEHE ....
Copa dice:
O use DFPlayer Mini ($ 5- $ 10). Reproduce cientos de archivos MP3 en una tarjeta micro sd. Tan fácil y barato. Dinero y / o estéreo. También es muy pequeño.
XTronical dice:
Con suerte, si miras la última versión y para qué la uso, nunca fue diseñado para ser un simple reproductor de audio digital, eso fue solo el comienzo. Mira los últimos videos sobre este proyecto
DacAudio V4
https://youtu.be/fRvavKaWKmsFrogger en ESP32
https://youtu.be/isvPum2VBW8Inicialmente, fue diseñado para ayudarme a producir sonidos para escribir juegos en el ESP32 que no funcionarían con un reproductor MP3, ni siquiera estoy seguro de si el acceso DMA es una opción fácil para mis necesidades.
Casino amistoso dice:
Hizo el mismo proyecto el viernes pasado. Utiliza la imagen SPIFFS para reproducir archivos RAW aleatorios a través de I2S. Tendrá un gran botón rojo y dirá "no" de varias formas.
Que no dice:
El sonido a través de la salida filtrada es un módulo estándar en NodeMCU, ¿verdad?
No estoy seguro de por qué esto se presenta como algo que necesita un nuevo código.SolderFluxxer dice:
Una biblioteca que no solo habla el ESP32, sino que también se convierte en Force With You.
Y04NN dice:
En Linux, para convertir cualquier archivo binario a C-set simplemente haga:
xxd -i nombre de archivo