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á!

4 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