Ayudamos a montar un punto de información en el barrio

Sí, sí, ya se que esta semana tocaba lo de la VPN, conectarse desde fuera de nuestra red privada y todo el rollo. Pero la de hoy es una entrada práctica, se que os va a gustar y servirá para mostraros como con un poco de imaginación podemos hacer cosas muy chulas. Y de paso aprovechamos y cortamos un poco todo el rollo técnico que llevamos hasta hora. Bueno…. en este punto…. al final hay un poco de parte técnica super friki, pero es muy simple.

Si seguís nuestras redes sociales (@tuxllefia) el viernes pasado, a última hora de la tarde los compañeros de Llefi@net Xarxa ciutadana pusieron un tweet (que retuitemaos), algo sobre un prototipo. Pues nosotros ayudamos en el desarrollo de este proyecto y explicamos aquí lo que hicimos.

Post en el twitter de @llefia mientras preparabamos el proyecto

En breve son las fiestas del barrio. Y el otro día pensando en como darle más difusión al programa de fiestas, salió a relucir el tema de la típica pantalla que tienen muchos comercios, seguro que la habéis visto. Y esta solución además permitirá disponer de un punto de información dinámico el resto del año.

Pues eso es lo que vamos a hacer hoy, una pantalla autónoma que muestre contenido multimedia. Ahora mismo, es solo un prototipo, que pondremos en alguno de los comercios del barrio como prueba piloto. La idea es seguir desarrollando el proyecto y darle más versatilidad, pero no adelantemos acontecimientos, vamos a lo que nos toca.

Vamos a montar un sistema lo más simple posible, para que la intervención del usuario sea la mínima.

Para este proyecto recuperamos una pantalla vieja que teníamos por la asociación. Y una Raspberry Pi que no usábamos.

Descargamos Raspbian, la versión con escritorio. Y la instalamos en la MicroSD, si no recuerdas bien como hacerlo repasa la segunda entrada de la serie “Jugueteando con GNU/Linux”. Prácticamente tenemos que hacerla entera, aunque en este caso la configuración de red nos la podemos ahorrar, de momento no es necesaria. La pantalla trabajará en modo «standalone«.

En este proyecto vamos a usar una presentación en formato odp. La puedes hacer en la misma raspi, si quieres, con Impress de Libreoffice, lo trae instalado por defecto. Una vez acabes con tu presentación tendrás que hacer un par de modificaciones para que funcione. En este ejemplo la vamos a llamar “presentacion.odp”.

La primera modificación es para que las diapositivas avancen automáticamente, por defecto las presentaciones se configuran para avanzar haciendo click con el ratón. En la barra de menús, despliega el menú «Diapositivas» y abajo del todo selecciona “Transición entre diapositivas”. En la sección “Avanzar diapositiva” activa el botón “Automáticamente después de:” y establece un intervalo de duración. Y por último haz click en “Aplicar transición a todas las diapositivas”.

Avance automático de diapositivas

Ahora tenemos que hacer que la presentación se reproduzca en bucle y nunca acabe. Para eso en el menú “Presentación” haz click en “Configurar presentación”. Intervalo déjalo como sale “Todas las páginas”. En “Modo de presentación” selecciona “Bucle y repetición tras” aquí establece el intervalo de pausa entre el final y el inicio. Si lo pones a cero reproducirá la presentación sin pausa. En “Opciones” activa la casilla “Presentación siempre en primer plano”. Guarda la presentación y cierra Impress.

Reproducción en bucle

Pues esto ya esta listo, ahora solo toca programarlo para que se reproduzca al inicio automáticamente y no tengamos que hacer nada. Nosotros, hemos creado la carpeta “Presentaciones” dentro del home de pi.

En ese mismo home hemos hecho un script, os dejo el enlace a github con el script comentado para que podáis verlo. Básicamente con este script lo que hacemos es asegurarnos que se inicie la presentación automáticamente. Recuerda lo de los permisos de ejecución, de lo contrario no funcionará, mira el último post. Nosotros lo hemos llamado autoinicio.sh.

El último paso es hacer que el scrip se ejecute automáticamente al inicio. Lo del @reboot del cron aquí no sirve, es más, solo te va a generara problemas. Tenemos que configurarlo para que se ejecute al inicio. Pero Pixel, el entorno de escritorio de Raspbian, es una derivación de LXDE y no tiene una herramienta para configurar esto, tenemos que hacerlo a mano. En el home de pi, hay una serie de carpetas ocultas, en la terminal lanza el comando ls, y te mostrara las carpetas y archivos. Pero si lanzas ls -A te mostrará bastantes más. Todo lo que empieza por · es una carpeta o archivo oculto. A nosotros nos interesa cd .config. De nuevo ls, nos interesa cd lxsession. Vamos de nuevo ls, cd LXDE y otro ls. Ya hemos llegado donde queriamos nano autostart. Este archivo contiene las rutas absolutas a los programas que queremos ejecutar al inicio, solo tenemos que añadir una linea con la ruta a nuestro script, tal que así «@/home/pi/autoinicio.sh». Si no tienes muy claro como moverte por los diferentes archivos y carpetas usando la terminal mira esta entrada del blog.

Y ya está, ya lo tenemos. Nuestra pantalla de información autónoma. Si quieres comprobar que funciona reinicia las raspi. Es posible que te lleves una sorpresa.

Parte técnica super friki

Es posible que todo esto lo estés configurando usando un monitor con conexión HDMI, posiblemente la tele de tu casa. Pero no vas a poner la tele de tu casa en el escaparate de una tienda; y seguramente como nosotros, vas recuperar una pantalla vieja con conexión VGA y para ello vas a necesitar un adaptador. Así que te vas a la tienda, lo compras, lo conectas….. Y sorpresa!!!! No hay salida de vídeo. Todo este curro para una pantalla negra como el azabache.

¿Por que pasa esto? Pues la explicación es muy simple Raspberry Pi ejecuta primero la GPU, el procesador gráfico, y luego la CPU. Si la GPU no detecta conexión en la salida de vídeo la anula, por un tema puro y duro de optimización de recursos. Con lo que obliga a tener 1º la pantalla la activa y conectada antes de enchufar nuestra raspi. Como la idea es usar un solo interruptor que encienda los 2 equipos al mismo tiempo esto nos generará un problema.

Además de eso, la conexión HDMI es una salida digital y tiene comunicación bidireccional, es decir ambos equipos se configuran automáticamente entre ellos según el dispositivo conectado. Sin embargo VGA es una conexión analógica y es incapaz de comunicarse con el puerto HDMI con lo que a efectos prácticos es como si no existiera la conexión.

¿Como resolvemos esto? Pues forzando la salida de vídeo detecte o no la conexión. Nuestra raspi ha sustituido la bios tradicional por un archivo de texto, config.txt. Este archivo maneja algunos aspectos de bajo nivel en la configuración de nuestra maquinita. Mucho cuidado al editar este archivo, podemos liarla mucho. Lo recomendable es hacer una copia de seguridad antes de editar ninguna línea. Y como consejo, aunque podemos usar cualquier editor de texto, es recomendable usa un editor de código tipo geany o similar, esto se debe a los saltos de linea que usan los diferentes sistemas operativos. Podemos editarlo desde la propia raspi con nano, si queremos. Este archivo está en la partición /boot, nano /boot/config.txt. Esta partición es accesible desde cualquier sistema operativo.

Tenemos que buscar las siguientes líneas, descomentarlas (quitar el # que tienen como primer carácter) y dejarlas tal como se ven aquí:

  • hdmi_force_hotplug=1
  • hdmi_group=2
  • hdmi_mode=28
  • hdmi_drive=2
  • config_hdmi_boost=4

La línea hdmi_mode especifica la resolución de salida y la tasa de refresco de la pantalla. El modo 28 es 1280×800@60Hz para pantallas de 16:9. Para pantallas 4:3 os recomiendo 32 que es 1280×960@60Hz o bien 16 que es 1024×768@60Hz. En este artículo de geekytheory (de él he sacado parte de lo que he usado aquí) encontraras más información sobre como configurar la pantalla y los diferentes modos de hdmi en función del hdmi_group.

Con estas modificaciones hemos resuelto el problema de la resolución y la comunicación entre el HDMI y el VGA, pero no el problema de la autodetección (y autodesconexión) de la salida de video. Para poder corregir del todo el problema y evitar que se anule la salida de vídeo tendrás que añadir estas otras líneas al archivo:

  • hdmi_ignore_edid=0xa5000080
  • hdmi_ignore_cec_init=1
  • hdmi_ignore_cec=1

Con esto ya si que tienes tu pantalla 100% operativa y tendrás salida de vídeo con o sin pantalla y podrás conectarla en cualquier momento.

Actualización:

Recuerda anular el protector de pantalla y las opciones de energía. Tendrás que editar el archivo /etc/xdg/lxsession/LXDE-pi/autostart y añadirle estas lineas:

  • @xset s noblank
  • @xset s off
  • @xset -dpms

Esto no funciona, instala xscreensaver con apt-get update, apt-get install xscreensaver.

Un comentario sobre “Ayudamos a montar un punto de información en el barrio

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies