Hola gente,
Este seria el segundo (gran?) proyecto en que trabajo con Raspberry Pi B (RPI), luego de este que estuvo en funcionamiento durante un par de años y que le fui agregando todo tipo de cosas (Post1):
Ahora surgio otra necesidad y de paso se abrieron nuevas posibilidades...
Advierto que el articulo es largo y hablo de cosas y proyectos que hago referencia en otros posts, incluso de otros foros y a veces tambien en ingles, pero es para detallar un poco mas la experiencia, ya que involucra varios temas que me interesan y quiero dejar registro de todo. Tambien lo voy a ir actualizando en partes para poder separar los temas involucrados.
Por otro lado el proyecto se podria realizar de cualquier otra forma o directamente no hacerlo, ya que seguro se pude considerar que no es una de las mejores aplicaciones para RPI.
Igual gracias por leer y perdon si cansa un poco (o mucho) ...
Introduccion
El año pasado a mi madre se le rompio un portarretrato digital (PRD) como este:
Primero dejo de funcionar la fuente (un cargador de 5V de 650mA) asi que le puse uno mas grande que tenia.
Al tiempo volvio a fallar pero esta vez no era el cargador, probe con otro pero el PRD ya no arrancó mas.
Lo abri pero por dentro solo tiene 2 placas, una base y una mas pequeña para controlar la botonera.
Como es un sistema propietario supuse que la unica manera seria cambiar la placa base, que seguro el repuesto podria costar lo mismo que un PRD nuevo, si es que lo conseguia...
Resulta que el cargador que le habia puesto es de una placa Cubietruck (CT) que use para otro proyecto, pero que al momento de romperse el del PRD, tambien la CT estaba sin funcionar, por lo que estaba en desuso.
CT es un producto de otro fabricante pero que es mas potente que RPI, puede correr Android y soporta discos SATA, aunque tambien es mas caro:
Por desgracia una mala manipulacion de mi parte para insertarlo en el case (
http://cubieboard.org/2014/02/27/ewell-has-come-minipc-not-be-far-behind/), ya que tuve que presionar bastante para que entrara, sumado a posiblemente una falla en alguna soldadura provoco que la CT empezara a tener fallas, como no arrancar o quedarse colgada, hasta que dejo de funcionar definitivamente. Asi que el cargador de 5V 2A quedo al vicio por un tiempo...
Luego de un par de meses como pisapapeles, decidi probar de vuelta traerla a la vida, hasta que por suerte lo logre presionando la placa en sentido contrario al que use para meterla en el gabinete, confirmando un problema de soldadura, posiblemente de la memoria que era lo que daba error al querer reinicializarla.
Una vez funcionando de vuelta decidi darle uso como reemplazo del PRD roto, utilizando precisamente Android, XBMC, el monitor TFT que ya no usaba de la Raspberry y un adaptador de VGA a video compuesto RCA.
Todo estaria documentado en estos posts del foro de cubieboard junto con otras cosas (pero en ingles) por si a alguien le interesa:
La historia hubiera terminado aqui de no ser por dos motivos:
1- El adaptador VGA a RCA empezo a fallar a los meses, mostrando la pantalla distorsionada como si tuviera una interferencia y que no pude arreglar de ninguna manera. Y cambiarlo por algo mejor como un adaptador HDMI a RCA me iba a costar lo mismo que una RPI nueva...
2- Tenia ganas de probar Raspberry Pi 2 (RPI2), por lo que en principio iba a cambiar la RPI y reemplazarla, liberando precisamente una placa con salida nativa de video compuesto con RCA. Y como dije en mi pais me costaba lo mismo que un adaptador de video...
De paso a la placa CT le daria mejor uso como Android TV poniendola en una pantalla TV led de 24" pero que no es Smart, de forma tal que se pudiera usar con Netflix, Spotify, Youtube, Chrome y demas cosas de Google play:
Construccion:
Volviendo al PRD, lo logico era usar nuevamente XBMC pero como aqui no tenia Android, supuse lo mejor usar Raspbmc que ya lo conocia y es muy estable, ya que el proyecto se movio a OSMC y es la ultima version por lo que no es necesario actualizarla:
Basicamente era seguir de nuevo estos pasos sin tener en cuenta el monitor HDMI:
y salteando a la ultima pagina donde esta esto referido a screensaver:
Otro tema era ver de usar todos componentes que ya tuviera de antes, sin tener que comprar en lo posible nada, ya sea reciclando o hurgando en los cajones...
Lo primero entonces era volver a lo basico, sacar la RPI del rack donde estaba y ponerla en una caja. En una de tantas compras a China me habia quedado una cajita acrilica sin armar, asi que la ensamblé, y por el momento deje pegado el sensor de temperatura, hasta ver que hacer con eso (click en las fotos para agrandar)(ver Post1 - "Actualización con medidor de temperatura:"):
Luego estaba el tema de alimentar la RPI y el monitor TFT que es de 12V. Lo ideal seria usar una sola fuente y para eso lo mejor era esta placa conversora de 12V a 5V USB que tenia puesta CT junto con su propia fuente de 12V 1.2A y que ya no era necesaria para el Android TV:
En ese caso puse la parte de arriba que ya no usaba del case original que compre para la RPI, porque en el rack solo usaba la base (ver Post1 - "Algunas fotitos:"):
Los pulsadores los tenia guardados y pensaba usarlos uno (rojo) para reset y el otro (negro) para apagado. La ficha USB me sobro de un cable que use para armar el switch USB (ver Post1 - "Actualización con Lapdock:")
La idea de los pulsadores surgio para no tener que usar un teclado en la operacion normal para encender y apagar el PRD, ya que un boton de reset sirve tambien para encender la RPI y con otro boton se podria enviar una señal a uno de los pines para apagarla. Todo siguiendo los pasos este articulo:
Tambien pense mejor dejarle puesta la tapa del case para mantener separado el circuito de alimentacion de la RPI:
Un problema que habia tenido con el anterior diseño es que los cables del monitor quedaban sueltos y desprolijos, por lo que se me ocurrio meterlos en otro case que tenia para que quedaran guardados. El "case" en este caso es de otro SOC que tengo llamado Banana Pi (BPI) que adquiri para, en su momento, reemplazar la CT rota:
Lo que buscaba en ese proyecto era usar algo mejor que RPI pero que fuera lo mas compatible posible, y en realidad CT no lo era. BPI en cambio fue pensada como una copia mejorada de RPI con el mismo hardware de CT (o casi).
Hay logs de ese proyecto (aunque tambien en ingles) aqui:
Ahora era cuestion de enroscar un poco los cables de alimentacion y señal de video y ponerlos dentro del case BPI y luego empezar a montarlo como base de lo que seria una pequeña torre de gabinites acrilicos (que parece ser el diseño que mejor me va, construir apilando):
Faltaria entonces atornillar la tapa a la base del case de RPI para que no se mueva:
Y luego hacer la conexion de video hacia la RPI y cerrar la tapa con el encastre:
Luego poner los botones y soldar los cables que irian hacia la RPI, y finalmente conectarlos al puerto GPIO:
Por ultimo poner el gabinete con la alimentacion en la parte superior y conectar la alimentacion. Esta vez se unio con cinta adhesiva transparente (scotch), para mantener el efecto "acrilico":
Asi quedaba listo el ensamblaje.
Respecto del software, ademas de Raspbmc iba a ser necesario agregar un par de scripts que sirvieran tanto para apagar el dispositivo con el boton de apagado cuando sea necesario, como asi tambien un script que apagara automaticamente el PRD a una hora determinada, por ejemplo a la noche antes de dormir.
Ya para el encendido automatico, no seria posible hacerlo desde la misma RPI pero quiza con esto (no lo probé):
Un inconveniente que tuve con Raspbmc, y estimo que por tener interface XBMC, es que casi nunca me dejaba apagar con un simple comando "shutdown" como si podia con Raspbian.
Cualquiera fuera el modo, "shutdown" o "halt", incluso con "reboot", la mayoria de las veces se quedaba colgado sin completar.
La unica manera de hacerlo fue con el parametro "-f" para forzar el reinicio o apagado, pero mucho no me convencia "forzar" las cosas, aunque no quedaba otra...
Tambien tuve que instalar la libreria RPI.GPIO de Python:
El metodo que mejor resulto de los scripts fue el "while Loop" de aqui:
Salvo que cambie por el pin 16 y el comando:
os.system("sudo halt -f -p")
Respecto del apagado automatico, con cronjob seria posible hacerlo:
crontab -e
y agregar al final la linea, por ejemplo para apagar a la medianoche:
0 0 * * * /sbin/halt -f -p
Mas (mucho) acerca de cronjob aqui:
Por supuesto que todo seria posible siempre y cuando la RPI tenga conexion a Internet para tomar la hora.
Otro inconveniente es que cuando se apaga la RPI, el TFT no se apaga solo y al no recibir señal muestra un cartel bastante brillante en fondo azul que dice "No signal". Asi que hay que apagarlo manualmente. Eso no pasaba cuando estaba conectado a CT porque de esa placa tomaba los 12V de alimentacion desde un conector que tiene para discos SATA de 3.5", por lo que conviene apagar el monitor antes total a la hora predeterminada la RPI se apaga por si misma.
Solo faltaba configurar el addon "Picture Slideshow Screensaver" para que se active al minimo tiempo, es decir 1 minuto de inactividad y el periodo de rotacion de las fotos y ya estaba todo listo:
Y por fin el test de funcionamiento!: :)
En definitiva, el listado de materiales hasta aca (por suerte ya los tenia todos de antemano):
1- Raspberry Pi B (podria ser cualquier modelo, incluso el A, pero para tener Internet mejor con conexion a red)
2- Memoria SD de al menos 4GB (mejor si es de mas capacidad para poder guardar mas fotos)
3- Gabinetes acrilicos (3) (tambien puede ser cualquier cajita o gabinete a eleccion)
4- Tornillos a rosca (6) (4 para la base y 2 para la tapa de cajita BPI)
5- Pulsadores circuito abierto (2) (los mas pequeños posibles)
6- Resistencias de 1K(1) y 10K(1) ohm y un par de pines para plaquetas (o sino se podria soldar el cable de reset directamente)
7- Monitor 7" TFT (tambien puede ser HDMI o LVDS)
8- Cables de colores, preferentemente tipo dupont (Hembra/Hembra para conectar o Macho/Hembra para soldar)
9- Fuente de alimentacion 12V 1.2 A (si es mas amperaje mejor)
10- Addon Cubietruck conversor 12V a 5V (tambien puede ser cualquier regulador o conversor step-down)
11- Ficha USB para extraer 5V de alimentacion (conectar el otro extremo a pines 2 y 6 de RPI)
12- Teclado para hacer la configuracion (luego ya no es necesario para el funcionamiento)
13- Cable de red para conexion a Internet (tambien se podria utilizar un dongle Wifi)
14- Precintos de plastico para ajustar cables (bridas)
15- Un circulo de goma (eva?) que viene en los bulks de DVDs para ajustar el cable de video
16- Soldador para electronica, estaño y espagueti termocontraible (para aislar soldaduras)
Nota: La fuente podria ser solo de 5V y se podria quitar el addon si el monitor fuera cualquier otro.
Slds!