domingo, 2 de junho de 2013

ATTiny - Arduino Tiny

Olá, neste artigo iremos falar sobre uma opção barata de processador compatível com a plataforma arduino, o attiny85. Explicaremos como gravar uma aplicação que acende um LED pelo tiny.



O Tiny85 apresenta as seguintes vantagens:

  • É pequeno, tem apenas 8 pinos divididos em 2 blocos de 4;
  • Bem mais barato que um ATMega;
  • Relativamente fácil de programar;
  • Compatível com a IDE do arduino.
Para esse projeto precisaremos dos seguintes componentes:
  • 1 x ATTiny85 PU20
  • 1 x Arduino UNO
  • 1 x Capacitor eletrolítico de 10 uf
  • 1 x Resistor de 220 ohms
  • 1 x LED
Primeiramente devemos preparar a IDE do arduino para compilar código para o tiny.

Passos:
  1. Fazer o download da biblioteca do Tiny aqui.
  2. Descompacte o zip
  3. Abra a pasta Hardware dentro da instalação do arduino e crie uma pasta chamada de attiny
  4. Copie o conteúdo para lá. Deve ficar de acordo com a figura abaixo.
  5. Abra a IDE do arduino e vá em Tools->Board. Deverá aparecer algo como:

    Usaremos o arduino UNO para gravar o programa no tiny e para isso, precisamos carregar o software ArduinoISP. Vá em File->Examples->ArduinoISP. Procure pela função abaixo e troque de 40 para 20 o tempo de delay.

    uint8_t hbval=128;
    int8_t hbdelta=8;
    void heartbeat(){
      if (hbval > 192) hbdelta = -hbdelta;
      if (hbval < 32) hbdelta = -hbdelta;
      hbval += hbdelta;
      analogWrite(LED_HB, hbval);
      delay(20); // <-- alterar essa linha de 40 para 20
    }
    

    Grave o programa ArduinoISP no UNO. Após a gravação, abra o exemplo Blink altere o pino 13 do LED para pino 0. Segue figura.

    /*
      Blink
      Turns on an LED on for one second, then off for one second, repeatedly.
      This example code is in the public domain.
     */
    //Pin 13 has an LED connected on most Arduino boards.
    //give it a name:
    in led = 0;
    
    //this setup routine runs once when you press reset:
    void setup(){
      //initialize the digital pin as an putput.
      pinMode(led, OUTPUT);
    }
    //this loop routine runs over and over again forever:
    void loop(){
      //turn the LED on
      digitalWrite(led, HIGH);
      //wait fora second
      delay(1000);
      //turn the LED off
      digitalWrite(led, LOW);
      //wait for a second
      delay(1000);
    }
    

    Em Tools->Board, selecione ATtiny85(internal 1 MHz clock) e em seguida, em Tools->Programmer, selecione Arduino as ISP.



    Seu programa está pronto para ser carregado. Monte o circuito de acordo com a figura abaixo.


    O Capacitor deve ser usado para evitar que a IDE faça o reset do UNO - Ligando o GND ao pino de Reset. Abaixo a tabela com a ligação dos pinos.


    O programa (Blink alterado) já pode ser gravado. Grave normamente. Nesse momento o arduino UNO irá gravar o código no Tiny. Após a gravação, retire o Tiny e monte o circuito abaixo, Utilize preferencialmente uma alimentação de 5V.


    Eu montei na mesma protoboard os dois circuitos, trocando apenas o tiny de lugar e aproveitei a alimentação do arduino para alimentar o circuito acima.

    Tiny na posição do gravador.


    Tiny em execução, aproveitando a mesma protoboard e alimentacão


    Somente alterei o tiny de posição.

    Até a próxima.

Sem comentários:

Enviar um comentário