Muitos projetos feito em Arduino utilizam somente alguns pinos, com isso você acaba “gastando” o seu Arduino de uns 20 pinos (no caso do UNO) para uso efetivo de somente uns 4 ou 5.
O Arduino por si só não é muito grande, mas as vezes você não consegue, por exemplo, “hackear” um brinquedinho, colocando LEDs, comando de voz e motorzinhos, ou fazer um sistema de irrigação, iluminação para aquário e os famosos paper circuits, etc…
A seguir veremos algumas maneiras, muito simples, de reduzir o seu projeto, tanto em tamanho, quando em preço ($$).
A parte mais interessante desse processo é que continuaremos utilizando o Arduino (placa e IDE), além, é claro o nosso protagonista, o microcontrolador Attiny85.
O que é o Attiny85
O Attiny85 é um microntrolador da Atmel que possui 8 pinos, sendo 2 para energia (5v e Gnd), 1 reset e 5 I/O (entradas e saídas)
Os 5 pinos por vez temos, entradas analógicas, PWM, digital, ou seja, diversão garantida.
Ele possui voltagem de apenas 2,7 – 5,5v, logo, uma bateria CR3032 já será suficiente para garantir o funcionamento do seu projeto.
Nosso objetivo não é o aprofundamento em detalhes técnicos, caso haja curiosidade acesse o Datasheet do Attiny link.
A primeira coisa que se deve fazer é identificar a posição do Attiny85. Ele possui um indicador, no formato de um círculo.
Essa identificação é muito importante, pois há risco de curto-circuito na montagem (experiência própria – 😥 ).
Os pinos de trabalho são 0, 1, 2, 3, 4 (5pinos) (padrão); Pode ser modificado o pino 1 (reset) que será o Pino 5 para programação)
Pino do Attiny85 | Função | Pino Digital | Pino Analógico |
1 | Reset* | ||
2 | I/O | 3 | A3 |
3 | I/O e PWM | 4 | A2 |
4 | Ground | ||
8 | Voltagem | ||
7 | I/O | 2 | A1 |
6 | I/O e PWM | 1 | |
5 | I/O e PWM | 0 |
O pino 1, pode ser convertido em I/O (pino de entrada e saída), porém ele deixa de ser programado via ISP.
Você precisará de um programador de alta-voltagem para resetar o pino, novamente.
Em um outro tutorial iremos tratar esse tema, gravando o bootloader para funcionamento igual ao Digispark da Digistump.
O que você vai precisar?
Placa Arduino/Genuino/Clone Uno, Nano e Duemilanove (1) – testamos nesses modelos, mas é possível em vários outros.
Breadboard (1)
Capacitor de 10µF (1)
Cabos (alguns)
LEDs (para teste)
Resistores 220 Ω. (para os LEDs)
Como ligar o Attiny na sua placa Arduino/Genuino:
Através do Arduino é possível utilizar a função ISP (In-system Programmer), onde nós utilizaremos o Arduino para gravar o Attiny85.
A ligação é muito simples, veja o esquema abaixo feito no Fritizing:
Pino Attiny85 | Pino Arduino |
8 | 5v |
7 | 13 |
6 | 12 |
5 | 11 |
1 (Reset) | 10 |
4 | Ground |
Capacitor | |
Reset (+) | Gnd (-) |
Preparando a sua IDE do Arduino
Primeiramente, retire o Capacitor (Ground e Reset) instale o programa ArduinoISP, para que o Arduino esteja habilitado para gravar o Attiny85.
Na imagem abaixo há o processo detalhado, siga os passos: 1, 2 e 3
Coloque o Capacitor (Ground e Reset) novamente
Incluindo o chip Attiny85 na IDE do Arduino
Com o Arduino preparado, você precisará instalar o chip na IDE do Arduino para que a gravação seja igual a uma placa.
Na criação deste post, a versão mais atualizada do Arduino era a 1.6.12, mas testamos em outras e funcionou de maneira igual.
Siga os seguintes passos:
[Arquivo] -> [Preferências]
Copie o endereço abaixo e cole em: [URLs Adicionais de Gerenciadores de Placas]:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
O próximo passo será instalar a placa Attiny85:
Passos 1, 2 e 3:
Passos 1 e 2:
Se tudo correu bem, você verá o nome do Attity25/45/85, logo abaixo:
Logo após esse processo selecione o chip que você possui:
O Clock deverá se o Interno (Internal) e neste primeiro momento deixe com 1MHz.
Gravando o Attiny85
No programa você irá testar os três pinos PWM 3, 7 e 8 (que são o 0, 1 e 4), e os demais pinos digitais.
Copie o código abaixo:
/* Attiny85 - PinTest Test PWM pins 0,1,4 Test blinking pins from 2 and 3. This example code is in the public domain. created on 20 Oct 2016 by Edson Sobreira for http://hackeduca.com.br */ //--------------------------------------- void setup() { // Inicializa os 5 pinos pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(0, OUTPUT); pinMode(1, OUTPUT); } void loop() { //Teste para os pinos PWM //---------- Pino 0 ------------------- for (int i=0; i<=255; i+=5) { analogWrite(0, i); delay(50); } //---------- Pino 1 -------------------- for (int i=0; i<=255; i+=5) { analogWrite(1, i); delay(50); } //---------- Pino 4 -------------------- for (int i=0; i<=255; i+=5) { analogWrite(4, i); delay(50); } //---------- Pino 2 e 3 -------------- digitalWrite(2, HIGH); digitalWrite(3, HIGH); delay (1000); digitalWrite(2, LOW); digitalWrite(3, LOW); }
Se você seguiu todos os passos acima, é só gravar o programa no Attiny85 e ao final do processo aparecerá a informação de Carregado 🙂
O seu Attiny85 já pode ser utilizado.
Veja o exemplo que montamos:
Nossa área de trabalho:
Nosso projeto Final:
3 Comments
Hackeduca, gostei muito das vossas dicas, com esse pequeno artigo deu para saber um pouco do Attiny 85.
Tenho um projeto a fazer com esse microcontrolador, automatizar uma residencia, queria que me dessem mais dicas como posso fazer e quais são os componentes que vou precisar para fazer o projeto.
Agradeceria a vossa ajuda.
Olá Bertacio, depende do tipo de automatização que você deseja.
Há inúmeros tipos, como Wifi (não seria possível usar o Attiny), por Bluetooth (é possível a utilização e há alguns artigos explicando o procedimento) ou mesmo usando sensores (temperatura, luz, unidade, relé, etc…)
O Attiny85 é bastante limitado, mas em teoria qualquer sensor poderia funcionar com ele, considerando que há somente 5 pinos utilizáveis e 1 que pode ser convertido (reset).
Boa sorte pra você em seu projeto.
Parabéns pelo artigo!
O uso de timers e interrupções no Attiny é tão fácil quanto no arduino Uno/Nano/Mega?
Grato,
Valdir