It should work…

Cuando cualquier trasto es útil

It should work… header image 2

Arduino MEGA y módulo XBee – Instalación en gentoo

September 19th, 2009 · 6 Comments · electronics, linux

Mageles, Jaime y Bea me regalaron una Arduino MEGA! Fue una gran sorpresa y además la acompañaron del módulo wireless XBee Shield que usa tecnología Zigbee, que proporciona comunicación inalámbrica entre placas de este tipo u otros dispositivos Zigbee.

ArduinoMegaxbee

Para quien no lo conozca, las Arduino son una plataforma de desarrollo electrónico enfocada al prototipado rápido cuyas especificaciones son totalmente libres. Existen varios modelos de placas para los diseños con características más o menos avanzadas y podremos trabajar con ellas tanto en Windows, Mac OS X ó GNU/Linux, sin tener que usar compiladores y/o herramientas de desarrollo de pago.

La mía es una Arduino MEGA, que es una mejora de la Duemilanove y la Diecimila gracias a su mayor I/O y capacidad de memoria, entre otras cosas. Las specs principales son:

  • Microcontrolador Atmel AVR 8-bit MEGA1280 @16MHz
  • 128kB FLASH MEM (4kB usados por el bootloader incluído, usado para poder cargar cógido directamente)
  • 8kB SRAM
  • 4kB EEPROM
  • 54 pines digitales (soportan hasta 40mA): I/O, comunicación serie, interrupciones, 8-bit PWM, SPI, I2C, …
  • 16 pines de entrada analógica con una resolución de 10bits, útil para todo tipo de sensores.

Lo primero que tenemos que hacer para empezar a jugar es instalar las herramientas necesarias. En el árbol de paquete de Gentoo hay bastante para microcontroladores AVR ($ eix -S avr ) pero si además queremos afinar e ir a por el kit completo para Arduino tampoco tendremos problemas.

Necesitaremos una versión de Java (yo uso sun-jdk-1.6) además de los siguiente paquetes:

# emerge crossdev jikes uisp rxtx

Yo, de antes, ya tenía instalado avra (AVR Assembler) y avrdude (para subir y bajar código a las microcontroladoras) que había usado para trastear con las AVR Tiny2313, ATmega32 y ATmega64 aunque en realidad casi siempre usé el IDE que te proporciona ATMEL de forma gratuita para Windows y alguna vez Bascom-AVR.

Una vez tengamos los paquetes básicos instalados necesitamos generar el toolchain con el que vamos a trabajar para generar código compatible con la arquitectura AVR. Para ello nos ayudaremos de la herramienta crossdev:

# crossdev -t avr -s4 --without-headers

Tardará un ratillo pero una vez termine ya dispondremos de nuestro flamante compilador avr-gcc. Ahora nos bajamos el IDE que nos proporciona Arduino en http://www.arduino.cc/en/Main/Software, lo descomprimimos y lo dejamos por ahora ahí. Dependiendo de versiones puede que algunos tengan que hacer un enlace (por supuesto respetando paths y versiones de tu sistema):

$ ln -s /usr/lib/binutils/avr/2.19.1/ldscripts/ ~/programs/arduino-0017/ldscripts

Dependiendo de distribuciones o la configuración será necesario estar en los grupos tty y uucp, pero para ahorrarte problemas añade el usuario a esos grupos.

Mmmm ¿qué mas necesitamos? Arduino se conecta por USB a nuestro ordenador y el kernel de linux nos proporciona el driver, yo ya lo tenía instalado pero si no:

Device Drivers -> USB support -> USB Serial Converter support -> USB FTDI Single Port Serial Driver (EXPERIMENTAL)

Lo ponemos como módulo, compilamos y lo cargamos:

# make && make modules_install
# modprobe ftdi_sio

Conectamos la Arduino y podremos ver si todo funciona:

# dmesg
usb 4-2: new full speed USB device using uhci_hcd and address 5
usb 4-2: configuration #1 chosen from 1 choice
ftdi_sio 4-2:1.0: FTDI USB Serial Device converter detected
usb 4-2: Detected FT232RL
usb 4-2: FTDI USB Serial Device converter now attached to ttyUSB0

OK! :)

Volvemos al IDE que ya tenemos descomprimido y lo ejectuamos

$ ./arduino
Experimental:  JNI_OnLoad called.
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version   = RXTX-2.1-7

arduino01

Ahora sólo nos faltará elegir en la configuración que queremos el /dev/ttyUSB0 y que estamos usando una placa Arduino MEGA, et voilà!

Para probar el funcionamiento haremos un “Hello Word” al estilo electrónica, es decir, hacer parpadear un LED :P

Hay ejemplos por ahí pero el código sería:

const int ledPin =  13;    // LED connected to digital pin 13
 
void setup()
{
	pinMode(ledPin, OUTPUT); // set pin 13 as output
}
 
void loop()
{
	digitalWrite(ledPin, HIGH);   // set the LED on
	delay(1000);                  // wait for a second
	digitalWrite(ledPin, LOW);    // set the LED off
	delay(1000);                  // wait for a second
}

A ver si busco ratos y hago algo interesante con mi nuevo juguete, ya no hay excusa. Si quieres saber por donde empezar acude a http://arduino.cc


Fuente original en http://vierito.es/wordpress

Similar Posts:

Tags: ·········

6 responses so far ↓

  • 1 Duki // Sep 19, 2009 at 3:32 pm

    Tio… me he enterado la mitad, pero deduzco dos cosas : Ya estas mejor y te encanta el cacharro.

    Un beso grande

  • 2 vierito5 // Sep 20, 2009 at 1:52 am

    Mucho mejor :)

  • 3 mageles // Sep 21, 2009 at 10:34 am

    Me alegra que te guste :D
    Ahora a hacer cosas chulas y contarnoslas (aunque algunos nos enteremos de más bien poco xD)

    Un besazo!

  • 4 Pedro // Oct 23, 2009 at 10:10 pm

    Hola! muy interesantes esas placas.. tengo una duda, te envían algo de info sobre el modulo xBee? que diferencia hay con el ZigBee? las librerías para controlarlo están echas? necesitarías otro modulo mas para poder comunicarte con algo no? gracias y muy chulo, cacharrea mucho!!

  • 5 vierito5 // Oct 24, 2009 at 1:27 pm

    Hola Pedro,

    Sobre el módulo XBee, cuando lo recibes no lleva ninguna documentación adjunta, al igual que la placa Arduino.

    El mejor sitio para empezar: http://arduino.cc

    ¿la diferencia con ZigBee? ninguna, el módulo XBee usa el protocolo ZigBee para la comunicación y está diseñado por Maxstream http://en.wikipedia.org/wiki/ZigBee

    Tema librerías, las hay disponibles libremente. Podrás encontrar información en los siguientes links:

    - http://www.arduino.cc/en/Main/ArduinoXbeeShield
    - http://www.arduino.cc/en/Guide/ArduinoXbeeShield
    - En el apartado de wireless: http://www.arduino.cc/playground/Main/InterfacingWithHardware
    - http://code.google.com/p/xbee-arduino/

    Evidentemene para comunicarte con algo deberías tener otra Arduino con XBee u otro dispositivo que use ZigBee.

    Un saludo!

  • 6 sadf // Aug 26, 2010 at 5:33 pm

    En ebay se puede comprar el Arduino mega desde China por 27 o 28€, yo tengo el mega y el duemilanove “de Italia” los dos van bien y me costaron parecido.

Leave a Comment