Uno de los asuntos que más me costó echar a andar fue el tema de los sonidos. Ya desde la inauguración de la maqueta, una amiga me había sugerido que hubiese sonidos de la estación y cosas así, y el reto me gustó. 4 meses más tarde logré los primeros resultados, pero una conexión errónea me quemó la placa. Cuando tuve repuestos volví a la carga y en diciembre pude llamar a quien me retó a que viese el resultado:
Estuve buscando por Internet varias posibilidades y hay fundamentalmente dos, paso a explicarlas brevemente y los resultados:
La primera es usar una MicroSD que debes leer desde el Arduino con un lector de tarjetas y es el mismo Arduino el que descodifica el archivo, que necesariamente tiene que estar en formato WAV. La tarjeta tiene que conectarse al Arduino por unos pines específicos, que dependen del modelo de Arduino que estemos usando. En el caso de la Mega 2560 son los 51-53. Hice bastantes pruebas y no conseguí reproducir ningún archivo, pero no debe ser imposible a juzgar por gente que lo ha hecho:
http://intelirobot.com.mx/blog/arduino/toca-sonidos-wav-en-arduino/
Para quien lo quera intentar las placas son éstas:
https://www.amazon.es/dp/B06XHJTGGC?ref_=ams_ad_dp_ttl
La segunda, que fue la solución adoptada, es mediante un reproductor MP3, el DFPlayer que se conecta con el Arduino mediante una conexión serie, es decir que en el caso del Arduino Mega 2560 se pueden usar cualquiera de los pares RX/TX de los que dispone: 0-1 (RX), 19-18 (RX1), 17-16 (RX2), 15-14 (RX3). La placa se puede adquirir en Amazon por poco dinero, como no es difícil quemarlas (yo me cargué 2 ó 3), las venden en packs de 3 ó de 5:
https://www.amazon.es/gp/product/B07911V1NL/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1
Para conectarlas conviene tener alguna placa protoboard:
https://www.amazon.es/gp/product/B071ZGC75Y/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1
Y para probarlo todo vale cualquier altavoz pequeño que tengamos a mano, pero si no disponemos de ninguno, estos altavoces son suficientes:
https://www.amazon.es/cylewet-di%C3%A1metro-ohmios-altavoz-est%C3%A9reo/dp/B06XT5ZHM3/ref=pd_bxgy_23_img_2/257-6594454-4287244?_encoding=UTF8&pd_rd_i=B06XT5ZHM3&pd_rd_r=19f4ce25-4853-11e9-80f5-471b8392310f&pd_rd_w=vWStL&pd_rd_wg=XyQCG&pf_rd_p=7b8b17e5-e2e0-413e-bf77-272aa9f4139c&pf_rd_r=MQZ4WQQ91ER711WGMVKM&psc=1&refRID=MQZ4WQQ91ER711WGMVKM
Este decodificador MP3 ya incluye un lector de tarjetas MicroSD (aunque las lee un poco a su aire, ya veremos), decodifica los MP3 y los envía, bien a un altavoz a través de un pequeño amplificador integrado de 3W, bien a un amplificador. El esquema de pines es el siguiente:

El esquema de conexión básico lo tomo prestado:

Aquí tengo que hacer algunas consideraciones: HAY que colocar dos resistencias de 1 kohm entre los conectores RX/TX en las conexiones RX Y TX como aparece en la figura, si no, salen unos ruidos horribles por los altavoces. Para que todo funcione bien HAY que conectar las dos masas (pines GND del DFPlayer con la masa del Arduino). En mi caso, también he conectado el pin BUSY a una entrada del Arduino para poder saber cuándo está reproduciendo un sonido y poder dar la orden de reproducir otro a continuación.
Para las pruebas el altavoz directo es suficiente, pero para colocar en la maqueta, el volumen es muy bajo. Por ello he añadido un mini-amplificador como el siguiente:
https://www.amazon.es/dp/B06XCC4F4F/ref=dp_cerb_3
que hay que soldar con cuidado y este amplificador no se conecta a la salida de altavoces, sino a los pines DAC_R y DAC_I del reproductor. A este amplificador es al que he puesto unos altavoces más apañados, que aun con todo les cuesta competir con el ruido producido por los trenes:
https://www.amazon.es/gp/product/B00JHERC8I/ref=ppx_yo_dt_b_asin_title_o08_s00?ie=UTF8&psc=1
Como se puede ver, son altavoces JVC diseñados para coche, por lo que las vibraciones de la maqueta no creo que los dañen.
Otro día os cuento de la programación de este dispositivo, pero ya os adelanto que tiene su propia librería y que mediante ella no os dará mayores problemas.
Saludos