Índice:
- Suprimentos
- Etapa 1: Baixe o Firmware
- Etapa 2: modificar o firmware
- Etapa 3: desmonte a lanterna
- Etapa 4: Conecte o Hardware Flash
- Etapa 5: Flash It
Vídeo: Flash de firmware personalizado para uma lanterna BLF A6: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Recentemente, comprei um BLF A6. É muito bom, mas não gosto de nenhum dos grupos de modo padrão, então modifiquei o firmware para usar meus brilhos preferidos. A informação foi difícil de encontrar, então estou colocando tudo o que aprendi aqui para mim e para os outros.
Suprimentos
BLF A6 (provavelmente funcionará com outras lanternas baseadas em ATtiny)
Pinças / alicates finos / tesouras pequenas / algo para desfazer o anel de retenção da placa do driver
Computador para usar o flash, de preferência executando uma distribuição Linux
Programador USB ASP / Arduino / algo que pode fazer programação AVR (aparentemente, o programador USB ASP é recomendado, mas usei um Arduino)
Clipe SOIC8 (é possível dispensar, mas é muito complicado e nada recomendado)
(opcional) Placa de ensaio e / ou fios de jumper para tornar a conexão mais fácil
Etapa 1: Baixe o Firmware
O firmware para o BLF A6 (e muitas outras lanternas) está disponível aqui. O autor fala sobre isso aqui. Você pode baixá-lo executando:
bzr branch lp: ~ toykeeper / flashlight-firmware / blf-a6-final
em um terminal. (pode ser necessário instalar o bzr)
Nota: em uma edição anterior deste Instructable, usei "bzr branch lp: flashlight-firmware". Desde então, aprendi que isso baixa uma versão desatualizada com valores errados para o capacitor off-time, tornando os pressionamentos de botão desconfortavelmente longos. (graças a este tópico no Reddit)
A pasta desejada é blf-a6-final / ToyKeeper / blf-a6. Ele contém um arquivo.hex compilado pronto para piscar (blf-a6.hex) e o código C que você pode modificar. (blf-a6.c) Se você deseja atualizar o firmware padrão, pode pular a próxima etapa e apenas usar blf-a6.hex. Alguns dos outros firmware nesse repositório provavelmente funcionarão também.
Etapa 2: modificar o firmware
Abra blf-a6.c em seu editor de texto ou IDE preferido. As linhas mais interessantes são os grupos de modo entre as linhas 116 e 131. Eles se parecem com isto:
// Grupo de modo 1 # define NUM_MODES1 7 // Níveis PWM para o circuito grande (FET ou Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // Níveis PWM para o circuito pequeno (1x7135) # define MODES1x1 2, 20, 110, 255, 255, 255, 0 // Minha amostra: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Amostra Krono: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // Velocidade PWM para cada modo # define MODES_PWM1 FASE, RÁPIDO, RÁPIDO, RÁPIDO, RÁPIDO, RÁPIDO, FASE // Grupo de modo 2 # define NUM_MODES2 4 # define MODESNx2 0, 0, 90, 255 # define MODES1x2 20, 230, 255, 0 # define MODES_PWM2 RÁPIDO, RÁPIDO, RÁPIDO, FASE
Para cada grupo, MODESN é o valor PWM usado para o FET e MODES1 é o valor PWM usado para o 7135 em cada modo. O número está entre 0 e 255 e corresponde ao brilho da luz. Mais informações aqui. (role para baixo até "Modo de regulação:") Não tenho certeza de qual é a velocidade do PWM exatamente. Se alguém souber, me diga nos comentários. O FET pode produzir mais luz do que o 7135, mas o 7135 mantém o nível de luz mais ou menos o mesmo durante a vida útil da bateria, enquanto o FET fica mais escuro à medida que fica sem bateria.
Aqui você pode ajustar os valores de PWM para produzir os modos de sua preferência. Provavelmente, você também pode alterar o número de modos, mas não tentei porque queria quatro modos, que por acaso é o número do segundo grupo. Eu queria um modo de luar mais escuro, então configurei o primeiro para 0/1 e achei o modo turbo um pouco inútil, então o substituí por 137/255, o equivalente ao modo seis no grupo de sete modos. Você provavelmente pode modificar o resto do código se necessário, mas não tentei.
Quando você tiver o código que deseja, terá que compilá-lo em um arquivo.hex. No mínimo, você precisa de gcc-avr e avr-libc. Se você tiver problemas, examine as outras dependências no leia-me do firmware. O repositório inclui um script de construção, mas não consegui fazê-lo funcionar. Em vez disso, baixei a versão antiga com
bzr branch lp: flashlight-firmware
e copiei o script de construção antigo (que eu poderia começar a trabalhar) sobre o novo. Então eu corri:
../../bin/build.sh 13 blf-a6
na pasta blf-a6. (deve haver uma maneira melhor de fazer isso) O../../bin/build.sh chama o script, o 13 especifica que está sendo construído para um ATtiny13 e o blf-a6 especifica que é para o BLF A6. (duh) Ele deve informar quais comandos está executando e fornecer a saída. O meu é assim:
avr-gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89-inline -DATTINY = 13 -I.. -I../.. -I../../.. -fshort -enums -o blf-a6.o -c blf-a6.cavr-gcc -Wall -g -Os -mmcu = attiny13 -fgnu89-inline -o blf-a6.elf blf-a6.o avr-objcopy --set -section-flags =.eeprom = alloc, load --change-section-lma.eeprom = 0 --no-change-warnings -O ihex blf-a6.elf blf-a6.hex Programa: 1022 bytes (99,8% Full) Dados: 13 bytes (20,3% completo)
Os comandos já estão otimizados para tamanho, então se disser que está mais de 100% cheio, tente comentar
#define FULL_BIKING_STROBE
na linha 147 para usar o estroboscópio de bicicleta mínimo menor. Se ainda não couber, você provavelmente terá que remover mais código em algum lugar. Quando terminar de compilar, deve haver um arquivo chamado blf-a6.hex na pasta. Este é o seu código compilado, pronto para piscar.
Etapa 3: desmonte a lanterna
Desaparafuse a extremidade da lâmpada no sentido anti-horário. Existem duas juntas de parafuso aqui. O que está mais perto da ponta da lâmpada da lanterna abre o refletor e o LED, e o que está mais perto do meio abre a placa do driver. Você quer aquele mais perto do meio.
Dentro, você deve ver a mola da bateria e um anel de retenção com dois orifícios. Insira suas pinças / alicates finos / tesouras nos orifícios e gire-os no sentido anti-horário. É bastante rígido e usar dois objetos separados provavelmente não lhe dará força suficiente. Usei a tesoura em um canivete suíço.
Depois de tirar o anel, liberte a placa do driver. Ele ainda está conectado com dois fios, então tome cuidado. Eles estão torcidos juntos, então gire a placa de uma forma ou de outra até que os fios se soltem. Quando você tiver margem de manobra suficiente, vire o tabuleiro. Você deseja que o chip com "TINY13A" fique mais alto e mais acessível. Se estiver do lado errado, vire para o outro lado. Coloque a mola embaixo da lateral. Isso o manterá temporariamente no lugar e tornará mais fácil chegar ao chip. Se você tiver problemas com isso, provavelmente poderá desparafusar a outra junta e dessoldar os dois fios do outro lado para que possa remover a placa completamente, mas não tentei.
Etapa 4: Conecte o Hardware Flash
Agora você usa o clipe SOIC8 para conectar o chip ATtiny13 e seu programador. Com meu clipe SOIC8, se eu tiver o fio vermelho à esquerda de ambas as extremidades, a fileira de pinos mais perto de mim na ponta do clipe corresponde à fileira de pinos mais perto de mim na ponta do conector, quando o conector está voltado para baixo. (veja meu diagrama super artístico) Este guia recomenda que você use um programador USB ASP V2.0. Se você fizer isso, conecte-o assim:
- Pino 1 no ATtiny13 ao pino 5 no USB ASP (redefinir)
- Pino 4 no ATtiny13 ao pino 10 no USB ASP (terra)
- Pino 5 no ATtiny13 ao pino 1 no USB ASP (MOSI)
- Pino 6 no ATtiny13 ao pino 9 no USB ASP (MISO)
- Pino 7 no ATtiny13 ao pino 7 no USB ASP (SCK)
- Pino 8 no ATtiny13 ao pino 2 no USB ASP (VCC)
Se, como eu, você está usando um Arduino, precisa se preparar um pouco mais. Siga as etapas zero e dois deste guia:
Abra o IDE do Arduino e verifique se o Arduino está conectado ao computador. Encontre o esboço do ISP em Arquivo> Exemplos> 11. ArduinoISP> ArduinoISP e carregue-o em seu Arduino. Em seguida, conecte o ATtiny13 a ele assim:
- Pino 1 no ATtiny13 ao pino 10 no Arduino (redefinir)
- Pino 4 no ATtiny13 para GND no Arduino (terra)
- Pino 5 no ATtiny13 ao pino 11 no Arduino (MOSI)
- Pino 6 no ATtiny13 ao pino 12 no Arduino (MISO)
- Pino 7 no ATtiny13 ao pino 13 no Arduino (SCK)
- Pino 8 no ATtiny13 para VCC / 5V / 3,3V no Arduino (qualquer um deve funcionar, mas 5V é mais confiável) (VCC)
Eu instalei o pacote de hardware também, mas provavelmente não foi necessário. Em caso de dúvida, experimente. Não fará mal nenhum. Mas não queime o bootloader porque provavelmente irá danificar sua lanterna.
Etapa 5: Flash It
Para fazer o flash do firmware, você precisa instalar o AVRDUDE. Para verificar se funciona com meu Arduino, executo:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Se funcionar, vou para uma pasta vazia em algum lugar e executo:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: r: flash-dump.hex: i -Ueeprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse -dump.hex: i -Uhfuse: r: hfuse-dump.hex: i
Para fazer um backup do firmware existente. E para piscar, da pasta com o blf-a6.hex modificado eu corro:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Por algum motivo, tenho que especificar stk500v1 como o programador e não funcionou a menos que eu especificasse a porta e a taxa de transmissão. Se você estiver usando um Arduino e estiver em dúvida, tente desconectar seu ATtiny13 do Arduino e enviar um esboço no IDE do Arduino usando as configurações aqui. Ele falhará, mas deve informar qual comando está usando na janela do console. Você pode copiar os atributos em seu comando AVRDUDE.
Se você estiver usando um programador USB ASP, execute:
avrdude -v -p attiny13 -c usbasp -n
Para ver se funciona e:
avrdude -v -p attiny13 -c usbasp -u -Uflash: r: flash-dump.hex: i -Ueeprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse-dump.hex: i -Uhfuse: r: hfuse-dump.hex: i
Para fazer um backup e:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Para piscar.
-Uflash: w: blf-a6.hex refere-se ao arquivo que está piscando. Substitua blf-a6.hex pelo nome do arquivo se for diferente.
-Ulfuse: w: 0x75: me -Uhfuse: w: 0xFF: m são os fusíveis. O seu pode ser diferente, portanto, verifique os valores em flashlight-firmware / bin / flash-tiny13-fuses.sh.
Se der um erro fora do intervalo, significa que a imagem é muito grande para caber no chip e você tem que remover parte do código. Se ele piscar com sucesso, ele deve exibir algumas barras de progresso e dizer "avrdude done. Obrigado."
Se disser "assinatura de dispositivo inválida" e o jumper no seu programador estiver definido para 3,3v, tente defini-lo para 5v.
Depois de acendê-la, monte novamente sua lanterna e veja se funciona. Meu fez, mas o tempo está fora por algum ̶r̶e̶a̶s̶o̶n̶.̶ a longo pressiona precisam ser cerca de três segundos, em vez de ̶1̶.̶5̶.̶ Eu não sei se este estiver algo a ver com o Arduino ou porque Ive usado as configurações erradas das ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Se você tiver alguma idéia, ̶ deixe-me saber nos ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶
Edit: eu consertei. (veja a etapa 1)
Recomendado:
Lanterna Jack-O-Lanterna para usar: 5 etapas (com fotos)
Lanterna Jack-O-Lanterna para Vestir: Aqui está um ótimo projeto impresso em 3D a ser realizado antes do Halloween. Siga as etapas abaixo, para se tornar uma Jack-O-Lanterna Wearable Light Up 3D impressa, que você pode usar no pescoço ou colocar em sua mesa de trabalho para entrar no Hallowe
Nightvision Laserbeak! (OU como fazer uma lanterna para preservação Nightvision, LED Throwie, Transformer Toy Mashup!): 5 etapas
Nightvision Laserbeak! (OU Como fazer uma lanterna de preservação de visão noturna, LED Throwie, Transformer Toy Mashup!): Instrutível por um novato para o novato. O que você ganha quando mistura uma lanterna de preservação noturna, uma LED throwie e um elegante Transformer brinquedo? Um instrutível com um nome muito longo! Vamos chamá-lo de " Nightvision Laserbeak " para
Firmware de comando Flash AT para módulo ESP01 (requer um adaptador USB para TTL): 5 etapas
Firmware de comando Flash AT para módulo ESP01 (requer um adaptador USB para TTL): Por Jay Amiel AjocGensan PHfacebook.com/geeamealyoutube.com/jayamielajoc
Converter uma lanterna 3xAAA em uma célula de lítio 18650: 9 etapas
Converter uma lanterna 3xAAA em uma célula de lítio 18650: Isso pode não se aplicar a todas as lanternas 3x AAA, mas com alguns compassos e bom senso, você provavelmente pode verificar por si mesmo
Como transformar uma lanterna velha em uma LED: 4 etapas
Como transformar uma lanterna velha em uma lanterna de LED: Neste instrutível, mostrarei como transformar este modelo clássico de lanterna em uma nova lanterna de LED. Basicamente, substituindo a lâmpada antiga por um monte de LEDs