Arduino, o como aprender mucho con poco
Por Nico Rey (@reynico)
Siempre tuve cierto interés por juntar el Software con el Hardware. Poder manejar mi casa con la computadora, activar o desactivar luces o simplemente hacer inteligente a un aparato sin gracia aparente fue lo que me llevó a leer sobre los microcontroladores PIC de Microchip. Armé mi programador JDM por puerto serie (¡Que épocas!) y conseguí algunos 16f84. Con mi padre pasábamos horas boludeando con los PIC, desde parpadear un led hasta manejar aparatos de la casa, interpretar códigos DTMF para hacer un control remoto por celular, y demás. Así siempre estuve enganchado con la electrónica y la PC. Pasaron los años y siempre estuve jugando con PIC’s, principalmente 16f628a y 18f2550, entre otros.
Hace poco tiempo me empecé a interesar por Arduino. Empecé a ver como se hacía popular esta plataforma de desarrollo entre los aficionados a la electrónica. Al ser una plataforma libre vos mismo podés bajarte los diagramas para armarlo aunque considerando los costos de los componentes y el tiempo de armado y comparándolo con lo que sale un Arduino comprado no lo pensás mucho. por 100 pesos (u$s 23) podés comprarte un Arduino UNO completo con 14 entradas y salidas digitales (6 de ellas pueden usarse como salidas PWM), 6 entradas analógicas y un Atmega 328p corriendo a 16mhz. A eso sumale la interfaz USB, un regulador de voltaje que nos entrega 5 y 3,3 volts, conector ISCP y 32KB de memoria para nuestros proyectos.

(Estamos frente a un juguetito interesante, veamos lo que puede hacer…)
En principio debemos instalar el software necesario en nuestra computadora para poder comunicarnos con el Arduino. La IDE oficial se encuentra en el sitio web de Arduino, mas específicamente acá: http://arduino.cc/en/Main/Software. Yo personalmente encontré mucho mas lindo, usable y completo un software llamado ArduIDE: http://mupuf.org/project/arduide/ Si bien utiliza la base del software original de Arduino, la IDE es mucho mas cómoda y completa. De todos modos para empezar y no mezclar las cosas usaremos todo lo oficial.
Yo utilicé Ubuntu 10.04 para las pruebas, asi que un simple sudo apt-get install arduino nos instala el software necesario.
Nuestro software ya está corriendo, y estamos en condiciones de conectar nuestro Arduino a la PC. Cable USB > enchufar > listo. Nuestro Arduino encenderá un led rojo indicando que tiene energía. Ahora vamos a la ide. File > Examples > Basic > Blink
Con eso abriremos un código de ejemplo que hará parpadear un led en la salida número 13. Para facilitarnos las cosas aún más, el dispositivo tiene ya un led incorporado a la plaqueta que está conectado a la salida 13. es el LED serigrafiado con L.
Bien, hacemos clic en la flecha a la derecha y el software compilará el código para luego guardarlo en la memoria del Atmega. Un mensaje de Done uploading sobre el borde celeste verdoso nos da la grata noticia de que el software se quemó al controlador sin problemas.
Instantáneamente veremos el led rojo parpadeando cada 1 segundo, tal cual indicó el ejemplo.
Probemos algo más interesante.. ¿Que tal leer la posición de un potenciómetro y reflejarla en la velocidad de parpadeo de un led? Bueno, dentro de los ejemplos, en los analógicos, tenemos uno llamado AnalogInput, veamos el código:
int sensorPin = A0;
int ledPin = 13;
int sensorValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin);
digitalWrite(ledPin, HIGH);
delay(sensorValue);
digitalWrite(ledPin, LOW);
delay(sensorValue);
}
Lo primero que tenemos son unas variables declaradas como enteros, A0 será el pin del sensor, en nuestro caso un potenciómetro. 13 será el pin del led y 0 será el valor por defecto del sensor.
Con setup() indicamos al hardware que ledpin (definido como 13) será la salida. Luego se hace un ciclo (loop) que lee el sensor con la funcion analogRead() y enciende el led. luego hace una espera (delay), esa espera tendrá un tiempo igual al que fue leido del sensor. Luego de ese tiempo el led se apagará y se repetirá el ciclo infinitamente.
Para aprender más sobre las funciones de programación, no podemos dejar de leer el sitio, secciones Learning y Reference.
¿Cómo Arduino hizo esto? Bueno, las entradas analógicas leen 1024 niveles, empezando desde 0 para el nivel mas bajo y 1023 para el más alto. El microcontrolador interpreta estos valores (que son leidos con la función analogRead) y ejecuta la acción necesaria. El potenciometro es un potenciometro común y corriente, de 10kohms con uno de sus pines conectado a la salida de 5 volts que nos otorga la plaqueta y el otro pin a negativo o GND.
Para finalizar esta prueba les quiero mostrar la conexion serial con la pc, permitiendo tener un output a una consola en la pc. Agregando la definición necesaria para el puerto usando Serial.begin(9600) (donde 9600 es la velocidad de transmisión en baudios) podemos leer el estado de las entradas por una consolita,
void setup() {
Serial.begin(9600);
}
En la imagen podemos ver como la consola muestra que el potenciómetro está en el valor 789.
Saliendo un poco de lo técnico, pongámonos a pensar un poco lo que tenemos en nuestras manos. A nivel económico tenemos algo que equivale a tener 100 pesos argentinos (u$s 23), pero con ojos nerds vemos mucho más que eso, estamos frente a una plataforma de aprendizaje (muy) interactiva, donde el usuario puede ser cualquier persona que sepa leer y escribir (y tenga acceso a una computadora). Cualquier niño joven puede aprender muchísimo con Arduino y aprovechando que se acerca Navidad, un Arduino UNO no es mal regalo, ¿Que opinan? Tal vez si queremos hacer un regalo más completo podemos gastarnos 200 pesos en total, añadiendo algunos leds, potenciómetros, cables, una placa experimental y una fuente de alimentación externa. Ya con eso tenés diversión para rato.
Y Arduino no termina acá. El equipo de trabajo desarrolló muchísimos modelos de Arduino, todos con usos más especificos que otros, miniatura, súper completos, muchas entradas/salidas, entre otros.
Como pueden ver, el abanico de posibilidades y la capacidad de expansión es terriblemente excelente. ¡Y esperá! hay más…
Arduino es una plataforma libre, hardware libre, software libre. Por lo tanto, vos, yo, cualquiera puede diseñar nuevos dispositivos e interfaces para Arduino como por ejemplo WiFly, un módulo wi-fi para Arduino, con lo que podríamos tener un servidor web inalámbrico de muy bajo consumo.
Yo por lo pronto ya me estoy encargando un Ehernet Shield, mi idea es dejar el Arduino conectado con a Internet para poder tener un mini servidor web con una tarjeta de memoria para la red local y de paso leer el estado de algunos sensores a través de la web.
¿Te gustó al artículo? ¡Entonces, compartilo!



¿Tiene sentido comprar una tablet barata?
¿Como sé cuántas fotos sacó mi cámara?
Blackberry abre BBM, ¿es una buena decisión?
El colmo de Candy Crush
Paragolpes para cargadores


Depende..
Ahí el autor dice que un Arduino cuesta 50 euros (!!!) yo pagué menos de 20 euros el mio. Por 50 euros capaz que te comprás un Mega. Además vos sacás el Atmega del Arduino y podés routear cada pin como se te cante, sin necesidad de quedar “atado” al diseño del Arduino. O sea el chabón que escribió esa nota es tanto o más fanático que yo al redactar, hace comparaciones re boludas de Linux vs Windows, Firefox vs IE… o sea, WTF. No desprestigio a los pics porque es lo que yo también sigo usando y es también con lo que me inicié.
en ebay un 16F876A sale 5 dolares, un UNO sale 20. el UNO trae el pcb, el microcontrolador, los pines de entrada-salida, el (los) cristales, el conector ISCP, el conector USB, leds, los reguladores de voltaje, etc. O sea, no es comparable.
Responder
Creo que no te gusto mucho la entrada, de cualquier forma creo que se está comparando cosas diferentes en cierta forma, arduino no es atmega. Arduino es una plataforma, algo asi como un “entrenador de pic” la cual puede ser repliada con un Pic tranquilamente, valga la redundancia.
Si es para hacer pruebas está perfecto, pero si deseas hacer algo en particular solo debes usar un Atmega, pic, freescale etc
Saludos.
PD: Las notificaciones de suscripcion a entradas definitvamente no anda. Nose si a alguien mas le pasa.
Responder
Muy bueno el artículo. Arduino tienen muchísimas ventajas, en especial para el NO electrónico. El caso se da en personas que no saben electrónica, pero si quieren programar y realizar pequeños automatismos rápidamente…
Respecto al artículo de Mario, es una comparación, él trabaja mucho con PICs y en su momento dió su punto de vista… El post es de abril de 2009, seguramente esos precios eran vigentes a la hora de redactar.
Saludos.
Responder