miércoles, 31 de julio de 2013

Creando una Recreativa con Raspberry Pi - Parte 2

Por fin vuelvo a las andadas, ya he terminado mi recreativa. Finalmente no la he montado con Rasbperry Pi sino con CubieBoard. El caso es que he probado diferentes sistemas de recreativas con Raspberry Pi y os comento los mas interesantes que he encontrado. De algunos de ellos he hablado en el blog anteriormente, así que para aquellos que estén pensando en montar una recreativa con Raspberry Pi, voy a hacer un pequeño repaso.

En primer lugar tenemos MamePi que va por su versión 0.7.6, este sistema incorpora Mame, Play Station, Super Nes, Nes y Mame4all. Originalmente funcionaba con Advance Mame, así que no se que diferencia de rendimiento se obtendrá al emplear Mame4all en su lugar. El caso es que SheaSilverman es el creador de este sistema y ha sido la luz que ha guiado mis pasos en esta oscura senda de la emulación en arquitecturas ARM. Os recomiendo echar un vistazo a su blog porque no tiene desperdicio.



Otra interesante opción es utilizar RetroPie. RetroPie es una completo sistema de emulación que incorpora multitud de máquinas recreativas y viejos computadores personales. Os dejo un vídeo para que veáis su funcionamiento, pero realmente el sistema es super completo, sus arquitectos han pensado en todo.


La última opción que he encontrado y que particularmente a mi es la que más me ha gustado es ChamaleonPi. Es una excelente y completa plataforma con una enorme colección de emuladores, consolas, computadores antiguos y SCUMM. Además Carles Oriol que es su creador, es un paisano de Cataluña a quien me gustaría dar la enhorabuena por el gran trabajo que ha realizado.



Todos estos proyectos son verdaderamente geniales, y sus creadores han hecho un gran trabajo. Sin embargo tras probar el funcionamiento de MAME sobre Raspberry Pi, llegué a la conclusión de que no es lo que yo buscaba. Para cualquier otra plataforma los emuladores consiguen un resultado muy bueno, pero MAME tiene el problema de no ser un sistema excesivamente optimizado ya que debe ser capaz de emular un número muy elevado de máquinas y para ello lo que se hace es sobrecargar el procesador, además MAME no suele hacer uso de aceleradoras lo que deja al procesador con todo el trabajo. En esta situación, creo que Raspberry no es el equipo ideal para MAME aunque otros emuladores funcionan estupendamente.

Como comente al comienzo de la entrada voy a utilizar CubieBoard, En próximas entradas voy a contaros paso a paso como crear el sistema vosotros mismos, cumpliendo las necesidades que encontraremos para obtener una maquina recreativa plenamente funcional. Acaba de salir CubiBoard 2 que incorpora un microprocesador A20 de doble núcleo, sin embargo me voy a basar en CubieBoard 1 ya que su precio es menor y para la mayoría de juegos es suficiente. A continuación os dejo una foto de la maquina que estamos montando.


La idea es que la CubieBoard quede dentro, junto a una fuente de alimentación y que desde fuera únicamente haya que conectar el cable de corriente y el cable HDMI, con un botón de encendido con la idea de que sea compacto.

sábado, 27 de julio de 2013

Nuevo Curso de introducción a la Mecánica y Computación Cuantica

Los cursos edX, son cursos impartidos por las universidades más importantes del mundo. Entre las universidades participantes están el MIT, HARVARD, Berkeley y la University of TEXAS SYSTEM. Estos curso son cursos de tipo MOOC gratuitos y en la mayoría de ellos existen dos opciones de inscripción, una en la que se realizan los exámenes y el seguimiento de los temas por diversión y otro en que al finalizar el curso se consigue un diploma de aprovechamiento del curso firmado por el profesor responsable y la universidad en cuestión.

Take courses from the world's best professors

El caso de hoy es que la universidad de Berkeley ha propuesto un nuevo curso sobre Mecánica y Computación Cuántica para este verano. El curso inicia el 11 de Agosto y como requisito muchas ganas de aprender y conocimientos básicos de manejo de números complejos y álgebra lineal como la diagonalización de matrices o la obtención de autovalores y autovectores. Por si andáis oxidados en estos temas y queréis poneros al día y a la vez practicar el ingles también cuenta con una serie de clases online sobre todos estos temas con vídeos subtitulados en ingles, aunque quien ande muy mal puede recurrir al google translator. Os dejo la explicación sobre lo que son los autovalores y autovectores de una matriz de transformación por si queréis ver como esta el nivel.



Parece que va a ser un curso muy interesante, se verán fundamentos sobre computación cuántica y se explicarán los principales algoritmos que se están diseñando para estos computadores como la factorización de enteros o la transformada de Fourier. Esperaremos atentos al comienzo de este, esperamos que sea de vuestro interés.


sábado, 1 de junio de 2013

GBoard: Conectando a un servidor TCP a través de GPRS

En una entrada anterior os hablé de la placa GBoard que incorpora un microcontrolador Atmega328 con el Bootloader de Arduino y un módulo GSM/GPRS Sim900. En ella dejé disponible una librería que incluía funcionalidades como el envío de mensajes SMS, llamadas telefónicas y algunas funcionalidades más del módulo GSM.
En esta ocasión os traigo la versión 1.5 de la librería para Arduino de GBoard que incorpora la posibilidad de conectar en modo transparente a un servidor TCP ó UDP, esto significa que se conecta a dicho servidor y todo lo que enviemos por el puerto serie lo recibirá el servidor en paquetes TCPIP y lo que el servidor responda nos llegará de igual modo a través del puerto serie. Además de esto, la librería incluye varios ejemplos, entre ellos hay un ejemplo para conectar a un servidor de correo a través de telnet y por comandos SMTP permite enviar correos electrónicos.

Todos los detalles y comandos AT utilizados para las funcionalidades de GPRS pueden consultarse en el documento de notas de aplicación del módulo Sim900 para TCP/IP. En este documento, no solo encontraremos los comandos sino que también se pueden encontrar ejemplos de uso de los diferentes modos TCP/IP que pueden ser utilizados con este módulo.

martes, 28 de mayo de 2013

Programando Baby Orangutan con AVR Studio 5.1

Al diseñar nuestro robot, normalmente necesitamos un driver para controlar al menos un par de motores y un microcontrolador para controlar la lógica que gobierna el robot. Si utilizamos un Arduino y un driver externo esto nos puede costar entre 35 y 80 euros según los elementos utilizados. La placa que os presento hoy es una placa compacta que integra un Atmega 328P, el mismo microcontrolador que utiliza Arduino UNO, y un driver de dos canales de 3A de pico por canal, con lo que podemos controlar un par de motores de una potencia relativamente alta.

Este controlador tiene múltiples ventajas, es barato, compacto, ligero, integra un microcontrolador AVR junto a un driver de 3A de pico por canal e incluye un potenciometro para poder realizar ajustes online en nuestro robot sin necesidad de añadir nada nuevo a la placa electrónica de nuestro robot. Sin embargo, a la hora de comprar este controlador hay que tener en cuenta una serie de detalles. En primer lugar esta placa no incorpora un bootloader preinstalado, el bootloader es un código residente en el micro que permite cargar un programa través del puerto serie como ocurre en el caso de Arduino. Al no tener este código residente, no es posible enviarle un programa a través del puerto serie y es necesario utilizar un programador externo como nuestro USBtinyISP para poder cargar los programas. Con un programador externo también es posible cargar el bootloader de Arduino y a partir de ese momento si es posible programar a través del puerto serie como con cualquier otro Arduino. Otra opción, es programar directamente a través del puerto de programación con el mismo IDE de Arduino, o con IDEs avanzados como el que vamos a utilizar hoy que es AVR Studio.

Hoy me voy a centrar en contaros como programar esta placa con AVR Studio. AVR Studio es un entorno de programación de Atmel basado en Visual Studio, por lo que aquellos que tengan experiencia con programación en .Net se sentirán muy cómodos utilizando este entorno. Una de las ventajas de programar con un entorno como este, es la posibilidad que ofrece el entorno de simular el micro y ejecutar el programa en modo el debug lo que permite realizar trazas de una forma muy cómoda  De esta manera es posible ver el valor que irían adquiriendo los registros en tiempo de ejecución, deteniendo el programa y pudiendo incluso ejecutarlo paso a paso, lo que nos permite depurar errores de una forma mucho mas eficiente.

El primer paso es instalar el entorno Atmel Studio o AVR Studio dependiendo de la versión que instalemos. Es importante instalar la versión 4.0, 5.1 o bien la 6.0 ya que son las versiones compatibles con el paquete de librerías de pololu, AVR development bundle, que incluye librerías varias para la programación de microcontroladores AVR.

A continuación hay que instalar el driver de tu programador para AVR, si utilizas Windows 8 tendrás que seguir los pasos descritos en esta entrada que explica como instalar los drivers de Arduino DUE en Windows 8 pero el mismo procedimiento puede utilizarse con muchos otros dispositivos como por ejemplo es este caso. 

Una vez instalados los drivers del programador tenemos que configurar nuestro USBtinyISP, para ello lo primero es instalar la herramienta WinAVR que incorpora diferentes herramientas para la programación de dipositivos ATmega, en concreto la que nos interesa a nosotros es AVRdude. Posteriormente hay que configurarlo en el entrono de AVR Studio, para ello os dejo un vídeo en el que explican como configurarlo ya que es complicado de explicar y viéndolo se hace mucho más sencillo.


Tras instalar WinAVR, se instalan en la carpeta C:\WinAVR-20100110 multitud de herramientas. En esta carpeta se encuentra la carpeta bin donde están todos los ejecutables y ahí podemos encontrar AVRdude que es el programa que tenemos que configurar en el entorno como programador. En el entorno de AVR Studio hay que utilzar la opción Tools --> External Tools que permite añadir un programador como herramienta externa. Al utilizar esta opción, aparecerá un formulario done hay que configurar en primer lugar el nombre de nuestra herramienta, por ejemplo USBTiny. El segundo argumento se refiere al ejecutable de nuestra herramienta que será avrdude, por lo que hay que poner la ruta hasta el ejecutable que por defecto será C:\WinAVR-20100110\bin\avrdude.exe. Los siguientes argumentos dependerán de la solución que hayamos creado. Cuando creamos un nuevo proyecto hay que elegir la librería de Pololu y dentro de la librería elegir BabyOrangutan 328P, lo que creará una solución para este dispositivo. Como se puede ver en el ejemplo, hay que seleccionar el nombre del proyecto, el nombre de la solución y el directorio donde estará la solución.


Una vez creada la solución, podemos consultar estos parámetros a la derecha en el explorador de soluciones como se ve en la imagen siguiente. Al generar el proyecto, según si hemos elegido Release o Debug, se generará una carpeta dentro del directorio de la solución con ese nombres y dentro de dicho directorio, estará el archivo nombreProyecto.hex que es el archivo binario generado que hay que cargar al controlador Baby Orangutan.


Al crear el proyecto por defecto, se creará con un archivo con el código del ejemplo blink que enciende y apaga un Led. A partir de aquí, hay que rellenar el resto de parámetros en la configuración de la herramienta externa de programación. Hemos añadido el nombre y el ejecutable que realizará las tareas de grabación en el Baby Orangutan, pero ahora debemos rellenar los argumentos donde según el vídeo hay que utilizar la linea -c usbtiny -p m328p -U flash:w:$(ItemFileName) pero lo que hay que hacer es ver el nombre con el que se generea el archivo con extensión .hex y utilizar este nombre. Para ello, hay que generar la solución con la opción Build->Build Solution y luego navegar hasta la carpeta de la solución. Si hemos compilado en Release habrá que mirar en la carpeta con este nombre y si hemos compilado en Debug habrá que mirar en la carpeta con este otro nombre. Allí encontraremos un archivo generado con la extensión .hex y ese es el que hay que utilizar en la linea de comando anterior. Por defecto este nombre será el mismo del del proyecto por lo que si nuestro proyecto se llama nombreProyecto se deberá usar la sentencia  -c usbtiny -p m328p -F -U flash:w:nombreProyecto.hex. Puede verse que en la linea anterior se ha añadido el parámetro -F que soluciona algunos problemas que pueden aparecer al intentar cargar código al microcontrolador utilizando avrdude.


Es importante tener en cuenta que el Baby Orangutan utiliza los pines PB4 y PB5 para la programación por lo que si utilizamos estos pines en nuestros proyectos podemos encontrar problemas a la hora de programarlo. En concreto, no debería haber problema a no se que se conecte en dichos pines un condensador que impediría programar el microcontrolador sin quitarlo del zócalo. Otra cosa a tener en cuenta a la hora de programarlo es la posición del conector, en la placa del Baby Orangutan puede verse marcado con una flecha el pin 1 del conector ISP. El pin 2 es el que se encuentra encima de este y corresponde con VCC y por lo tanto el lado con una franja roja del conector del programador debe conectarse en ese lado.


Por último, en el cuarto parámetro hay que indicar el directorio donde se encuentra este archivo ejecutable, indicando la carpeta Release o Debug según corresponda. Con esto, aparecerá un nuevo ítem en el menú Tools con el nombre de nuestra herramienta. Si conectamos el programador USBTiny al PC y le conectamos nuestro Baby Orangutan, al pulsar el botón Tools -> USBTiny compilará el código de ejemplo y lo cargará en nuestro Baby Orangutan. Después de esto podremos ver como el led se enciende y se apaga intermitentemente, a partir de aquí ya podemos comenzar a crear nuestro propio código, basándonos en las librerías de pololu y con la ayuda de InteliSense que nos sugerirá código a medida que vamos programando.



Espero que os sea de ayuda, y si necesitáis aclarar alguna cosa no dudéis en poner un comentario e intentaremos ayudaros en todo lo posible.




jueves, 16 de mayo de 2013

¿Conoces GBoard?: GSM/GPRS + ARDUINO todo en uno


En muchas ocasiones tenemos en mente realizar un proyecto en el que queremos monitorizar
algunos sensores y enviar la información a través un módulo GSM/GPRS, bluetooth, XBEE o sencillamente almacenarla en una tarjeta SD a modo de datalogger. Si lo hacemos con Arduino
necesitaremos como mínimo una placa base Duemilanove/UNO/MEGA/Due más el shield de comunicaciones GSM/Bluetooth/XBEE, si además queremos conectar sensores necesitaremos añadir otro Shield más. Si además queremos almacenar la información capturada por estos sensores
en una tarjeta SD necesitaremos añadir un nuevo Shield adicional.

El resultado será una torre de shields que probablemente funcione, pero cuya estética y control se complicaría al tener que trabajar con las diferentes señales de control empleadas por cada una de estas placas. Además sería necesario realizar un estudio previo para comprobar la compatibilidad entre las diferentes placa, ya que si dos o mas de ellas utilizan el mismo pin no podríamos usarlas al mismo tiempo de forma correcta. 

Para estos casos tenemos una solución económica y sencilla de utilizar, se trata de la placa Gboard, un sistema que integra un ATMEGA328P con bootloader de Arduino, un módulo GSM/GPRS SIM900, zócalo para tarjeta MicroSD, XBEE/Bluetooth/nRF24L01 y pines de conexión para sensores o actuadores, y todo esto en una placa de tan solo 89 x 61mm. La programación del microcontrolador ser realiza a través de un convertidor USB/RS232 y se programa igual que se programa un Arduino. Está preparada para realizar la interacción con el módulo GSM/GPRS a través del puerto serie hardware o bien utilizando otros pines y la librería para Software serial pudiendo tener así disponible el puerto serie hardware para enviar datos de DEBUG a nuestro PC.

Es posible realizar la gestión del módulo SIM900 utilizando comandos AT, para conocer la lista de comandos AT disponibles hay que basarse en la lista detallada en la documentación del módulo SIM900. También puedes programarla directamente con la librerías para entorno Arduino, en este enlace puedes decargar la librería para GBoard adaptada por GoShield a las versiones del IDE 1.0 o superior de Arduino.

Si estas pensando realizar un proyecto que utilice GSM/GPRS la Gboard es una buena opción a tener en cuenta, pero si además tu proyecto ha de integrar los diferentes periféricos que hemos comentado, entonces es la opción idónea.

Con esta misma filosofía existen otras placas que integran un ATMEGA328P +  Dispositivo/Actuador/Módulo. Entre las más interesantes te presentamos las siguientes:


Puedes encontrar todos estos artículos y la información adicional están disponibles en nuestra tienda online.

sábado, 4 de mayo de 2013

¿Quieres aprender a diseñar tus propios robots?

Aquellos que estamos empezando en el mundo de los concursos de robótica, solemos tener el problema de afrontar los problemas de la construcción del robot desde cero. Al no tener experiencia es común cometer errores tontos que cuando llegamos a pista nos damos cuenta que nos van a impedir hacer nada. En mi caso, el primero robot con el que me presenté a un concurso tenía el principal problema de controlar mal los motores y cuando me di cuenta de ello ya era demasiado tarde.

Hoy quiero dejaros la idea, de que si queréis comenzar a construir vuestro robot, lo mejor es que comencéis cuanto antes y que no os rindáis  Si vais a una competición seguramente descubriréis mil fallos de vuestro robot que lo hacen totalmente inservible al lado de la mayoría de rivales, pero esto no tiene que echaros atrás, lo importante es descubrir estos defectos y corregirlos para mejorar.

Otra cosa importante es no estar solo, buscad a alguien con vuestra misma motivación, leed foros, blogs, leed a gente que hable de estas cosas, de como construirlas y como mejorarlas  No dudéis en preguntar en foros o blogs, seguro que están encantados de ayudaros, yo me ofrezco humildemente a responder todas aquellas dudas que sea capaz. Y sobre todo, aprender de los mejores, es decir de aquellos que ya tienen experiencia y saben de lo que hablan, aquellos que ya se han llevado mil palos porque así os evitareis dároslos vosotros también.

Hoy os traigo un vídeo, de los que creo que han sido los mejores durante mucho tiempo en carreras de robots velocistas. Es un vídeo muy interesante sobre la ponencia que dan Daniel Alvarez y Alberto Calvo en las jornadas de la robótica en Valladolid. Daniel y Alberto han sido campeones de velocistas los últimos años en casi todas las pruebas en las que se han presentado en España. Yo he tenido la suerte de competir con ellos en una edición de campus party y verlos en directo, aunque no se si se puede llamar competir a lo que hice, ya que mi robot tenía un error garrafal de diseño, que fue no utilizar el freno eléctrico en los motores, algo que os contaré el día que consiga un poco de tiempo para hacer una entrada sobre el control de motores. El caso es que podéis aprender mucho de la experiencia de Daniel y Alberto y seguro que os despierta alguna idea. No pretendo que os deprimáis  porque cuando veáis el nivel de estos caballeros os vais a asustar, pero es lo que hay. Hay que avanzar poco a poco, se pueden hacer robots mas sencillos e igualmente competitivos, pero no esta mal saber lo que se esta haciendo y tomar ideas, para no dar palos de ciego.



Como me dijo una vez un profesor, hay que aprender de los que saben mas que tu y si es posible copiar lo que hicieron para poder entenderlo realmente, comprender porque lo hicieron así y una vez conseguido eso, descubrir lo que puedes aportar tu y mejorarlo.

Un saludo a todos y por si me leen algún día, aprovecho para mandar un saludo a Daniel y a Alberto y dales mi enhorabuena por todo su trabajo, y también agradecerles que nos ilustren a todos con charlas como esta, es una verdadera gozada poder escucharles contar su experiencia.

domingo, 21 de abril de 2013

I feel freak: Fabrica tu propia forja casera

Esta semana hemos recibido nuevo material para la tienda, principalmente baterías, cargadores y herramientas por lo que hemos estado ocupados dando de alta el nuevo material y no he podido preparar una entrada nueva. Pero me ha llegado algo que me ha llamado en la atención, no tiene nada que ver con la electrónica pero podría considerarse bricolaje casero.

Si has visto el señor de los anillos o si has leído el Nombre del Viendo y eres tan freak como yo seguro que en algún momento has pensado, ¡¡Como molaría tener una forja!!. Pues bien hay que no sólo lo ha pensado sino que nos explica como construir nuestra propia forja y además nos enseña como fabricar un cuchillo con ella... :)


Espero que disfrutéis con estos vídeos  a mi me ha parecido muy curioso el tema :) y como me ha hecho gracia he pensado compartirlo con vosotros.