Ver la versión completa : RaspberryPi Jukebox
josepzin
03/09/2016, 14:51
No creo que llegue a hacer nada pero creo el hilo por si algún día tengo tiempo/ganas de hacerlo.
- A Rapsberry-PI Juke Box: http://raspberry.io/projects/view/a-rapsberry-pi-juke-box-1/
- How to Build a Raspberry Pi Jukebox Any Non-Geek Can Use: http://lifehacker.com/how-to-build-a-raspberry-pi-jukebox-any-non-geek-can-us-1712107103
Aunque yo estaba pensando más en algo asi, una pantallita pequeña (o ni siquiera) y botones para pausar, anterior y siguiente:
https://cdn.instructables.com/FCJ/L3M5/HA4MBLYB/FCJL3M5HA4MBLYB.MEDIUM.jpg
De hecho parece más fácil usar un reproductor de MP3 viejo, puenteando los contactos... tengo uno por allí.
Lo dicho, lo más probable es que esto se quede en la nada, es mas que nada una idea de crear una "cajita de música" para la cría, que pueda ir pasando canciones facilmente.
DarkDijkstra
03/09/2016, 15:26
En su día en china vimos mi novia y yo un "puzzle 3d" para montar un gramófono y pensamos "jo, y lo que molaría una raspberry dentro para reproducir música..." pero finalmente no lo cogimos.
Se me ha ocurrido hacer una búsqueda rápida en amazon y he encontrado éste por 5 euros... eso con una batería, una raspi zero o similar, un pincho wifi, un altavoz sencillito que encaje en la trompa y un par de botoncitos... ; )
48080
^MiSaTo^
03/09/2016, 16:35
En su día en china vimos mi novia y yo un "puzzle 3d" para montar un gramófono y pensamos "jo, y lo que molaría una raspberry dentro para reproducir música..." pero finalmente no lo cogimos.
Se me ha ocurrido hacer una búsqueda rápida en amazon y he encontrado éste por 5 euros... eso con una batería, una raspi zero o similar, un pincho wifi, un altavoz sencillito que encaje en la trompa y un par de botoncitos... ; )
48080
Que chulo ese gramófono! Es muy buena idea lo de meter la pi ahí
rafa-lito
05/09/2016, 13:06
Qué guapo. No lo encuentro en Amazon. Me pasas el enlace?
DarkDijkstra
05/09/2016, 13:21
Qué guapo. No lo encuentro en Amazon. Me pasas el enlace?
https://www.amazon.es/dp/B01IQOYETY/
Yo he pedido uno y ya tengo en mente como montarlo más o menos. Una batería de PS Vita (de aquella liquidación, cuando costaban 10 euros en los Game) boca abajo pegada al "suelo" del gramófono, así tienes un botón ON/OFF abajo (aunque como ya se ha comentado en otros hilos no es que sea precisamente bueno apagar "a botonazo" para las tarjetas SD). Luego una raspi (todavía no sé si usaré una 2 que tengo por ahí de sobra una una zero que también tengo sin usar) con un pincho wifi y configurada para que al arrancar se conecte a la wifi del salón, monte una partición con el directorio de música que tenemos en el NAS y reproduzca una carpeta aleatoriamente.
Seguramente le ponga un único botón para pasar a otro directorio aleatorio o similar, ya que como no tendrá pantalla ni nada, mi idea es que se asemeje un poco a una radio en la que buscas emisoras al azar o algo así.
La idea principal es poder estar en la terraza y poner algo de música con estilo ; )
como curiosidad mola, pero me temo que sale mucho más a cuenta pillar un mp3 baratuno, incluso nuevo, y hacer el invento con él. Ya sólo por el tema de la batería...
^MiSaTo^
05/09/2016, 15:45
como curiosidad mola, pero me temo que sale mucho más a cuenta pillar un mp3 baratuno, incluso nuevo, y hacer el invento con él. Ya sólo por el tema de la batería...
Hombre el tema es cacharrear, montártelo tú y hacerte un chisme curioso. Si lo que quieres es un reproductor de mp3 por supuesto ue hay muchos más baratos que hacerte esto xD Y con menos jaleo XD
Pero no va de eso el hilo ;)
me refería a usar un mp3 para destriparlo y hacer el invento con él. Ya tienes pantalla, botonera y batería. A partir de ahí tu maña para tunearlo dentro de un juke o lo que sea que te apetezca usar.
Es que creo que, desde el desconocimiento lo digo, sería más útil un arduino que una rasp para este cometido. Lo digo por lo poco que se y he leído.
^MiSaTo^
05/09/2016, 15:55
me refería a usar un mp3 para destriparlo y hacer el invento con él. Ya tienes pantalla, botonera y batería. A partir de ahí tu maña para tunearlo dentro de un juke o lo que sea que te apetezca usar.
Es que creo que, desde el desconocimiento lo digo, sería más útil un arduino que una rasp para este cometido. Lo digo por lo poco que se y he leído.
hombre depende de lo que quieran hacer. Un arduino para reproducir mp3 no se si se puede. Pero el tema que creo que quieren hacer es que sea algo tipo reproductor de spotify. Para eso o tienes un mini ordenador o nada ;)
De todos modos te había entendido mal, tiene mucho más sentido lo que dices ahora jaja
Precisamente, un proyecto que acabo de encontrar, y que me mola mogollón. No se qué tienen, pero estos usos del NFC me fascinan, jeje.
https://www.youtube.com/watch?v=-_0FS2zpapM
el proyecto: http://www.marcopucci.it/tutorial-arduino-21-arduino-jukebox/
^MiSaTo^
05/09/2016, 16:03
Precisamente, un proyecto que acabo de encontrar, y que me mola mogollón. No se qué tienen, pero estos usos del NFC me fascinan, jeje.
https://www.youtube.com/watch?v=-_0FS2zpapM
el proyecto: http://www.marcopucci.it/tutorial-arduino-21-arduino-jukebox/
Ala qué chulo esto también!!!
Por lo que veo el arduino sólo lo usa para el NFC
yo he entendido que "acopla" el lector de nfc al arduino para leer las etiquetas y luego se reproduce la música desde él. Pero no acabo de ver si en un pendrive, sd, o por red o cómo...
edit: veo que lo reproduce desde el propio arduino con python. Eso sí, sólo admite formato .ogg
"Aprite il file 2_playmusic_Arduino.py con Python IDLE."
pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=4096)
while True:
x = ard.readline()
print (“Message from arduino: “)
print (x)
if “rock” in x:
pygame.mixer.stop()
song = pygame.mixer.Sound(“rock.ogg”)
pygame.mixer.Sound.play(song)
Me gusta mucho la idea. Puedes incluso usarlo en un bar. Montas la maquinita a tu gusto, conectada al equipo de audio, con las fichas en un álbum de monedas y queda la mar de rebonico :p
Se puede personalizar como quieras, creando "discos" que llamen a temas sueltos, álbums, géneros o incluso que activen el modo random.
DarkDijkstra
05/09/2016, 16:13
Como decís, con un reproductor mp3 "despiezado" tienes ya pantalla, almacenamiento, batería... pero claro, la idea es tener algo un poco menos "tonto"...
Para empezar, que no haya que andar cargandole música, sino que la coja de un NAS, de rockradio.com, etc
Me ha molado mucho lo de los discos con nfc, precisamente lo que estaba pensando, tras recordar el hilo de la mini-nes con cartuchos con un tag nfc era en hacer algo parecido pero con el "vinilo" de madera que tiene la maqueta esa.
josepzin
05/09/2016, 21:28
Estuve buscando y "destripando" un poco el MP3/4 que tenía tirado en un cajón y en principio puede servir perfectamente por los contactos de los botones, peroooo hay una pega: lo conecto al USB/cargador y desaparecen los controles en pantalla, se pone en "modo conectado" y ya no se puede usar. Lo he probado a una fuente directamente y lo mismo, modo MTP/MSC y nada más.
http://i.imgur.com/DLGy5YP.jpg
josepzin
06/09/2016, 04:42
Como decís, con un reproductor mp3 "despiezado" tienes ya pantalla, almacenamiento, batería... pero claro, la idea es tener algo un poco menos "tonto"...
Mi intención es tener algo MUY tonto, de hecho este MP3 era perfecto, la batería está medio kaput, tiene 1 gb de ram, suficiente para poner bastante cosas, tiene radio FM, los contactos de los botones parecen ser fáciles de puentear, en fin, que parece todo perfecto.
Pero no sé como solventar el problema de que al conectarlo al cargador se desactiva el player y eso es una cagada porque mientras esté conectado no puedo hacer nada :(
¿Alguna idea??
josepzin
06/09/2016, 23:23
A ver, suponiendo que lo quiera hacer con una Raspberry Pi, ¿es complicado hacer esto por software?
- Instalar alguna distribución simple
- Que arranque automaticamente un player cualquiera
- Que ese player tenga una lista de canciones asignada por defecto o que lea todo lo que hay en una carpeta
- Que se puedan asignar pulsaciones vía GPIO a Pausa, Anterior y Siguiente
Basicamente eso es lo que necesito, ni pantalla ni nada más.
¿Es fácil hacer algo así?
En principio yo diría que sí, pero tengo apenas experiencia en Linux.
josepzin
07/09/2016, 17:21
*cric* *cric* *cric* :D
DarkDijkstra
07/09/2016, 17:28
Si, es muy simple. Para que te hagas una idea, en la cocina tenemos nosotros una raspi zero que al arrancar coge uno de los videos que haya en el pendrive que le has pinchado aleatoriamente y en un punto aleatorio y lo reproduce, sin tener que arrancar un entorno gráfico ni nada, y lo preparé en media hora o así (lo hicimos porque siempre nos quejábamos de que no había ningún canal de tele con buenas pelis, así que tenemos un pendrive con star wars, indiana jones, willow, etc y para comer, al encender la tele tienes esa ilusión de "anda mira, están echando el imperio contraataca, vamos a verla!")
Lo de los botones lo puedes hacer muy fácil por ejemplo con un demonio de python que esté corriendo en paralelo, o incluso que directamente reproduzca la música el mismo programa de python usando alguna librería que reproduzca mp3...
josepzin
07/09/2016, 18:22
Si, es muy simple. Para que te hagas una idea, en la cocina tenemos nosotros una raspi zero que al arrancar coge uno de los videos que haya en el pendrive que le has pinchado aleatoriamente y en un punto aleatorio y lo reproduce, sin tener que arrancar un entorno gráfico ni nada, y lo preparé en media hora o así (lo hicimos porque siempre nos quejábamos de que no había ningún canal de tele con buenas pelis, así que tenemos un pendrive con star wars, indiana jones, willow, etc y para comer, al encender la tele tienes esa ilusión de "anda mira, están echando el imperio contraataca, vamos a verla!")
Que buena idea!!!
Lo de los botones lo puedes hacer muy fácil por ejemplo con un demonio de python que esté corriendo en paralelo, o incluso que directamente reproduzca la música el mismo programa de python usando alguna librería que reproduzca mp3...
Miraré esto de Python, a ver si me resulta simple de hacer.
Gracias!
-----Actualizado-----
Playing audio files with Python
http://raspberrypi.stackexchange.com/questions/7088/playing-audio-files-with-python
-----Actualizado-----
Parece que lo podría hacer, con liarme un poco a entender Python, no parecer que leer una carpeta con las músicas y reproducirlas una detrás de otra sea complicado.
Luego faltaría implementar la pausar, anterior y siguiente.
Cuando tenga un rato probaré un poco :)
-----Actualizado-----
¿Para estas cosas qué recomendais instalar??
Hasta ahora yo siempre he instalado las imagenes con Retropie o algun media center, pero nunca un Linux sin nada.
En este caso sería mejor uno básico, con lo menos posible, ligero, etc.
josepzin
07/09/2016, 19:54
A ver que tal este Minibianpi.
https://minibianpi.wordpress.com/
No será por falta de distros específicas para convertir la Raspi en un reproductor de música. Creo que hay varias.
Ahora, que lo que propones sí que es sencillo.
- Instalas la Minibian esa, que parece ser una versión recortada, sin entorno gráfico, de Raspbian. Para esto sobra.
- Instalas mpd, que es un reproductor de música tipo servidor (muy adecuado por tanto para controlar desde un script), y el cliente, mpc: "sudo apt-get update; sudo apt-get install mpd mpc"
- Investigas un poco cómo se configura mpd (básicamente meter las canciones en el directorio por defecto o especificarle uno) y lo pruebas para ver que funcione; es decir, que puedes iniciar la reproducción, saltar a la siguiente canción, etc., usando el comando mpc.
- Si te funciona, llega con hacer un script de bash muy simple que compruebe los GPIO y ejecute el comando mpc con la opción correspondiente al botón pulsado. Por esto no te preocupes que te echo una mano.
josepzin
07/09/2016, 21:07
GENIAL :)
Muchas gracias, ya te iré preguntando.
danihm_moz
07/09/2016, 21:40
lo de la jukebox nfc con arduino no es autonomo, no? por lo que he entendido esta conectado al ordenador, pero si en vez de conectarlo al pc corres el programa python en una raspberry se podria dejar como standalone
que buena idea para un regalo
lo de la jukebox nfc con arduino no es autonomo, no? por lo que he entendido esta conectado al ordenador, pero si en vez de conectarlo al pc corres el programa python en una raspberry se podria dejar como standalone
que buena idea para un regalo
Yo he entendido que funciona de forma autónoma.
Pero ya he dicho antes que no controlo del tema. Así que si alguien pone un poco de luz sobre ello,será de agradecer.
Enviado desde mi LG-D802 mediante Tapatalk
DarkDijkstra
08/09/2016, 01:53
A ver, si no me equivoco, Arduino puede reproducir música, pero de una manera limitada, así que no estoy seguro de que fuese autónomo salvo con un shield que le permita leer de una microsd por ejemplo y ahí reproduzca ficheros ogg (lo digo sin haber visto ni el video, la verdad)
Con una raspberry sería más facil hacerlo standalone (de hecho es lo que yo pienso hacer, detectas el tag nfc desde la raspberry y reproduces un directorio (si los archivos están en local por ejemplo) o una lista de reproducción de rockradio.com o similar (standalone pero necesitando wifi) directamente desde la raspberry
danihm_moz
08/09/2016, 10:02
en las imagenes no he visto ningun altavoz conectado al arduino, solo el lector nfc y luego esta el instalable de python para windows y tambien menciona el de mac. y si lo está hacienod asi no se porque reproduce el ogg desde python pudiendo hacer una llamada a un programa externo que reproduzca un mp3
josepzin
08/09/2016, 14:35
Soy bastante lento para Linux, la verdad... :D
Logré instalar Minbianpi
Hice todas las actualizaciones
Instalé Python (lo basico supongo)
Instalé raspi-config
- Expandir filesystem
- Cambiar locale
- Cambiar layout de teclado: error I3 no se qué
Y aquí me he quedado por ahora.
Un poco raro eso de no poder cambiar el layout del teclado pero tampoco es grave.
A ver como sigo...
He mirado un poco ese mdp (o algo asi) pero no me entero de nada :(
Si quisiera crear un script en Python, ¿dónde se pone?, veo montones de carpetas que apenas si sé que son pero supongo que habrá una "zona de usuario".
Ya seguiré probando cuando tenga un rato.
Parece, por lo que he visto, que el usuario por defecto en Minibian es root, ¿no? Puedes echar un vistazo también a la versión de Debian ("cat /etc/debian_version") en la que está basada la imagen que estás usando.
Sobre lo del teclado, ejecuta "dpkg-reconfigure keyboard-configuration" (debería salirte un menú para elegir el tipo y distribución del teclado) y después reinicia ("reboot"). Si eso no funciona, puedes instalar el paquete console-data ("apt-get install console-data") y después podrías cambiar la distribución ejecutando "loadkeys es" (y para que el cambio fuese permanente podrías añadirlo a un fichero de inicio de sesión, ejecutando, por ejemplo, "echo loadkeys es >> ~/.bashrc"). Al margen de todo esto, ¿no te sería más cómodo acceder a la Raspberry por SSH?
¿Has instalado mpd y mpc ("apt-get install mpd mpc")? El reproductor mpd es un servidor y ya se arranca automáticamente durante el inicio. A ver, se le pueden configurar muchas cosas (mpd.conf (http://linux.die.net/man/5/mpd.conf)), pero debería ser posible usarlo con la configuración por defecto. Más bien es cuestión de ver como manejarlo con el comando mpc (http://linux.die.net/man/1/mpc).
Parece que según viene configurado mpd, el directorio por defecto en el que busca las canciones es "/var/lib/mpd/music" ¿Te apañas lo suficiente en Linux/Unix para copiar unos cuantos mp3 a ese directorio por línea de comandos?...
- Copia unos cuantos mp3 a la raíz de un pendrive.
- Ejecuta el comando "lsblk", que te muestra todas las unidades de almacenamiento (y las correspondientes particiones) que hay conectadas.
- Enchufa el pendrive en la Raspberry.
- Vuelve a ejecutar el comando lsblk. Ahora debería aparecer una nueva unidad, la correspondiente al pendrive. Lo que te interesa es el nombre de dispositivo y el número de partición. Si no tienes ningún otro conectado y sólo tiene una partición, será: "sda1"
- Crea un directorio en el que montarás la partición del pendrive, por ejemplo: "mkdir ~/pendrive"
- Ahora lo montas (supongamos que es "sda1"): "mount /dev/sda1 ~/pendrive".
- Verás que efectivamente tienes el contenido del pendrive en dicho directorio: "ls ~/pendrive"
- Ahora copias la música: "cp ~/pendrive/*.mp3 /var/lib/mpd/music"
- Compruebas que se copió: "ls /var/lib/mpd/music"
- Desmontas el pendrive: "umount ~/pendrive"
- Desenchufas el pendrive.
Ahora utiliza mpc para controlar mpd:
- Haz que mpd escanee el directorio de música: "mpc update"
- Puedes ver los ficheros que ha encontrado: "mpc ls"
- Añade esos ficheros a la playlist por defecto: "mpc ls | mpc add"
- Comprueba que efectivamente se añadieron: "mpc playlist"
- Inicia la reproducción: "mpc play"
- Canción siguiente: "mpc next"
- Canción anterior: "mpc prev"
- Play/Pausa: "mpc toggle"
No es tan complicado XD. Revisa la ayuda de mpc (http://linux.die.net/man/1/mpc).
Si quisiera crear un script en Python, ¿dónde se pone?, veo montones de carpetas que apenas si sé que son pero supongo que habrá una "zona de usuario".
La zona de usuario es un directorio con su mismo nombre dentro de "/home". En el caso de root, que es el superusuario, su directorio es directamente "/root". El directorio "~" hace referencia al directorio del usuario (prueba a ejecutar "echo ~"). Lo normal es cada usuario guarde sus scripts en un directorio dentro de su directorio de usuario. Y los que quieras que sean accesibles a todos los usuarios, lo normal sería guardarlos en "/usr/local/bin".
josepzin
08/09/2016, 19:55
Super interesante, muchas gracias por todas las explicaciones, intentaré hacerlo.
Antes de eso, un par de preguntas básicas sobre Linux:
- Al arrancar siempre pide Login, supongo que eso no debería afectar luego para ejecutar de forma automática (autoload) lo que sea que haga.
- Me da igual lo del usuario, ahora mismo soy root y si por mi fuera no pediría login, pero eso en Linux no sé si se puede hacer.
- Bastante lógico que se pida login en un sistema operativo multiusuario. Efectivamente no afecta en absoluto. El script que controla el reproductor de música será lanzado automáticamente durante el arranque, no de forma interactiva por un usuario.
- ¿Te refieres a iniciar sesión sin hacer login o a que no se pueda iniciar sesión en absoluto? Ambas cosas se pueden hacer, pero no tienen mucho interés de manera general. Repito, porque esa parece ser tu preocupación, la posibilidad de usar el SO de manera interactiva no le resta capacidad para que sea usado de forma automática, programada.
josepzin
08/09/2016, 20:58
- Bastante lógico que se pida login en un sistema operativo multiusuario. Efectivamente no afecta en absoluto. El script que controla el reproductor de música será lanzado automáticamente durante el arranque, no de forma interactiva por un usuario.
Gracias, eso es lo que quería saber.
- ¿Te refieres a iniciar sesión sin hacer login o a que no se pueda iniciar sesión en absoluto? Ambas cosas se pueden hacer, pero no tienen mucho interés de manera general. Repito, porque esa parece ser tu preocupación, la posibilidad de usar el SO de manera interactiva no le resta capacidad para que sea usado de forma automática, programada.
Me refiero a iniciar sesión sin hacer login, está claro que es una tontería, lo decía mas que nada para no tener que hacer ese paso, que igual no es problema. No me hagas caso :P
josepzin
09/09/2016, 05:02
Ahora utiliza mpc para controlar mpd:
- Haz que mpd escanee el directorio de música: "mpc update"
- Puedes ver los ficheros que ha encontrado: "mpc ls"
- Añade esos ficheros a la playlist por defecto: "mpc ls | mpc add"
- Comprueba que efectivamente se añadieron: "mpc playlist"
- Inicia la reproducción: "mpc play"
- Canción siguiente: "mpc next"
- Canción anterior: "mpc prev"
- Play/Pausa: "mpc toggle"
Trenz muchas gracias!
Lo acabo de comprobar y en general todo ha funcionado tal cual lo has puesto!
He instalado mpc
He montado el USB, copiado los mp3
He agregado las musicas etc
Lo único es que no se escucha nada, me da error Failed to open audio output.
Por lo que veo es un error común, a ver...
A lo mejor digo una tontería pero ese reproductor que no pudiste hacer funcionar por el tema del USB. Digo yo que si desconectas la batería y lo alimentas directamente desde sus conexiones, el aparato debería funcionar bien ¿no?.
Mira el voltaje de la batería porque si es de 5V lo podrías alimentar desde un usb directamente y si es menos, con un regulador de voltaje solucionas el tema,
josepzin
09/09/2016, 06:01
Igual funciona... Yo de electrónica no tengo idea.
No consigo hacer funcionar el audio... :(
Según parece ya no es cosa de mdp, creo.
-----Actualizado-----
He probado todo tipo de cosas que he visto en internet sobre este error y nada... ufufuf
¿Ese error cuándo te aparece, cuando ejecutas por ejemplo "mpc play"?
A ver, dime cuál es la imagen de Minibian que estás usando. ¿Es la última: "2016-03-12-jessie-minibian.tar.gz"? Como todavía tengo la RPI2 que me dejaron podría tratar de reproducir ese error llegado el caso.
- Comprueba que está cargado el driver de sonido (snd_bcm2835): mira si aparece listado al ejecutar "lsmod"
- Si no te aparece, cárgalo: "moprobe snd_bcm2835"
- En la configuración por defecto de mpd se usa el dispositivo "hw:0,0". Comprueba que puedes reproducir sonido por él con "speaker-test -t sine -D hw:0,0 -c 2" (pulsa CTRL+C para finalizar el test)
- Reinicia el servicio mpd ("/etc/init.d/mpd restart") y examina su log ("more /var/log/mpd/mpd.log") a ver si aparece información más detallada del error.
josepzin
09/09/2016, 18:27
Entre las cosas que vi por internet, varias de esas me suenan. Ya lo probaré esta noche si tengo algo de tranquilidad y tiempo.
Estoy usando esta imagen: 2016-03-12-jessie-minibian.img sí, parece ser la última.
Bueno, probé Minibian...
Ya he visto cuál era el problema para cambiar el teclado. Ahí raspi-config tiene un fallo, porque necesita de dos paquetes que, sin embargo, no vienen en su lista de dependencias (por lo que no se instalan automáticamente al instalar raspi-config), ni tampoco vienen instalados por defecto en Minibian. En fin, que es necesario instalarlos: "apt-get install keyboard-configuration console-setup"
Y con respecto a mpd y mpc... pues ningún problema, funcionó todo correctamente, así que no sé qué decirte.
Una cosa que puedes probar es parar el servicio mpd ("/etc/init.d/mpd stop"), y después lanzarlo manualmente desde la línea de comandos, indicando que dé información detallada ("mpd --verbose --stderr"). Mira el resultado que obtuve habiendo descargado previamente el módulo de sonido, con lo que lógicamente dará error al hacer "mpc play":
root@minibian:~# mpd --verbose --stderr
config_file: loading file /etc/mpd.conf
path: SetFSCharset: fs charset is: UTF-8
libsamplerate: libsamplerate converter 'Fastest Sinc Interpolator'
vorbis: Xiph.Org libVorbis 1.3.4
opus: libopus 1.1
sndfile: libsndfile-1.0.25
wildmidi: configuration file does not exist: /etc/timidity/timidity.cfg
adplug: adplug 2.2.1
db: reading DB
curl: version 7.38.0
curl: with GnuTLS/3.3.8
avahi: Initializing interface
avahi: Client changed to state 101
avahi: Client is CONNECTING
state_file: Loading state file /var/lib/mpd/state
playlist: queue song 1:"Jennifer Rush - The power of love.mp3"
decoder_thread: probing plugin mad
decoder: audio_format=44100:24:2, seekable=true
[1]+ Done mpd --verbose --stderr --no-daemon
root@minibian:~#
root@minibian:~#
root@minibian:~#
root@minibian:~# mpc play
client: [0] opened from 127.0.0.1:37503
client: [0] process command "play"
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default
alsa_output: Failed to open "My ALSA Device" [alsa]: Failed to open ALSA device "default": No such file or directory
output: Failed to open audio output
client: [0] command returned 0
client: [0] process command list
client: process command "status"
alsa_mixer: Failed to read mixer for 'My ALSA Device': failed to attach to default: No such file or directory
client: command returned 0
client: process command "currentsong"
client: command returned 0
client: [0] process command list returned 0
Bruce_Springsteen_Streets_Of_Philadelphia.mp3
[paused] #1/4 1:52/2:57 (63%)
volume: n/a repeat: off random: off single: off consume: off
ERROR: Failed to open audio output
root@minibian:~# client: [0] closed
root@minibian:~#
root@minibian:~#
root@minibian:~# pkill mpd
Da el mismo error, "ERROR: Failed to open audio output", aunque la indicación del problema real empieza mucho antes, con "ALSA lib confmisc.c:768:(parse_card) cannot find card '0'", porque no encuentra la tarjeta de sonido.
josepzin
13/09/2016, 00:03
Ya he visto cuál era el problema para cambiar el teclado. Ahí raspi-config tiene un fallo, porque necesita de dos paquetes que, sin embargo, no vienen en su lista de dependencias (por lo que no se instalan automáticamente al instalar raspi-config), ni tampoco vienen instalados por defecto en Minibian. En fin, que es necesario instalarlos: "apt-get install keyboard-configuration console-setup"
Interesante saberlo, al final lo había podido cambiar haciendolo directamente desde consola, no me preguntes como... :P
Y con respecto a mpd y mpc... pues ningún problema, funcionó todo correctamente, así que no sé qué decirte.
Una cosa que puedes probar es parar el servicio mpd ("/etc/init.d/mpd stop"), y después lanzarlo manualmente desde la línea de comandos, indicando que dé información detallada ("mpd --verbose --stderr"). Mira el resultado que obtuve habiendo descargado previamente el módulo de sonido, con lo que lógicamente dará error al hacer "mpc play":
Da el mismo error, "ERROR: Failed to open audio output", aunque la indicación del problema real empieza mucho antes, con "ALSA lib confmisc.c:768:(parse_card) cannot find card '0'", porque no encuentra la tarjeta de sonido.
Aquí es distinto:
Al poner "mpd stop" se queda pensando un ratito y luego mustra "errno: Failed to open stop: No sucj file or directory"
Y al poner "mpd" otro error: fecha : socket: Failed to bind to '127.0.0.1:660' : Addres already un use"
Tengo ganas de volver a quemar la imagen de Minibian y empezar desde cero y también probarlo con la otra Rpi, pero con la instalacion desde cero, que esta ya está demasiado manoseada!
Gracias por todo.
Ojo, fíjate bien, que tienes que teclear "/etc/init.d/mpd stop", no "mpd stop" a secas. Precisamente, "/etc/init.d/mpd" es el script que se usa para iniciar y parar el servicio mpd, el script que se utiliza durante el arranque para lanzarlo. Si tecleas mpd a secas, estás ejecutando mpd directamente; lo mismo que si tecleas su ruta completa, "/usr/bin/mpd", ya que el programa, como la mayoría, reside en ese directorio (https://es.wikipedia.org/wiki/Filesystem_Hierarchy_Standard). Es decir, con "/etc/init.d/mpd" estás ejecutando un script que a su vez ejecuta "mpd". Dado que el servicio se lanza siempre durante el arranque mediante ese script, yo te decía que lo parases ("/etc/init.d/mpd stop") para después ejecutarlo directamente ("mpd --verbose --stderr"), lo que permite pasarle esos parámetros al servicio. Si no lo paras primero, cuando lo ejecutes se va a encontrar con que el puerto que usa el cliente para comunicarse con él ya está ocupado (por él mismo, es decir, mismo programa, distinto proceso), que es lo que te ocurrió: "socket: Failed to bind to '127.0.0.1:660' : Addres already un use". Como lo has ejecutado directamente, después, cuando hayas terminado las pruebas, para "matarlo" puedes usar "pkill mpd". Y para reiniciar y apagar el sistema por línea de comandos (igual ya lo sabes, pero por si acaso...): "reboot" y "shutdown -h now", respectivamente.
Si quieres puedes probar con la versión lite de Raspbian (https://www.raspberrypi.org/downloads/raspbian/) en lugar de Minibian. Lo de cambiar el teclado usando rasp-config debería funcionar correctamente. De hecho, ese error al cambiar el teclado en Minibian es un síntoma de que es una distro que no está tan pulida como debiera.
josepzin
13/09/2016, 13:28
Ojo, fíjate bien, que tienes que teclear "/etc/init.d/mpd stop", no "mpd stop" a secas. Precisamente, "/etc/init.d/mpd" es el script que se usa para iniciar y parar el servicio mpd, el script que se utiliza durante el arranque para lanzarlo. Si tecleas mpd a secas, estás ejecutando mpd directamente; lo mismo que si tecleas su ruta completa, "/usr/bin/mpd", ya que el programa, como la mayoría, reside en ese directorio (https://es.wikipedia.org/wiki/Filesystem_Hierarchy_Standard). Es decir, con "/etc/init.d/mpd" estás ejecutando un script que a su vez ejecuta "mpd".
Tiene sentido... ya lo probaré mejor entonces!
Si quieres puedes probar con la versión lite de Raspbian (https://www.raspberrypi.org/downloads/raspbian/) en lugar de Minibian. Lo de cambiar el teclado usando rasp-config debería funcionar correctamente. De hecho, ese error al cambiar el teclado en Minibian es un síntoma de que es una distro que no está tan pulida como debiera.
Si siguen los problemas, la próxima prueba será usando esa versión.
Gracias
DarkDijkstra
05/10/2016, 23:29
Bueno bueno bueno... algunos avances !!
Aprovechando un regalo de cumpleaños inminente, nos hemos puesto "al turrón".
Las primeras pruebas fueron con una raspi 3 (por la comodidad de conectarte via wifi y tal), un lector de tarjetas RC522, una tarjeta de sonido USB (ya que la raspi zero no tiene salida de audio analógica), un altavoz "de almohada" despiezado de 2 euros en Amazon, y un poco de python.
(Subid mucho el volumen si queréis escuchar algo)
https://sendvid.com/s5chr9hg
La calidad del video es basura, si, pero es que me lo he tenido que enviar por email desde un móvil, cuando pueda sacaré uno mejor con la cámara.
Al arrancar el sistema se ejecuta desde rc.local un programita en python que, al detectar un tag reproduce la primera canción de un directorio específico (usando directamente llamadas al sistema para arrancar mpg321). Al quitar el tag la para.
También he puesto un "5 way navigation switch" para manejar el volumen y pasar canciones atrás / adelante.
48389
Como veis, va a ir todo MUY a presión dentro de la caja de madera (de meterle una batería ni hablamos, tendrá un cablecito para conectar a donde se quiera). Ahora nos queda hacer los discos (recortando círculos de plástico negro con impresiones del disco original en el centro) y ver la cara del "cumpleañero".
Como macarrada final, estoy por intentar aprovechar un micro-motor (se ve a la derecha en la foto) que tengo para hacer que el disco gire realmente, pero eso ya es para nota, veremos si finalmente se puede hacer.
Cuando esté terminado del todo subiré más fotillos.
Estoy desvelado y al leer lo del motorcillo se me ocurre que podrías hacer algo que hasta molaria más.
Puentear la alimentación del motor con un interruptor en forma del brazo donde va la aguja de los tocadiscos. Cuando lo gires hacia el disco dejará pasar la corriente y se obrará la magia. Es una idea nada más.
Enviado desde mi LG-D802 mediante Tapatalk
josepzin
06/10/2016, 07:47
Tiene muy buena pinta!!!
Si quieres y puedes, pasa ese programa en Python a los pobres...
DarkDijkstra
06/10/2016, 10:06
Estoy desvelado y al leer lo del motorcillo se me ocurre que podrías hacer algo que hasta molaria más.
Puentear la alimentación del motor con un interruptor en forma del brazo donde va la aguja de los tocadiscos. Cuando lo gires hacia el disco dejará pasar la corriente y se obrará la magia. Es una idea nada más.
Enviado desde mi LG-D802 mediante Tapatalk
Pues mola la idea, no me lo había planteado... lo malo es que el brazo de la aguja, en la maqueta, es una pieza muy simple de madera y no se me ocurre ahora mismo como ponerle un interruptor... habría que hacer una propia y poner un micro switch debajo o algo...
Me da que para éste "MK I" no me dará tiempo (tengo que terminarlo para el sábado, que es el cumpleaños), pero en breve empezaré con el "MK II" ; )
-----Actualizado-----
Tiene muy buena pinta!!!
Si quieres y puedes, pasa ese programa en Python a los pobres...
Claro, el fin de semana cuando haya terminado más o menos todo y esté "estable" os lo paso (aunque ya os aviso que es un programa "mu tonto" que simplemente detecta cosas del GPIO y hace llamadas al sistema con Popen para ejecutar mpg321 y reproducir música, alsamixer para modificar el volumen, etc)
^MiSaTo^
06/10/2016, 10:36
Te está quedando genial!!! Deseando ver las fotos de cómo queda terminada y con los discos :D
josepzin
07/10/2016, 00:51
Claro, el fin de semana cuando haya terminado más o menos todo y esté "estable" os lo paso (aunque ya os aviso que es un programa "mu tonto" que simplemente detecta cosas del GPIO y hace llamadas al sistema con Popen para ejecutar mpg321 y reproducir música, alsamixer para modificar el volumen, etc)
Para probar y ver qué hacer para mi está genial :)
DarkDijkstra
07/10/2016, 16:10
Al final no voy a tener tiempo de meter motores ni leches (voy que me mato si está más o menos terminado para mañana), así que más le vale que le guste el regalo tal cual al cumpleañero ; )
Aviso, el script contiene algo de código "sucio" y no sé si será muy claro, pero por si a alguien le sirve, ahí va
#!/usr/bin/env python
# -*- coding: utf8 -*-
import RPi.GPIO as GPIO
import MFRC522
import signal
import subprocess
def end_read(signal,frame):
GPIO.cleanup()
exit()
class Button():
id = 0
runner = None
param = None
already_pressed = False
def __init__(self, id, runner, param):
GPIO.setup(id, GPIO.IN, GPIO.PUD_UP)
self.id = id
self.runner = runner
self.param = param
def check(self):
if GPIO.input(self.id) == GPIO.LOW:
if not self.already_pressed:
self.runner(self.param)
self.already_pressed = True
else:
self.already_pressed = False
def volume(up):
amixer = ["amixer", "-c", "1", "set", "PCM", ""]
amixer[5] = up and "10%+" or "10%-"
subprocess.Popen(amixer)
def change_song(next):
global song
global pid
global mpg321
global tag
if tag == "" or (next and song == lengths[tag]) or (not next and song == 1):
return
song += (next and 1 or -1)
if pid != None:
pid.terminate()
pid = None
mpg321[6] = "/root/lp/%s/%s.mp3" % (tag, str(song))
print mpg321
pid = subprocess.Popen(mpg321)
pid = None
song = 1
mpg321 = ["/usr/bin/mpg321", "-q", "-o", "alsa", "-a", "hw:1", ""]
tags = {188: "bach1", 225: "bach2", 250: "love", 251: "rock"}
lengths = {"bach1": 9, "bach2": 9, "love": 4, "rock": 7}
tag = ""
noTag = False
signal.signal(signal.SIGINT, end_read)
MIFAREReader = MFRC522.MFRC522()
buttons = [Button(35, volume, True), Button(36, volume, False), Button(37, change_song, False), Button(38, change_song, True)]
while True:
for button in buttons:
button.check()
if pid and pid.poll() == 0:
pid = None
change_song(True)
(status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQ IDL)
if TagType == 0:
if noTag:
if pid != None:
pid.terminate()
pid = None
tag = ""
else:
noTag = True
else:
noTag = False
if status == MIFAREReader.MI_OK:
(status,uid) = MIFAREReader.MFRC522_Anticoll()
if status == MIFAREReader.MI_OK:
if tag != tags[uid[2]]:
song = 1
tag = tags[uid[2]]
mpg321[6] = "/root/lp/%s/%s.mp3" % (tag, str(song))
pid = subprocess.Popen(mpg321)
josepzin
07/10/2016, 16:33
Como no sé nada de Python, para mi todo ese código es sucio :) gracias!
DarkDijkstra
07/10/2016, 23:39
Le he puesto algunos comentarios para poder ver "por donde van los tiros"
#!/usr/bin/env python
# -*- coding: utf8 -*-
# Incluimos los paquetes necesarios, GPIO para el control del cableado, MFRC522 es un script a parte que controla el lector de tarjetas NFC,
# signal lo usaremos para una salida "ordenada" del programa y subprocess para poder llamar a programas de linux
import RPi.GPIO as GPIO
import MFRC522
import signal
import subprocess
# Esto no es estrictamente necesario, pero si cerramos la aplicación (pulsando Ctrl+C), queremos "limpiar" el estado del cableado
def end_read(signal,frame):
GPIO.cleanup()
exit()
# Esta clase es para facilitar el uso del "5 way switch" que uso, así es más fácil definir un "botón", especificando que pin del GPIO
# de la raspi usará, y a qué función habrá que llamar cuando sea pulsado
class Button():
id = 0
runner = None
param = None
already_pressed = False
# Aquí el constructor del botón, le pasamos (además de "self" que es obligatorio en python):
# un "id" que representa al número del pin en el GPIO de la raspi
# un "runner" es decir, la función a la que llamaremos si se detecta que el botón está pulsado
# un parámetro para dicha función (esto está así porque las funciones que yo he definido tienen un parámetro)
def __init__(self, id, runner, param):
# Especificamos que el pin es de "input" y que lo hemos conectado a GND en el cableado
# (por lo tanto, se "activará en LOW")
GPIO.setup(id, GPIO.IN, GPIO.PUD_UP)
self.id = id
self.runner = runner
self.param = param
def check(self):
# Verificamos si el pin específico está en LOW y si no se había activado justo antes
# (el típico mecanismo para que si mantenemos la pulsación no lo detecte, solo nos interesa la primera hasta soltarlo)
if GPIO.input(self.id) == GPIO.LOW:
if not self.already_pressed:
# Aquí es donde llamamos a la función que le especificamos
self.runner(self.param)
self.already_pressed = True
else:
self.already_pressed = False
# Una función muy simple, hace una llamada asíncrona al sistema para ejecutar un comando de linux que suba o baje el volumen
# (según el parámetro que le pasamos ("up") sea True o False
# Lo que hace es ejecutar el comando "amixer -c 1 set PCM 10%+" por ejemplo para subir el volumen
# En mi caso hace falta el parámetro "-c 1" porque estoy usando una tarjeta de sonido USB (la integrada en una raspi "no-zero"
# sería -c 0 (la "por defecto") en cuyo caso no haría falta ese parámetro
def volume(up):
amixer = ["amixer", "-c", "1", "set", "PCM", ""]
amixer[5] = up and "10%+" or "10%-"
subprocess.Popen(amixer)
# Aquí cambiamos la canción actual de reproducción hacia delante o hacia atrás (en función del parámetro "next" sea True o False)
def change_song(next):
global song
global pid
global mpg321
global tag
# Si se llama a esta función sin que hayamos seleccionado un disco, o si ya estamos en la primera o última canción, a lo mejor
# no hay que hacer nada, así que salimos
if tag == "" or (next and song == lengths[tag]) or (not next and song == 1):
return
# Incrementamos o decrementamos nuestro contador de canciones, según el parámetro de entrada
song += (next and 1 or -1)
# Si estaba sonando alguna canción, matamos el proceso (es decir, terminamos la reproducción)
if pid != None:
pid.terminate()
pid = None
# Formamos nuestro string para la llamada al sistema, con dos parámetros, el primero es el nombre del disco y el segundo la canción
# (dentro de cada carpeta de los discos, las canciones son 1.mp3, 2.mp3...)
mpg321[6] = "/root/lp/%s/%s.mp3" % (tag, str(song))
print mpg321
pid = subprocess.Popen(mpg321)
# Aquí almacenaremos información sobre la llamada al sistema que hace que se ejecute mpg321 (el reproductor de música que usamos)
pid = None
# El número de canción que está sonando (o va a sonar)
song = 1
# La cadena con los parámetros para llamar al reproductor de música externo
# Al igual que con el control de volumen, tenemos que especificar que use la segunda tarjeta de sonido (porque uso una pinchada al USB)
# lo especificamos con "-a hw:1"
mpg321 = ["/usr/bin/mpg321", "-q", "-o", "alsa", "-a", "hw:1", ""]
# Cuando leo una pegatina NFC, cojo parte de su tag, y para las pegatinas que tengo, sus tags son 188, 225, 250 y 251
# Cada uno de esos tags se corresponde con un directorio donde están las canciones
# Como nota curiosa, esto es para un regalo y sus discos favoritos son "El concierto de Brandenburgo" de Bach, "A love supreme" de
# John Coltrane y "In rock" de Deep Purple
tags = {188: "bach1", 225: "bach2", 250: "love", 251: "rock"}
# Aquí indicamos cuantas canciones tiene cada directorio / disco
lengths = {"bach1": 9, "bach2": 9, "love": 4, "rock": 7}
# El disco seleccionado actualmente
tag = ""
# Mecanismo para evitar falsos negativos al leer tags. El lector, cuando tiene un tag apoyado, a veces dice que no hay nada,
# y en seguida vuelve a decir que hay un tag. Usamos esta variable para evitar que el programa piense que el usuario ha
# retirado el tag realmente
noTag = False
´
# Hasta aquí definición de funciones, clases y variables, ahora empieza el "main"
# Decimos al sistema que si pulsamos Ctrl+C, llame a la función end_read para hacer un apagado ordenado
signal.signal(signal.SIGINT, end_read)
# Activamos el lector NFC
MIFAREReader = MFRC522.MFRC522()
# Creamos una lista de botones (podríamos crear una variable para cada uno, pero así es más cómodo)
# Le pasamos tres parámetros a cada uno: El pin en el que "escucha", la función a la que llamar si se activa, y el parámetro
# a pasarle a esa función
# Los cuatro botones serían: "subir volumen, bajar volumen, canción previa, canción siguiente"
buttons = [Button(35, volume, True), Button(36, volume, False), Button(37, change_song, False), Button(38, change_song, True)]
# El programa está en un bucle infinito.
# Sería buena idea meter como primera linea del bucle un "time.sleep(1)" o algo así para que no esté a tope comiendo CPU, aunque
# si la raspberry sólo va a hacer eso, la carga de CPU es muy baja
while True:
# Aquí chequeamos cada uno de los botones, recorriendo la lista de los mismos
# No hay que especificar llamar a ninguna funcion ni nada aquí, porque cada uno ya sabe lo que tiene que hacer
for button in buttons:
button.check()
# Si habíamos hecho alguna llamada a linux (mpg321 para reproducir musica), pero ésta ya ha terminado, significa que la canción
# terminó sola (porque si la cortamos nosotros, habríamos puesto la variable "pid" a None) y entonces tenemos que pasar a la siguiente
if pid and pid.poll() == 0:
pid = None
change_song(True)
# Leemos un tag NFC
(status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQ IDL)
# Si el tipo leído es 0, es porque no hay tag, o puede ser un "falso negativo"
if TagType == 0:
# Aqui verificamos si en la iteración anterior dio también TagType == 0, por lo tanto no es un falso negativo, y realmente no hay tag
if noTag:
# Así que si estaba sonando una canción, la paramos
if pid != None:
pid.terminate()
pid = None
tag = ""
else:
noTag = True
else:
noTag = False
# Si hemos leído una tarjeta correcta
if status == MIFAREReader.MI_OK:
# Intentamos obtener su UID (para ver que tag es, el valor que nos interesa estará dentro de la variable uid, en concreto
# estará en uid[2]) Recuerda esos numeritos de arriba: 188, 225...
(status,uid) = MIFAREReader.MFRC522_Anticoll()
if status == MIFAREReader.MI_OK:
# Si el tag que acabamos de leer es diferente del tag actual, significa que hemos puesto otro disco y habrá que cambiar
# de canción, pero si fuese el mismo, significa que el tag sigue encima, por lo que no habría que hacer nada
if tag != tags[uid[2]]:
song = 1
tag = tags[uid[2]]
mpg321[6] = "/root/lp/%s/%s.mp3" % (tag, str(song))
pid = subprocess.Popen(mpg321)
DarkDijkstra
08/10/2016, 12:56
Bueno, así se queda, porque no hay tiempo para nada más... XD
(miento, queda rematar un poco el altavoz con la trompa / cables cuando se termine de secar la masilla)
Al final ha sido muy muy duro meter todo en la caja, colocar el "mini-joystick" en un lado de la caja, y sobre todo el tema del altavoz: como no hay sitio para altavoces con batería ni nada parecido, nos ha costado encontrar uno autoamplificado que entrase en la trompa y que diese un sonido "decente" (en el video no se escucha demasiado bien, pero en realidad es más que suficiente para poner en un salón)
Iba a poner un billete de 5 euros al lado de los discos o algo para la escala, pero he pensado que como aquí, arcade lo que más, sería más apropiado un joystick :brindis:
https://www.youtube.com/watch?v=Q79eU22KDqo
48417
48418
48419
josepzin
08/10/2016, 13:32
Se lo ve bastante apretujado :D pero como regalo quedó genial.
Ese código Pyhton necesita instalar algo más para funcionar?
Ahora que veo esto, Josepzin, ¿no volviste a intentarlo con el MPD, Raspbian Lite...? XD Cuando hice la prueba con la Raspi que me dejaron (ya no la tengo) hice un pequeño script bash con la funcionalidad que querías. No te lo pasé entonces porque estaba esperando a que tuvieras el MPD funcionando... Mejor te lo pongo, no vaya a ser que me olvide definitivamente XD. Así tienes otra opción e igual te animas a seguir con ello.
#!/bin/bash
# Inicializa GPIOs. Los siguientes, por defecto, son activos a nivel alto.
# Conetar los botones al PIN 1 (3.3 V)
echo 17 > /sys/class/gpio/export # PIN 11, Play/Pause
echo 22 > /sys/class/gpio/export # PIN 15, Siguiente
echo 23 > /sys/class/gpio/export # PIN 16, Anterior
echo 27 > /sys/class/gpio/export # PIN 13, Apagar
sleep 0.5
echo in > /sys/class/gpio/gpio17/direction
echo in > /sys/class/gpio/gpio22/direction
echo in > /sys/class/gpio/gpio23/direction
echo in > /sys/class/gpio/gpio27/direction
# Ajustar al gusto...
TCONS=0.005 # 5 ms, periodo de consulta de los GPIO
TPULS=0.2 # 200 ms, duración mínima de la pulsación
# Incializar mpd. Si el número de ficheros en el directorio
# y en la playlist no coincide, rehace la playlist
mpc repeat on
mpc update --wait
if [ $(mpc ls | wc -l) -ne $(mpc playlist | wc -l) ]; then
mpc clear
mpc ls | mpc add
fi
mpc toggle
# Bucle de consulta de los GPIO
while true; do
for i in 17 22 23 27; do
if [ $(cat /sys/class/gpio/gpio$i/value) -eq 1 ]; then
case "$i" in
17)
mpc toggle
echo PLAY/PAUSE
;;
22)
mpc next
echo SIGUIENTE
;;
23)
mpc prev
echo ANTERIOR
;;
27)
echo SALIR, APAGAR
break 2
;;
esac
sleep $TPULS
break
fi
done
sleep $TCONS
done
# Libera GPIOs
echo 17 > /sys/class/gpio/unexport
echo 22 > /sys/class/gpio/unexport
echo 23 > /sys/class/gpio/unexport
echo 27 > /sys/class/gpio/unexport
# Detiene reproducción y apaga
mpc pause
shutdown -h now
Lo guardas en un fichero, por ejemplo: '/root/reproductor_musica.sh'; Le das permisos de ejecución: 'chmod +x /root/reproductor_musica.sh', y para que arranque automáticamente lo llamas desde '/etc/rc.local' (editas ese fichero y en la línea anterior a la que pone 'exit 0' escribes '/root/reproductor_musica.sh &').
josepzin
09/10/2016, 12:16
Muchísimas gracias, en serio.
No probé más nada del tema, demasiado curro y líos.
Un día de estos que tenga ánimos para liarme con esto lo intento de nuevo!
DarkDijkstra
09/10/2016, 12:35
Se lo ve bastante apretujado :D pero como regalo quedó genial.
Ese código Pyhton necesita instalar algo más para funcionar?
En mi caso en concreto hay varios puntos a tener en cuenta... : S
De hecho como al final he metido el lector de NFC por ejemplo, hay que usar una versión "antigua" de raspbian o no funciona, ya que con el nuevo kernel cambian los módulos de acceso serie y el lector no detecta tarjetas.
Luego además hace falta la biblioteca MFRC522, y todo el rollo del pinaje, etc
Cuando tenga un rato (y ganas) haré un mini-tutorial de cómo lo monté, con la lista de piezas específicas, qué tags NFC compré... y tal por si alguien quiere hacer algo parecido, pero si no se usa un lector nfc o cosas así, igual mi ejemplo no es el más adecuado ni de lejos...
danihm_moz
20/10/2016, 09:56
Añado al hilo mi proyecto de Jukebox que terminé justo a tiempo para el cumpleaños de mi hermana
La idea original era imprimir la carcasa con filamento de madera pero no fue posible, aun no le he cogido el truco y se me atascaba, asi que al final está hecho en PLA dorado.
48538
bonus de mis piernas serranas XDDD
48539
48540
48541
48543
48544
48542
dentro lleva una bateria externa de movil que no aparece en las fotos que se recarga por el cable usb que sale.
El aparato funciona metiendo las "fichas" que salen devueltas por el lateral.
después de hacerlo ha habido cosas que han quedado un poco cutres (usar tarjetas nfc en vez de los llaveros que tenia, poner un puerto usb en vex del cable colgando...) y mejoraría, pero como el regalo gustó cumplió su cometido
en cuestion de scriting use la libreria MFRC522 para leer las etiquetas y un shell script guarrindongo para controlar el mpc
DarkDijkstra
20/10/2016, 12:54
Que gran idea lo de usar tags NFC como "botones" para las distintas acciones... se me empiezan a ocurrir un montón de nuevas tonterías posibilidades con una raspi y un lector XD
josepzin
20/10/2016, 13:12
Me estaba preguntando que era esa cosas con circulos y cómo se controlaba esto!!! :O
danihm_moz
20/10/2016, 13:16
son estos llaveros recortados malamente
48545
josepzin
20/10/2016, 21:11
Coñio... lo que se ve en esta foto :D :P
https://www.gp32spain.com/foros/attachment.php?attachmentid=48538&d=1476949878
Coñio... lo que se ve en esta foto :D :P
https://www.gp32spain.com/foros/attachment.php?attachmentid=48538&d=1476949878
http://pre05.deviantart.net/2121/th/pre/f/2011/288/5/b/mother_of_god_by_rober_raik-d4cw2di.png
josepzin
20/10/2016, 21:44
Jjajajajajja :D
danihm_moz
21/10/2016, 11:03
no se que creeis ver vosotros pero seguro que es un reflejo :lol2:
:D:D:D:D:D
josepzin
16/06/2017, 16:29
Al final pude casi terminar este "gran" proyecto :P
Después de darle muchas vueltas al tema decidí darle una oportunidad al MP3 viejito y lo pude usar.
Satán contento con su "caja de música", aunque ahora le falta alegrarlo un poco con pegatinas y cosas asi.
Refloto para comentar que he visto esto, y me parece interesante. Resulta económico aunque sería más laborioso para hacer un jukebox, creo.
https://www.dfrobot.com/product-1121.html
Puede funcionar con un Arduinio, o de forma autónoma, ya que tan sólo requiere de alimentación, un o unos altavoces estéreo, y pinchar un par de botones para utilizarlo.
Los botones, si se pulsan una vez, cambia de pista, y si los dejas pulsados suben o bajan el volumen.
https://www.gp32spain.com/foros/cache.php?img=https%3A%2F%2Fwww.dfrobot.com%2Fwiki %2Fimages%2Fthumb%2Fa%2Fab%2FMiniplayer_pin_map.pn g%2F550px-Miniplayer_pin_map.png
Ah, en tiendas chinorris está por unos 5€ solamente!!!
Un video donde lo muestran:
https://www.youtube.com/watch?v=WbrP9TyMr9E
josepzin
23/03/2018, 13:24
Después de darle muchas vueltas al tema decidí darle una oportunidad al MP3 viejito y lo pude usar.
Al final el MP3 murió, asi que ahora voy a hacer un invento con mi viejo movil Magic! de hecho creo que lo único que voy a hacer es pegarlo a una caja bonita, ya que el sonido del movil es bastante alto de por si.
¿Y porque pegar el movil a una caja que simula un altavoz? porque no me interesa tener a la cría con el telefono en la mano, con la musica, dando vueltas por la casa, como una Jenyfher...
futu-block
10/11/2018, 17:49
Reflotó porque quiero usar una Raspberry Pi 1 como reproductor MP3 conectado a una tele, pero con unos altavoces aparte, la tele usarla para seleccionar la canción o el disco / carpeta y luego cambiar de canal y a seguir jugando a la super nontenfo o la 64...
¿Alguna imagen en particular o con retropie y kodi voy en avión?
ninniopijo
10/11/2018, 18:00
Reflotó porque quiero usar una Raspberry Pi 1 como reproductor MP3 conectado a una tele, pero con unos altavoces aparte, la tele usarla para seleccionar la canción o el disco / carpeta y luego cambiar de canal y a seguir jugando a la super nontenfo o la 64...
¿Alguna imagen en particular o con retropie y kodi voy en avión?
Para reproducir MP3 mejor usar esto, alma de cántaro
Mini USB Reproductor MP3 WMA pantalla LCD Digital Audio Musica Radio hasta 32Gb https://rover.ebay.com/rover/0/0/0?mpre=https%3A%2F%2Fwww.ebay.es%2Fulk%2Fitm%2F292 069465139
futu-block
10/11/2018, 18:14
No Pache, lo siento pero hay que aprovechar la Raspberry Pi 1
ninniopijo
10/11/2018, 19:09
Mejor la podrias aprovechar para para ponerlo integrado en un Tenga japones de esos de Amazon junto a un regulador de temperatura y un vibrador, asi podras controlar la temperatura y la vibracion, y aun seguiria teniendo la funcionalidad MP3 asi que puedes ponerle un archivo MP3 con gemidos, ya solo programar unas buenas VR y voila! Ya tienes novia!
51986
51987
futu-block
11/11/2018, 13:38
Illo que lástima el Paquirrín
ninniopijo
11/11/2018, 15:10
Más lastima el foro y sus afiliados.
futu-block
11/11/2018, 18:11
Mucho ha durao el Pache este
Por cierto y relativo al tema, voy a usar Kodi, lo tantearé a ver si se adapta
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.