Programando o ATtiny85 com Arduino
O microcontrolador Atmel ATtiny85 é mais modesto que o Atmel ATmega328 que é muito utilizado em algumas placas da plataforma Arduino como a placa Arduino UNO. Já o ATtiny85 pode ser utilizado em muitas aplicações que não necessitam de muita memória e muitos pinos para funcionar.
O microcontrolador Atmel ATtiny85 é ideal em projetos que exijam baixo consumo de energia. Com apenas uma bateria de 3 Volts, dessas utilizadas na alimentação de controle remoto de automóveis, pode funcionar por meses.
Embora ele só, sem uma placa de suporte, não passe de um simples microcontrolador assim como o ATmega328 fora da placa Arduino, podemos transforma-lo em um pequeno Arduino para ser utilizado em diversas aplicações. Mas isso é assunto para uma outra postagem 😊.
Neste tutorial vamos adquirir o conhecimento necessário para programar nosso microcontrolador ATtiny85 utilizando Arduino UNO.
A circuitaria
Antes de verificamos o circuito, vamos dar uma olhada nos pinos do ATtiny85. É um microcontrolador de 8 bits, com uma memória flash (memória de programa) de 8KB. Composto também de uma memória EEPROM de 512 bytes (serve para armazenar dados de forma não volátil) e uma memória SRAM também de 512 bytes (memória para processar variáveis).
Conforme imagem acima, o ATtiny contém oito pinos, sendo que dois desses pinos 8 (VCC) e 4 (GND) são utilizados para alimentação do microcontrolador. Sobram seis pinos para utilizarmos em nossas aplicações.
Suponha que você necessite de um oscilador externo, lá se vão mais dois pinos 2 (XTAL1) e 3 (XTAL2). Digamos que se queira um reset em minha aplicação e assim perdemos mais um pino 1 (RESET) sobrariam 3 pinos 5, 6 e 7 para configurar como entrada ou saída sendo que apenas um desses três pinos, o pino 7 poderia ser configurado como analógico.
Para gravar o código na memória de programa do ATtiny85, vamos usar os pinos 1, 5, 6 e 7 do microcontrolador, conectados nas portas de 10, 11, 12 e 13 respectivamente do Arduino, conforme imagem abaixo. A alimentação de 5 Volts necessária para o microcontrolador será fornecida pelo próprio Arduino.
Podemos observar no circuito um capacitor de 10uF entre os pinos GND e RESET do Arduino. Esse capacitor serve para impedir que o Arduino reinicie durante o upload do código para o microcontrolador ATtiny.
Preparar o Arduino IDE para o ATtiny
Vamos agora configurar a IDE para gravação do nosso código no ATtiny85.
Entre na Arduino IDE e em Arquivo > Preferências, procure o campo URLs Adicionais para Gerenciadores de Placas e insira a seguinte URL:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
em seguida clique em “OK”. Conforme tela abaixo.
agora vá no menu Ferramentas > Placa > Gerenciador de placas:
Na tela seguinte, digite attiny no campo superior e selecione attiny by David. A. Mellis, clicando em seguida em Instalar:
Para finalizar vamos certificar que os microcontroladores ATtuny foram realmente configurados e aparecem na lista:
E com isto já temos o IDE pronta, vamos ver como preparar o Arduino para gravar um Attiny85
Configurando o Arduino Uno como ISP
Vamos agora carregar o código que vai possibilitar que o Arduino Uno funcione como gravador para o nosso ATtiny85. Vá até o menu Arquivo > Exemplos > ArduinoISP e selecione o programa ArduinoISP:
Carregue esse exemplo para a memória do Arduino UNO e com isto já está preparado nosso gravador.
Vamos ao exemplo com ATtiny85
Agora praticamente já está tudo pronto para o nosso primeiro exemplo utilizando o microcontrolador Attiny85. Vamos selecionar na IDE em Ferramentas o Processador: “ATtiny85”, a frequência de operação Clock: “Internal 8 MHz” do microcontrolador e a configuração do Arduino como Programador: “Arduino as ISP” conforme imagem abaixo:
Nesta mesma tela, clique em Gravar Bootloader que é um código de inicialização do nosso microcontrolador ATtiny85. Esse código seta alguns modos de funcionamento de nosso ATtiny85, por exemplo, o Clock interno de 8MHz que selecionamos na IDE.
Utilizando o código abaixo para realizar o teste do nosso gravador, que é o exemplo BLINK da IDE do Arduino. Modificamos apenas o pino utilizado como saída para o pino 0,
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Blink
*/
#define LED_BUILTIN 0
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
ao finalizar o upload, o LED que está conectado ao pino 0 (fisicamente é o pino 5 do microcontrolador) piscará:
Assim finalizamos a montagem do nosso gravador de ATtiny85 utilizando o Arduino UNO. Breve traremos mais projetos utilizando esse microcontrolador 😊.
Respostas