Hace un año y medio comencé a incursionar en el mundo del Arduino, comencé comprando uno en eBay, un Arduino modelo UNO, luego un MINI, luego un MEGA y hasta compré los componentes de forma individual para armar uno propio. Todo fue sencillo, divertido y económico, un hobbie que le recomiendo a todo el mundo, en especial aquellos a quienes realmente les gusta la tecnología.
Para que entiendan lo económico que resulta este juego, una placa Arduino UNO tiene un costo aproximado de 12 dólares en sitios como eBay, comprando los componentes por separado este monto es aún inferior, aunque quizás tomarse el trabajo de soldar los componentes, armar la PCB, grabar el software en el ATmega y demás no merezca el trabajo desde el punto de vista del ahorro.
Este hobbie me enseño mucho más de lo que hubiese imaginado, comencé porque simplemente quería automatizar un sistema de riego, sin embargo y con el pasar de las horas, las de ocio creativo, comencé a aumentar la complejidad de mis proyectos, algo que ocurre siempre cuando disfrutamos lo que hacemos.
Arduino utiliza C como lenguaje de programación principal, si descargamos el IDE oficial, que es muy simple, básico y fácil de utilizar, tendremos una hoja en blanco con una estructura muy pero muy sencilla, la misma se puede desglosar en tres partes principales: Una estructura, variables y constantes, y funciones.
Aprender a trabajar con limitaciones
Los programadores muchas veces dejamos de optimizar nuestro código porque sabemos, consciente o inconscientemente, que nuestro código se va a ejecutar en potentes procesadores, con miles de MB de memoria RAM disponible y muchos, pero muchos GB de espacio.
Hasta que no trabajamos en un entorno realmente limitado no sabemos lo afortunados que somos de tener las capacidades vigentes en el mercado de hoy.
Septiembre de 1956. IBM lanza el 305 RAMAC, la primer súper computadora con un disco de 5MB (y un peso de 1 tonelada) · vía retronaut
El corazón de cualquier programa para Arduino contiene dos estructuras principales:
- Setup() en donde vamos a inicializar todas nuestras variables, los modos en que los pines van a trabajar, y las diferentes bibliotecas, además de setear cosas como la velocidad de comunicación serial como su puerto.
- Loop() como su nombre lo indica, un bucle infinito en donde ejecutaremos todas nuestras funciones, este ciclo que vendría a ser algo muy similar al ciclo de un procesador.
No hay mucho más. Como se darán cuenta la programación de un Arduino no es compleja, uno podría pensar que estos aparatitos son limitados, nada más alejado de la realidad.
Para que se den una idea de lo mucho que se puede hacer con capacidades reducidas, un chip ATmega328, el cerebro más popular que podemos encontrar en los Arduino, la memoria flash tiene apenas 32KB, de los cuales 0.5KB están ocupados por el bootloader.
Sin embargo con tan poco espacio los proyectos originales no paran de surgir, personas que controlan desde las luces de la casa hasta un vivero completo y todo con esto utilizando un procesador de menos de 12 dólares.
Un Arduino nos hace ver desde otra perspectiva lo mucho que se puede hacer con poco.
Comunicación entre distintos dispositivos
Arduino originalmente utilizaba un puerto serie para comunicarse con la computadora, luego se opto por emplear una interface de comunicación puerto USB -> Serial para facilitarle la vida a los usuarios. La comunicación con la computadora se realiza empleando el driver de Arduino.
Mediante esta comunicación podemos pasar información de la computadora al Arduino y viceversa, podemos por ejemplo, indicarle a la placa que enciende una luz, riegue nuestras plantas o accione un motor, todo desde nuestra computadora y haciendo uso de la comunicación USB.
Como dije antes la capacidad de procesamiento de Arduino es limitada, sin embargo me resulta impresionante lo mucho que se puede hacer con tan poco, simplemente pensando mejor nuestras soluciones, optimizando el código, filtrando las funciones innecesarias, esto es un ejercicio fantástico si programamos con sockets, trabajar con Arduino te va a permitir mejorar como programador, entender las limitaciones, solventando estas barreras estoy más que seguro que podrás implementar muchos de estos conceptos a tus programas hoy.
Trabajar con Arduino te va a hacer replantearte cosas en tus programas de hoy, cosas como ¿Tengo que ejecutar esta función con cada ciclo de procesador? ¿Es realmente necesario correr este código todo el tiempo? ¿Necesito esta estructura de control? ¿Estos arreglos, liberan memoria?
Pasar de lo virtual a lo material
Los programadores viven en un mundo irreal, un mundo imaginario lleno de reglas.
Todos los que programamos tenemos el mismo problema desde el punto de vista social, nuestro trabajo es virtual. Si nos sentamos en un casamiento y hablamos con otros invitados siempre nuestro trabajo será difícil de explicar:
En la mesa del casamiento:
- Un invitado se presenta como Arquitecto: El resto de los comensales imagina casas, rascacielos, etc.
- Otro invitado se presenta como Doctor: El resto de las personas imagina quirófanos, inyecciones, operaciones, etc.
- Finalmente se presenta el programador: Y las personas se imaginan un friki sentado en una computadora 24 horas por día presionando teclas, fin.
Arduino materializa nuestro trabajo. Cuando comencé a utilizar esta plataforma aluciné cuando aprendí a controlar un motor paso a paso, me parecía genial poder detectar la humedad y temperatura del ambiente, era darle cuerpo físico a mi código.
Lo mismo va a ocurrirles, se los recomiendo, ademas de divertido y útil, es una forma magnífica de interactuar físicamente con nuestros programas.
Arduino: los legos de estos tiempos
Los legos siempre me gustaron, son divertidos, escalables, y la única limitación es la imaginación. Arduino es igual, salvo que incluye programación.
Existen infinidad de módulos adicionales que podemos adquirir o hacer nosotros mismos, estos módulos se anexan mediante conexiones simples, podemos incorporar a nuestro proyecto un sensor de movimiento, un relay, un sensor de luz, etc. La mayoría de los módulos no superan los 10 dólares y se pueden adquirir en cualquier sitio del mundo.
Cada módulo incorpora más capacidades a nuestro proyecto, es un vicio!!!
Cuando programamos encontramos lo mismo cuando empleamos bibliotecas, una nueva biblioteca un mundo nuevo de posibilidades, es divertido y potencia nuestras ideas. Pero cuidado, tampoco terminemos agregando todo lo que pasa por delante nuestro, recuerden que este entorno tiene limitaciones.
Filosofia abierta
Arduino es un proyecto de hardware LIBRE, un concepto que guarda una estrecha relación al del software libre, cuenta con una comunidad fantástica, les recomiendo visitar el foro oficial del proyecto en donde encontrarán a miles de personas de todo el mundo compartiendo información, proyectos y bibliotecas.
Cualquier sea el proyecto que encares siempre vas a encontrar personas interesadas en él y dispuestas a ayudarte o a contribuir.
Arduino es un mundo de ideas, también lo es Raspberry Pi, pero este último me parece mejor para proyectos que requieran mostrar información multimedia, además es bastante más costoso.
Si todavía no tienen un Arduino, es el momento para comenzar!
YaPeL
10 años ago
Buena nota, ya tengo el mio, por ahí faltaría agregar algún material como para arrancar.
Carlos
10 años ago
Muy buena nota Pablo!
Parece muy interesante todo lo relacionado con Arduino, en lo personal siempre me interesó el mundo de la domótica y por lo que comentás creo que Arduino podría ser una buena forma de introducirme en el tema.
Probaste algún ejemplo que trabaje sobre control de luces del hogar con Arduino?
Saludos!
Roberto Ortiz
10 años ago
Suena muy interesante, yo desde hace tiempo quiero entrarle a esto, pero yo de programación no sé nada y eso es lo que me frena a comprar uno.
Pablo
10 años ago
@YaPel: Te recomiendo, ademas del sitio oficial que tiene muchisima documentación, sitios estilo instructables, por ejemplo http://makezine.com/category/electronics/arduino/
Cuenta con muchísimos proyectos, código y ejemplos 😀
Pablo
10 años ago
@Carlos, para Domotica son fantásticos, dos módulos que te van a servir son: Ethernet (Comunicarte con el Arduino por medio de Internet) y modulo de 8 canales relay (accionadores, podes activar cada uno de estos como si fuesen interruptores), tan solo con esos dos módulos podemos controlar el encendido de luces, motores, equipos de música, cafeteras, todo lo que se pueda accionar con un interruptor. Es muy simple.
Fijate todos los proyectos relacionados http://makezine.com/?category=arduino&s=home+automation (filtra la categoria arduino)
Pablo
10 años ago
@Roberto, no te preocupes tanto, la programación es bastante básica, además utiliza C que es padre de prácticamente todos los lenguajes de programación, es una bonita forma de iniciarte en el mundo de la programación 😀
Sathya Sanlés
10 años ago
La verdad que no dejan de sorprenderme con estos INCREIBLES artículos, por lo que no podía no comentar. Justamente ayer estaba buscando cosas de arduino, parece a propósito. Automatizar cosas en la casa, como dijo @Carlos es muy interesante, asi que voy a comprarme un Arduino y comenzar, cual necesito? Nombraste varios, UNO, MEGA y otro.. 🙂
Gracias!! Y sigan asi.. Me leo todos los articulos, el único blog que sigo a full..
Jonatan Ariste
10 años ago
Que lindo articulo, me inspiró a desempolvar mi arduino y retomar cosas, nunca me salio nada, pero por tu artículo vuelvo a empezar 🙂
Pablo
10 años ago
@ Sathya: Gracias!!!
Todo depende que quieras hacer, el funcionamiento de todos es idéntico, cambian cosas como la cantidad de pines disponibles y la memoria. El Arduino básico es el UNO. El más completo es el MEGA, si tenes ganas de divertirte y no tener que cambiarlo en bastante tiempo el MEGA puede ser excelente opción, en ebay esta de 20 a 25 dólares aprox 😀
Pablo
10 años ago
@Jonatan Animos! Es divertido cuando las cosas comienzan a funcionar, se torna más y mas adictivo 😀
Ankou
10 años ago
Para los programadores no se si ira bien (soy programador y uso arduino hace unos añitos) pero para los que quieren aprender a programar y para los niños es perfecto; si ademas para los niños le añades scratch perfecto.