Proyecto Arduino sobre ATtiny85

Actualizado: 20 Mayo 2022

Los chips ATtiny son una familia de microcontroladores que existen desde 1999 (producidos originalmente por la empresa Atmel Corporation y ahora por la empresa Microchip Technology Inc). El chip tipo DIPDual inline package: un chip con dos filas de patas paralelas - perfecto para montar en un una protoboard :) ATtiny85 se comercializó en 2005. Su popularidad es debida a su precio muy asequible, su fiabilidad y bajo consumo.

ATtiny85 imagen cedida por Microchip Technology Inc
ATtiny85 (imagen cedida por Microchip Technology Inc)

Las desventajas del ATtiny comparado al ATMega328 o Arduino son: menor memoria, menos pines, menos posibilidades arquitecturales y (con la configuración por defecto) la lentitud comparativa de su reloj interno. Tampoco permite comunicación serie; así que necesitamos codificar y depurar tu proyecto Arduino en una placa Arduino y, cuando estés seguro que todo esté funcionando, modificar la numeración de pines y subir el código al ATtiny.

El diagrama pin-outdisposición de pines a continuación demuestra como solo tenemos 5 pines para conectar a otros componentes. Y antes qu digas "Espera - veo claramente que hay ocho pines" hay que tener en cuenta (aunque es verdad que ocho pines) que uno de ellos sirve para recibir el corriente (VCC), otro para conectar a tierra (GND) y otro para la resetear el chip. O sea son tres pines que no podemos aprovechar para entrada/salida digital. Ocho menos tres nos deja con cinco pines para jugar.

ATtiny 45 / 85 pin-out
ATtiny 45 / 85 pin-out

Eso dicho, para proyectos báscicos el ATtiny sobra; y, como veremos, es bastante fácil llevar un proyecto de Arduino a ATtiny.

Una forma divertida (y formativa) de hacer esto es utilizar el Arduino como un programador. Dicho de otra forma, podemos usar el Arduino como puente entre nuestro PC y el ATtiny para subir nuestro código; y luego ejecutamos ese código enel ATtiny de forma completamente independiente del Arduino.

Nuestro proyecto effecto de llamas es un ejemplo perfecto dado que solo necesitamos cuatro pines tipo salida digital. ¡Vaya! Incluso nos queda un pin de sobra :)

Materiales

  • placa Arduino (cualquier modelo + cable USB)
  • microcontrolador ATtiny85
  • LEDs (rojo X 2, amarillo X 2)
  • resistencias (330Ω x 4)
  • cables puente (macho-macho X 6)
  • Protoboard sin soldadura
  • condensador 10μF (apróximadamente)
  • pilas tipo AA (o AAA) X 3
  • portapilas compatible cons tus 3 pila (en serie)

Pasos

Conectar el Arduino al ATtiny en modo programador

Con el Arduino conectado a tu PC a través del cable USB, monta el ATtiny en el protoboard y conecta ambos dispositivos el la manera siguiente:

pin Arduino UNO pin ATTiny Estos son los nombres que se ven en el esquema anterior. El número de pin físico se ve dentro de paréntesis.
+5v VCC+ (8)
GND GND (4)
10 RESET (1)
11 pin 0 (5)
12 pin 1 (6)
13 pin 2 (7)

Debe quedar así:

Arduino UNO conectado como programador al ATtiny85
Arduino UNO conectado como programador al ATtiny85
Diagrama Arduino UNO conectado como programador al ATtiny85
Diagrama Arduino UNO conectado como programador al ATtiny85
Arduino UNO conectado como programador al ATtiny85 - esquemático
Arduino UNO conectado como programador al ATtiny85 - esquemático

Configurar el Arduino como programador

  1. Abre el IDE de Arduino
  2. Comprobar que en el menú Herramientas > Placas que ATtiny25/45/85 esté presente.
  3. Si no está, solo hace falta realizar lo siguiente:
    1. Entrar en Archivo > Preferencias > Gestor de URLs adicionales de tarjetas y añade: https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json a la lista.
    2. Herramientas > Placa > Gestor de placas > y selecciona attiny board by amellis (que ya debería aparecer en la lista) > instalar.
  4. Abre el programa ISP: Archivo > Ejemplos > y seleccionar ArduinoISP.
  5. Sube el programaPrograma > Subir o Ctrl + U a la placa Arduino.
  6. Conecta el pin RESET del Arduino al pin GND mediante el condensador 10μF Este paso es para evitar que avrdude ( el programa que lanzarás desde el IDE Arduino) resetée tu Arduino. No todas las placas Arduino necesitan esto pero probablemente es mejor hacerlo. Estás libre para investigar, experimentar y comentar - claro :) (no hace falta que sea exactamente 10μF; en el ejemplo siguiente usé un condensador de 2.2μF):
    Arduino UNO conectado al ATtiny85 con condensador
    Arduino UNO conectado al ATtiny85 con condensador
    Condensador para Arduino como programador
    Condensador para Arduino como programador
  7. Graba el bootloadercargador de arranque en el ATtiny:
    1. Herramientas > Programador > select Arduino as ISP (¡¡¡arduinoISP NO!!!!!).
    2. Hit Herramientas > Quemar bootloader.
  8. Sube el programa de llamas al ATtiny:
    1. Abre el programa de llamas.
    2. Antes de todo, necesitamos cambiar la numeración de los pines originales del Arduino porque la numeración del ATtiny no tiene nada que ver con la del Arduino. Cambia el código como se ve a continuación. Los nuevos números de pin están resaltados:
      long r;
      
      void setup(){
        pinMode(0, OUTPUT);
        pinMode(1, OUTPUT);
        pinMode(2, OUTPUT);
        pinMode(3, OUTPUT);
      }
      
      void flicker(int x){
        r = random(100L);
        digitalWrite(x, r < 90);
      }
      
      void loop(){
        flicker(0);
        flicker(1);
        flicker(2);
        flicker(3);
        delay(100);
      }
  9. Herramientas > Placa > ATtiny 25/45/85
  10. Herramientas > Procesador > ATtiny85
  11. Herramientas > Clock > Internal 8 MHz
  12. Dale al SubirPrograma > Subir o Ctrl + U.

Cableado del ATtiny

Ésta es exactamente la misma configuración que el proyecto Arduino efecto de llamas realista salvo que estamos usando los pines del ATtiny 0, 1, 2 y 3 en vez de los pines del Arduino 2, 3, 4 y 5; y, en vez de alimentar el chip con el corriente del cable USB, estamos utilizando pilas (el diagrama muestra 4 pilas AAA pero solo porque no encontraba un componente en fritzing de 3 AAA). No olvides que si no tienes pilas AA o AAA o portapilas a mano, siempre puedes alimentar el chip ATtiny desde los pines del Arduino VCC y GND; pero no quedaría tan chulo (teniendo en cuenta que estamos montando un chisme tipo stand-alone ;) ).

ATtiny85 con efecto de fuego (4 LEDs)
ATtiny85 con efecto de fuego (4 LEDs)

¡A ver como ha quedado!

Aquí teneis el resultado (esta versión usa 2 LEDs conectados a una mini-protoboard sin cables).

ATtiny85 alimentado por pilas
ATtiny85 alimentado por pilas
ATtiny85 alimentado por pilas - video

© 2022