Microcontroladores o Arduino encierra no solo una pregunta. La idea de este Post es conocer la filosofía de Arduino y la de los Microcontroladores. En general, saber un poco de las diferencias y la realidad de lo que es, y significa Arduino y las diferencias con un desarrollo con microcontroladores
Sin duda, para aquellos que nacieron con la filosofía de Arduino, el mundo a sus pies se ve diferente y parece todo más fácil de lograr, Arduino ofrece múltiples soluciones en tiempos relativamente cortos. Para aquellos más viejitos, como quien les está contando esto, nacimos con los microcontroladores y tuvimos que estudiar largas y largas noches, hacer pruebas, mediciones, quemar elementos y pelearnos con nuestras familias.
Lo Primero a saber
Arduino y Microcontroladores no son lo mismo. Arduino es una plataforma de desarrollo que si, indudablemente su núcleo es un Microcontrolador de la línea Atmel. Microcontroladores, en general, son chips, es decir circuitos integrados que ofrecen un Hardware embebido junto con varios periféricos también embebidos. Por ejemplo cuando hablamos de Timers, Osciladores internos, PWM, conversores A/D , módulos de captura, Puertos, Stacks TCP, o Usarts, Puertos GPIO, estamos hablando de periféricos de un Microcontrolador que están embebidos dentro del mismo.
Arduino
La potencia de desarrollo de Arduino podemos explicarla en 3 características fundamentales:
- El Hardware pre armado alrededor del Microcontrolador proveyendo al usuario una interface de puertos y periféricos que pueden estar ligados o no directamente al microcontrolador Atmega, incluso la simbología o nombres de lo que el usuario ve es diferentes de la simbología del microcontrolador.
Por ejemplo: La interface Nro. 9 en Arduino, será el pin 15 del Microcontrolador PB1 (OC1A/PCINT1), así figura en el DataSheet el Atmega328. Otro caso es el puerto serie que se utiliza en el monitor serial de Arduino, se interconecta con el Microcontrolador por medio de otro Chip que es el encargado de convertir el protocolo serial USB a una interface asincrónica RS232. La siguiente figura muestra la simbología Arduino y su relación con el Microcontrolador:
- Las librerías de Arduino cuya potencia permite el desarrollo de múltiples aplicaciones de manera simple y rápida. Las librerías son las que hacen todo el trabajo arduo, que es el trabajo de aquellos que nacimos en la era de Microcontroladores, y están pensadas para la simbología de las diferentes placas de Arduino.
- Los Shields de Arduino que simplifican aún más la tarea del desarrollo de las aplicaciones puesto que existe un Shield (módulo de hardware especial) a la medida de las aplicaciones. Estos Shields prevén la adaptabilidad de señales para acondicionamiento de los sensores, Drivers de corriente, regulación de alimentación,y sobre todo la funcionalidad para lo que fue construído.
Lógicamente, uno pensará que no le interesan los Microcontroladores o, en todo caso, no profundizar en ellos dada esta enorme potencialidad de Arduino. Pero, en necesario saber que esta potencialidad se logra con un conocimiento acabado de la arquitectura del Microcontrolador para poder desarrollar dichas librerías que nos simplifican la vida.
Microcontroladores
Como ya podemos adivinar, son la base de todo desarrollo y para aquellos que van a desarrollar proyectos con Microcontroladores, será necesario conocer profundamente su funcionamiento interno, además es necesario conocer electrónica digital y analógica intermedia, dado que los shields debemos construirlos por nuestra cuenta en algunos casos de acuerdo a nuestro requerimiento o, en otros casos, podremos utilizar los que se utilizan en Arduino, para lo cual necesitaremos conocer las características eléctricas de acoplamiento entre estos y el microcontrolador, niveles de tensión, datasheet del módulo, diagrama de Pin-Out, función de cada Pin, etc
En la actualidad, la potencia de los microcontroladores es disponer de un buen compilador que también nos va a simplificar la tarea y para lo cual, el propio fabricante de Microcontroladores nos proporciona las herramientas de trabajo, el compilador (o en otros casos lo realizan empresas de terceros).
Por ejemplo si quisiéramos trabajar con el Atmega328 que es que usa Arduino, necesitaríamos un Atmel StarterKit y el Atmel Studio. El primero es el Hardware de entrenamiento y/o plataforma para probar y experimentar nuestros proyectos, es decir no es un diseño final, sino que este hardware provee la mayoría de los periféricos a usar en un proyecto como Display LCD, 7 segmentos, Reles, Botones y pulsadores, leds, USB, etc. El segundo es el llamado IDE o software de desarrollo que nos permite realizar la edición de nuestros programas fuente, la compilación, la programación del microcontrolador, la simulación y emulación o Debugger en tiempo real.
Una vez que nuestro proyecto funciona, hay que realizar el diseño de la plaqueta (nuestro Hardware terminado) que involucrará no solo al Microcontrolador sino también toda la interface de la aplicación, Shields, etc.
Si quisiéramos desarrollar con Microcontroladores de Microchip, los PIC, deberíamos y nuevamente, disponer de un Hardware de desarrollo y un software IDE.
Para tener una idea de lo que estamos hablando les presento una imagen de ambaos, Hardware y IDE
El entorno IDE, viene con un compilador que suministra el fabricante, por ejemplo Microchip nos ofrece la línea XC, para más información Microchip
Actualmente se diseñan Arduinos con diferentes tipos de Microcontroladores , es decir, Arduino al ser una Open-Source, permite que el Hardware sea implementado por diferentes tipos de fabricantes de Microcontroladores, por ejemplo con Pics, llamado Pinguino, que implementan el Hardware de Arduino con los PIC 18Fxx , explorar más
Como se puede observar, el universo de posibilidades de software, plataformas de Hardware y aplicaciones es muy grande. Arduino ha ganado gran parte del mercado y posibilitado a que desarrolladores de software, hoobistas, apasionados por la electrónica y la tecnología tengan una plataforma de desarrollo simple y potente sin la necesidad de ser expertos en electrónica. Los programadores pueden, por ejemplo trabajar en sus programas sin profundizar demasiado en la electrónica y dedicarse solo a lo que es de su domino, que es la programación. Este nuevo mundo Arduino, dejó a los desarrolladores con Microcontroladores, una nueva herramienta, y a los fabricantes un nuevo mercado.
¿Qué usamos entonces? , ¿Cual es mejor?
La respuesta no es fácil ni, intuitiva, todo depende del contexto de uso:
Educación: Arduino es muy superior para la enseñanza de electrónica y microcontroladores, sobre todo en escuelas técnicas secundarias y/o terciarias. Sin duda es más flexible y divertido desarrollar con Arduino, y además despierta fácilmente el interés. Los alumnos utilizan los Sketches más fácilmente para programar que un lenguaje o compilador.
Pre-Proyectos: Estudios de factibilidad o pruebas rápidas como estudio inicial de un proyecto más grande, Arduino ahorra costos y tiempo.
Escala de proyectos : Si un proyecto va a fabricarse en unidades masivas, por ejemplo más de 1000, es importante considerar los costos. Cuando usamos un Arduino en un desarrollo, el producto final puede utilizar pocos pines y/o recursos de la placa que no se utilicen, es más barato entonces, comprar un Microcontrolador y diseñar el propio Hardware. Lo que se puede hacer es probar con Arduino y luego mudar nuestra aplicación para implementarla con un Microcontrolador determinado, para lo cual hay que estudiar y saber de Microcontroladores, lo que requerirá también, conocimientos de electrónica.
Tipo de Aplicaciones especiales: Existen aplicaciones en donde las señales de tiempo real, requerimientos de velocidad, memoria interna y/o memoria externa, incluso librerías necesarias y no implementadas aún, o, que dichas librerías no satisfagan lo deseado. En estos casos habrá que estudiar el Microcontrolador internamente para modificar las librerías o, pasarse a otro microcontrolador. Por ejemplo, PWM de Arduino trabaja a una frecuencia fija de 490Htz, lo cual puede que no sea útil para ciertas aplicaciones, por ejemplo el dimerizado, si pretendemos controlar la intensidad de luz de una lámpara en corriente alterna, seguramente no nos va a servir y tengamos que modificar la librería o, conocer cómo se implementa el PWM en Arduino para poder modificarlo.
Experiencia: El que ya desarrolla con microcontroladores ve a Arduino como una alternativa diferente, pero es importante haber tomado contacto con ambos para sacar sus propias conclusiones, y no todas las conclusiones convergen.
Documentación: Este factor es importante, Arduino tiene exceso de buena documentación, clara y entendible. Los microcontroladores no tanto, son más cerrado. Por ejemplo Microchip, los PIC’s son excelentes pero la documentación es muy dura, incluso la de los compiladores, y en este sentido, han perdido mercado.
Compiladores: Para los microcontroladores es de suma importancia un compilador bien documentado, la mayoría cumple el ANSI-C, pero pueden haber diferencias en cuanto a portabilidad. Por más que cumplan la norma seguramente no se va a poder migrar fácilmente de un PIC16 a un PIC18 o DSPIC.
Tiempos de desarrollo: Sin duda un factor clave, Arduino lleva la ventaja.
Desarrollo lógico e intelectual: El desarrollar con Microcontroladores exige y adiestra más profundamente en el conocimiento lógico. Arduino se libera de esta profundización.
En resumen:
Es necesario, a mi criterio, conocer ambas filosofías de desarrollo. El trabajar con Microcontroladores nos da otra apertura, otra imagen, otro grado más profundo en las aplicaciones y que implica un nivel de conocimiento superior. La desventaja es que con microcontroladores, hay que mantenerse más actualizado, nuevas herramientas, plataformas, compiladores, nuevos microcontroladores, es decir necesitamos más tiempo y más conocimiento de cada microcontrolador en especial, con el adicional que al ya poder conocerlo y utilizarlo, seguramente ya hayan salido nuevos micros, y aprendido sumará mucha experiencia. Arduino es potente, más simple, menor tiempo. Como posible desventaja podemos decir que nos ata a una arquitectura de diseño, lo cual puede ser ventaja para algunos y desventaja para otros.
Fin