Por qué los programadores deberían tener un Arduino

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.

arduino mega

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.

hard disk 5mb

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.

robot arduino

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!

Categorizado en: