Primeros pasos con la Raspberry Pi, modelo B

Linux Recipes Raspberry Pi Robotics

El Raspberry Pi es uno de los proyectos más importantes, surgidos en los últimos años, que están orientados a promover el aprendizaje de la informática en los niños a muy bajo costo. Consiste en una placa base, que con el precio de 35$, contiene todos los elementos de un completo computador pero con las dimensiones de una tarjeta de crédito.

José R Sosa https://josersosa.github.io/personalweb/
09-01-2013

La Raspberry Pi tiene una capacidad de procesamiento equivalente a la de una netbook sencilla y un consumo de energía mínimo. Esto no representa un grave problema de capacidad, dado que es que capaz de presentar video en HD y manejar aplicaciones 3D con OpenGL 2.0, esto la convierte en una potencial herramienta para agregar capacidad, inteligencia y autonomía a nuestros robots.

Un poco de historia.

alt Este proyecto es bastante reciente. A pesar de que los primeros diseños de Raspberry Pi fueron en el 2006, fue en el 2011 que se creo una fundación para su producción y su administrador, Eben Upton, se puso en contacto con un grupo de profesores, académicos y entusiastas de la informática para crear un ordenador con la intención de animar a los niños a aprender informática. En agosto de 2011, se fabricaron cincuenta placas alpha. Las primeras ventas comenzaron el 29 de febrero de 2012. (fuente Wikipedia). La tarjeta con la que estaré haciendo mis experimentos es una modelo B, fabricada en diciembre del 2011.

Características de la Raspberry Pi (Modelo B)

Después de un par de meses de espera, llego mi esperada Raspberry Pi. La primera impresión es que se trata de una dispositivos muy simple y pequeño. Pero después de analizar sus componentes y características llego a la conclusión de que se trata de un completo computador, sobre el cual puedo probar mis distribuciones favoritas de GNU/Linux. Estas son sus especificaciones:

alt alt alt

Experimentos con la Raspberry Pi.

Como todo proyecto para fomentar el desarrollo, la Raspberry Pi tiene un gran número de posibles usos, el límite es la imaginación. Aquí expongo algunos usos comunes con los que he comenzado a experimentar:

Los primeros pasos

Los primeros pasos están bien descritos en el documento QuckStart que podemos encontrar en el sito de la Raspberry Pi, este documento describe como instalar la imagen de Raspbian, un sistema operativo basado en Debian wheezy sobre una memoria SD. En principio no nos hará falta realizar el proceso de instalación del sistema operativo, ya que podemos encontrar un buen número de imágenes de sistemas adaptados a nuestro nuevo juguete. En el propio sitio de descargas de Raspberry Pi podemos encontrar varias de ellas.

Componentes básicos.

  1. La Raspberry Pi, por supuesto.
  2. Una memoria SD de 4Gb o más. Aunque algunas imágenes requieren 1G o hasta 2G como mínimo y preferiblemente de Clase 10.
  3. Un transformador DC de 5v con salida mini-USB.
  4. Un cable HDMI o RCA para el televisor.
  5. Un teclado USB o inalambrico (con receptor USB).
  6. Un mouse USB o inalambrico (con receptor USB).
  7. Opcionalmente un cable RJ45 conectado al Switch o Hub para acceso a la red de datos o a Internet.

Instalación del sistema operativo.

A continuación describiré con un poco más de detalle los pasos, en Linux, para solventar algunos obstáculos a los que nos podríamos enfrentar instalando un sistema operativo sobre una memoria SD, ya que loas instrucciones que se encuentra por ahí son para Windows:

Vamos al sitio de descargas y bajamos la imagen comprimida del sistema operativo Raspbian, a la fecha, la ultima es la del 26/07/2013:

wget http://downloads.raspberrypi.org/images/raspbian/2013-07-26-wheezy-raspbian/2013-07-26-wheezy-raspbian.zip
unzip 2013-07-26-wheezy-raspbian.zip

Luego copiaremos la images escogida sobre la memoria SD que nos servirá de disco para la Raspberry Pi, aquí un breve tutorial. Es importante respaldar lo que tengamos ahí dado que el contenido previo se perderá, para esto usaremos el comando dd, con los parámetros if (dirección d ela imagen a utilizar), of (dispositivo de destino) y bs (tamaño de los bloques de memoria a manejar en la copia) . Si suponemos que la unidad SD fue detectada como /dev/disk1, la instrucción quedaría así:

dd if=2013-07-26-wheezy-raspbian.img of=/dev/disk1 

Después de unos minutos, esta instrucción copia la imagen sobre el dispositivo de almacenamiento (Memoria SD). Es este punto es importante tener varias cosas en cuenta. Se puede mejorar la velocidad de copiado raster (dd) aumentado el tamaño de los bloques (aprovechando la capacidad DMA de nuestro equipo), en algunos caso puede funcionar bs=4m o más. Otro punto importante es que, obviamente, la memoria física debe ser igual o mayor que la imagen (.iso ó .img). Lo común es que no sea igual sino mayor, con lo que deberíamos extender el formato de la partición para que nuestro sistema aproveche toda la capacidad de la memoria SD, esto lo haremos más adelante con expand_rootfs. Si no contamos una memora de gran capacidad, podemos escoger alguna distro que sea minimalista. Por ejemplo contamos con una imagen de Arch linux que cabe perfectamente en una memoria SD de 1Gb de capacidad, aquí un tutorial para adaptar ese sistema a nuestra Raspberry Pi. Otro punto muy importante es que debemos escribir la imagen del sistema (.iso ó .img) sobre todo el dispositivo de almacenamiento, no sobre una partición particular. Si la memoria ya esta formateada, es podible que nuestro sistema reconozca una o varias de las particiones como por ejemplo /dev/Disk1s1 o /dev/Disk2s1, es estos caso las letras sx corresponde a particiones, es por eso que deberemos utilizar /dev/disk1 o /dev/disk2 respectivamente. He leído en varios foros que puede que algunas memorias SD no son reconocidas o compatibles con la Raspberry, esto no me ha ocurrido con mi modelo B, a pesar de haber probado unas 4 o 5 memorias de diferentes marcas, clases y tamaños.

Inicio por primera vez con el Raspbian.

Una vez que contamos son el sistema operativo, en este caso Rasbian, sobre la memoria SD, debemos introducirla en la ranura que se encuentra en la parte de abajo de la Raspberry. Ahora solo queda conectar la salida de video, el teclado (y mouse) y encenderla. Como habrán notado, la Raspeberry no cuenta con un interruptor, por o que encenderá en cuanto conectemos la alimentación de corriente. En este punto, es posible que la Raspberry no encienda, recuerden que la Raspberry no cuenta con baterías y la alimentación debe ser de 5v DC. Algunos cargadores de celulares no proveen una corriente continua estable por lo que no nos funcionaran, yo tuve que hacer varios intentos hasta que conseguí uno bueno. Los siguientes pasos están descritos a continuación:

En el primer arranque se activara el Raspi-conf que nos permitirá hacer las configuraciones del equipo. Esta es una de las ventajas de las Rasbian, que cuenta con un sistema de ventanas que nos facilitará la configuración inicial. Esto solo se requiere hacer una vez y nos permitirá hacer cosas como:

    1. Extender el formato sobre todo el espacio de la memoria SD (expand_rootfs).
    2. Cambiar el password del usuario“pi” está creado por defecto.
    3. Cambiar la zona horaria y la fecha y hora del sistema.
    4. Configurar el teclado y el idioma (locale).
    5. Configurar el overclock (pasar la frecuancia del procesador de 700MHz a 1000Mhz).
    6. Activar el servicio SSH en el arranque.
    7. Activar el ambiente gráfico en el arranque.
    8. Al final aceptaremos la opcion de reinicio.

La Raspberry Pi iniciará solicitándonos el Login y el Password a lo que responderemos con “pi” y “raspberry” respectivamente (sin comillas). Luego aparecerá el prompt: ~ $ y ya estamos listos para usarla…

Reproducción de video

Ahora podemos comenzar a utilizar nuestro sistema, por ejemplo si tenemos una película en un pendrive, podemos verla en el televisor con el comando omxplayer, por ejemplo, sustituyendo el path por el adecuado a su caso:

omxplayer /media/sda1/video.mp4

El omxplayer asume por defecto que la salida utilizada es la análogica, en caso de estar usando la salida HDMI deberemos incorporar el parámetro -hdmi así:

omxplayer -hdmi /media/sda1/video.mp4

Ambiente gráfico.

Desde luego que más interesante para observar las capacidades de la Raspberry es trabajar con ventanas, por ejemplo para iniciar el ambiente gráfico (si es que tenemos conectado un televisor o monitor) podemos introducir la instrucción que lo iniciará: startx

Instalacion de nuevos software.

Hasta ahora podemos usar nuestra Raspebrry Pi como un computador tradicional. Pero dependiendo del espacio disponible que tengamos en nuestra memoria SD, podemos instalar nuevas aplicaciones, por cualquiera de los métodos tradicionales. Yo recogimientoconfigurar a mano el repositorio que usaremos ya que la selección automática de repositorios (master) me manda a Brasil, que no es la mejor opción en mi caso. Aquí podemos encontrar una lista de repositorios oficiales de Raspbian según zonas geográficas, yo escogí EEUU. Luego toca el repositorio escogido en el archivo, quedando algo así. Luego solo queda actualizar el índice de paquetes disponibles con apt-get uptate, y si queremos actualizar nuestro sistema usaremos apt-get upgrade.

sudo apt-get update
sudo apt-get upgrade

Ahora podemos instalar aplicaciones con el comando apt-get install o instalar un manejador gráfico de paquetes de software, como synaptic:

sudo apt-get install synaptic

Luego será mucho más fácil la instalación de nuevos programas, yo recomiendo para comenzar :

Escritorio remoto.

Podemos controlar nuestra Raspberry desde nuestro equipo de escritorio de manera gráfica, a través del escritorio remoto que provee el protocolo VNC. Para ello debemos descargar el servidor en nuestra Raspberry e iniciar el servicio así:

sudo apt-get install tightvncserver
vncserver :1 -geometry 1024x768 -depth 16 -pixelformat rgb565

Una buena opción es incluir esta instrucción en un archivo script, que luego podemos ejecutar automaticamente al arrancar, de manera de no requerir la salida con el televisor.

Luego podemos ver y manejar el escritorio remotamente desde una variedad de dispositivos y aplicaciones clientes de VNC, por ejemplo en KDE tenemos el Krdc, en Gnome tenemos el Vinagre, en Windows el RealVNC, Putty y en Android el AndroidVNC. Un punto importante para el acceso remoto a nuestra Raspberry es que debemos conocer el IP que ha tomado en nuestra red. Esto lo podemos saber con el comando ifconfig pero podría ser un problema si no tenemos conectada a ella periféricos de entrada y salida (teclado y monitor). Para resolver eso recurrí a la pantalla de administración de mi switch casero en donde encontré la Raspberry en el área de clientes de red (DHCP).

Otra manera de ejecutar aplicaciones remotamente, con interfaces gráficas, es a través del protocolo SSH, como lo he descrito en otro post, podemos escribir desde nuestro PC el comando remoto de la siguiente manera, sustituyendo por la dirección de tu Raspberry Pi:

ssh -X -l pi 192.168.1.13

Componentes adicionales.

Dependiendo del proyecto en el que queramos trabajar, será necesario incorporar nuevos componentes como por ejemplo:

Hub USB de 4 puertos sin alimentación Wifi USB de 150Mbps Varios modelos de Bluetooth USB

Seleccionando un sistema operativo

La selección del sistema oerativo, o mejor dicho, distribución de Linux que usaremo para nuestro Raspberry Pi dependerá, como siempre del gusto de cada quien. Existen versiones de las principales ditribuciones más algnas de proposito especifico. Hasta ahora solo he porbado unas cuantas distros que listare a continuacion:

Distro de proposito general:

Mis próximos proyectos con la Raspberry Pi

Carro robot controlado con una Raspberry Pi: como ya lo he mencionado la incorporación de un computador de este tipo, permite aprovechar la movilidad y autonomía que permite su pequeño tamaño, peso y consumo eléctrico. Este proyecto busca construir un pequeño vehículo robot con la suficiente autonomía y capacidad de procesamiento que me permita experimentar con temas de Inteligencia Artificial en el control de movimiento y ejecución de tareas.

Control de equilibrio: Un segway con lego+wiimote+raspberry: Este pequeño computador viene a complementar la tarea de construir un robot de dos ruedas, capaz de mantener el equilibrio y responsear instrucciones por voz.

Smart-TV Pi: La idea es construir un pequeño “Set Up Box” o decodificador para la televisión digital abierta (TDA) pero con capacidad de integrar en un mismo dispositivo, al estilo de un completo Media Center con XBMC, la posibilidad de no solo ver Televisión, en nuestro televisor, sino también reproducir películas desde un pendrive y ver videos desde canales de internet como Youtube, Vimeo, Cuevana, etc, convirtiendo así, nuestro televisor convencional en un Smart-Tv.

Control por reconocimiento de Rostros y formas: Por la entrada USB de nuestra Raspberry Pi, podemos conectar una webCam y con la programación de un sistema de reconocimiento de patrones basado en OpenCV podemos aplicarlo en el control de vehículos robóticos.

Re-calibración automática de antenas de telecomunicaciones: Este proyecto consiste en la posibilidad de construir un dispositivo para integrarlo a las antenas de comunicaciones, para su re-calibración automática. uno de los problemas de las comunicaciones satelitales, es que los satélites sueles moverse y salir del espacio de visibilidad de alguna antenas. Esto requiere de un ajuste de la posición de las mismas. La propuesta es usar la Raspberry para que, a través de la programación de redes neuronales, y el conocimiento previo de la posición del satélite, se puedan calcular las trayectorias más probables que permitan re-calibrar la posición de las antenas con el uso de servomotores.

Como programar con la Raspberry Pi

Las herramientas de programación de la Raspberry Pi son las mismas que contamos en nuestro sistema GNU/Linux, por lo que la elección depende, realmente, del gusto de cada quien, en mi caso: Python y C/C++. Ahora bien, para el desarrollo de aplicaciones para el control de robots hechos con el Lego MindStorm será necesario instalar NXT-Python y LibNXT. Otra recomendación, si queremos hacer tareas de reconocimiento basado en el procesamiento de video, es instalar OpenCV y FFmpeg. Por ultimo y por ahora, recomiendo la librería LibWiimote de conexión con la Wiimote que nos permitirá acceder a sus sensores como cámara infrarroja y acelerometro, igualmente útiles en la robótica,

Artículos y proyectos interesantes que he encontrado por ahí:

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Citation

For attribution, please cite this work as

Sosa (2013, Sept. 1). Blog de José R Sosa: Primeros pasos con la Raspberry Pi, modelo B. Retrieved from https://josersosa.github.io/personalweb/posts/2021-05-23-primeros-pasos-con-la-raspberry-pi-modelo-b/

BibTeX citation

@misc{sosa2013primeros,
  author = {Sosa, José R},
  title = {Blog de José R Sosa: Primeros pasos con la Raspberry Pi, modelo B},
  url = {https://josersosa.github.io/personalweb/posts/2021-05-23-primeros-pasos-con-la-raspberry-pi-modelo-b/},
  year = {2013}
}