11° Aula: Programando ATtiny85 ou ATtiny45 com Arduino

|



Já imaginou programar um Chip bem pequeno como os 555 que possuem 8pinos?
Seria posível levar as facilidades do arduino e tecnologia AVR para os projetos extremamente pequenos e ainda reduzir ao máximo o custo.
A Proposta então é usar o seu Arduino como uma ferramenta de gravação dos ATtiny45 ou ATtiny85.
É possível montar na protoboard ou mesmo montar a sua propria sheild.
Nesta aula aprenderemos como montar na matriz de contatos, como programar e veremos um modelo de sheild.
Vamos mergulhar no mundo do ATtiny?

Inicialmente temos um chip chamado ATtiny com 8 pinos e a primeira pergunta: Ele é igual ao Arduino?
Não exatamente. O arduino é uma plataforma e possui um microcontrolador diferente mas todos são do mesmo fabricante: a ATMEL.
Outra diferença é que o Arduino precisa de bootloader, mas ATtiny não usa boot.  
Para fins práticos podemos imaginar o "tiny" como um Arduininho pois possui um menor número de pinos I/O, Analógicos e também menor memória.
Mas com este é possivel montar robôs, monitorar sensores de temperatura, escrever num display de LCD, 7seg, dentre outras aplicações que são comuns para o arduino padrão.

Para esse projeto iremos usar:

Clicar na imagem para ampliar

1x Arduino qualquer modelo.
1x ATtiny85 ou ATtiny45 (O modelo "ATtine85" possui 8K de memória flash para código e o "45" 4K)
1x Resistor 220R( pode ser entre 220R e 1K)
1x LED
1x Capacitor de 10uF/16V
1x botão
2x barra de pinos Femea ou Macho com 4x pontos.
Fios
Matriz de contatos
Baixar os arquivos e códigos que serão usadosao longo da aula.
*Veja produtos na Loja do Brasilrobtics



Vamos dar uma olhada no datasheet e ver as configurações de cada pino.
Datasheet do Attiny

Então temos:
3x Portas analógicas.
2x Portas I/O com PWM
1x Pino de Reset
2x Pinos de alimentação(+Vcc, -GND )
Lembrando: postas analógicas podem ser lidas como portas I/O então na prática temos 5x portas de I/O  
Simplificando... O que é preciso saber para programar pode ser visto na imagem abaixo:


Etapa 1- Inicialmente precisamos preparar a interface para receber esse novo modelo de microcontrolador.

Vamos usar a interface 022 (Baixar Arduino 022)
E o arquivo: (Baixar attiny45_85) 

Clicar na imagem para ampliar


Se tudo occorrer correntamente ao abrir a IDE do arduino você terá novas opções de microcontroladores quando for em TOOLs>BOARD
Caso a IDE já esteja aberta você deve fechar e reicializa-la para aparecer a atualização.




Etapa 2- Agora vamos tornar o Arduino um gravador de ATtiny.
É preciso gravar um código que fará essa tarefa de comunicação e gravação dos dados.
Este já está disponível na IDE do arduino.
Veja como fazer:

Abra o código ArduinoISP


Escolha o modelo da placa Arduino que está usando:
Faça o mesmo com a COM(porta usb)





Faça a gravação do código na sua placa Arduino.
Essa etapa deve ser feita sem as conexões com os circuito que será apresentado ao longo da aula.




Etapa 3 - Agora com seu código que permite a gravação do tiny monte o circuito abaixo numa protoboard.



Veja como fica:

Ao fim da montagem vamos gravar um código básico e verificar o funcionamento de tudo:


Atenção: Não existe pino de número "13" no ATtiny então é preciso mudar. 
Vamos adotar o pino de número "0" para este teste. 
  

Então basta mudar onde tem "13" para "0" no código do Blink.
Tudo deve ficar como na imagem abaixo:
Faça a gravação do código clicando em Uploud.

 


Veja o vídeo do funcionamento deste código básico:




OBS: Caso você não tenha preparado o arduino para interfacear a gravação o código não será gravado no ATtiny.
A presença do capacitor de 10uF-16V é permitir que o código seja gravado no ATtiny. Assim com  presença do capacitor no pino de RESET do Arduino não será possível a gravação de códigos no Arduino. Basta retirar o fio do Reset que tudo retorna ao normal.
Após a grvação uma mensagem em vermelho pode aparecer na IDE do arduino mas isso não afeta na gravação.

Feito os testes e após tudo estar "supimpa" você pode montar uma sheild para gravação de ATtiny.
Com ajuda de um saca Chip você pode retirar o "tiny" do soket e por outros e ir gravando, ou mesmo usar a interface para prototipação.
É possível usar uma placa de fácil prototipação ou fazer num software de CAD como o Proteus e corroer a trilha.
Veja como pode ficar:




 *Futuramente o projeto no Proteus também estará disponível.


Veja o vídeo com o funcionamento da sheild:




Funções que o ATtiny suporta com o Arduino:


Gostou desta aula incentive mais visitando nossa loja:


    25 comentários:

    Tulio Baars disse...

    Fala Gamesh!

    Vi que o kit do ATtiny está sendo vendido na loja... Você vende este shieldzinho já montado? Ou apenas incluiria a PCB no kit? Quanto ficava?

    Valeu, abração

    Brasilrobotics disse...

    olá

    Não temos PCB no momento disponível.
    Apenas o kit mesmo.
    Temos a matriz de contatos.
    Logo estará disponível a PCB.

    Anônimo disse...

    Não compila na versão IDE Arduino 1.0, alguém conseguiu descobrir o problema !

    brasilrobotics disse...

    A IDE 1.0 sofreu modificações de bliblioteca.
    Assim gera alguns conflitos.
    Usar a versão indicada no tutorial que tudo da certo.

    Elias disse...

    Olá!

    Estou pensando em usar o attiny85, em conjunto com o controlador de motor de passo (vendido aqui), pra criar um pequeno circuito de controle que vai manter uma velocidade constante no motor.

    Consigo fazer isso apenas alimentando o attiny e conectando ele no controlador? É necessário cristal no attiny?

    Abçs.

    Brasilrobotics disse...

    olá

    Não é preciso cristal.
    respeitando as limitações de memória e pinos de I/O e analogicos.
    É possível.

    staltux disse...

    ola, é possivel utilizar a lib SoftwareSerial nesse ATtiny85?

    você vende ele separadamente?(caso eu queira comprar mais de um mic)

    Brasilrobotics disse...

    olá

    Não saberia informar sobre a lib.

    sim temos dispnpivel.

    Marcelo Boeira disse...

    Consegue liberar o esquemático? ou uma resolução melhor, pq aqui ta ruim de achar os pinos, eu uso o mega e a disposição dos pinos é diferente... Vlw.

    Marcelo Boeira disse...

    Esquece eu abri a outra e esta show de bola... Vlw

    Caio Câmara disse...

    Para quem quer utilizar o arduino mega 2560 ao invez do uno basta inserir as seguintes definições ao exemplo ArduinoISP:
    #define SCK 52
    #define MISO 50
    #define MOSI 51
    #define RESET 53
    onde 52 correspondera ao pino 13
    onde 50 correspondera ao pino 12
    onde 51 correspondera ao pino 11
    onde 53 correspondera ao pino 10

    Matheus disse...

    É possivel usa-lo com o atmega8 ou atmega 328?

    Brasilrobotics disse...

    Ola

    Poderia detalhar melhor sua duvida?

    dinhoig disse...

    Ola,

    Estou tentando gravar com o Duemilanove atmega 328 e nao estou conseguindo. Cita que algumas variaveis nao estao definidas. Voce pode ajudar?

    Brasilrobotics disse...

    Provavelmente e´ a versao da ide do arduino que esta usando.
    Use a 022 como e´ recomendado no tutorial.
    Nem todas as funções são compativeis com o attiny

    Evandroend disse...

    Boa Noite Amigos, alguem conseguiu gravar com Arduino Mega1280, no meu esta dando alguns erros.

    Brasilrobotics disse...

    Não deve funcionar com MEGA pois os pinos mudam.
    Seria preciso mudar algumas coisas.
    O recomendado é seguir o tuturial como mostrado.

    Anônimo disse...

    Olá, é possivel gravar no attiny 85 um código .hex pronto atraves do arduino?
    ou tenho que desenvolver o código inteiro novamente?

    Brasilrobotics disse...

    Olá

    Se vai gravar o .hex voce precisa ter em mente que o arquivo foi feito para um determinado hardware que tem pinos e coisas configuraçoes especificas.
    Se vai mudar de atmega tambem tem que mudar as confirguraçoes no codigo assim o hex muda tb.
    Voce pode gravar o .hex por ISP
    mas ainda assim você deve ver quais pinos fazem o que e informar no código.
    A gravaçao do hex direto do arduino para o attiny não sei dizer no momento como fazer ou se é possivel.
    A forma conhecida é por ISP usnado um gravador usbtiny.
    Veja num outro tutorial sobre bootloader no arduino onde é usado esse gravador. Com ele pode gravar o hex em qualquer AVR.

    DEIVID disse...

    NÃO CONSEGUIR LER UM VALOR DO POTENCIOMETRO NAS PORTAS

    NÃO SEI O QUE ACONTECEU

    TO TENTANDO FAZER UM PEQUENO PROJETO ONDE DETERMINADOR VALOR DO POTENCIOMETRO CHEGA UM VALOR "X" E ATIVE A PORTA EM HIGH

    O QUE SERÁ QUE EU ESTOU FAZENDO DE ERRADO ??

    Eduardo disse...

    e posivel usar este sistema de gravação para gravar em um ATMEGA2561-16AU que tambem e encontrado com baixo custo

    Brasilrobotics disse...

    Olá

    Para David:
    Verifique as funçoes que está usando.
    Um dica é desenvlver o código no arduino depois testar no tiny.

    Para Eduardo:
    Esse tutorial é aplicado apenas para esses dois modelos apresentados.
    Entretanto é viavel para outros modelos sim, mas será presiso fazer um código que torne compativel gravar em outros modelos. O que vai dar um certo tratablho e conhecimento mais aprofundado de microcontroladores.
    Você pode usar um gravador AVR universal o usbtiny ISP para gravar qualquer modelo de AVR

    Andreo disse...

    Otimo tutorial!!
    Só queria fazer uma observação, para tudo dar certo tem que rodar o Arduino na versão 1.0.4

    Abraço!

    Wagner Junior disse...

    Pessoal,

    Tentei exatamente com a versão 0022 conforme descrito acima, segui corretamente todos os passos mas quando estou tentando fazer o upload to teste basico BLINK para o tiny (já configurado com a board correta ATTiny45 w/Arduino as ISP) no final é apresentada a seguinte mensagem:

    Binary sketch size: 658 bytes (of a 4096 byte maximum)
    avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny45
    avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny45

    avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
    avrdude: failed to write flash memory, rc=-4
    avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51


    Alguém pode me ajudar?

    Brasilrobotics disse...

    olá

    É preciso gravar o código no Arduino para torna-lo o gravador do ATTiny.
    É possível que mensagens de erro venham aparecer mas basta verificar se o código foi gravado e esquecer da mensagem.
    Se não der certo volte ao início do tutorial verifique passo a posso. Confira todos os fios e faça nova tentativas.
    Se não der certo aguarde alguns dias e volte a testar tudo é possível que esteja comentando um erro e não perceba devido a repetição, mas passados alguns dias você faz e funciona por não ter cometido o mesmo erro.
    Logo vai chegar ao resultado. Boa sorte.

     

    ©2010 Brasil Robotics | by Gamesh_