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. Assunto para um próximo post sobre a ATtiny85. Até lá!

23 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