Los modelos de Arduino

Objetivos

 

  • Conocer los modelos básicos de Arduino y sus características.
  • Comprender los PICs.
  • Mostrar los diferentes tipos de memorias disponibles.
  • Aprender a usar la memoria EEPROM interna sin miedo.
  •  

    Material requerido

     

     Taza de café Paciencia y 20 minutos de sobra.

     

    De los modelos de Arduino y sus características

     

    Ya es hora de que empecemos a hablar de los diferentes modelos de Arduino disponibles, y en qué consisten sus diferencias. Pero para comprenderlas correctamente, necesitamos conocer, además los diferentes procesadores y lo que les diferencia, así como las memorias de que cada modelo dispone, el tipo y su cantidad.

    Y como este es un curso pensado para iniciarse desde cero, ha llegado el momento de hacer un pequeño resumen de procesadores y memorias, sus diferencias y el porqué de unas y otras. Poneros cómodos.

    Haciendo un poco de historia (poco, tranquilos), el primer micro procesador con derecho a llamarse así, fue el Intel 8080 allá por los finales de los años 70.

    Fue el primer chip, que integraba todo lo necesario para construir una unidad central de proceso  (o CPU por sus siglas en ingles), en un único chip, y a su alrededor se construyeron los primeros ordenadores personales sin más que añadir memoria y elementos de entrada /salida).

    Para no ponerme pesado, diré simplemente, que aquel modelo basado en CPU, memoria e I/O (Input Output) ha seguido vigente hasta hoy, en lo que conocemos como PCs.

    Los números han crecido exponencialmente, claro, pero el modelo conceptual sigue siendo el mismo, desde el 8080 hasta los modernos Intel I7.

    Modelo IBM PC 1981 Intel I7 Multiplicador
    Velocidad reloj 8.8 MHz 2.4 GHz x300
    Memoria RAM 128 kB – 640 kB 4 Gb – 64 Gb x2.000
    Disco duro 500 kB 4 Tb x2.000.000
    Bus datos 8 64 x8

    Los procesadores han tenido un periodo de expansión infinita, pero siguen teniendo los mismos problemas que el primer día:

    • No tiene conexión, ni influencia en el mundo físico. ¿Te imaginas encender unos LEDs, o mover un motor con tu PC? No es imposible, pero no sabríamos por dónde empezar.
    • Podemos guardar datos en los cada día más enormes discos duros, pero los programas deben ejecutarse desde memoria RAM, y esto ha sido un cuello de botella, con los modernos sistemas operativos como Windows u OSX, que devoran ansiosamente, cuanta memoria tengas instalada.
    • En cuanto pierdes la alimentación, la RAM vuela y tus datos salen por el desagüe, si no has tenido la precaución de salvar a disco periódicamente.
    • Los microprocesadores modernos se han diseñado para ser rapidísimos haciendo cálculos complejos, y han alcanzado una capacidad tal, que sencillamente hace mucho que se sobrepasó lo que un usuario normal necesita, y les ha costado algunos años darse cuenta.

    Entre tanto y en paralelo, pequeños fabricantes, a los que difícilmente conoce el público, han ido generando pequeños procesadores, menos ambiciosos, pero más dirigidos a resolver un tipo de problemas que Intel, AMD y alguno otro ignoraban. (Evito conscientemente el tema de los procesadores de teléfonos móviles, porque abriríamos una puerta que se sale de lo que nos atañe ahora mismo)

    Es lo que se ha dado en llamar la computación física, en la que el resultado del cálculo no es solo un resultado numérico, sino una operación física que se traslada al mundo real.

    Uno de esos fabricantes es ATMega, y nuestros Arduinos están construidos a partir de uno de sus procesadores: UN AT328 para el Arduino UNO. Y que se vende en dos encapsulados:

     Atmega 328 THT  Atmega 328 SMD

    Podéis encontrar Arduinos UNO con ambos modelos y su única diferencia es el encapsulado plástico que los recubre, aunque el del primer tipo se suele montar en un zócalo, para poderlo reemplazar cuando le hagáis algo que no deberías.

  • En una sesión futura tengo previsto que montemos un Arduino en una protoboard, para que veáis lo sencillo que es.
  •  

    Sus especificaciones técnicas son en principio modestas, comparándolos con los últimos procesadores de Intel,

    Un procesador de 8 bits,16 MHz de reloj,32k de memoria FLASH y algo de memoria SRAM, 2K mas 1.024 posiciones de memoria EEPROM (Ahora entendéis porque vamos a tener que hablar de los tipos de memoria).

    Pero tienen  la curiosidad de incorporar pines digitales que pueden sentir y comandar el mundo exterior, (a los que los seguidores de estas sesiones están ya más que habituados) además de convertidores analógicos a digital (ADC)

    Es la mezcla de estas características la que le dan a los procesadores como el de nuestro Arduino (a  los que por cierto se les llama PICs), la capacidad que muestran. Son ordenadores completos, con procesamiento, memoria y  entrada y salida. No demasiado potentes pero que pueden hacer trabajos periféricos,  para los que las grandes estrellas de Intel o AMD, no disponen de recursos.

    Enseguida hablaremos de los diferentes procesadores de nuestros modelos de Arduino, pero antes tenemos que hablar de memoria.

     

    Tipos de memoria de ordenador

     

    Es un modelo útil imaginar la memoria del ordenador, como en una hilera de cajas o cajones, todos del mismo tamaño que están numerados de 0 a la n, donde n es el tamaño de nuestra RAM. Cuando enciendes el ordenador lo primero que hace nuestra CPU en cuanto se despierta es salir corriendo al cajón 0, ver que instrucción tiene allí y ejecutarla. Después con el deber cumplido salta al siguiente cajón, el 1, lee la orden y la ejecuta, después salta al cajón 2 y……

    Las primeras instrucciones que tiene en el cajón 0, se llaman boot strap (que es algo así como el cordón de arranque de un motor), en nuestro caso son las instrucciones que le enseñan a interpretar el modelo Arduino, para aceptar nuestros programas. Cuando termina con esto, el boot strap le dirige directamente a nuestras instrucciones y por eso los ordenadores ejecutan las órdenes en secuencia, porque sencillamente no saben hacerlo de otro modo, a no ser que nosotros les ordenemos saltar a otros cajones en función de las condiciones que les especifiquemos.

    En los primeros ordenadores, solo había dos tipos de memoria: RAM y ROM, pero ya sabéis que las cosas tienden al caos y las todo se han ido complicando desde entonces.

    Todo lo que ejecutamos en nuestros PCs debe estar almacenado en memoria RAM o Random Access Memory. Se suele traducir por memorias de acceso aleatorio. . Se pueden leer y escribir (lo ideal, vamos) pero tienen la mala costumbre de borrase cuando les quitan la corriente.

    Cuando arrancas tu PC ya sabe hacer algunas, como leer el boot strap y por tanto, esto no puede estar en RAM (Se habría perdido al apagar), eso está en ROM.

    Las memorias ROM, o Read Only Memories, como su nombre indica son de solo lectura y no se pueden escribir más que por el fabricante cuando las construye.

    Tradicionalmente una sabia combinación de memorias RAM y ROM han permitido todo el desarrollo de la microinformática, pero pronto empezaron las variedades:

    Memoria Características
    RAM Se pueden leer y escribir pero son volátiles
    DRAM Dynamic Random Access Memory,Son las memoria típicas de los PCs. Se construyen a base de condensadores y se pueden integrar cantidades ingentes de ellas en un único chip de forma barata.A cambio tiene que ser refrescadas cada poco, lo que complica el diseño con mecanismos de refresco de la memoria ( Por supuesto fuera de los ojos del orgullosos propietario)
    SDRAM  Synchronous Dynamic Random Access MemoryComo las DRAM, pero el mecanismo de refresco es síncrono
    DDR Double Data Rate Synchronous Dynamic Random Access Memory.Estas son las actuales memorias utilizadas en los PCS de sobremesa. Actualmente están en la versión DDR4
    ROM Read Only Memory,  son no volátiles, pero solo se pueden leer, no escribir.
    PROM Programable Read Only MemoryNo son volátiles y se pueden escribir y reescribir en unos equipos especiales. Hoy prácticamente están en desuso
    EEPROM Electically Erasable Programable Read only MemorySon igual que las PROM, pero con la curiosidad que se pueden reescribir eléctricamente lo que evita el engorro de llevarlas a reprogramar a maquinas raras.A cambio son lentas de escribir y tienen un número limitado de escrituras antes de morir.
    FLASH Es un derivado de la EEPROM, con varias ventajas, la principal es que no pierde la información cuando le quitamos la corriente y además pueden leerse y escribirse sobre la marcha.El inconveniente es que son lentas. Es la clase de memoria que se utiliza para fabricar las memorias USBs pendrives y demás

    Después de esta ensalada de siglas, ya podemos volver al tema de modelos y características de nuestros Arduinos.

    Arduino UNO MEGA DUE
    Procesador ATMEGA 328 ATmega2560 Atmel SAM3X8E
    Anchura 8 bits 8 bits 32 bits
    Velocidad 16 MHz 16 MHz 84 MHz
    Pines digitales 14 54 54
    Pines PWM 6 16 12
    Convertidores ADC 6 16 12
    Convertidores DAC 0 0 2
    Interrupciones 2 24
    Memoria FLASH 32Kb 256Kb 512Kb
    SRAM 2Kb 8kb 96Kb
    EEPROM 1Kb 4kb 0
    Atmega 328 THT Atmega 328 SMD Procesador del Arduino Mega Procesador del Arduino DUE

    Tenéis que saber que nuestros programas se graban en la memoria Flash (que es bastante lentora de escribir), pero las variables que definamos en nuestro programa se guardan  en memoria SRAM (que es mucho más rápida para escribir en ella)

    Por eso, nuestro familiar Arduino UNO, se os va a quedar corto enseguida porque va muy escaso de memoria. En cuanto empecéis a incluir librerías en vuestros programas el margen de memoria flash se reducirá peligrosamente y entre tanto, la parte de SRAM dedicada a manejar las variables se puede llenar con facilidad, sino controláis los tamaños de estas o de los arrays que creéis.

    De hecho, quizás no os hayáis fijado, pero cada vez que compiláis y volcáis un programa vuestro Arduino, el IDE os informa de como andáis de memoria, de uno y otro tipo:


    Reporte de memoria

     

    Así que, a medida que vuestros programas y proyectos vayan creciendo es interesante que tengáis en reserva un Arduino Mega para lo que sea menester. Que desde luego, es el siguiente Arduino que os interesa añadir a vuestra colección.

    ¿Por qué un Mega y no un DUE?

    Porque el DUE es una bestia de carga muy sexy, pero el inconveniente de que funcione a 3,3V le coloca en un una especie de tierra de nadie y no es fácil de recomendar sin saber exactamente su destino, porque si no, puede tener más inconvenientes que ventajas.

    Si necesitas potencia de cálculo, para procesar audio, hacer transformadas de Fourier FFT, o filtros digitales, en los que lo que prima es la potencia y la velocidad, el DUE es tu candidato, sin duda.

    Pero si quieres ponerle algún shield (ya hablaremos) o enganchar con integrados TTL y similares, los 3 voltios del DUE te van a complicar la vida, en seguida. Si quieres un Arduino UNO a lo bestia para lo que haga falta, compra el Mega (que además es bastante más barato) y estarás encantado.

    Además con la evolución de precios que todo esto esta teniendo (a la baja) es probable que te acabes comprando uno de cada.

    Hay más modelos de Arduino por ahí:

    Imagen Modelo
    Leonardo Arduino Leonardo.Es como un UNO y con las mismas prestaciones, pero es el primer Arduino que incorpora gestión interna del USB (Y no gestionado por un segundo procesador como en el UNO), lo que le permite presentarse al PC host como si fuera un ratón o un teclado.
    Mini Arduino Mini.Es como un UNO, el mismo procesador, pero en minúsculo, montado pensando en el que ocupe lo mínimo.Es ideal para incluir en prototipos, pero no incluye USB, debes comprar otro cacharrito para programarlo.
    Micro Arduino Micro.Es como un Leonardo, pero en miniatura y con todo incluido. Hasta un mini USB para programarlo cómodamente.Es ideal para incluir en la protoboard, porque viene con los pines adecuados.
     YUN Arduino Yun.No sé muy bien qué decir del Yun. Es un Leonardo, al que le  han puesto un copiloto que corre un Linux chiquito pero matón.El equipo Arduino ha desarrollado una librería para interactuar entre el procesador Arduino y el Linux, y aparentemente es muy sencillo.Además lleva incluido WIFI y lector de tarjetas, y solo la tarjeta WIFI ya suele costar más que el Yun.Tengo uno por aquí, así que si tengo ocasión montaremos una sesión con él.

    Hay mas modelos en camino, pero de momento no conviene complicarnos mas.

    Usando la EEPROM de Arduino

     

    No quiero dejar pasar esta ocasión de hablar de la EEPROM interna de Arduino.

    ¿Porque tiene EEPROM Arduino?, pues sencillamente porque aunque guardamos el programa en FLASH y por tanto, no se pierde al apagar, no ocurre lo mismo con las variables que se guardan en SDRAM y su valor e pierde cada vez que apagamos.

    Por eso hay ocasiones, en las que es interesante poder conservar opciones de configuración del usuario, sin tener que preguntarle lo mismo cada vez que reinicia.

    Imagínate un reloj digital, en el que le preguntamos  usuario si prefiere e formato de 12 0 24h, o a qué hora poner el despertador.

    Vamos a escribir un pequeño programa que muestre como almacenar valores en la EEPROM, de forma que podamos recuperarlos aun cuando se vaya la luz.

    Para escribir en la memoria EEPROM, tenemos que incluir la librería correspondiente:

    #include <EEPROM.h>
    
    for (int i = 0; i < 255; i++)
         EEPROM.write(i, i);

    Y para leer de la EEPROM

    #include <EEPROM.h>
     value = EEPROM.read(pos);

    Donde pos, es la posición de EEPROM que queremos escribir. Para un UNO pos puede llegar hasta un máximo de 1.024, que es la longitud de EEPROM disponible. Para un Mega puede alcanzar 4k = 4.096

    Y poco más se puede decir de este asunto. Que está disponible una especie de mini disco duro secuencial, dentro de vuestro Arduino, y que es bueno que sepáis que podéis usarlo cuando lo necesitéis.< 

  • En cuanto al tema de que esta memoria se degrada con el uso y acaba volviéndose inservible, vale la pena revisar la documentación del fabricante (Si, el dichoso manual que hay que leerse siempre) confirma este punto y dicen que solo aguanta 100.000 reescrituras antes de degradarse.
  • Así que si grabas 4 datos diarios, se estropeara al cabo de, veamos,
    100.000/4 /365 =  algo más de 68 años, así que ya sabéis, mucho cuidado al escribir la EEPROM, no vayáis a gastarla.
  • Parece existir un absurdo temor a usar las EEPROM en la comunidad Arduino. Os recomiendo que las escribais sin miedo. Hay muchas posiciones y si alguna se estropea, siempre podéis escribir en otras posiciones. El UNO tiene 1024 diferentes.
  •  

    Resumen de la sesión

     

    Hoy en nuestro curso de arduino hemos aprendido lo siguiente:

  • Hemos hablado un poco de los diferentes tipos de memoria y de sus motivos de ser.
  • Hemos visto las características de diferentes procesadores, al redor de donde se con construyen los modelos de Arduino.
  • Hemos presentado varios modelos diferentes de Arduino.
  •    

    Deja una respuesta