jueves, 19 de abril de 2018

GaViNo - Unas gafas de visión nocturna DIY

¿Te gustaría pasearte por el lado oscuro sin tropezar? ¿querrías emular a tu gato disfrutando de la noche cerrada?

Si has contestado que sí a estas preguntas, estas de suerte porque hoy lo que te traigo son unas Gafas de Visión Nocturna DIY (GaViNo).




Introducción


De todos es sabido la versatilidad de las Raspberrys Pi, el pequeño ordenador creado en el Reino Unido para animar a los niños a aprender informática.

Con ellas se ha hecho de todo, desde su uso inicial como ordenador Linux con fines educativos hasta viajar al espacio, desde montarnos un media-center para el salón de nuestra casa a la creación de un móvil. Como veis, las posibilidades pueden ser tantas como la capacidad de imaginarlas.

Pues bien, hoy os traigo un gadget que se me ha ocurrido hacer con esta amiga, que en mi caso, será una Raspberry Pi Zero W, la pequeña de la familia pero muy útil gracias a sus capacidades de comunicación (Bluetooth y Wifi) y una pequeña cámara IR (infrarroja) compatible con nuestra Raspberry.



Raspberry Pi Zero W

La luz infrarroja es un tipo de luz que el ojo humano no puede percibir ya que su longitud de onda está fuera del espectro visible, o sea, que todo lo que está fuera del rango visible, pues es invisible (para nosotros), ya está, vemos lo que vemos y a veces solo lo que queremos.




Para poder ver mediante una cámara infrarroja en condiciones de poca o ninguna luz, lo que tenemos que hacer es "iluminar" la escena con luz infrarroja (no visible por humanos) pero que si puede captar este tipo de cámaras, y va ha ser esta capacidad la que nos viene de perlas para hacer lo que queremos.

Componentes

NOTA.- A continuación os detallaré los componentes que yo he utilizado con algunos enlaces para su compra. Dichos enlaces son simple y puramente informativos, podéis comprar vuestros componentes donde queráis, o mejor, en vuestras tiendas de electrónica favoritas, yo no tengo ningún interés ni recibo nada de las tiendas aquí marcadas. Además, algunos componentes, ni siquiera son obligatorios y podréis sustituirlos por otros más baratos o incluso hacerlos vosotros mismos.

Dicho esto, vamos a por los componentes:


Otros componentes utilizados:
  • Mini Interruptor para PCB
  • Cables 
  • Un móvil android
  • LiPo SHIM (Es una pequeña placa que podemos conectar a los pines de la Raspberry y a la que podemos conectar la batería lipo y queda todo más compacto)
 

Piezas 3D

Las piezas 3D para imprimir las podéis encontrar en el directorio piezas3D del GitHub o en

Software 

 Todo lo referente a este proyecto lo puedes encontrar en mi GitHub

Funcionamiento

 

El funcionamiento es simple y sencillo. Al iniciarse la Raspberry se arranca un servidor de streaming con las imágenes que captura la cámara.


LD_LIBRARY_PATH=/opt/mjpg-streamer/ /opt/mjpg-streamer/mjpg_streamer
   -i "input_raspicam.so -vf -hf -fps 15 -q 50 -x 640 -y 480" 
   -o "output_http.so -p 9000 
   -w /opt/mjpg-streamer/www/gavino" > /dev/null 2>&1&

y como lo que queremos es verlo a través de unas cardboard creamos una página web que nos muestra la misma captura por duplicado.

Instalación del Software de la Raspberry


Algunos de los pasos que describo aquí, no son obligatorios, los pongo aquí porque son los que yo hago en mis instalaciones.

  1. Obtener la última imagen de Raspbian e instalarla con etcher (o el programa que tu utilices) en tu SD: https://www.raspberrypi.org/downloads/raspbian/
  2. Antes de quitar la tarjeta de nuestro ordenador, crear en la raid (boot) de la misma los ficheros:
    • ssh.- Fichero de texto en blanco y sin extensión en el nombre. Sirve para activar ssh en nuestra Rasberry ya que viene desactivado por defecto.
    • wpa_supplicant.conf.- Fichero de configuración de wifi con el siguiente contenido:

country=ES 
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 
update_config=1 
network={ 
   ssid="[nombre de tu wifi]" 
   psk="[contraseña de tu wifi]" 
}

La primera vez que arranquemos nuestra Raspberry con esta tarjeta, se activará el SSH y el fichero wpa_supplicant se trasladará a su posición dentro del sistema ("/etc/wpa_supplicant/") y quedará configurada nuestra wifi.

Como he dicho antes, en este proyecto voy a utilizar una Raspberry pi Zero W y esta placa nos permite conectarnos a ella mediante SSH a través del USB, lo cual es muy cómodo para trabajar con ellas sin necesidad de conectarnos mediante wifi (o no la tenemos configurada) y sin tener que conectarle ni monitor ni teclados, solo la conectamos a un puerto USB de nuestro ordenador y ya está.
 
En esta página tenéis como hacerlo: http://blog.gbaman.info/?p=791  
Y con ésto ya tenemos nuestra tarjeta SD preparada para poder arrancar nuestra Raspberry.

 Configuración Inicial

Una vez iniciado el sistema lo primero que tenemos que hacer es activar la cámara. Para ello debemos ir al menú de la configuración de Raspbian ejecutando el comando:


$ sudo raspi-config

Seleccionamos la opción 5-Interfacing Options


Seleccionamos la opción P1-Camera y la activamos


Volvemos para atrás y salimos del menú de configuración.


Instalación de GaVino y el software dependiente

Todo el software del proyecto se encuentra en mi repositorio de GitHub:

https://github.com/movilujo/gaVino.git

En la carpeta software


Lo primero que vamos hacer es comprobar si hay alguna actualización del sistema e instalamos apache


$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install apache2



creamos una carpeta llamada Gavino


$ mkdir Gavino


y en dicho directorio copiaremos el fichero start_stream.sh del software descargado de Github

Instalamos mjpg-streamer


$ sudo apt-get install libjpeg62-turbo-dev
$ sudo apt-get install cmake
$ cd
$ git clone https://github.com/jacksonliam/mjpg-streamer.git ~/mjpg-streamer
$ cd mjpg-streamer/mjpg-streamer-experimental
$ make clean all
$ sudo mkdir /opt/mjpg-streamer
$ sudo mv * /opt/mjpg-streamer

Creamos una carpeta llamada gavino en /opt/mjpg-streamer/www


$ cd /opt/mjpg-streamer/www
$ mkdir gavino

dentro de esta carpeta movemos los ficheros descargados de github: gavino.html y gavino.css

Para finalizar, añadimos las siguientes líneas al final del fichero /etc/rc.local justo delante de la línea "exit 0"


# Nos movemos al directorio donde pusimos el script start_stream.sh 
cd [ruta]/Gavino
bash start_stream.sh
cd



Crear un Punto de Acceso (AP) Wifi en Gavino

Ya estamos casi listos, lo ideal es que ahora creásemos un punto de acceso wifi (AP) y de esta forma, podremos conectar el móvil a nuestras gafas en cualquier sitio, independientemente de donde estemos, igual que lo hacemos con una cámara fotográfica con wifi.

Pero tengo un problema, un problema gordo, no consigo que funcione de ninguna de las maneras la creación de un Punto de Acceso Wifi. Bueno, miento, me ha funcionado una vez, pero en cuanto reinicié la Raspberry e intenté volver a probarlo, dejo de funcionar. He probado todos los métodos y manuales que me he encontrado pero me ha sido imposible.

No tiro la toalla, seguiré intentándolo ya que es la solución ideal para poder usar nuestras gafas en cualquier sitio, incluso en el campo, pero tengo ganas de publicar este proyecto y por ahora, voy a hacerlo con una IP fija en la raspberry. Esto tiene el problema que solo funciona en la red a la que pertenezca dicha IP.

Como digo, yo voy a seguir intentándolo y si alguien con más conocimientos en el tema de redes puede ayudarme, se lo agradecería enormemente.

Por todo esto, en este punto te recomendaría crear una imagen de la tarjeta SD antes de ponernos con la configuración del punto de acceso y así tener un punto de partida con todo el trabajo anterior guardado.

Para los que quieran probar, los manuales con los que he tenido los mejores resultados han sido:


y  este otro que se supone que hace exactamente lo que yo quiero, pero que a mi, en una Raspberry Pi Zero W con la versión de SO Raspbian Stretch Lite March-2018 no me funciona


Configurar la Raspberry con una IP fija del rango de nuestra red 

Lo primero que tenemos que hacer es averiguar cual es el rango de IP fijas que tiene reservado nuestro router para poder coger una de ellas. Para ello tendrás que conectarte a tu router y buscar cual es dicho rango.

Cuando ya tenga una IP perteneciente a dicho rango, puedes volver a tu Raspberry y editar el fichero /etc/dhcpcd.conf



$ sudo nano /etc/dhcpcd.conf


y añadir al final del archivo.


interface wlan0
 static ip_adress=192.168.x.x (La IP debe ser la de tu red)



Aplicación para el móvil

Como pantalla de visualización utilizamos un móvil Android que muestra el streaming que emite nuestra Rasperry.

En este caso he creado una sencilla App con App Inventor que lo que hace es que una vez conectado a la wifi de Gavino, nos abre un navegador que muestra lo que recoge la cámara de nuestras gafas.


 Funcionamiento

  • (Versión con AP) Al iniciar la aplicación comprueba que el móvil esté conectado a la wifi llamada "gavinoWF", si no es así, nos avisa y no hace nada.
 
  • (Versión con IP Fija) Al iniciar la App se activa directamente el Timer
  •  Si está conectado a dicha wifi, muestra el logo del proyecto durante unos segundos 
 


  •  Pasado el tiempo establecido abre en el navegador web la dirección: http://[IP fija]:9000/gavino.html (La IP fija corresponde a la que hayamos puesto en nuestra Raspberry, sea o no un Punto de Acceso Wifi)



Para la comprobación de la wifi he usado la extensión de Pura Vida Apps:

Al igual que lo podemos ver con nuestras gafas, podríamos seguir la aventura del portador de Gavino desde un navegador en un PC.


Imágenes y video del funcionamiento.

 





Mejoras para siguientes versiones

Como en todo proyecto, la primera versión siempre tiene algún defecto o carencia, así que ya toca pensar en las mejoras, a mí las que ya tengo en mente son:
  •  Conseguir crear un AP wifi para poder utilizar nuestras Gafas GaViNo en cualquier sito.
  • Preparar la caja y añadir lo necesario para poder cargar la batería sin tener que sacarla de su ubicación. 
Ahora espero las vuestras. 


Referencias y agradecimientos

Como ya sabéis los que leéis este blog, yo no invento nada, mas bien corto, pego, adapto cosas que ya están hechas a mis necesidades, por lo que tengo mucho que agradecer a todos los que contribuís al "Patrimonio Tecnológico de la Humanidad" compartiendo vuestro conocimiento.

En concreto, para este proyecto me han servido de inspiración:

Instalación del software necesario para crear el streaming:

 
https://hackaday.io/project/25092/instructions



Creación del Punto de Acceso(AP) wifi:




Piezas 3D
Estas son las piezas que he utilizado y modificado para adaptarlas a este proyecto


App Android

Espero no olvidar ninguna referencia. Gracias a todos por compartir sus conocimientos y proyectos.

No hay comentarios:

Publicar un comentario