domingo, 16 de junio de 2013

Grabar la secuencia de inicio de un Arduino Nano

La verdad es que no deja de sorprenderme la cantidad de cosas que se pueden comprar en DealExtreme (no solo electrónicas), por unos precios irrisorios y lo mejor de todo, con envío gratuito a España, lo cual es más que conveniente para los que profesionalmente o por hobby nos gusta cacharrear. En el caso del Arduino Nano, la diferencia de precio con la tienda oficial u otras tiendas on-line es espectacular. ¿El truco? Pues que tras haber hecho el pedido e investigar un poco (muy poco) uno se da cuenta de que no se trata de la versión oficial, sino de una versión "clonada", con todo lo que ello implica, como la sorpresa que te llevas al recibir el bicho. Abres el sobre, tomas la placa, conectas el bonito cable azul USB que viene incluido, arrancas el IDE de Arduino y... no funciona. Mi recomendación a este respecto  es que siempre que el presupuesto lo permita se compren productos oficiales, ya que al fin y al cabo, eso es lo que hace posible que la gente de Arduino pueda seguir ofreciendo nuevos dispositivos (y viviendo de esto, como es lógico) y además te garantiza que no tendrás problemas de este tipo. Hábilmente en su página el vendedor chino no te dice explícitamente que es un clon (fijándonos bien se cuidan mucho de usar "Arduino" para referirse a la placa, pero si vas rápido y cegado por su reducido coste posiblemente ni te fijarás en el detalle), aunque normalmente el precio ya nos debería dar una pista bastante seria.
Tras buscar un poco en la red, resulta que el problema es que es muy posible que el "Nano" que te venden no traiga grabada la secuencia de inicio (bootloader), con lo cual tienes una preciosa placa pero que no sirve para nada, al menos si lo que quieres es usarla con el IDE oficial de Arduino (sí funcionaría en principio con un programador AVR). Por suerte, la solución es relativamente sencilla si dispones de otro Arduino que sí funcione (en mi caso un Duemilanove, pero sirve cualquier otro), con el que podemos grabar el bootloader, y de paso aprender a cómo usar un Arduino como programador. Los pasos a seguir los encontré en esta página, donde se explica perfectamente el procedimiento usando dos Arduinos Nano. En esta entrada explicaré cómo lo he hecho yo siguiendo las indicaciones de dicha página pero con un Duemilanove (equivalente al Uno estándar) y el Nano.
Los elementos que necesitamos son únicamente estos:
20130615_113829[1]
Es decir, aparte de las dos placas, unos simples cables y conectores. Lo primero es conectar el Arduino que funciona (aquí el Duemilanove o Uno) al ordenador, y abrir el IDE de Arduino. Seleccionamos el tipo de placa (Duemilanove en mi caso) y el puerto COM si no lo ha detectado automáticamente, y cargamos en la placa el sketch de ejemplo ArduinoISP:
Nueva imagen
Una vez cargado el sketch, desconectamos el Duemilanove y procedemos a conectarlas dos placas entre sí. Para ello, debemos identificar primero los pines ICSP (In-Circuit Serial Programming) del Nano (los seis que se ven a la izquierda de la imagen, en la cara superior):
20130615_131728[1]

Mirando los pines desde arriba, hay un 1 marcado en la placa que indica el pin correspondiente, el resto se distribuyen conforme al siguiente esquema:

Nueva imagen (1)


Como vemos, las líneas del ICSP de 6 pines son las dos de alimentación (2 y 6), las de datos Master-Input-Slave-Output y Master-Output-Slave-Input (1 y 4) y las de reloj y reinicio (3 y 5). Estos pines del Nano deben conectarse a los siguientes del Arduino Duemilanove (o su equivalente el Arduino Uno):
MISO <-> Digital 12
+ 5     <-> +5 V
SCK    <-> Digital 13
MOSI <-> Digital 11
RST    <-> Digital 10
GND   <-> GND
Una vez conectados el aspecto es el siguiente:
20130615_113541[1]

A continuación, volvemos a conectar el Duemilanove o Uno al ordenador, abrimos el IDE y en primer lugar, seleccionamos como placa la Arduino Nano w/ ATMega328
Nueva imagen

Seguidamente, también dentro del menú Herramientas, elegimos en la pestaña "Programador" la opción "Arduino como ISP":

Nueva imagen (1)
Por último, pulsamos en  "Grabar secuencia de inicio" y el bootloader se cargará en el Nano al cabo de aproximadamente medio minuto, tiempo durante el cual veremos parpadear varios LEDs en ambas placas.
La primera vez que intenté grabar apareció un mensaje de error, "avrdude stk500_getsync() not in sync resp=0x00". Pulsando de nuevo la opción de grabar el bootloader se cargó sin problemas.
Una última reflexión. Al conectar el Nano, Windows no reconoció el hardware, con lo cual parecía que no había conseguido nada... hasta que descubrí que el problema era el cable USB que venía con el Nano, que estaba defectuoso. Con otro cable funciona perfectamente. A veces, lo barato sale caro.

No hay comentarios: