Escritorio remoto en la Raspberry Pi

vnc_demo
Todos nos hemos conectado remotamente a un equipo, ya sea usando el programa de “Conexión a Escritorio Remoto” o la solución de TeamViewer gratuita. Ambos programas son un ejemplo de Virtual Network Computing (VNC), un sistema de escritorio compartido gráfico que usa el protocolo Remote Frame Buffer (RFB) para controlar de manera remota otra computadora.

¿Cuál es el punto?

El punto es que podemos tomar el control de la raspberry de forma gráfica instalando un servidor vnc.

Prerequisitos

Tener configurada una ip estática. ¿Cómo se hace?

¿Qué necesitamos instalar?

pi@raspberrypi ~ $sudo apt-get install tightvncserver

Una vez que la instalación termine, levantamos el servicio de la siguiente manera

pi@raspberrypi ~ $sudo vncserver

Nos solicitará un password para restringir el acceso remoto, lo tecleamos un par de veces y luego podemos rechazar la opción del segundo password.

Ahor necesitamos un cliente, instalamos una extensión del navegador chrome VNC Viewer for Google Chrome.

vnc_client

Ya está, ya podemos explorar el sistema operativo, mover archivos de configuración y hacer pruebas sin tener que conectar periféricos a la Raspberry Pi.

Si deseamos que esta opción este disponible cada vez que reiniciemos la Raspberry, tenemos que usar el siguiente script, lo podemos copiar y luego guardarlo como “tightvncserver”.

#!/bin/sh
# /etc/init.d/tightvncserver
# Thanks to Neil Black at www.neil-black.co.uk/raspberry-pi-beginners-guide
VNCUSER='pi'
case "$1" in
start)
su $VNCUSER -c '/usr/bin/tightvncserver :1'
echo "Starting TightVNC Server for $VNCUSER "
;;
stop)
pkill Xtightvnc
echo "TightVNC Server stopped"
;;
*)
echo "Usage: /etc/init.d/tightvncserver {start|stop}"
exit 1
;;
esac
exit 0

Después movemos el archivo “tightvncserver”, le damos permisos de ejecución y lo configuramos para que se ejecute al arranque

pi@raspberrypi ~ $ sudo cp tightvncserver /etc/init.d
pi@raspberrypi ~ $ sudo chmod a+x /etc/init.d/tightvncserver
pi@raspberrypi ~ $ sudo update-rc.d tightvncserver defaults

Nota: hacemos caso omiso de la advertencia “…missing LSB tags and overrides”

Para probar nuestro script, reiniciamos la raspberry

pi@raspberrypi ~ $ sudo shutdown -r now

Para deshabilitar el inicio automático del servidor vnc, escribimos la siguiente línea

pi@raspberrypi ~ $ sudo update-rc.d tightvncserver remove

Si quisieramos transferir archivos desde el cliente a la Raspberry Pi, podemos usar FileZilla y contectarnos por ssh (puerto 22), esta es la pantalla de configuración.
filezilla

Cámara de vigilancia con Raspberry Pi y una webcam

La necesidad de tener una cámara de vigilancia para el cuarto de los bebés es muy común hoy en día. Así que decidí realizar una por mí mismo usando una Raspberry, una vieja webcam y este tutorial de Makezine.

Objetivo

La cámara debe:

  • ser fácil de usar de forma remota a través de una página web
  • mostrar imágenes a color de alta resolución
  • permitir rotar la cámara de izquierda a derecha y de arriba hacia abajo, ya sea con arrastrando el dedo sobre dispositivos touch o con las flechas del teclado.

Lista de Materiales

  • una webcam ($500.00)
  • raspberry pi + SD card 4G + fuente de alimentación ($1,000)
  • impresión del case ($250)
  • 2 servomotores pequeños ($90 x 2 = $180)
  • 1 cable USB reciclado
  • 1 cincho sujeta cables

El costo total del proyecto es de aproximadamente de $2,000, el costo más grande es sin duda la raspberry, si no incluimos el costo de la webcam, el costo se puede reducir a $1,500.

imageimage

imageimage

imageimage

Problemas

Estos son los modelos en 3D de la carcasa de la cámara, listos para ser impresos. En las dos imágenes de arriba se muestran los dos “brazos” que embonan con los dos servo motores. Sobre el de la izquierda se monta la cámara y permite girar hacia arriba y hacia abajo. El brazo de la derecha va montado sobre la caja que protege a la Raspberry Pi,  y permite mover la cámara de izquierda a derecha.

El detalle es que los orificios sobre los cuales embonaran los servo motores, no cuentan con dientes que encajen con la cabeza de los motores. Esto causa que la cabeza del servo gire pero los brazos no lo hagan con la misma fuerza y respuesta que se espera. También provoca que con el peso de la cámara el brazo inferior se tambaleé y terminé por caerse.

Mejoras

Hardware

Para solucionar el problema anterior, decidí usar los accesorios originales de los servo motores y pegarlos a los brazos de la cámara. Con esto mejoró notablemente la respuesta de los servo motores, pero continuó teniendo problemas con el peso de la cámara. Después de realizar una serie de movimientos de izquierda a derecha, el peso de la cámara la hace caer.

Software

El código original de Matt Stultz sólo incluye la respuesta a los eventos del teclado, usando la biblioteca de jquery mobile agregamos los eventos touch para controlar los servo motores. Pronto subiré las modificaciones del proyecto a un repositorio de GitHub.

Posibles mejoras

Se encuentra pendiente publicar la IP de la raspberry para que se puede tener acceso a la cámara desde Internet.