Leer el puerto serie de Arduino con Python y PySerial

[singlepic id=20 w=320 h=240 float=right]Desde hace ya un tiempo he hoy buenos comentarios sobre Python y lo “fácil” que es programar con él, su potabilidad entre sistemas, etc. Me he puesto ha ello, y la verdad es que es muy fácil programar con él, después de un rato, se le coge el tranquillo a esa forma tan peculiar de escribir el código que tiene, solo utilizando tabulación, sin puntos y comas, llaves o cualquier otra forma de indicar el inicio y el fin de las lineas,  a la declaración de las variables, mejor dicho a la no declaración, la formar de trabajar con las funciones, etc. En general es un lenguaje muy fácil de trabajar y encima puedes hacer verdaderas locuras con el. Me ha recordado mucho al Basic que aprendí ya hace muchas lunas.

Para empezar, que mejor que trabajar con Arduino. Lo primero que he hecho es leer del puerto serie la información que escribe el Arduino.

Para el Arduino solo le he metido un código muy simple, genera un numero aleatorio, de -100 a 100,  y lo escribe en el puerto serie.

Codigo para Arduino

Y en Python lo que he hecho es aprovechar la librería PySerial que hay para Python para leer el puerto y leer los datos que escribe el Arduino.  Para instalar la librería PySerial es muy fácil, solo tenemos que seguir los pasos que hay en la propia pagina de PySerial.

El código en Python es muy simple, este mismo código en Java, me llevo bastante tiempo pelearme con la librería RxTx, en cambio en Python es tan sencillo como escribir el siguiente código.

Código Pytho

Después de este código tan simple, ya tenemos un programa que nos lee los datos del puerto serie y lo muestra en pantalla. Esto con cualquier otro lenguaje te lleva un buen rato. Esto no me ha llevado mas de media hora de buscar por internet como se programa en Python y como funciona la libreria PySerial.

Que opinas de ello???

Como crear una imagen con el comando DD

[singlepic id=19 w=320 h=240 float=right]Ya hemos visto como instalar una imagen a un dispositivo conectado a nuestro ordenador con el comando de Linux “DD”. Ahora vamos hacer el paso contrario, como crear nuestras propias imágenes con el mismo comando. Con el comando “DD”, podemos crear imágenes tanto en formato ISO como en BIN. Este proceso están fácil, como cuando copiamos una imagen, solo le tendremos que indicar:

  1. donde esta montado el disco, partición o dispositivo que queremos hacer la imagen.
  2. ruta y nombre del fichero donde vamos ha guardar la imagen.
  3. el tamaño del bloque de datos que vamos ha utilizar. Como en el caso anterior esto es opcional. 

El comando quedaría de la siguiente manera:

Explicaión del comando:

  • “if=” Ruta donde esta montada la unidad o particion que queremos hacer la imagen.
  • “of=” Ruta donde vamos a grabar nuestro fichero de imagen ISO o BIN
  • “bd=” Tamaño del bloque de datos en que se va hacer la copia. 

Por ejemplo, si queremos hacer un copia de nuestro disco (/dev/sda1) y copiarlo a un dispositivo usb, solo tendremos que escribir

Para hacer una imagen de un cd o dvd (/dev/sr0).

Y así con cualquier otro disco, partición o dispositivo que tengamos instalado en nuestro equipo.

Ejecutar Android en un Raspberry Pi

Actualizado el 4 de Junio de 2014, leer hasta el final del post.

[singlepic id=18 w=320 h=240 float=right]Como era lógico, alguien ya ha conseguido ejecutar Android, el sistema de Google para moviles en un Raspberry Pi. Aunque de momento esta en una fase muy precaria, nos permita a mucha gente poder probarlo he intentar mejorarlo.

Ejecutar Android en un Raspberry Pi

Para poder instalar y ejecutar Android en un Raspberry Pi solo tenemos que descargar el fichero de imagen que queramos instalar, para ello, tenemos disponible 3 versión de la imagen en los siguientes enlaces:

Una vez descargada la imagen que queramos probar, solo tendremos que copiar la imagen en nuestra tarjeta SD mediante el comando DD, en Linux, o desde cualquier otro programa tanto ya sea en  Windows, como Linux o en Mac que nos permita instalar imágenes en un USB o disco duro, y una tarjeta SD de al menos 2 Gb.

Una vez instalada la imagen en nuestra tarjeta SD (Samsung Evo MB-MP16DA/EU – Tarjeta de memoria Micro SDHC de 16 GB (UHS-I Grade 1 Clase 10, con adaptador SD)), solo tenemos que insertar la tarjeta el la ranura SD del Raspberry Pi.

Encendemos nuestro Raspeberry Pi y ya tendremos un sistema Android ejecutándose en nuestro Raspberri Pi.

Solo una aclaración  tendremos que tener nuestro Raspberry Pi enganchado a una pantalla mediante el conector HDMI, ya que si lo tenemos conectado mediante el conector de RCA, no nos funcionara, mejor dicho, si funcionara, pero en cuanto entre el entorno gráfico no veremos nada.

Por lo demás, siempre teniendo en cuenta que es una versión muy básica y reciente, tendremos un sistema Android corriendo en nuestro Raspberry Pi, lo que nos permitirá trastear con el , y empezar  a realizar nuestros propios proyectos con estos dos sistemas.

En este es un vídeo grabado por los creadores de la imagen donde se  ve el Raspberry Pi corriendo el Android.

ACTUALIZACIÓN

Varia gente me a comentado que no funcionaba que, que la pantalla se queda con la mensaje de “Sin señal”. Lo he revisado y en principio funciona correctamente. Yo he probado a ejecutar android con una SD del tipo SDHC de 8Gb ( comprada en un chino, así que la calidad de la tarjeta no es muy buena).  La imagen la creado en un Ubuntu 14.04, con el siguiente comando.

Probé a ejecutar android y sin problemas, para comprobar por que había gente que no le funcionada, lo probé con otra tarjeta esta es de 2Gb de tipo SD de SanDisk, y utilizando el mismo comando. Y aquí fallo, pero no es problema de la imagen, ni del Raspberry, el problema debe ser que la tarjeta no es suficiente para grabar la imagen en ella, con la de 8Gb, el Ubuntu la abre como un unidad que tiene 3 particiones. En cambio con la de 2Gb, el Ubuntu ni la reconoce.

Así que para probar instarla la imagen en una tarjeta superior a 2 Gb, no igual, sino superior.

La versión CyanogenMOD 9 (versión con Android 4.0) no esta disponible, por lo que podido leer en varias paginas, el proyecto esta suspendido.

No esperéis milagros, es una cosa muy básica, lo único que podréis sacar de ello, es que habéis conseguido instalar y ejecutar Android 2.3 en un Raspberry Pi, y nada mas. Tenia muy buena pinta al principio, pero si han parado el proyecto se ha quedado en una cosa muy básica.