sexta-feira, 1 de fevereiro de 2019

LED WS2812B nas cores do Brasil

Se deseja fazer uma tira de LED's WS2812B piscar nas cores do Brasil, vou passar o código necessário para tal.

A tira é como esta:





O resultado é este:




Para tal efeito, basta utilizar o código:
https://github.com/valterfc/arduino_projects/tree/master/ValterFC_LED_WS2812B_digipark_brazil


Como controladora, utilizei um Digispark Attiny85, já com o firmware atualizado, como eu ensinei anteriormente. No mesmo código do github tem outros trechos comentados, que podem ser úteis.

Aqui tem alguns informações úteis sobre a tira. Vale lembrar que o consumo de todos os LED's de forma simultânea pode atingir 1.8A, na versão com 30 LED's por metro, podendo queimar os componentes da controladora, então eu utilizei os fios extras da tira para alimentar diretamente, usando uma porta micro USB para conectar um carregador de celular. A placa Digispark é alimentada pela tira, então o USB da placa não é utilizado.

A porta micro USB:

Como ficou:


Digispark Attiny85 - removendo os 6s de boot

Quem tem um Digispark Attiny85 sabe que ele leva cerca de 6s para iniciar o sketch que subimos para ele.

Esse tempo de 6s é destinado a aguardar por comandos vindos de um PC, via USB, para o modo "programação". Isso faz com que a programação do dispositivo seja bem fácil, mas traz transtorno pra quem precisa que o sketch comece a executar logo no início do boot.

Mas tem uma notícia boa: é possível atualizar o firmware para remover esse tempinho chato. Vou demonstrar num passo a passo de como fazê-lo.

Versões do Digispark Attiny85:





Primeiro passo, ter em mãos o hardware. São necessários "apenas" os seguintes itens:
- 1x Digispark Attiny85;
- 1x Cabo USB x Micro USB, desses usados em carregadores de celular (necessário apenas se for a versão com Micro USB);
- 1x fio/jumper qualquer (na verdade, pode ser qualquer coisa metálica, desde que saiba manipular).



Se tiver os terminais da placa, e for utilizá-los depois, pode ser interessante soldá-los agora:


Existe também a opção de terminais curvos:







Baixe o driver necessário para reconhecer a placa no seu PC:
https://github.com/digistump/DigistumpArduino/releases/

Ou diretamente no link:
https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip

Descompacte (em uma pasta de fácil acesso) e execute a instalação:





Para ver se deu tudo certo, entre no diretório, pelo Prompt de Comando. Um atalho é segurar o SHIFT e clicar direito em qualquer lugar da pasta, onde aparecerá um menu com a opção de Prompt de Comando / PowerShell:





No Prompt de Comando, digite (o "TAB" ajuda a autocompletar o nome do arquivo):
micronucleus -?





Agora insira o Digispark na porta USB do seu PC:




Aparecerá a versão do firmware do seu Digispark. Neste exemplo, a versão é a 1.6.

Se tudo deu certo até aqui, quer dizer que seu Digispark está configurado e funcionando corretamente.




Agora, vamos baixar o firmware.
https://github.com/micronucleus/micronucleus

A versão completa, com as opções que precisamos, é a v1.1. Baixe diretamente no diretório upgrade (vou explicar o porquê mais para frente):
https://github.com/micronucleus/micronucleus/tree/v1.11/upgrade/releases

O arquivo que precisamos é o:
https://github.com/micronucleus/micronucleus/blob/v1.11/upgrade/releases/micronucleus-1.11-entry-jumper-pb0-upgrade.hex

Explicando os arquivos:
- os arquivos iniciando com "micronucleus-1.11" significam que são da versão 1.11;
- o nome "upgrade" no final do arquivo será explicado mais a frente;
- o arquivo "micronucleus-1.11-entry-ext-reset-upgrade.hex" significa que o modo de programação será ativado através do reset, o pino PB5 (mostrado a figura mais a frente), e deverá ser programado através de um Arduino ou outro programador;
- o arquivo "micronucleus-1.11-entry-jumper-pb0-upgrade.hex" significa que entrará no modo de programação quando estiver com um jumper conectando o pino PB0 com o GND (negativo, ou terra);
- o arquivo "micronucleus-1.11-ledpb1-upgrade.hex" significa que o LED que está conectado ao pino PB1, sempre iniciará ligado (ON);
- o arquivo "micronucleus-1.11-upgrade.hex" é o firmware normal, com o mesmo tempo de 6s do qual já possuímos.

Pinagem do Digispark:



Decidi utilizar a versão v1.11, porque ela já vem com essas opções compiladas, facilitando o nosso trabalho. A última versão (Master) tem opções de redução do tamanho do firmware, sobrando mais espaço para o nosso sketch.

Devemos utilizar os firmware da pasta "firmware\releases" somente quando o nosso Digispark não possui quaisquer firmware gravado. No nosso caso, já possui um firmware, então, caso tente gravar, ocorrerá um seguinte erro, ao executarmos a instalação do firmware da pasta "firmware\releases":
micronucleus.exe --run micronucleus-1.11-entry_jumper_pb0.hex


O erro ocorrido é "Program file is 1856 bytes too big for the bootloader!". Por quê isso ocorre?
A questão é que nosso Digispark já possui um firmware, então o espaço disponível é muito pequeno. Para isso que serve a pasta "upgrade\releases", que é onde estão os firmware "compactados" para que seja possível atualizar uma placa que já possua um firmware. Após o upload, o firmware é expandido, passando a ocupar o espaço necessário, e todo o sketch existente é apagado.
Para maiores informações, acesse:
https://gist.github.com/valterfc/bc3828a0a85bf6c6df608b37886b1cf5

Agora, vamos gravar o firmware que desejamos. Para isso, digite no Prompt de Comando:
micronucleus.exe --run micronucleus-1.11-entry-jumper-pb0-upgrade.hex


Pronto. Agora caso desejarmos fazer qualquer operação de gravação ou consultar a versão do firmware, será necessário adicionar o jumper.






Vale observar que com a troca do firmware, ficamos com mais espaço livre disponível para nosso sketch. Mas para podermos usar esse espaço extra no Arduino IDE, será necessário fazer uma pequena configuração.
Mas isso é assunto para a próxima. Até lá.

Anúncios de Peças de Drone

Segue meus anúncios de peças para Drone:

Frame Drone Racer Diatone Silver Blade PCB 250
https://produto.mercadolivre.com.br/MLB-1174065821-frame-drone-racer-diatone-silver-blade-pcb-250-fibra-vidro-_JM


Rádio Controle Flysky FS-TH9X upgrade
https://produto.mercadolivre.com.br/MLB-1174097988-radio-controle-flysky-fs-th9x-24g-9-canais-mod-2-upgrade-_JM


4x hélices Fibra de Carbono 10x4.7
https://produto.mercadolivre.com.br/MLB-1174252738-quatro-helices-fibra-carbono-10x47-cw-ccw-drone-aeromodelo-_JM


4x hélices Fibra de Carbono 10x4.5
https://produto.mercadolivre.com.br/MLB-1174257600-quatro-helices-fibra-carbono-10x45-cw-ccw-drone-aeromodelo-_JM


4x hélices Fibra de Carbono Phantom 2 9443
https://produto.mercadolivre.com.br/MLB-1174261179-quatro-helices-fibra-carbono-phantom-dji-v2-9443-_JM




em breve terão mais