2- La Plataforma Arduino

驴Qu茅 es Arduino? Formalmente, esta es una marca comercial bajo la cual se lanzan placas y software oficiales. El nombre Arduino proviene del nombre ep贸nimo de un bar en Ivrea, Italia, donde a los creadores de la plataforma les encantaba tomar una copa. La plataforma que ofrece Arduino incluye hardware (las propias placas) y software (entorno de desarrollo).

La familia Arduino consta de varios modelos de las denominadas placas de desarrollo y depuraci贸n. La placa de depuraci贸n es, curiosamente, una placa de circuito impreso, en el coraz贸n de la cual hay un microcontrolador, precisamente lo que estaremos programando. Un microcontrolador es un microcircuito que contiene un microprocesador, interfaces de entrada y salida, memoria (Ram y Rom), temporizadores y otras cosas. S铆, un microprocesador es diferente, un microprocesador de hecho solo puede realizar c谩lculos (como un procesador en una computadora), y un microcontrolador es casi una computadora completa ubicada en un chip de un microcircuito. La mayor铆a de las placas Arduino utilizan los microcontroladores de la serie ATmega del fabricante de AVR.

Inmediatamente recordamos una idea importante: Arduino no es un microcontrolador, no es un procesador, Arduino es una plataforma (y una marca registrada, por supuesto =)). La placa Arduino es una placa de desarrollo y depuraci贸n con un microcontrolador a bordo.


La Pcb Arduino.

Adem谩s del microcontrolador, en la placa de depuraci贸n hay un cableado necesario para su funcionamiento y los componentes esenciales: este es un oscilador de cristal que establece la frecuencia del procesador, condensadores y resistencias que realizan funciones de filtrado y pull-up, asi como el control de la alimentaci贸n.

Arduino "al m铆nimo": cuarzo, condensadores y poco m谩s.
Arduino 芦al m铆nimo禄: cuarzo, condensadores y poco m谩s.

Hagamos esto: 驴Qu茅 se debe hacer para ensamblar un dispositivo con un microcontrolador? Es necesario conectar los dispositivos necesarios (en lo sucesivo, 鈥渉ardware鈥) a las salidas del microcontrolador, cargar el firmware en el microcontrolador que controlar谩 este hardware y proporcionar a todo el conjunto una fuente de alimentaci贸n estable. El objetivo de los desarrolladores de arduino era combinar lo anterior con simplicidad, facilidad de uso y modularidad, convirtiendo as铆 el desarrollo de dispositivos electr贸nicos en un potente dise帽ador universal. Este objetivo se logr贸 de la siguiente manera: en la placa, junto con el microcontrolador, se coloc贸 un 芦programador禄 para descargar el firmware, un puerto USB y un regulador de alimentaci贸n, permitiendo que la placa se alimentara desde una amplia gama de voltajes constantes: 5 -19 voltios. El microcontrolador necesita 5 voltios para funcionar, que le proporciona el estabilizador.


Descargar el firmware de Arduino.

USBasp: programador ISP para AVR incluido Arduino
USBasp: programador ISP para AVR incluido Arduino

En cuanto al llamado programador: inicialmente, la forma de descargar el firmware al microcontrolador es descargar el software a trav茅s de ISP (programaci贸n en el sistema), que carga el firmware directamente en la memoria del microcontrolador. Este m茅todo es bueno y confiable, pero es m谩s caro y no tan vers谩til como el que se usa en Arduino. Funciona as铆: en lugar del programador ISP, hay un convertidor USB-TTL en la placa, que permite a Arduino (en su lado hay TTL – l贸gica transistor-transistor) literalmente comunicarse con una computadora (en su lado – USB ) e intercambiar datos. Pero para comunicarse con la computadora, debe haber un peque帽o software ya cargado en arduino que se encarga de recibir el firmware, este es el 芦cargador de arranque禄, vive en la memoria del microcontrolador (tambi茅n conocido como bootloader), que puede capturar datos provenientes de una computadora y cargarlos en la memoria Flash del microcontrolador. Cada vez que se inicia el microcontrolador, el cargador de arranque espera un comando de la computadora, algo como…, 驴quiere descargar un nuevo firmware? y si nadie le responde durante alg煤n tiempo, lanza el firmware residente en la memoria del Mc. Esto tiene varios inconvenientes:

  • El cargador se encuentra en la memoria Flash y ocupa espacio (alrededor del 6%, que no es poco)
  • Cuando se conecta el microcontrolador, el firmware cargado no se inicia inmediatamente, cada vez, el cargador de arranque espera un comando de la computadora durante alg煤n tiempo (un par de segundos) antes de transferir el control al programa en la memoria.

Ambas desventajas se pueden resolver parcial o completamente:

  • Puede actualizar un cargador de arranque no oficial que ocupa menos espacio en la memoria y se inicia m谩s r谩pido.
  • Puede descargar los bocetos (programas) directamente a trav茅s del ISP, en este caso no habr谩 p茅rdida de espacio y retrasos en el inicio, ya que el gestor de arranque no estar谩 en la memoria para nada.

Volviendo al convertidor USB-TTL: 驴por qu茅 los desarrolladores de Arduino eligieron este m茅todo para descargar el firmware? S铆, todo es muy simple: un microcircuito convertidor USB-TTL es m谩s econ贸mico que los microcircuitos que se pueden utilizar en los ISP (los microcontroladores suelen jugar el papel de estos), lo que reduce decentemente el coste de la plataforma. Pero lo m谩s importante es que el uso de un convertidor USB-TTL agrega la capacidad de comunicarse con la placa usando una computadora (tel茅fono inteligente, tablet) sin usar hardware adicional, es decir, podemos controlar algunos dispositivos (si est谩 incluido en el c贸digo del firmware) y recibir datos de Arduino, por ejemplo, lecturas de sensores. Pero lo m谩s importante es que le permite depurar el c贸digo desde el Pc, manualmente si, pero a煤n as铆 depurar.


Software.

En cuanto a la parte de software proporcionada por Arduino, se trata del Arduino IDE (Integrated Development Environment), que incluye un editor de c贸digo, un compilador y todo lo dem谩s que necesita para descargar el firmware a la placa. Hablaremos de ello con m谩s detalle en una lecci贸n separada.


Modelos Arduino.

Varios modelos de placas arduino
Varios modelos de placas arduino

Ahora llegamos a las placas Arduino en s铆, de las cuales hay muchas en este momento debido a la apertura de la plataforma: todos los esquemas y c贸digos fuente son de dominio p煤blico, y puedes hacer tu propia versi贸n de la placa y venderlo, que es lo que est谩n haciendo activamente los chinos. El 煤nico punto: la palabra Arduino es una marca registrada, y tendr谩 que nombrar su placa de alguna manera diferente, de ah铆 que aparecieron todo tipo de Sparks, Elderberries, Espruino y otras placas llamadas compatibles con Arduino .
Hay muchos tipos de placas, pero utilizan los mismos modelos de microcontroladores. El tama帽o de la memoria y el n煤mero de patas dependen del modelo de microcontrolador usado, bueno, hay algunos chips especiales. La mayor铆a de los modelos Arduino tienen MCU de 8 bits de AVR con un oscilador de cristal de 16 MHz (o inferior), es decir, las placas ATmega no difieren en rendimiento, solo difieren en tama帽o de memoria, n煤mero de pines E/S e interfaces, temporizadores. Los modelos Arduino con Mc del tipo ARM, por ejemplo Arduino DUE, son mucho m谩s potentes que sus contrapartes debido al procesador de 32 bits, pero esa es una historia completamente diferente.

Par谩metroATtiny85ATmega328ATmega32u4ATmega2560
Numero de pines83244100
De ellos disponibles5232486
Memoria flash8 Kb32 Kb32 Kb256 Kb
Memoria EEPROM512 bytes1 Kb1 Kb4 Kb
Memoria SRAM512 bytes2 Kb2,5 kB8 Kb
Canales ADC36 (8 SMD)1216
Canales PWM36715
Temporizadores2褏 8 bits2褏 8 bits2褏 8 bits2褏 8 bits
  1x 16 bits2x 16 bits4x 16 bits
Interfaz de serieNox1x1x4
Interfaz I2CNosisisi
Interrupciones1 (6 PCINT)2 (23 PCINT)5 (44 PCINT)8 (32 PCINT)
Tableros basados 鈥嬧媏n 茅lDigispark, LilyTinyUno, Nano, Pro Mini, Lilypad, FuerteLeonardo, Micro, Pro Micro, BS MicroMega, Mega Pro
Los modelos de placas arduino y sus caracter铆sticas.

Por lo tanto, debe comprender de inmediato que, por ejemplo, Arduino Uno = Nano = Pro Mini = Lillipad en t茅rminos de sus capacidades e intercambiabilidad. O Leonardo = Pro Micro. Puede encontrar enlaces a Arduinos chinos econ贸micos en todo Google. En el mismo lugar, encontrar谩 enlaces a una serie de sensores, m贸dulos y otro hardware que se puede conectar al Arduino. Hablaremos sobre las posibilidades de arduino para trabajar con otras plataformas en una de las siguientes lecciones.


Programaci贸n.

la programacion de arduino
La programaci贸n de arduino

Arduino est谩 programado en el lenguaje de programaci贸n C / C ++ con la sintaxis correspondiente. El preprocesador y compilador incorporado (avr-gcc o Win-AVR) perdona muchos errores y hace mucho por el usuario de forma autom谩tica, ni siquiera lo sabemos y no pensamos en ello. Las funciones b谩sicas para controlar los pines e interfaces del microcontrolador, las matem谩ticas y algunas otras funciones / macros se toman de un marco de c贸digo abierto para trabajar con microcontroladores llamado Wiring. De ah铆 que consta el conjunto b谩sico de herramientas de Arduino. En este sentido, los propios desarrolladores de Arduino llaman al lenguaje 鈥淐 ++ simplificado鈥, e incluso le dieron un nombre separado: Arduino Wiring.

Aqu铆 es necesario separar el tocino de las chuletas: en el IDE de Arduino, tenemos una gran cantidad de funciones y herramientas diferentes disponibles:

  • Todas las posibilidades del lenguaje C++ que brinda el compilador: tipos de datos, operadores y en general toda la inmensa sintaxis. Programamos en el mismo C, como se puede programar en cualquier otro lugar.
  • El 芦n煤cleo禄 de Arduino es la biblioteca Arduino.h, que se incluye autom谩ticamente en el c贸digo. Contiene funciones para administrar pines, interfaces y tambi茅n tiene un conjunto de todo tipo de funciones y herramientas 煤tiles. Tambi茅n es responsable de inicializar y configurar los perif茅ricos del microcontrolador al inicio. Por cierto, el n煤cleo contiene bibliotecas est谩ndar para comunicaci贸n Serie, Wire, SPI y EEPROM.
  • En la carpeta con el programa hay un conjunto de bibliotecas est谩ndar: para pantallas LCD, motores paso a paso, un servo-accionamiento y algunas otras piezas de hardware.
  • El compilador viene con un conjunto de bibliotecas AVR de bajo nivel (sleep, progmem, watchdog y muchas otras).
  • El compilador te permite trabajar con el microcontrolador 芦directamente禄 usando sus registros (puede leer la hoja de datos toda lo noche).
  • Tambi茅n podemos escribir en ensamblador, tomando el control de cada ciclo de reloj del microcontrolador.

Si aprende a jugar libremente en Arduino y de repente cambia a programas de desarrollo en el mismo C++ en entornos de desarrollo m谩s antiguos, se sorprender谩 desagradablemente por la gran cantidad de c贸digo adicional que debe escribir a mano. Y viceversa, si una persona que sabe C++ mira un c贸digo arduino t铆pico, dir谩 芦驴c贸mo funciona?禄. El compilador en el IDE de Arduino est谩 ajustado para m谩ximo aprovechamiento y perd贸n de errores porque es una plataforma de aprendizaje.

Ahora volvamos a un concepto como biblioteca. La vida de un reproductor arduino ordinario est谩 indisolublemente ligada a las bibliotecas, porque una gran comunidad a lo largo de los a帽os de su existencia ha creado una gran cantidad de estas mismas bibliotecas para todas las ocasiones y para todos los sensores y m贸dulos vendidos. Una biblioteca es un conjunto de archivos que contienen c贸digo adicional que podemos usar simplemente leyendo la documentaci贸n o mirando ejemplos. Este enfoque se denomina 芦caja negra禄, es posible que ni siquiera adivinemos qu茅 horror y pesadilla (en t茅rminos de la complejidad del c贸digo) contiene la biblioteca, pero es f谩cil usar las capacidades que proporciona este c贸digo. Compraste un m贸dulo, encontraste una biblioteca, abriste un ejemplo y eso es todo, el resultado funciona.


Oportunidades.

驴Por qu茅 aprender a trabajar con arduino y la electr贸nica en general?

  • Este es un pasatiempo de 芦bricolaje禄 incre铆blemente interesante, t茅cnico, que desarrolla el cerebro y relativamente barato con un sinf铆n de ideas y de realizaciones.
  • La capacidad de crear dispositivos electr贸nicos y m谩quinas herramienta altamente especializados, que no tienen an谩logos a la venta o son demasiado costosos. Incluso para necesidades personales o para el trabajo (un joyero conocido se hizo el controlador de un horno de mufla, que es muy caro).
  • La capacidad de crear nuevos dispositivos 煤nicos para ingresar al crowdfunding y comenzar las ventas y su negocio.
  • Excelente pr谩ctica en programaci贸n y electr贸nica, especialmente antes de estudiar una especialidad relevante.
  • Oportunidades en general: automatizaci贸n de procesos y 芦m谩quinas禄, regulaci贸n autom谩tica de procesos, control remoto, monitorizaci贸n de diversas cantidades, dispositivos electr贸nicos port谩tiles y estacionarios para diversos fines.

Odiadores de la plataforma Arduino.

En el mundo de los programadores y desarrolladores serios, Arduino es muy denostado. 驴Por qu茅? Echemos un vistazo a algunos comentarios negativos populares sobre la plataforma.

  • En el IDE de Arduino, trabajar con el microcontrolador se simplifica tanto que el ingeniero de arduino no necesita saber nada sobre su arquitectura y c贸mo est谩 generalmente programado y configurado: todo se hace en forma de funciones listas para usar y bastante comprensibles.
    • 驴Desde cu谩ndo la comodidad y la sencillez se volvieron malas?聽Para un principiante, esta es la 煤nica forma de familiarizarse con el mundo de la rob贸tica sin estudiar un mont贸n de documentaci贸n y recibir una educaci贸n adecuada.聽Perm铆tanme recordarles tambi茅n que Arduino fue creado principalmente para entrenamiento, y en segundo lugar, para crear prototipos de dispositivos electr贸nicos de manera r谩pida y sencilla, este es su fin.
  • Todo esto est谩 bien, por supuesto, pero el c贸digo escondido detr谩s de la pantalla del amigable 芦Arduino Wiring禄 es aterrador: detr谩s de funciones aparentemente inofensivas hay lienzos de c贸digo que verificar谩n, volver谩n a verificar, reconfigurar谩n lo que ya est谩 configurado y har谩n muchas otras cosas aparentemente innecesarias.聽隆Este l铆o funciona muy lentamente y ocupa mucho espacio!
    • S铆, las funciones est谩ndar tienen un mont贸n de protecciones contra聽tonto principiante, son pesados 鈥嬧媦 lentos.聽隆Pero un novato no necesita escribir c贸digo donde la velocidad y la memoria son cr铆ticas!聽Y si es necesario, en este momento podr谩 escribir el c贸digo de manera 贸ptima y encontrar谩聽an谩logos r谩pidos de las funciones de Arduino聽en alg煤n lugar le la web聽o en cualquier otro lugar de Internet o las escribir谩 茅l mismo. Y una cosa m谩s: el n煤cleo Arduino est谩 dise帽ado de tal manera que proporciona compatibilidad de c贸digo y bibliotecas para todas las placas Arduino.聽驴Ha comenzado a hacer un proyecto en Arduino NANO y no tiene suficiente memoria / pines?聽Transferimos el proyecto a Arduino MEGA y seguimos trabajando.聽驴NANO es demasiado grande para el proyecto?聽Transferimos a ATTiny85 sin siquiera abrir la documentaci贸n: la mayor铆a de las bibliotecas funcionan en todas las placas compatibles con Arduino, esto es una gran ventaja, aunque a expensas del rendimiento y la memoria.
  • Las funciones est谩ndar de Arduino.h describen una parte insignificante de todas las capacidades y configuraciones que tiene un microcontrolador.
    • 隆Y nadie te prometi贸聽todo!聽Las capacidades del Mc se revelan cuando se utilizan bibliotecas (consulte la聽lista de bibliotecas聽), ya que la comunidad de la plataforma es realmente enorme.聽Siempre puede aprender a trabajar con聽hojas de datos y registros聽y configurar cualquier cosa y c贸mo desee manualmente.
  • El IDE de Arduino 芦oculta禄 importantes configuraciones de bajo nivel al usuario.
    • 隆Y hace lo correcto!聽Un error, y puedes quedarte con una piedra bloqueada.聽Si lo desea, a trav茅s del IDE de Arduino, puede flashear los fusibles y ajustarlo para otras frecuencias.
  • 隆Arduino para ni帽os!聽Los t铆os serios trabajan con 芦bare metal禄.
    • Eso es correcto?, para ni帽os y amas de casa.聽La placa Arduino est谩 concebida para la creaci贸n de maquetas, prototipos, se puede considerar como parte de un 鈥渒it de construcci贸n鈥 electr贸nico para entrenamiento.聽El tablero tiene todo lo necesario, 驴por qu茅 no usarlo incluso como el coraz贸n del proyecto?
  • 隆Arduino IDE para ni帽os!聽Los t铆os serios trabajan en entornos de desarrollo de adultos.
    • Es cierto?, pero hay una peque帽a advertencia: Arduino IDE es oficialmente gratis, despu茅s de una instalaci贸n simple (Siguiente, Siguiente, Siguiente, Finalizar) est谩 inmediatamente listo para funcionar: simplemente seleccione una placa de la lista y comience a escribir c贸digo.聽Los entornos de desarrollo de adultos requieren un enfoque adulto y la barrera de entrada para trabajar con ellos es desproporcionadamente alta.聽Adem谩s de la dif铆cil instalaci贸n y configuraci贸n, encontrar谩 configuraciones avanzadas del microcontrolador en modo manual, lectura de documentaci贸n y hojas de datos, una interfaz 芦adulta禄 y muchos matices en la programaci贸n y la configuraci贸n del compilador.聽Tomar谩 mucho tiempo estudiar todo esto.
  • Arduino caminan en un c铆rculo vicioso, nunca se desarrollar谩n m谩s all谩 del LED parpadeante.
    • 驴Por qu茅?聽La plataforma no limita al desarrollador de ninguna manera …
  • No puedes crear algo realmente complejo e interesante en Arduino.
    • 驴Porqu茅 entonces?聽El IDE de Arduino no limita al desarrollador de ninguna manera, puede abandonar completamente Arduino.h y comenzar a codificar desde cero utilizando registros e inserciones de ensamblador, es decir,聽exactamente igual que en un entorno de desarrollo adulto聽.聽驴no es suficiente?聽Por alguna raz贸n, basta con crear impresoras 3D y otras m谩quinas CNC multi-eje, cuyo firmware consta de decenas de miles de l铆neas de c贸digo.
  • 隆Y STM32 es mejor!聽隆Y muchas veces m谩s potente!聽隆Y tiene m谩s oportunidades!聽Y es mas barato !!!
    • Si si si.聽Pero no olvides el umbral de entrada y el tama帽o de la comunidad con contenido, bibliotecas y ejemplos 芦para novatos禄, as铆 como la complejidad de trabajar con STM en general, compare con el trabajo con Arduino.聽En cuanto a las capacidades y la velocidad de trabajo, para la mayor铆a de los proyectos de aficionados, Arduino (ATmega328 / 2560) ser谩 m谩s que suficiente, especialmente si聽sabe c贸mo escribir un c贸digo 贸ptimo聽.
  • La calidad del c贸digo bajado 芦de Internet禄 es terrible.
    • S铆, gracias a ejemplos est谩ndar simples pero comprensibles, la audiencia de usuarios de arduino ha crecido muy r谩pidamente y literalmente inund贸 Internet con sus proyectos, atrayendo as铆 a otros principiantes a este pasatiempo.聽El 99% de los ejemplos educativos, los ejemplos de trabajo con bibliotecas y m贸dulos est谩n escritos de manera simple y de forma no 贸ptima: variables int para todo en una fila, el delay ubicuo, bucles de bloqueo, etc., adem谩s de las funciones de arduino imp铆as.聽La gente toma estos ejemplos como base y contin煤a escribiendo.聽Pero estas personas est谩n en el umbral de una puerta muy grande llamada rob贸tica.聽Habiendo cruzado este umbral, descartando todos los ejemplos torcidos y aprendiendo c贸mo construir correctamente la estructura de su c贸digo, se encuentran en un mundo de infinitas posibilidades para la creatividad y la investigaci贸n, un mundo de proyectos infinitamente interesantes y diversos en Arduino.聽Para ello estoy escribiendo estas lecciones.

驴Qu茅 m谩s me gustar铆a decir sobre lo negativo de los 芦profesionales禄? En la mayor铆a de los casos, son simplemente celosos: en 芦su tiempo禄, para crear incluso un proyecto simple basado en un microcontrolador, fue necesario gastar una gran cantidad de tiempo estudiando documentaci贸n en ingl茅s para un modelo Mc espec铆fico, en todas las dem谩s piezas de hardware y microcircuitos, en el proyecto tubo que aprender c贸mo trabajar en un entorno de desarrollo hostil, comprar un programador costoso, etc.聽Y hoy en d铆a puede comprar una placa por 15 鈧, conectarla a USB, ejecutar un programa como 芦Bloc de notas con un bot贸n de descarga禄 y comenzar a codificar utilizando una gran cantidad de bibliotecas y ejemplos listos para usar para casi cualquier hardware del mercado y encontrar respuesta a cualquier pregunta en Google.


Deja un comentario