16 setembro 2018

Como gravar o bootloader do ATtiny85 com Arduino

O Atmel ATtiny85 é um microcontrolador usado em muitas placas como a Digispark e a Franzininho, caracterizando-se por ser um componente de baixo custo e muito útil em projetos onde não existe a necessidade de utilização de muitas portas de comunicação. Neste tutorial vamos ver como gravar o bootloader do Attiny85 usando uma placa Arduino Uno.

Gravando bootloader do ATtiny85 usando Arduino

Use este procedimento caso você precise "zerar" o microcontrolador ou simplesmente se o seu ATtiny85 veio sem bootloader.

Conexão do ATtiny85 no Arduino

Antes da conexão vamos dar uma olhada na pinagem do ATtiny85. Ele é um microcontrolador de 8 bits com 8KB de memória e 512 bytes de memória EEPROM. Tem 6 portas digitais, das quais 4 podem ser usadas como portas analógicas.

Pinagem ATtiny85
O microcontrolador tem um oscilador interno, mas você pode também usar um cristal nos pinos 2 e 3 (XTAL1 e XTAL2). Como interface de comunicação temos à disposição SPI e I2C.

Para gravação do bootloader vamos usar os pinos 1, 5, 6 e 7 do microcontrolador, conectados nas portas de 10 a 13 do Arduino, conforme imagem abaixo. A alimentação é de 5V e será fornecida pelo próprio Arduino, nos pinos 8 (Vcc) e 4 (GND):

Circuito ATtiny85 e Arduino Uno

Alguns tutoriais da internet recomendam que você coloque um capacitor de 10µF entre os pinos RESET e GND do Arduino caso esteja enfrentando problemas de reset no Arduino na hora de gravar o bootloader. Nos nossos testes, isso não foi necessário.

Configurando a IDE para gravação do bootloader ATtiny85


Vamos agora configurar a IDE para gravação do bootloader. Estou usando a versão mais atual da IDE no momento (1.8.7). O processo é relativamente parecido com o que usamos no post Gravando bootloader no ATMega328 usando Arduino, e no procedimento abaixo vamos habilitar a IDE para reconhecer o ATtiny85.

Entre na IDE do Arduino e em Arquivo -> Preferências, procure o campo URLs Adicionais para Gerenciadores de Placas, inserindo o endereço abaixo:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Sua tela deve ficar assim:

IDE Arduino - Preferências


Clique em OK e agora vá no menu Ferramentas -> Placa -> Gerenciador de placas:

IDE Arduino - Gerenciador de Placas

Na tela seguinte, digite attiny no campo superior e selecione attiny by David. A. Mellis, clicando em seguida em Instalar:

IDE Arduino - Instalação ATtiny boards

Finalizada a instalação, verifique novamente o menu Ferramentas -> Placa para se certificar de que os controladores da linha ATtiny aparecem na lista:

IDE Arduino - Microcontrolador ATtiny instalado


Configurando o Arduino Uno como ISP


Vamos agora carregar o programa que vai possibilitar que o Arduino Uno grave o bootloader no ATtiny85. Vá até o menu Arquivo -> Exemplos - > ArduinoISP e selecione o programa ArduinoISP:

IDE Arduino - Exemplo Arduino ISP

Faça o upload desse programa para o Arduino Uno normalmente.

Gravando o bootloader


O processo de gravação do bootloader do ATtiny85 agora é bem simples. Primeiro vá até o menu Ferramentas -> Placa e selecione o microcontrolador ATtiny25/45/85. Em seguida certifique-se de que no menu Ferramentas as configurações estão como essas mostradas abaixo: Placa Attiny25/45/85, Processador ATtiny85, Clock de 8 MHz e o programador configurado como Arduino as ISP:

IDE Arduino - Configurações ATtiny85

Tudo conferido? Nesta mesma tela, clique em Gravar Bootloader e aguarde alguns segundos:

IDE Arduino - Gravando bootloader

Se tudo estiver ok, você deve visualizar a mensagem abaixo:

IDE Arduino - Gravação bootloader finalizada

Em alguns tutoriais eu vi que foi usado o clock interno de 1 MHz do microcontrolador. Nos nossos testes a opção de 8 MHz funcionou normalmente, logo se algo der errado, tente fazer essa alteração nas configurações do ATtiny85.

Testando o ATtiny85


Com o bootloader gravado no ATtiny85, nada melhor do que fazer um pequeno teste para verificar se está tudo ok.

Mantenha o circuito montado durante essa fase de gravação do programa. Copie o programa abaixo na IDE do Arduino e faça o upload para o ATtiny85:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
//Programa: Pisca led com ATtiny85
//Autor: Arduino e Cia

void setup()
{
  //Define o pino 0 do ATtiny85 como saida
  pinMode(0, OUTPUT);
}

void loop() 
{
  //Acende o led
  digitalWrite(0, HIGH);
  //Aguarda 1 segundo
  delay(1000);  
  //Apaga o led
  digitalWrite(0, LOW);
  delay(1000);         
}

Este é basicamente o programa de exemplo Blink, que já vem na IDE do Arduino. Repare que a porta que será acionada é a porta digital 0 (zero) do microcontrolador. 

Agora sim você pode desconectar o ATtiny85 do Arduino, montando então o circuito abaixo. Colocamos um led na porta 0 (fisicamente é o pino 5 do microcontrolador) e alimentamos o circuito com uma fonte externa de 5v:

Circuito microcontrolador ATtiny85 com led blink

O resultado será esse aqui:

Microcontrolador ATtiny85 e Led

Experimente outras opções de programação do ATtiny85, como por exemplo usá-lo com um display Oled ou um display LCD 16x2 I2C e sensor de temperatura DHT11.

Nenhum comentário:

Postar um comentário