Radio por internet con Raspberry pi


Desde Adafruit nos enseñan como construir  un  controlador de pantalla táctil para nuestra  Raspberry pi   con la idea de usar  esta  con la pantalla táctil , como  un Radio Reproductor por internet  gracias al  número creciente de emisoras de radio de internet disponibles. Obviamente  esta idea de instalar una pantalla táctil  a nuestra raspberry pi es ideal no solo para usar nuestra Pi como a radio por internet sino también para muchísimas  mas funciones como  reproductor mp3,cámara Ip, como tableta, para modding  y una infinidad de ideas      

Concretamente este interesante proyecto combina la versatilidad de la Raspberry Pi y el económico  PiTFT 2,8″ con pantalla táctil TFTdisplay. Una interfaz de visualización personalizada le permite controlar el volumen, la estación y ver lo que se está reproduciendo siendo ideal para personas que tienen una Raspberry Pi  y no le encuentran  otra  utilidad o simplemente para probar la funcionalidad del interfaz táctil

Como vamos a ver  hay bastantes pasos, pero el resultado merece la pena .

Resumidamente estos son los pasos a seguir:

  1. Montar  la PiTFT 320 x 240 2,8″ con pantalla táctil (esto puede no ser necesario si su PiTFT esta ya  premontado)
  2. Calibrar la pantalla táctil
  3. Instalar Music Player Daemon (MPD) y el cliente de reproductor de música (MPC) en laPi
  4. Encontrar y añadir emisoras de radio internet a mpc
  5. Descargar el código de radioplayer 
  6. Disfrutar de streaming de radio por internet en su escritorio Deben completarse todos los pasos de configuración y calibración para la pantalla de PiTFT.

Como adelanto en el siguiente vídeo podemos ver el proyecto en funcionamiento

 

https://youtu.be/AO-1GEYHOdU

 

Sin duda  es una idea muy interesante , veamos los pasos más en detalle.

 

1-Preparación y calibrado del sensor tactil 

Si su PiTFT de Adafruit pantalla táctil de 2,8″ vino como un kit ( por ejemplo el de Adafruit) necesitara completar las instrucciones para montar la pantalla,  aunque resumidamente hay que descargar y grabar la imagen PiTFT o bien utilizar una instalación existente de Raspbian e instalar el script de configuración sencilla. 

Si usa una  imagen para  instalar o utiliza el script instalador,entonces  todos los  pasos que vamos a ver  no son necesarios pues  ya están hechos  de modo que lo que vamos  a ver  es sólo para usuarios avanzados que tengan curiosidad sobre cómo configurar y personalizar la pantalla táctil siendo el procedimiento  idéntico para el 2.4″, 2.8″, 3.2″y 3.5″ PiTFTs resistivas.
Lo realmente interesante de este procedimiento es que ademas puede ser útil para otras pantallas diferentes a la de Adafruit en Amazon , pues  existen opciones razonables  por 25€ ( pantallas , soporte  y dializador incluidos )   que tendremos que configurar .
Como vamos a  ver el procedimiento es superable  aunque es cierto  que tengamos que pasar por un proceso de  calibración , pero no es difícil en absoluto.
Pantalla táctil de 3,5 pulgadas TFT LCD pantalla con protector caja de acrílico para Raspberry Pi 3 B+ [3 x disipador de calor de aluminio, CD con sistema instalado, lápiz capacitivo]
En este el caso  de comprar un kit , el montaje  físico es bastante sencillo  pues se reduce a  montar sobre la respberry pi sobre el  conector  de la GPIO  ,colocar el puente de hdmi  (segun el  modelo  especialmente en las pantallas mas grandes )   y montar finalmente los acrílicos
Este vídeo  nos puede servir para hacernos idea  de modo que nos  puede ayudar https://www.youtube.com/watch?v=gVK9MpPzK44,
No obstante  aun siendo sencillos  loa pasos , según el modelo puede haber variaciones  asi que lo recomendables es consultar las instrucciones que del fabricante del kit 
 
Veamos los  pasos a seguir una vez hayamos ,montado  la pantalla sobre la Raspberry Pi
 
  • Antes de empezar, vamos a hacer una regla udev para la pantalla táctil. Eso es porque el nombre eventX del dispositivo va a cambiar mucho y su molesto para averiguar lo que su llamada dependiendo de si tiene un teclado o el otro ratón instalado.   Ejecutar   sudo nano /etc/udev/rules.d/95-stmpe.rules   para crear un nuevo archivo de udev y copia y pega la siguiente línea: SUBSYSTEM==»input», ATTRS{name}==»stmpe-ts», ENV{DEVNAME}==»*event*», SYMLINK+=»input/touchscreen» 
  •  Quite y vuelva a instalar la pantalla táctil con  sudo rmmod stmpe_ts; sudo modprobe stmpe_ts  
  • A continuación  realize un listado del directorio  escribiendo ls -l /dev/input/touchscreen  debe apuntar a eventX donde X es algún número, que número será diferente en diferentes configuraciones ya que otros teclados/ratones y dispositivos USB se llevará una ranura de evento
  • Hay algunas herramientas que podemos utilizar para calibrar y depurar la pantalla táctil. Instalar el «evento de prueba» y «biblioteca de pantalla táctil» paquetes con sudo apt-get install evtest tslib libts-bin
  • Evtest corriente :Ahora usted puede utilizar algunas herramientas como  sudo evtest /dev/input/touchscreen  ,  que le permitirá ver eventos de la pantalla táctil en tiempo real, pulsar en la pantalla táctil para ver los informes.
  • Script de calibración AutoMagic :Si se gira la pantalla necesita volver a calibrar la pantalla táctil para trabajar con la nueva orientación de la pantalla. Puede ejecutar manualmente los procesos de calibración en la sección siguiente, o puede volver a ejecutar el script instalador y seleccionar una nueva rotación.Intente utilizar este script de calibración por defecto para calibrar fácilmente su pantalla táctil. Tenga en cuenta que los valores de calibración pueden no ser adecuados para la pantalla, pero deben ser lo suficientemente cercanas para la mayoría de las necesidades. Si usted necesita la calibración de pantalla táctil más precisa, siga los pasos en la siguiente sección manualmente calibrar la pantalla táctil.
  • Calibración manual :Si la técnica de calibración «automagic» no funciona para usted o si tiene alguna otra instalación donde tiene que calibrar cuidadosamente te puede hacer ‘manualmente’se quiere calibrar la pantalla una vez pero no tiene que hacer más que eso. Empezaremos por la calibración en la línea de comandos ejecutando sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen ts_calibrate .Siga las instrucciones en la pantalla, tocando cada punto. Utilizando un lápiz es sugerido para obtener un toque preciso. No uso algo de metal, plástico.Veremos cinco objetivos de punto de mira. Si ve menos que esos, la pantalla táctil probablemente genera señales múltiples de un solo toque, y usted debe tratar de calibrar otra vez.A continuación se puede ejecutar sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen ts_test que le permitirá dibujar-prueba de la pantalla táctil. Volver atrás y volver a calibrar si sientes que la pantalla no es suficientemente precisa.
raspberry_pi_tstest.png
  • X calibración :También puede calibrar el sistema de entrada de X pero tienes que usar un programa diferente llamado xtcal (xinput_calibrator ya no funciona).Puede hacer esto si la calibración de la pantalla no es de tu agrado o cualquier momento cambiar la rotación = XX ajustes del módulo de la pantalla. Puesto que el controlador de pantalla y touch son completamente separados, la pantalla táctil no rotara automáticamente
sudo apt-get install libxaw7-dev libxxf86vm-dev libxaw7-dev libxft-dev
git clone https://github.com/KurtJacobson/xtcal
cd xtcal
make
  • Debe estar ejecutando PIXEL (GUI) mientras se calibra.Antes de empezar el calibrador tendrá que ‘reiniciar’ el viejo calibración datos entonces ejecutar DISPLAY=:0.0 xinput set-prop "stmpe-ts" 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1 Ahora tendrá que ejecutar el calibrador mientras se ejecuta también X. Puede hacerlo abriendo el programa terminal y ejecuta el comando xtcal (que es difícil hacerlo en una pequeña pantalla) o se puede hacer lo que hacemos que es crear un shell SSH/Terminal y ejecutar el calibrador de la misma cáscara , que requiere el siguiente comando:DISPLAY=:0.0 xtcal/xtcal -geometry 640x480
  • Tenga en cuenta que el puede variar!geometry .Si está utilizando un 2.4″/2.8″/3.2 «pantalla de 320 x 240 con orientación horizontal, utilizar 640 x 480. Si es retrato, utilizar 640 x 480.Si está utilizando una pantalla de 3.5» con paisaje, utilizar 720 x 480, retrato es 480 x 720   Siga las instrucciones en pantalla
raspberry_pi_xinput.png
 
  • Ejecute sudo nano /usr/share/X11/xorg.conf.d/20-calibration.conf y copiar la linea número 9 en la opción de TransformationMatrix por lo que parece:
  1. Section «InputClass»
  2. Identifier «STMPE Touchscreen Calibration»
  3. MatchProduct «stmpe»
  4. MatchDevicePath «/dev/input/event*»
  5. Driver «libinput»
  6. Option «TransformationMatrix» «-0.000087 1.094214 -0.028826 -1.091711 -0.004364 1.057821 0 0 1»
  7. EndSection
  • Por ultimo hay que  reiniciar tu Pi para comprobar que está hecho Si esa asi ¡Su pantalla táctil esta ahora super calibrado, Lai lá!
¡No se debe usar con el PiTFT capacitiv pues no funcionara! Encontrara que para el uso más efectivo de la pantalla táctil es necesario llevar a cabo la calibración manual de la pantalla táctil.
Ahora que la pantalla está funcionando muy bien, nos encargamos de la pantalla táctil.

2-Instalar el Daemon

Ya tenemos  una raspberry Pi  con una pantalla táctil  de modo qeu podemos continuar .
En esta etapa es digno  la comprobación que la Raspberry Pi está actualizada antes de continuar, por lo que debe ejecutar el siguiente comando. 

sudo aptget update

Ahora ya podemos instalar el mpc y mpd  y añadir algunas emisoras de radio a tu lista de reproducción.

Las estaciones de ejemplo se enumeran a continuación son canales de la BBC del Reino Unido, pero  existen muchos mas disponibles en otros paises  

  • sudo aptget install mpd mpc
  • mpc add http://bbcmedia.ic.llnwd.net/stream/bbcmedia_intl_lc_radio1_p?s=1365376033&e=1365390433&h=a0fef58c2149248d6bff1f7b7b438931
  • mpc add http://bbcmedia.ic.llnwd.net/stream/bbcmedia_intl_lc_radio2_p?s=1365376067&e=1365390467&h=d43dc8ae0f888809462a6cb7c389b46b
  • mpc add http://bbcmedia.ic.llnwd.net/stream/bbcmedia_intl_lc_radio3_p?s=1365376123&e=1365390523&h=d53cf2a92272f3289b314a2251d23bc8
  • mpc add http://bbcmedia.ic.llnwd.net/stream/bbcmedia_intl_lc_radio4_p?s=1365376126&e=1365390526&h=ed9a0642b30c422b07fbcd8683c52335
  • mpc add http://bbcmedia.ic.llnwd.net/stream/bbcmedia_intl_lc_5live_p?s=1365376271&e=1365390671&h=e0d82133f35ae74d41d5eab6b9c150a6

Usted puede ahora comprobar con el comando mpc funciona a partir de una emisora sin olvidar conectar sus auriculares en el jack de 3 1/2 de  la salida de audio de la raspberry 

mpc play

Una copia de la lista de reproducción se puede guardar con el comando   mpc save my_playlist

La lista de reproducción se guarda en /var/lib/mpd/listas/  y  a lista de reproducción puede ser editada a mano con

sudo nano /var/lib/mpd/playlists/my_playlist

Una vez editada la lista de reproducción se puede cargar en mpc con

mpc load /var/lib/mpd/playlists/my_playlist

De esta forma podemos tener  un número de listas de reproducción guardadas en /var/lib/mpd/playlists con diversos géneros dependiendo del  estado de ánimo

 

3-Instalar Radio Player

El software de front-end Radioplayer se ha escrito en Python con Pygame y es específico para la pantalla TFT de 320 x 240 2,8″. Sin embargo, es relativamente sencillo adaptar el código para trabajar en una ventana de  mayor tamaño

Debe descargar el código de Python y los iconos desde el enlace Descargar el código de Python y los iconos. Extraiga los archivos en un memory stick y copielos  en una carpeta en la Raspberry Pi. (O puede colocarlo en el directorio de tarjeta SD en el ordenador de casa, los archivos en boot al arranca la tarjeta SD en la Pi)

Guardar en una carpeta llamada pi-radio 

Asegúrese de que todos los iconos y python código se guarda en la carpeta /home/pi/pi-radio

¡En esta etapa todo debería estar listo para funciona asi que solo tiene que ejecutar los siguientes comandos

cd /home/pi/piradio

sudo python radioplayer.py

 

 

Uso de Radioplayer

La interfaz ha sido funestamente mantenida simple para que puede accionarse con los dedos en lugar de un lápiz.
projects_Raspberry_Pi_Radio.jpg
  • Play – mpc inicia en la lista de reproducción
  • Pausa – mpc se detiene en la lista de reproducción
  • Bajar volumen – reduce el volumen
  • Subir volumen – aumenta el volumen de
  • Mute – volumen cero
  • Refrescar – para la reproduccion, vuelve a reproducir  y actualiza la pantalla.
  • Exit – cierra radioplayer interfaz pero mantiene mpc ejecutandose

 

Se extrae la información de la estación de la salida  con el comando  mpc status

Muchas estaciones de usan un formato común de  Nombre de emisora: nombre/información del circuito, es decir 

  • Nombre de la estación se muestra en la primera línea de la pantalla.
  • El nombre de la pista se muestra en la segunda línea de la pantalla.
  • Si no hay ningún nombre de la pista se muestra un mensaje de «ninguna información adicional«.

 

 

 

 

 

Mas   información en  https://learn.adafruit.com/raspberry-pi-radio-player-with-touchscreen/

Cámara trasera inteligente con Raspberry Pi. Parte 1


El término «Coche inteligente» puede tener miles de significados diferentes dependiendo a quién le preguntemos., así que empecemos con una definición   modesta  de algunos componentes que podemos añadir :

  • Información básica sobre el coche, como la marcha engranada, eficiencia de combustible, horas de conducción ,etc.
  • Ayudas a la conducción de tipo ADAS , siendo   los mas comunes la puesta en marcha del  coche delantero, acceso involuntario a línea de separación de carril o aviso de colisión por vehículo delantero que circula  muy próximo
  • Cámara trasera inteligente que avise si un objeto está demasiado cercano
  • etc

Del primer punto lo hemos comentado en diferentes post , explicando que para automóviles de unos 10 años, es decir que cuentan con interfaz ODB2,  es relativamente simple añadir un HUD con toda esta información  con  un HUD conectado por ODB2

Resumidamente los sistemas ADAS  de ayuda  a  la conducción  mas usuales son las siguientes:

  • FCWS   del ingles  Forward Colission Warning Sytem (advertencia de colisión delantera) ayuda al conductor a mantenerse a una distancia segura del vehículo delantero y alerta a los conductores de una colisión inminente con advertencias visuales y audibles.Este sistema permite al dispositivo detectar cuando no se mantiene una distancia segura entre su vehículo y el vehículo delante de usted. El dispositivo determinará la velocidad de su vehículo calculando una distancia estimada de siguiente segura basada en su velocidad.Normalmente para que esta  función pueda estar habilitada se  debe estar  viajando a más de 48KM/H ( a una velocidad de menos de 32 KM/H, se suele  desactivar la función). Precisamente por esta limitacion el FCWS no puede detectar los vehículos que están  alejados más de 40m  o más cerca de 5m.

fcw.png

  • LDWS  del inglés Lane Departure Warning  System  ( SISTEMA DE  ADVERTENCIA DE SALIDA DE CARRIL) monitorea las marcas del carril y avisa al conductor con advertencias visuales y audibles cuando ocurre una salida involuntaria del carril sin la notificación de la señal de giro.Es un mecanismo diseñado para advertir al conductor cuando el vehículo empieza a moverse fuera de su carril (salvo que una señal de la vuelta en esa dirección) en las autopistas y carreteras de la zona. Este sistema está diseñado para minimizar los accidentes por abordar las principales causas de colisiones: error del conductor , distracción y somnolencia.

ldw

  • HMW( VIGILANCIA Y ADVERTENCIA DEL AVANCE DE PISTA)- Mide la distancia al vehículo que está por delante (“headway”) en segundos. Ayuda al conductor a mantener una distancia segura de conducción. Alerta al conductor al entrar en una zona predefinida de “avance peligroso”

.hmw.png

  • FVSA (ALARMA DE INICIO DEL VEHÍCULO DELANTERO ) Notifica al conductor si el vehículo delantero comienza a avanzar en el estado parado completo y el coche del conductor no se mueve en 2 segundos.

fvsa

Casi todas estas ayudas ADAS  están implementadas  en  numerosas cámaras  disponibles en el mercado como vismo en este post destacando por voz propia  el modelo Dash de Garmin

Respecto al ultimo punto de cámaras traseras  , hay muchos kits para  añadir una cámara  trasera a  nuestro vehículos usando una conexión analógica de video compuesto , lo cual se traduce en  que la mayoría de ellas requieren hacer modificaciones al coche  ,por  ejemplo para ubicar la cámara en el porta-matriculas  , o fijar la pantalla especifica   de modo que no siempre en sencilla su instalación .Además las cámaras traseras comentadas requieren una  fuente de alimentación externa alimentándose con los  cables de las luces de atrás de su coche para que automáticamente se enciendan cuando el coche está en marcha lo cual tampoco le  gusta a muchas personas .

Dado que el mercado no ofrece por  el momento soluciones mas avanzadas una idea es usar la Raspberry Pi pues es la plataforma perfecta  porque básicamente es un mini ordenador con un montón de entradas y salidas.

Al conectar una cámara a la Pi, se puede utilizar prácticamente cualquier webcam USB genérica, o  por supuesto  mejor puede usar una  Cámara Pi conectada al conector DSI pues estas ofrecen una mayor calidad , versatilidad y  no  requiere una fuente de alimentación separada (pero asegúrese de tener un montón de cable para ir a la parte posterior del coche)

Solución con Raspberry Pi

Gracias a una Raspberry Pi  por medio del procesamiento de imágenes en efecto  podemos  hacer más inteligente nuestro vehículo y añadir  nuevas funcionalidades

Para esta idea  podemos  usar  los siguientes componentes:

    • Raspberry Pi 3 Model B(unos 38€ en Amazon)   o  también Raspberry Pi Zero  que cuesta algo mas barata(unos 25€ con caja en Amazon)

 

  • Raspberry Pi Touch Display(opcionalmente)
  • Raspberry Pi Camera Module (se puede compar por unos 15€ en Amazon) 
  •  Flex Cable for Raspberry Pi Camera or Display – 2 meters  (puede comprrlo   aqui en Amazon por unos 7,29€ )
  • Adafruit CSI or DSI Cable Extender Thingy for Raspberry Pi (opcionalmente)

Conexión del módulo de cámara

El modulo de cámara de Pi  tiene un mayor rendimiento que una cámara USB  por lo que lo ideal es usar una cámara del tipo compatibles con Raspberry Pi  (se puede comprar por unos 15€ en Amazon) 

No es  problema  la distancia pues con un cable plano  de 200 cm suele ser suficiente para llevar la cámara  hasta la  posición de conducción (puede comprarlo   aqui en Amazon por unos 7,29€ )

Se puede pues llevar el cable plano al l frente del coche y luego conectado a una pantalla de táctil de 7″ de modo que  la Pi y la pantalla táctil pueden ser alimentados por el adaptador USB en el coche.

Estos  son los pasos para instalar la cámara especifica para su uso , con la Raspberry Pi 

    • Localice el puerto de la cámara y conecte la cámara:Connect the camera
    • Poner en marcha la Raspberry Pi 
    • Abra la Herramienta de configuración de frambuesa Pi desde el menú principal:Raspberry Pi Configuration Tool
    • Asegúrese de que está activado el software de la cámara:Camera software enabled
    • Si no está activado, habilítelo y reinicie su Pi para comenzar. Asimismo si va utilizar una pantalla táctil también necesitara activar I2C  y SPI

Es decir resumidamente;  con la Raspberry Pi apagada, debe conectar el módulo de la cámara al puerto de la cámara de la Raspberry Pi,ahora encienda el Pi  y asegúrese de que se activa el software.

Conexión de un pantalla táctil(opcional)

Existen pantallas TFT para Raspberry Pi con  resolución de 320×240 (16-bits) que además son táctiles con una pantalla resistiva. Se entregan montadas y suelen ser  compatible con los modelos Raspberry Pi Model A+, B+ y Pi 2  disponiendo  además de de un conector de 40 pines para los GPIO.

La pantalla y el digitalizador   utilizan los pines I2C (SDA y SCL), SPI (SCK, MOSI, MISO, CE0) y los pines GPIO #24 y #25. Todos los demás pines GPIO no se utilizan así que podrá conectar más cosas como sensores, LEDs etc. Algunos modelos disponen deposiciones para pulsadores miniatura (no incluidos) por si quiere hacer algún otro tipo de interfaz de usuario.

Puede utilizarla utilizar la librería PyGame u otra librería SDL para dibujar directamente en el frame buffer y hacer interfaces propios.

Tenga en cuenta que para que funcione debe tener activado el I2C en tu Pi o se quedará en blanco. Si utiliza la imagen de Adafruit funcionará sin problema, sino puedes ver su tutorial para ver cómo hacerla funcionar.

La conexión de este tipo de pantallas suele ser por el  propio conector de 25 pines  y por hdmi con un adaptador

Respecto al sw, estos son los pasos  que puede  seguir;

!Ojo el conector plano de la pantalla pues es MUY frágil y debe manejarse con cuidado.!

Montaje final

Una vez montada  la pantalla y la cámara , encender el coche, la Pi y la pantalla . Para ver la camara   de la Pi, abra el terminal y ejecute simplemente  el  siguiente  script:

raspivid -t 0

o

raspivid -t 0 --mode 7

Después de entrar esto ,   la imagen captada por la cámara debería aparecer  en pantalla  completa , pero  !ojo !  no lo veremos  si estamos conectado via VNC!, es decir ,solo si estamos conectados a la propia  Raspberry Pi .

Lo bueno de a Raspberry Pi  es que se puede mejorar  esta forma básica , y tal vez incluso establecer un sistema de alerta si un objeto esta   demasiado cerca , así que, ! vamos a trabajar en ese lado!

 

DETECCIÓN DE OBJETOS

Cuando se trata de aplicaciones de  cámaras de seguridad comerciales, generalmente hay al menos dos versiones  .La primera utiliza una superposición de una imagen estática con gamas de color para que visualmente puede determinarse cuánto de  cerca está un objeto. El segundo método utilizara una cámara junto con sw  que puede detectar un objeto qué tan cerca esta al coche y luego avisa cuando algo está demasiado cerca
Veamos en este post en primer lugar le método de overlay, el cual por cierto es el mas usado en los implementaciones de cámaras traseras de coches actuales.