Como Regravar o Firmware no Digispark ATtiny85: Bootloader Micronucleus

Digispark ATtiny85 — manual técnico completo

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âmetroEspecificação
MicrocontroladorMicrochip AVR ATtiny85 (8 bits)
ArquiteturaAVR RISC de alto desempenho e baixo consumo
Tensão de operação lógica5,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 Flash8 KB (aprox. 6 KB disponíveis com Micronucleus)
Memória SRAM512 Bytes
Memória EEPROM512 Bytes
Frequência de operação (Clock)16.5 MHz (via oscilador interno calibrado com PLL)
Linhas de I/O digitais6 pinos multifuncionais (P0 a P5)
Canais analógicos (ADC)4 canais com resolução de 10 bits
Saídas PWM3 canais por hardware
Protocolo de gravação de firmwareISP (In-System Programming) via barramento SPI
Dimensões24 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 / TerminalTipoFunçãoObservação
P0 (PB0)Digital / I/OGPIO, SPI MOSI, I2C SDA, PWMConectado à linha USB D+ com pull-up
P1 (PB1)Digital / I/OGPIO, SPI MISO, PWMConectado ao LED onboard de status
P2 (PB2)Digital / AnalógicoGPIO, SPI SCK, I2C SCL, ADC1Entrada analógica A1
P3 (PB3)Digital / AnalógicoGPIO, USB D+, ADC3Entrada analógica A3
P4 (PB4)Digital / AnalógicoGPIO, USB D-, PWM, ADC2Entrada analógica A2
P5 (PB5)Reset / I/OReset do chip / ADC0Pino de Reset por hardware; ativo em nível LOW
VINAlimentaçãoEntrada de tensão externa (7 V a 12 VDC)Entrada do regulador de tensão 5V
5VAlimentaçãoSaída regulada 5V ou entrada de 5V diretoLinha de tensão positiva lógica
GNDAlimentaçãoReferê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:

  1. Opção A: Utilizando um gravador dedicado USBasp ou USBtinyISP.
  2. 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 ISPSinal ISPTerminal no Digispark ATtiny85Observações
Pino 1 (MISO)Barramento SPI MISOP1 (PB1 / MISO)Dados do escravo para o mestre
Pino 2 (VCC)Alimentação +5V5V (ou pino 8 do IC)Linha de +5V
Pino 3 (SCK)Clock SPIP2 (PB2 / SCK)Sinal de clock serial
Pino 4 (MOSI)Barramento SPI MOSIP0 (PB0 / MOSI)Dados do mestre para o escravo
Pino 5 (RST)Controle de ResetP5 (PB5 / RESET)Linha de reset ativa em LOW
Pino 6 (GND)Referência 0VGND (ou pino 4 do IC)Terra comum de circuito

Opção B — Conexão com Arduino UNO / Nano como ISP

Pino no Arduino UNO / NanoFunção do SinalTerminal no Digispark ATtiny85Observações
5VAlimentação +5V5VFornece 5V estabilizados
GNDReferência 0VGNDReferência comum de terra
D11SPI MOSIP0 (PB0 / MOSI)Linha de transmissão de dados
D12SPI MISOP1 (PB1 / MISO)Linha de recepção de dados
D13SPI SCKP2 (PB2 / SCK)Sinal de clock de sincronismo
D10Controle 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

  1. Abra a Arduino IDE.
  2. Acesse Arquivo → Preferências (Ctrl + ,).
  3. Adicione a seguinte URL no campo URLs Adicionais para o Gerenciador de Placas:
http://drazzy.com/package_drazzy.com_index.json
  1. Clique em OK.
  2. Acesse Ferramentas → Placa → Gerenciador de Placas….
  3. Localize o pacote ATTinyCore (autor: Spence Konde) e clique em Instalar.
Tela do Gerenciador de Placas da Arduino IDE mostrando o pacote ATTinyCore do Spence Konde

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 (ou USBtinyISP)
Tela de configuração da placa ATtiny85 na Arduino IDE com o ATTinyCore
  1. Conecte o USBasp ao computador.
  2. Acesse Ferramentas → Gravar Bootloader.
  3. 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

  1. Conecte o Arduino UNO/Nano ao computador via USB.
  2. Na Arduino IDE, abra Arquivo → Exemplos → 11.ArduinoISP → ArduinoISP.
  3. Selecione a placa correspondente ao seu Arduino e a porta COM em Ferramentas.
  4. Clique em Carregar (Upload) para transferir o sketch para o Arduino.
  5. Desconecte o Arduino e faça a fiação com o Digispark conforme a tabela da Opção B.
  6. (Recomendado): Insira o capacitor de 10 µF entre RESET e GND do Arduino UNO.
  7. Reconecte o Arduino ao computador.
  8. 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
  9. Clique em Ferramentas → Gravar Bootloader.
  10. 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:

  1. Mantenha o Digispark desconectado da porta USB.
  2. Na Arduino IDE, selecione a placa ATtiny85 (Micronucleus / DigiSpark).
  3. Clique em Carregar (Upload).
  4. Ao surgir a mensagem Running Digispark Uploader... Plug in device now..., conecte o Digispark na porta USB.
  5. 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

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.