13 novembro 2016

Como programar a Digispark ATtiny85 com IDE Arduino

A Digispark ATtiny85 é uma placa de desenvolvimento com tamanho reduzido e 6 pinos de I/O (entrada/saída), ideal para uso em projetos de IoT (Internet of Things ou Internet das Coisas) ou simplesmente para uso em projetos onde você não precisa de muitas portas do microcontrolador.

Digispark ATtiny85 com IDE Arduino

A placa ATtiny85 pode ser programada com a IDE do Arduino, e comparando-a por exemplo com um Arduino Uno, tem como principal vantagem o reduzido consumo de energia.

Como a Digispark ATtiny85 não tem todos os componentes de uma placa como a Uno, ela pode ser utilizada por longos períodos apenas sendo alimentada por baterias. Existem vários projetos utilizando o microcontrolador ATtiny85 que rodam por vários meses apenas com a alimentação de uma bateria CR2032, muito utilizada em computadores, calculadoras e outros equipamentos eletrônicos.

Com relação às especificações da placa, temos:

  • Microcontrolador ATmel ATtiny85 (datasheet)
  • Alimentação USB 5V ou externa (7 à 35V)
  • Regulador de tensão onboard
  • Conexão USB
  • 6 pinos de I/O
  • Memória flash 8KB
  • Interfaces I2C e SPI
  • 3 pinos podem ser utilizados como PWM
  • Conversor analógico digital em 4 pinos
  • Leds onboard

As placas Digispark ATtiny85


Nós testamos duas versões da placa. A primeira é uma placa de 20x18mm, com conector micro usb para programação e alimentação. Na parte superior podemos ver o microcontrolador ATtiny85 e abaixo dele o regulador de tensão:
Digispark ATtiny85 conector micro USB
A outra placa é muito semelhante, uma Digispark ATtiny85 com conector USB na própria placa, que pode ser ligada diretamente no computador sem a necessidade de cabos, como podemos ver na imagem abaixo:

Digispark ATtiny85 USB

Fora a conexão USB, as duas placas são praticamente iguais, com os 6 pinos de I/O (P0 à P5) na mesma posição, além do pino de saída 5V, GND e entrada de alimentação externa (Vin).

Como mencionamos anteriormente, temos pinos digitais, analógicos, PWM e interfaces SPI e I2C. A imagem abaixo ilustra a função que cada um dos 6 pinos pode ter:

Utilizando a Digispark ATtiny85 com IDE Arduino


Para utilizar a Digispark ATtiny85 com a IDE do Arduino, vamos realizar alguns procedimentos de configuração na IDE, mas antes vamos fazer a instalação dos drivers USB da placa. Os passos a seguir servem para as duas placas mostradas anteriormente (conexão USB direta e conexão micro USB).

Como estou utilizando Windows 10, vamos realizar os procedimentos de instalação baseado nesse Sistema Operacional. Antes de mais nada, baixe os drivers da placa neste link. Em seguida, descompacte e execute na pasta "Digistump Drivers" o arquivo Install Drivers.exe:

Instalação drivers Digispark

Após a instalação dos drivers (Digistump LLC, libusb-win32 Digispark Bootloader e libusb-win32 Digi USB), entre na IDE do Arduino (estou utilizando a versão 1.6.11 da IDE) e vá até o menu Arquivo -> Preferencias:

IDE Arduino - Menu

Na tela de Preferências do programa, coloque no campo URLs Adicionais de Gerenciadores de Placas a seguinte URL:

http://digistump.com/package_digistump_index.json

Sua tela ficará assim:

IDE Arduino - Preferências

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

IDE - Gerenciador de Placas

Na tela do Gerenciador de Placas, procure por Digistump AVR Boards e clique em instalar:

Instalação Digistump IDE

Aguarde o final da instalação e feche o Gerenciador de Placas.

Abra novamente o menu Ferramentas -> Placas. Agora você pode visualizar as placas Digispark disponíveis para programação:

Placas Digispark IDE Arduino

Selecione a placa Digispark (Default - 16.5mhz) e em seguida vá ao menu Arquivo -> Exemplos da IDE. Podemos ver que depois que a placa foi selecionada, uma série de exemplos foram adicionados à IDE e estão disponíveis para uso:

Exemplos Digispark

Para testes, carregue o programa exemplo Digispark_Examples -> Start, que é o exemplo básico para piscar o led da placa ATtiny85, e é equivalente ao exemplo "blink" do Arduino com o qual já estamos acostumados.

Transferindo programas para a Digispark ATtiny85


O modo de transferência de programas para a Digispark ATtiny85 tem uma pequena alteração em relação à utilização, por exemplo, de uma placa Arduino convencional.

Para programar a Digispark, desconectamos a placa do computador, e ao clicar no botão Carregar (destacado em amarelo na imagem abaixo), aguardamos a mensagem de que a placa deve ser conectada (Plug in Device Now):

Digispark ATtiny85 upload

Nesse momento, conectamos a placa na USB para que o programa seja transferido do computador para a ATtiny85:

Digispark ATtiny85 upload concluido
No final do procedimento, o led onboard começa a piscar no intervalo selecionado:


E isso é só o começo. Nessa placa você pode ligar dispositivos como sensores, leds, displays LCD e OLED com conexão I2C, entre outros. Confira também o post Digispark com display Oled I2C!

34 comentários:

  1. Show, parabéns mais uma vez.
    Existe algum tutorial usando esta placa com modulo bluetooth?
    grato.

    ResponderExcluir
    Respostas
    1. Oi Roberto,

      Não vi nenhum ainda.. mas é uma bela sugestão para um próximo post com a Attiny... :)

      Abraço!

      Excluir
  2. Sou programador mas nunca mexi com hardware. Poderia me dar uma ajuda?
    Quero utilizar uma placa digispark attiny85 + acelerometro adxl345 como complemento do alarme que tenho no meu carro. Ao detectar movimento, preciso que seja emitido um pulso negativo de 200mA. Este pulso precisa ser dado no interruptor de porta para que o alarme dispare. A lógica para programar eu sei mas não faço idéia de como gerar esse sinal negativo de 200mA.

    Desde já obrigado!

    ResponderExcluir
  3. Sou programador mas nunca mexi com hardware. Poderia me dar uma ajuda?
    Quero utilizar uma placa digispark attiny85 + acelerometro adxl345 como complemento do alarme que tenho no meu carro. Ao detectar movimento, preciso que seja emitido um pulso negativo de 200mA. Este pulso precisa ser dado no interruptor de porta para que o alarme dispare. A lógica para programar eu sei mas não faço idéia de como gerar esse sinal negativo de 200mA.

    Desde já obrigado!

    ResponderExcluir
  4. Eu poderia utilizar esta placa no lugar de um Arduino Uno, para fazer um projeto de medidor de corrente com o Sensor de Corrente Não Invasivo 20A SCT-013?

    ResponderExcluir
    Respostas
    1. Oi Marcelo,

      Perfeitamente, você terá que fazer apenas algumas alterações no programa para adequar à Digispark.

      Abraço!

      Excluir
  5. Será que posso usar o @Bertos nesta placa?

    ResponderExcluir
  6. erro ao fazer download http://digistump.com/package_digistump_index.json

    ResponderExcluir
  7. Olá amigos do arduino e cia. Eu posso usar essa placa para ligar um motor dc pequeno? Qual relé vocês me recomendam? Posso fazer isso sem usar protoboard? Abs

    ResponderExcluir
    Respostas
    1. Pode sim, basta usar um modulo de rele ou rele que seja acionado com 5v, você pode usar um pino pwm do attiny como se fosse acionar um led e com esse pulso levantar o rele.

      Excluir
  8. Finalmente um tutorial que presta! Parabéns!

    ResponderExcluir
  9. Olá... Muito bom seu tutorial, funcionou perfeitamente. Tenho umas perguntas:

    só funciona com o attiny85? e com o attiny2313?
    teria como gravar um attiny2313 sem usar um Arduino (ISP)? direto da USB como a do seu tutorial?

    Pois como eu percebi, a placa apresentada não possui nenhum ci ttl para tal comunicação com o computador.

    ResponderExcluir
    Respostas
    1. Oi Bruno,

      Essa vou ficar te devendo, vamos ver se os outros leitores do blog conseguem te ajudar. :)

      Abraço!

      Adilson

      Excluir
  10. Boa tarde
    Estou com dificuldade para fazer o Oled funcionar no digispark, os códigos que encontrei no momento da gravação diz que o tamanho da memória interna é insuficiente.
    Se puderem fazer um post a respeito, agradeço.
    Abs
    Luciano

    ResponderExcluir
    Respostas
    1. Oi Luciano,

      É uma boa sugestão de post, posso providenciar. O display OLED que você está usando é I2C, correto?

      Abraço!

      Adilson

      Excluir
  11. Ola amigo do Arduino e Cia , estou tendo problema aqui com meu digispark , e e bem estranho pois quando uso as bibliotecas que simula teclado , mouse e joystick o windows reconhece perfeito , a placa consegue mandar os dados dos descritores para o win e ele consegue reconhecer certinho como teclado ou mouse ou joystick , mas o problema começa quando uso a biblioteca DigiCDC que simula porta serial pela usb , quando faço a programação logo apos isso quando é pro win reconhecer a porta serial ele da um erro e não consegue reconhecer , quando vou no ger de dispositivo esta la um dispositivo usb com falha e o erro é problemas com os descritores , usando um dump da usb verifiquei que no caso das outras bibliotecas todos os descritores são enviados pela usb certinho para o windows , ja no caso da DigiCDC só o começo das configuraçoes dos descritores chega no windows e por isso ele nao consegue reconhecer !!!

    Alguem aqui esta passando por essa dificuldade ????

    Ficaria grato por alguma ajuda !!!

    ResponderExcluir
  12. Prezados, obrigado pelo tutorial.
    Tenho apenas uma pergunta.
    No procedimento acima a placa é conectada apenas após a compilação.
    Posso entender que depois disso ela pode seguir conectada, enviando dados para o monitor serial?
    Obrigado!

    ResponderExcluir
    Respostas
    1. Oi Marcelo,

      Isso mesmo, depois de conectada, ela permanece enviando dados pela serial.

      Abraço e obrigado!

      Adilson

      Excluir
  13. Obrigado amigo, funcionou perfeito a instalação aqui, esse attiny85 é muito poderoso e barato pelo seu tamanho, estou debulhando seu datasheet e suas possibilidades são quasse ilimitadas, limitado apenas pela quantidade de portas.

    ResponderExcluir
    Respostas
    1. Oi Jeferson,

      Realmente é uma placa bem interessante. Para projetos compactos e IoT é uma excelente opção.

      Abraço e obrigado pela visita!

      Adilson

      Excluir
  14. olá! belo post, porém qual programador devo configurar na IDE?

    ResponderExcluir
  15. acho que esqueceu de mencionar que o programador micronucleus deve ser selecionado, para poder enviar o código

    ResponderExcluir
  16. olá pessoal..eu gostaria de usar um módulo de sensor optico tcrc5000 com o attiny 85 digispark,porém não manjo NADA,eu acho alguns códigos para arduino mas não sei como passa-los para o attiny reconhecer ec..alguém tem alguma luz?ficaria imensamente grato

    ResponderExcluir
  17. Pdf alguém sabe como usa o exemplo de joystick não consegui entender como funciona alguém pode me ajudar?

    ResponderExcluir
  18. Bom dia
    Segui o tutorial à risca, mas não funciona, quando coloco o Attiny ele fica processando um tempo e dá mensagem de "Device search timeout", será que é problema no Attiny?

    ResponderExcluir
    Respostas
    1. Oi Samuka,

      Pode ser algum problema na placa, você verificou se ela está sendo reconhecida pelo Windows normalmente?

      Abraço!

      Adilson

      Excluir
    2. Estou com o mesmo problema! Uso o Win10 e IDE 1.8.5
      O procedimento de instalar as bibliotecas e os exemplos, foi perfeito!
      Infelizmente ele não grava!
      > Please plug in the device ...
      > Press CTRL+C to terminate the program.
      > Device search timed out

      Excluir
  19. Nao consegui programar.
    Segui as orientações e e informado carregado e os agradecimentos em vermelho só que o Digispak pisca sem respeitar o tempo que coloquei.

    Desktop Windows 7 e o modelo é o conecta direto
    Carlos Bruni

    ResponderExcluir
    Respostas
    1. Esse vídeo dá uma pista de como acertar esses tempos:
      https://youtu.be/VE5Cu-BAbpY

      Excluir
  20. Não consigo usar o pino P5, pois fica sempre HIGH

    ResponderExcluir
    Respostas
    1. Oi José,

      Estranho isso. Veja se este link te ajuda: https://electronics.stackexchange.com/questions/191192/attiny85-pin-5-reset-is-always-high

      Abraço!

      Adilson

      Excluir
  21. Muito bom seu tutorial, realmente todos os passos ok, a menos do que o Alberto Lima alertou, e que não foi inserido ainda: esqueceu de mencionar que o programador micronucleus deve ser selecionado!

    Vocês tem alguma dica para o Windows 10, pois é um problema recorrente e que ninguém achou uma solução boa e esclarecedora sobre o assunto. A Digistump também não se prontificou a certificar seus drives junto a Microsoft, dificultando ou impedindo a utilização dos Digispark no Windows 10.

    Chato porque assim como eu que vi o potencial do Digispark comprei 10 unidades e não consigo fazer o Win 10 reconhecer o dispositivo.

    Espero que vocês da Arduino e CIA, possam dar uma luz para ajudar quem tem este problema, como no caso do Samuka, o Win10 não reconhece o Digispark e desta forma não consegue transferir o firmware.

    Obrigoado antecidapamente.

    ResponderExcluir
  22. Pois é gente, sou eu novamente.

    Depois de um final de semana inteiro, procurando problemas do Digispark com o Win10 em todos os chats e sites do assunto, cabe aqui um desabafo, É UMA VERGONHA a Digistump não ter solucionado isto por conta própria! Somos clientes! A cada nova atualização do Windows eles precisam atualizar.

    Os drives da Digistump não foram atualizados para o Win10!

    Me rendi, tinha 10 unidades de Digispark para colocar para funcionar, peguei um Laptop guardado com o Win7, fiz todos os procedimentos listados aqui, e mais o do PROGRAMADOR MICRONUCLEUS!!! IMPORTANTE NÃO ESQUEÇAM!!!

    FINALMENTE o Digispark funcionou!!!!

    Vejam as informações do IDE 1.8.5 rodando em Win7 Home Edition:

    Running Digispark Uploader...
    Plug in device now... (will timeout in 60 seconds)
    connecting: 16% complete
    connecting: 22% complete
    connecting: 28% complete
    connecting: 33% complete
    > Device has firmware version 1.6
    > Available space for user applications: 6012 bytes
    > Suggested sleep time between sending pages: 8ms
    > Whole page count: 94 page size: 64
    > Erase function sleep duration: 752ms
    parsing: 50% complete
    > Erasing the memory ...
    erasing: 55% complete
    erasing: 60% complete
    erasing: 65% complete
    > Starting to upload ...
    writing: 70% complete
    writing: 75% complete
    writing: 80% complete
    > Starting the user app ...
    running: 100% complete
    >> Micronucleus done. Thank you!

    NÃO DESISTA!!!!!

    ResponderExcluir