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 una copa de vino en 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 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 (operativa y permanente), 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 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 y 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, 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 MC, 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 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, 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

Entonces 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 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, 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 (leyendo la hoja de datos toda lo noche).
  • Tambi茅n podemos escribir en ensamblador, tomando el control de cada ciclo de reloj del Mc.

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, 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 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 conveniente, 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 tontoprincipiante, 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 de 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 ambos fusibles y ajustar 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 la c煤spide 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, aprenda c贸mo trabajar en un entorno de desarrollo hostil, disuelva y suelde la placa, compre 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