Como programar a Digispark ATtiny85 com IDE Arduino
Programe 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.
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:
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:
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:
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:
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:
Clique em OK e agora vá no menu Ferramentas -> Placas -> Gerenciador de Placas:
Na tela do Gerenciador de Placas, procure por Digistump AVR Boards e clique em instalar:
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:
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:
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):
Nesse momento, conectamos a placa na USB para que o programa seja transferido do computador para a ATtiny85:
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!
Show, parabéns mais uma vez.
Existe algum tutorial usando esta placa com modulo bluetooth?
grato.
Oi Roberto,
Não vi nenhum ainda.. mas é uma bela sugestão para um próximo post com a Attiny… 🙂
Abraço!
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!
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!
Vc deve usa um transistor. Com ese Tera supporte aos 200ma
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?
Oi Marcelo,
Perfeitamente, você terá que fazer apenas algumas alterações no programa para adequar à Digispark.
Abraço!
Será que posso usar o @Bertos nesta placa?
erro ao fazer download http://digistump.com/package_digistump_index.json
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
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.
Finalmente um tutorial que presta! Parabéns!
Opa! Obrigado Felipe! 🙂
Abraço.
Adilson
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.
Oi Bruno,
Essa vou ficar te devendo, vamos ver se os outros leitores do blog conseguem te ajudar. 🙂
Abraço!
Adilson
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
Oi Luciano,
É uma boa sugestão de post, posso providenciar. O display OLED que você está usando é I2C, correto?
Abraço!
Adilson
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 !!!
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!
Oi Marcelo,
Isso mesmo, depois de conectada, ela permanece enviando dados pela serial.
Abraço e obrigado!
Adilson
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.
Oi Jeferson,
Realmente é uma placa bem interessante. Para projetos compactos e IoT é uma excelente opção.
Abraço e obrigado pela visita!
Adilson
olá! belo post, porém qual programador devo configurar na IDE?
acho que esqueceu de mencionar que o programador micronucleus deve ser selecionado, para poder enviar o código
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
Pdf alguém sabe como usa o exemplo de joystick não consegui entender como funciona alguém pode me ajudar?
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?
Oi Samuka,
Pode ser algum problema na placa, você verificou se ela está sendo reconhecida pelo Windows normalmente?
Abraço!
Adilson
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
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
Esse vídeo dá uma pista de como acertar esses tempos:
https://youtu.be/VE5Cu-BAbpY
Não consigo usar o pino P5, pois fica sempre HIGH
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
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.
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!!!!!
O tutorial está perfeito, segui os passos e deu tudo certo.
Existe algum tutorial usando esta placa com um acelerômetro MPU6050?
Eu fiz um mouse para PC usando o Arduino Leonardo e gostaria de passar para o Digispark. Será que é possível?
Funcionou de primeira com o Exemplo Start, mas quando tentei com o OLED não funcionou mais. Passa os 60 segundos e o programa não carrega. A porta "Digispark Virtual Com Port (COM3)" aparece com uma exclamação. Já troquei o cabo reinstalei o driver, mas continua sem funcionar. Estou usando o Win 7 64. Se alguém tiver alguma dica, agradeço.
Comprei umas plaquinhas destas e nenhuma está funcionando. Todas conectam e desconectam de forma intermitente tanto no Windows quanto no Android (usando ArduinoDroid). Alguém teve este problema?
Boa noite Paulo,
Por acaso você programou a sua Digispark para usar os pinos D3 e D4?
Abraço!
Adilson
Como faço para usar a bateria CR 2032. Ligo pelo VIN??
Você sabe se o regulador LM7805 da placa suporta alimentação por uma bateria 9v? e regula pra 5V?
Boa tarde,
Suporta sim. Suporta alimentação pelo Vin acima de 5.2V
Abraço!
Adilson
Olá!
Seria possível utilizar esta placa para injeção de binários, como a Trinket M0 conforme links abaixo?
Desde já, agradeço!
https://gbatemp.net/threads/gemma-m0-trinket-m0-uf2-files-guide-battery-discharge-fix.508068/
https://gbatemp.net/threads/trinket-internal-install.509633/
Oi Luís,
Realmente desconheço. Vamos ver se algum leitor aqui do blog consegue te ajudar.
Abraço!
Adilson
Olá Pessoal. Eu envio o programa e funciona normalmente quando plugado na USB, mas quando removo da USB e alimento com 5v no Vin, o Attiny85 perde o programa que inseri, alguém teve esse mesmo problema?
Parabéns pelo tutorial,
Tenho uma dúvida, é possível ligar várias destas placas entre si para se comunicarem?
Oi Fernando,
É possível sim. Minha sugestão é usar a interface I2C.
Abraço!
Adilson