Como Regravar o Firmware no Digispark ATtiny85: Bootloader Micronucleus

Introdução
Neste manual, será apresentado como instalar, configurar e utilizar o módulo Digispark ATtiny85 para regravação de firmware e bootloader. Se desejar adquirir este produto, clique aqui.
O Digispark ATtiny85 é uma plataforma de desenvolvimento microcontrolada compacta da família AVR. Ela utiliza uma interface USB emulada por software que depende diretamente do bootloader Micronucleus gravado na memória Flash do chip para permitir o envio de sketches sem a necessidade de programadores seriais ou gravadores externos no uso cotidiano.
Quando a placa deixa de ser reconhecida pela porta USB do computador, apresenta corrupção de memória ou quando se utiliza um chip ATtiny85 virgem, é fundamental realizar o processo de regravação de firmware do bootloader Micronucleus via barramento ISP (In-System Programming) utilizando o pacote ATTinyCore (Spence Konde) na Arduino IDE.
Especificações técnicas
Principais especificações
| Parâmetro | Especificação |
|---|---|
| Microcontrolador | Microchip AVR ATtiny85 (8 bits) |
| Arquitetura | AVR RISC de alto desempenho e baixo consumo |
| Tensão de operação lógica | 5,0 VDC |
| Tensão de alimentação (USB) | 5,0 VDC |
| Tensão de alimentação externa (VIN) | 7,0 V a 12,0 VDC |
| Memória Flash | 8 KB (aprox. 6 KB disponíveis com Micronucleus) |
| Memória SRAM | 512 Bytes |
| Memória EEPROM | 512 Bytes |
| Frequência de operação (Clock) | 16.5 MHz (via oscilador interno calibrado com PLL) |
| Linhas de I/O digitais | 6 pinos multifuncionais (P0 a P5) |
| Canais analógicos (ADC) | 4 canais com resolução de 10 bits |
| Saídas PWM | 3 canais por hardware |
| Protocolo de gravação de firmware | ISP (In-System Programming) via barramento SPI |
| Dimensões | 24 x 18 x 4 mm |
Características elétricas e operacionais
O microcontrolador ATtiny85 suporta até 40 mA por pino I/O (com limite recomendado contínuo de 20 mA para operação segura) e limite global de corrente de 200 mA no circuito integrado. O regulador linear integrado (LM78L05) fornece 5 V regulados para a lógica do sistema a partir de alimentação externa de até 12 V no pino VIN.
Para a comunicação USB nativa, o bootloader Micronucleus utiliza o oscilador interno calibrado em 16.5 MHz via PLL e opera em conjunto com diodos Zener limitadores de 3,6 V nas linhas D+ e D-. A configuração dos fusíveis (fuses) de Brown-out Detection (BOD) em 2.7 V protege a memória contra gravações indevidas em caso de oscilações de energia.
Descrição do produto
O que é o Digispark ATtiny85?
O Digispark ATtiny85 é uma placa de prototipagem miniaturizada baseada no microcontrolador AVR ATtiny85. A placa integra o conector USB macho diretamente na PCB, regulador de tensão e terminais de entrada/saída, sendo amplamente utilizada em projetos de automação, robótica e dispositivos vestíveis.
Para operar como um dispositivo USB na Arduino IDE, o chip requer o bootloader Micronucleus, que abre uma janela de upload de 5 a 6 segundos sempre que a placa é conectada à porta USB do computador.
Para que serve?
- Regravação e recuperação de placas: restaura o funcionamento de módulos Digispark corrompidos ou com bootloader ausente.
- Projetos portáteis e embutidos: desenvolvimento de dispositivos ultra compactos e de baixo consumo energético.
- Dispositivos USB customizados (HID): criação de teclados de macro, atalhos de automação e controladores emulados.
Por que devo usar?
- Restauração completa da funcionalidade USB: recupera a capacidade de carregar sketches diretamente pela porta USB do computador.
- Compatibilidade com ATTinyCore: ecossistema robusto e atualizado para a Arduino IDE mantido pela comunidade.
- Baixo custo e miniaturização extrema: aproveita todos os recursos do microcontrolador ATtiny85 em uma área mínima.
Quando devo usar?
- Recomendado: quando o módulo Digispark não é reconhecido pelo computador, quando ocorre erro de sincronismo USB ou ao gravar um chip ATtiny85 novo para montagem em placa Digispark.
- Não recomendado: quando o circuito integrado sofreu dano físico irreversível por sobretensão ou curto-circuito, ou em projetos que necessitem de Wi-Fi/Bluetooth nativo (sendo indicado o uso de ESP32 ou ESP8266).
Pinout e diagrama de entradas/saídas
| Pino / Terminal | Tipo | Função | Observação |
|---|---|---|---|
| P0 (PB0) | Digital / I/O | GPIO, SPI MOSI, I2C SDA, PWM | Conectado à linha USB D+ com pull-up |
| P1 (PB1) | Digital / I/O | GPIO, SPI MISO, PWM | Conectado ao LED onboard de status |
| P2 (PB2) | Digital / Analógico | GPIO, SPI SCK, I2C SCL, ADC1 | Entrada analógica A1 |
| P3 (PB3) | Digital / Analógico | GPIO, USB D+, ADC3 | Entrada analógica A3 |
| P4 (PB4) | Digital / Analógico | GPIO, USB D-, PWM, ADC2 | Entrada analógica A2 |
| P5 (PB5) | Reset / I/O | Reset do chip / ADC0 | Pino de Reset por hardware; ativo em nível LOW |
| VIN | Alimentação | Entrada de tensão externa (7 V a 12 VDC) | Entrada do regulador de tensão 5V |
| 5V | Alimentação | Saída regulada 5V ou entrada de 5V direto | Linha de tensão positiva lógica |
| GND | Alimentação | Referência 0V (Terra) | Conectar ao terra comum |
⚠️ Atenção: O pino P5 é o terminal físico de RESET do ATtiny85. A desabilitação do reset para uso como I/O digital bloqueia futuras programações via ISP convencional. Mantenha a função original de reset ativa.
Como fazer a ligação
Requisitos de instalação e alimentação
A regravação do bootloader requer a comunicação via interface ISP (In-System Programming) através dos pinos SPI (MOSI, MISO, SCK e RESET) com alimentação de 5V estável. O procedimento pode ser realizado por duas vias:
- Opção A: Utilizando um gravador dedicado USBasp ou USBtinyISP.
- Opção B: Utilizando uma placa Arduino UNO ou Nano como gravador ISP.
Diagrama de ligação elétrica
O esquema de comunicação utiliza 6 vias de sinal entre o dispositivo mestre (gravador) e o Digispark (escravo):
- VCC (+5V): Fornece a energia necessária durante o ciclo de escrita da Flash;
- GND (0V): Linha de referência elétrica comum;
- MOSI: Envio de dados do gravador para o ATtiny85;
- MISO: Recepção de dados do ATtiny85 pelo gravador;
- SCK: Sincronização dos pulsos de clock;
- RESET: Habilitação do modo de programação serial síncrona.
Tabela de conexões dos terminais
Opção A — Conexão com Gravador USBasp / USBtinyISP
| Pino do Gravador ISP | Sinal ISP | Terminal no Digispark ATtiny85 | Observações |
|---|---|---|---|
| Pino 1 (MISO) | Barramento SPI MISO | P1 (PB1 / MISO) | Dados do escravo para o mestre |
| Pino 2 (VCC) | Alimentação +5V | 5V (ou pino 8 do IC) | Linha de +5V |
| Pino 3 (SCK) | Clock SPI | P2 (PB2 / SCK) | Sinal de clock serial |
| Pino 4 (MOSI) | Barramento SPI MOSI | P0 (PB0 / MOSI) | Dados do mestre para o escravo |
| Pino 5 (RST) | Controle de Reset | P5 (PB5 / RESET) | Linha de reset ativa em LOW |
| Pino 6 (GND) | Referência 0V | GND (ou pino 4 do IC) | Terra comum de circuito |
Opção B — Conexão com Arduino UNO / Nano como ISP
| Pino no Arduino UNO / Nano | Função do Sinal | Terminal no Digispark ATtiny85 | Observações |
|---|---|---|---|
| 5V | Alimentação +5V | 5V | Fornece 5V estabilizados |
| GND | Referência 0V | GND | Referência comum de terra |
| D11 | SPI MOSI | P0 (PB0 / MOSI) | Linha de transmissão de dados |
| D12 | SPI MISO | P1 (PB1 / MISO) | Linha de recepção de dados |
| D13 | SPI SCK | P2 (PB2 / SCK) | Sinal de clock de sincronismo |
| D10 | Controle de Reset (SS) | P5 (PB5 / RESET) | Controle de reset para modo ISP |
💡 Dica: Ao utilizar o Arduino UNO como gravador, instale um capacitor eletrolítico de 10 µF entre os pinos RESET (+) e GND (-) do Arduino UNO após fazer o upload do sketch ArduinoISP. Isso previne o auto-reset da placa durante a queima do firmware no ATtiny85.
Cuidados e observações de segurança
⚠️ Atenção: Confira todas as ligações ponto a ponto com a alimentação desconectada. Inverter VCC e GND causará curto-circuito e destruição térmica do chip ATtiny85.
⛔ Perigo: Nunca aplique tensões superiores a 5,5 VDC nos pinos de sinal (P0 a P5) ou na linha 5V.
Como usar
Guia de operação passo a passo
1. Instalação do pacote ATTinyCore na Arduino IDE
- Abra a Arduino IDE.
- Acesse Arquivo → Preferências (
Ctrl + ,). - Adicione a seguinte URL no campo URLs Adicionais para o Gerenciador de Placas:
http://drazzy.com/package_drazzy.com_index.json
- Clique em OK.
- Acesse Ferramentas → Placa → Gerenciador de Placas….
- Localize o pacote ATTinyCore (autor: Spence Konde) e clique em Instalar.
2. Gravação do Bootloader via Gravador USBasp / USBtinyISP
Com as ligações da Opção A executadas, configure o menu Ferramentas na Arduino IDE:
- Placa:
ATtiny85 (Micronucleus / DigiSpark) — ATTinyCore - Chip:
ATtiny85 - Clock Source:
16.5 MHz (PLL) - BOD Level:
2.7 V (Enabled, out of spec) - Bootloader:
Micronucleus (16.5 MHz) - Programador:
USBasp(ouUSBtinyISP)
- Conecte o USBasp ao computador.
- Acesse Ferramentas → Gravar Bootloader.
- Aguarde a mensagem de confirmação de conclusão na parte inferior da tela.
3. Gravação do Bootloader via Arduino UNO / Nano como ISP
- Conecte o Arduino UNO/Nano ao computador via USB.
- Na Arduino IDE, abra Arquivo → Exemplos → 11.ArduinoISP → ArduinoISP.
- Selecione a placa correspondente ao seu Arduino e a porta COM em Ferramentas.
- Clique em Carregar (Upload) para transferir o sketch para o Arduino.
- Desconecte o Arduino e faça a fiação com o Digispark conforme a tabela da Opção B.
- (Recomendado): Insira o capacitor de 10 µF entre RESET e GND do Arduino UNO.
- Reconecte o Arduino ao computador.
- Configure os parâmetros da placa em Ferramentas:
- Placa:
ATtiny85 (Micronucleus / DigiSpark) — ATTinyCore - Chip:
ATtiny85 - Clock Source:
16.5 MHz (PLL) - BOD Level:
2.7 V (Enabled, out of spec) - Bootloader:
Micronucleus (16.5 MHz) - Programador:
Arduino as ISP - Porta: Selecione a porta COM do Arduino UNO/Nano
- Placa:
- Clique em Ferramentas → Gravar Bootloader.
- Aguarde a mensagem de sucesso.
4. Testando o Upload Direto via USB com o Bootloader Micronucleus
Após regravar o bootloader, os programas podem ser enviados diretamente pela porta USB:
- Mantenha o Digispark desconectado da porta USB.
- Na Arduino IDE, selecione a placa ATtiny85 (Micronucleus / DigiSpark).
- Clique em Carregar (Upload).
- Ao surgir a mensagem
Running Digispark Uploader... Plug in device now..., conecte o Digispark na porta USB. - O bootloader identificará a conexão e realizará o upload do sketch automaticamente.
Modos de operação e ajustes
- Janela de Escuta USB: Nos primeiros 5 a 6 segundos após a conexão na USB, o Micronucleus escuta requisições de gravação. Não havendo envio, executa o sketch do usuário.
- Ajuste de Clock (PLL 16.5 MHz): Permite a emulação estável da camada física USB por software sem oscilador a cristal externo.
- BOD em 2.7 V: Mantém o chip em reset caso a tensão caia abaixo de 2.7 V, preservando o firmware e os dados da EEPROM.
Exemplos práticos de uso
Exemplo 1: Pisca-LED (Blink) no pino P1
Valida a gravação do bootloader alternando o estado do LED onboard (PB1) a cada 500 ms:
// Definicao do pino do LED onboard do Digispark (P1 = PB1)
const int PINO_LED = 1;
void setup() {
// Configura o pino P1 como saida digital
pinMode(PINO_LED, OUTPUT);
}
void loop() {
// Liga o LED onboard (nivel logico alto)
digitalWrite(PINO_LED, HIGH);
delay(500); // Aguarda 500 milissegundos
// Desliga o LED onboard (nivel logico baixo)
digitalWrite(PINO_LED, LOW);
delay(500); // Aguarda 500 milissegundos
}
Exemplo 2: Sensor de Luminosidade LDR com acionamento automático
Lê o nível de luz no pino P3 (ADC3) e aciona o LED no pino P1 em condições de escuridão:
// Mapeamento dos pinos de hardware
const int PINO_LDR = 3; // Pino P3 (ADC3 / Entrada analogica A3)
const int PINO_LED = 1; // Pino P1 (Saida digital para o LED onboard)
// Limiar de luminosidade para disparo (0 a 1023)
const int LIMIAR_NOTURNO = 400;
void setup() {
// Configura o pino do LED como saida digital
pinMode(PINO_LED, OUTPUT);
}
void loop() {
// Leitura do valor analogico do divisor de tensao com LDR
int valorLuminosidade = analogRead(PINO_LDR);
// Compara com o limiar configurado
if (valorLuminosidade < LIMIAR_NOTURNO) {
// Ambiente escuro: acende o LED
digitalWrite(PINO_LED, HIGH);
} else {
// Ambiente claro: apaga o LED
digitalWrite(PINO_LED, LOW);
}
// Intervalo de estabilizacao da leitura
delay(100);
}
Conclusão
Este manual abordou de forma completa o procedimento para regravar o firmware no Digispark ATtiny85, cobrindo desde suas especificações até a instalação prática e modos de operação:
- Especificações técnicas: arquitetura AVR ATtiny85 de 8 bits, 8 KB de memória Flash, operação a 16.5 MHz com PLL e proteção por BOD em 2.7 V;
- Descrição do produto e pinout: mapeamento detalhado dos 6 pinos multifuncionais (P0 a P5) e estrutura de conexões da placa;
- Como fazer a ligação: esquemas de conexão de gravação ISP via gravador dedicado USBasp/USBtinyISP e com Arduino UNO/Nano;
- Como usar: instalação do pacote ATTinyCore do Spence Konde na Arduino IDE, queima do bootloader Micronucleus e procedimentos práticos de upload direto via USB.
Com o firmware do Micronucleus restabelecido, o Digispark ATtiny85 recupera sua total funcionalidade de programação direta pela USB, constituindo uma excelente opção compacta e econômica para prototipagem e projetos embarcados.
Solução de problemas
Olá! Sou o assistente técnico da RoboBuilders. Descreva seu problema com o Como Regravar o Firmware no Digispark ATtiny85: Bootloader Micronucleus e eu ajudarei a encontrar a solução.
O assistente usa IA e pode errar. Confirme informações críticas no datasheet oficial do fabricante.