domingo, 30 de diciembre de 2012

Acerca de Raspberry Playground

Alcance y objetivos

Después de saber ¿Qué es la Raspberry PI? nos enfocaremos hacia la orientación principal que tendrá este blog, que es utilizar la Raspberry Pi como una plataforma de desarrollo, o como un equipo que preste servicios para la casa o una pequeña oficina no como una computadora personal.

Tampoco se intenta que este blog sea un tutorial formal de uso de la Raspberry Pi. Aqui se asume un conocimiento basico de Linux (en este caso Debian) principalmente en la CLI, que se tienen conceptos básicos de programación en cualquier lenguaje y tambien conocimientos básicos de electrónica.

El objetivo es proveer de los elementos minimos necesarios para que con el interes y creatividad de cada quien, puedan crear llegar al desarrollo de su propio proyecto, o simplemente para que sirva para entender como funcionan algunas cosas.

La plataforma

Todos los ejemplos (salvo que se especifique explicitamente lo contrario) están siendo ejecutados en Raspbian Wheezy y paquetería disponible en los repositorios configurados por omisión en esta imagen. Tambien es importante considerar que el código esta escrito para el Modelo B Revisión 1 del hardware, sin embargo, en algún punto se comenzará a utilizar el Modelo B Revisión 2, pero esto sera claramente especificado para evitar confusión y probablemente daños en sus Raspberrys (cosa de lo cual no me hago responsable pues finalmente lo que se escribe y publica aqui es algo que a mi en lo personal me ha funcionado y que tal vez no sea lo adecuado para una configuración especifica y sobre la cual no tengo control y/o acceso).

El lenguaje y la libreria


Estoy aprovechando tambien, esta nueva experiencia con la Raspberry Pi para aprender otro lenguaje de scripting, Python. Para tener acceso a los GPIOs (General Purpose Inputs and Outputs) de la tarjeta usando Python es necesario utilizar alguna libreria que nos sirva para el acceso a las funciones de bajo nivel del hardware, asi pues, si quieres crear la tuya propia, necesitaras hacerlo en C, pero mi sugerencia es que si tienes el conocimiento, mejor ayudes a mejorar y/o agregar funciones a las librerias existentes, como lo son WiringPi (basada en las librerias para Arduino) o RPi.GPIO. Para los fines de los ejemplos que serán publicados en este sitio, utilizaremos RPi.GPIO.

En la imágen de Raspbian Wheezy con fecha 2012-12-16 la libreria python-rpi.gpio esta instalada por default, en caso de estar ejecutando alguna version anterior de Wheezy, los pasos a seguir son los siguientes:

La manera sugerida es utilizando el administrador de paquetes apt-get. Para hacerlo solo hay que ejecutar lo siguiente en la linea de comandos:

sudo apt-get update
sudo apt-get install python-rpi.gpio

Si por alguna razón se prefiere descargar la versión mas reciente desde el sitio del proyecto, entonces lo primero que tenemos que hacer es visitar la página del proyecto y descargar la version deseada. Al momento de escribir este texto la versión mas nueva es 0.4.1a y el comando utilizado para descargar esta versio es el siguiente:

wget http://raspberry-gpio-python.googlecode.com/files/python-rpi.gpio_0.4.1a-1_armhf.deb

Una vez descargada la libreria, es necesario instalarla, para lo cual utilizaremos el siguiente comando:

sudo dpkg -i python-rpi.gpio_0.4.1a-1_armhf.deb

Una vez hecho esto, la libreria ya esta disponible para ser llamada desde python. Para comprobarlo se puede ejecutar la siguiente secuencia de comandos:


~# python
Python 2.7.3rc2 (default, May  6 2012, 20:02:25) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import RPi.GPIO
>>> exit()
~# 


Al no recibir ningún mensaje de error después de importar la libreria, podemos tener la confianza de que esta bien instalada y accesible para el sistema.

Si llegaste hasta este punto y no tuviste problemas es por que tienes todo listo para comenzar con el primer ejemplo que sera publicado en la siguiente entrada del blog.

sábado, 29 de diciembre de 2012

¿Qué es la Raspberry Pi?

Tal vez llegaste a este blog por casualidad, por curiosidad o tal vez porque alguien te compartió un link que te podría interesar y al leer ves Raspberry Pi por aquí, Raspberry Pi por alla, Raspberry Pi por todos lados y te preguntas ¿que es eso? pues bien, de acuerdo a la página de preguntas frecuentes de www.raspberrypi.org se puede definir como:

La Raspberry Pi es una computadora del tamaño de una tarjeta de credito que se conectar a tu TV y a un teclado. Es una computadora pequeña capaz de ser usada para muchas de las cosas que hace tu computadora de escritorio, tal como hojas de cálculo, procesadores de palabras y juegos. Es tambien capaz de reproducir video de alta definición (HD).

Esta computadora es bastante sencilla, con un tamaño de 85.6mm x 56mm x 21mm y un peso de 45 gramos (sin periféricos conectados), esta basada en un SoC (System on a Chip) producido por Broadcom, el BCM2835 que contienen un ARM1176JZFS con unidad de punto flotante corriendo nativamente a 700Mhz y una GPU Videocore 4 que es capaz de reproducir video con calidad de BluRay usando H.264 a 40 MBits/s.

Al dia de hoy se esta enviando el denominado Modelo B revisión 2 que es la segunda versión del hardware que originalmente, en el Modelo B revisión 1, se enviaba con 256 MB de memoria RAM. Ahora el Modelo B revisión 2, tiene como mayores cambios un par de perforaciones hechas para poder fijar la tarjeta a algún chasis y que la cantidad de memoria RAM fue incrementada a 512 MB.


En esta imagen pueden ver los componentes principales de la computadora.

Como ven, la computadora tiene salida HDMI que es capaz de enviar audio y video en HD, tiene conector RJ-45 para conectividad sencilla a una red, dos puertos USB 2.0 conexión de audio análogo y salida de video compuesto (Composite RCA) para facil conectividad a equipos de televisión que no sean de alta definición. Una de sus características principales es su bajo consumo de energia (5V, 700 mA), esto a su vez es una propiedad en contra, pues no provee suficiente energia para algunos dispositivos USB. La solución a esto, es un concentrador USB externo que sea energizado de manera independiente.

Este sistema arranca desde la memoria SD que debe ser conectada en la parte inferior de la tarjeta. Esta memoria SD debe ser preparada con alguno de los Sistemas Operativos (SO) que pueden ser descargados de manera gratuita desde la sección de descargas de www.raspberrypi.org/downloads .


Lo que a mi en lo personal me llamo la atención es la cantidad de puertos digitales que se pueden controlar para interactuar con hardware y/o otros sistemas, estos puertos son los conocidos comúnmente como GPIOs o puertos de entrada/salida de uso general. Es importante resaltar que hay diferencias en la asignación de los puertos entre la revisión 1 y la revision 2 del hardware, estas están descritas aqui.



Es con estos puertos con los que principalmente estaremos interactuando para poder enviar y recibir eventos desde y hacia el mundo exterior.

Un punto que aun no comento es el precio, esta computadora cuesta solo $35 USD por lo que es una buena y económica opción como plataforma para proyectos personales tales como Reproductor de Medios (raspbmc), comunicaciones (uelastix) o simplemente para aprender con cualquiera de las imágenes de SOs disponibles en la página de descargas de Raspberry Pi.

Para mas información con respecto de que es y que puedes hacer con esta computadora, sugiero que visites los siguientes enlaces (en inglés):

Sitio Oficial: http://www.raspberrypi.org/
FAQ: http://www.raspberrypi.org/faqs
Foros: http://www.raspberrypi.org/phpBB3/
Wiki: http://elinux.org/RPi_Hub

domingo, 9 de diciembre de 2012

Bienvenida

Este es mi primer blog. He llegado tarde a esta forma de comunicación, pero creo que por fin ha habido algo de lo que pueda hablar y con lo que pueda aportarle a quien lea este espacio.

En este espacio estaré publicando los resultados que obtenga de mi experiencia personal y recolección de recursos disponibles en linea orientados a un aprovechamiento apropiado de una plataforma de computo que ha llamado mucho mi atención, la Raspberry Pi.


Actualmente ya tengo algunos videos publicados en YouTube acerca de esto, y algunas personas me han solicitado desde mas detalles hasta el código fuente de los proyectos. Mi objetivo es que este espacio pueda servir como el medio adecuado para hacer accesible la información y el código, ademas de que invite a todos a corregir, completar y/o mejorar lo que aqui se publique.


A forma de "disclaimer" repito, este es mi primer blog, no tengo experiencia escribiendo tutoriales con forma de monólogos y tambien suelo cometer el error de asumir que cierto conocimiento es obvio, por lo que les pido que si tienen alguna pregunta, por mas basica que parezca, la hagan, pues si no mencione algo o lo obvie, es por mi error, no por el suyo y el objetivo de este sitio es que ambos obtengamos algo que nos beneficie mutuamente.


Bienvenidos todos, espero y esto no sea como una suscripción al gimnasio, donde al principio entramos con muchas ganas y terminamos sin visitarlo con la frecuencia que se deseaba...