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.
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:
- Raspberry Pi Zero W
- Cámara IR + Leds IR
- Cable camara Raspberry Pi Zero
- Batería lipo 3.7v
- Google CardBoard
- Tarjeta microSD (al menos 8Gb)
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 GitHubFuncionamiento
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.
- 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/
- 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]"
}
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
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install apache2
$ 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
$ 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
$ 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
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:
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)
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.
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