» Temas » Reparação, modernização »Como piscar uma lanterna para alterar os modos de operação

Como piscar uma lanterna para alterar os modos de operação


O autor deste material não gostou dos modos normais de operação da lanterna BLF A6. Então ele decidiu piscar a parte do software da lanterna, definindo seus modos. Como se viu, isso não é tão simples, há um mínimo de informações sobre o firmware e pinagens e ele teve que coletá-lo pouco a pouco. E para que ela não se perdesse, ele decidiu ajudar os outros e organizar tudo em um artigo.

Portanto, para o trabalho, você precisará do seguinte:
Lanterna BLF A6 (provavelmente isso funcionará com outras lanternas baseadas no ATtiny).
Pinça / alicate fino / tesoura pequena.
Um computador para firmware, de preferência com uma distribuição Linux.
Programador / ASP USB Arduino / algo que a programação AVR pode fazer (obviamente, o programador USB ASP é melhor, mas o assistente usou o Arduino).
Amplificador ferroviário a ferroviário de alta velocidade [SOIC-8] (você pode ficar sem ele, mas é muito inconveniente).
Placa de desenvolvimento e fios de jumper para conexão.

Firmware.
Está disponível firmware para BLF A6 (e muitas outras lanternas) aqui. Um fórum de discussão está disponível neste o link.
Você pode baixar o firmware executando a pesquisa "bzr branch lp: flashlight-firmware". Precisa de lanterna-firmware / ToyKeeper / pasta blf-a6. Ele contém um arquivo compilado. hex, pronto para firmware (blf-a6.hex) e código C, que também pode ser alterado (blf-a6.c). Se você deseja atualizar o firmware padrão, pode pular a próxima etapa e usar blf-a6.hex. Algum outro firmware neste repositório provavelmente funcionará também.

Mude o firmware.
Cuidado símbolos, para não distorcer o significado, são dados sem tradução.
Abra blf-a6.c no seu editor de texto ou IDE preferido. As linhas mais interessantes são os grupos de modos entre as linhas 94 e 109. Eles são assim:
// Grupo de modos 1
#define NUM_MODES1 7
// Níveis de PWM para o grande circuito (FET ou Nx7135)
#define MODESNx1 0,0,0,7,56.137.255
// Níveis de PWM para o pequeno circuito (1x7135)
#define MODES1x1 3,20,110,255,255,255,0
// Minha amostra: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32)
// Amostra de 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 modos 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 FET e MODES1 é o valor PWM usado para 7135 em cada modo. O número está no intervalo de 0 a 255 e corresponde ao brilho da luz. Mais informação
aqui. (role para baixo até "Controle de modo:") O mestre não tem certeza de qual é a velocidade do PWM.Se alguém souber, me diga nos comentários. Um transistor de efeito de campo pode produzir mais luz que 7135, mas 7135 mantém o nível de luz mais ou menos o mesmo durante toda a vida útil da bateria, enquanto, ao usar um transistor de efeito de campo, a luz diminui quando a bateria se esgota.

Aqui podemos ajustar os valores de PWM para criar modos ao nosso gosto. Você também pode alterar o número de modos, mas o mestre não fez isso porque ele precisa de quatro modos, e este é o número no segundo grupo. Ele queria um regime de luar mais escuro e, portanto, definiu o primeiro como 0/1. Ele também considera o modo turbo um pouco inútil, então substituí-o por 137/255, que é equivalente ao sexto modo em um grupo de sete modos.

Quando você possui o código necessário, é necessário compilá-lo em um arquivo .hex. Pelo menos você precisa de gcc-avr e avr-libc. Se você tiver problemas, consulte outras dependências no arquivo leia-me. O repositório inclui um script de construção, portanto, tudo o que você precisa fazer é executar:
../../bin/build.sh 13 blf-a6
na pasta blf-a6. ../../Bin/build.sh é o script. 13 indica que é para ATtiny13 e blf-a6 indica que é para BLF A6.
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.c
avr-gcc -Wall -g -Os -mmcu = attiny13 -fgnu89-inline -o blf-a6.elf blf-a6.o
avr-objcopy --set-section-flags = .eeprom = aloca, carrega --change-section-lma .eeprom = 0 --não-altera-avisos -O ihex blf-a6.elf blf-a6.hex
Programa: 1022 bytes (99,8% completo)
dados: 13 bytes (20,3% completo)
As equipes já estão otimizadas em tamanho; portanto, se estiver escrito que elas estão mais do que 100% cheias, tente excluir
#define FULL_BIKING_STROBE

Linha 125 feitiços pequenos bicicleta luz estroboscópica. Se isso não for suficiente, outra coisa terá que ser cortada.
Quando a compilação estiver concluída, a pasta deverá conter um arquivo chamado blf-a6.hex. Este é um código compilado, pronto para o firmware.

Desmontando a lanterna.
Desaparafusar o farol da lanterna. Existem duas conexões de parafuso. O mais próximo do corpo da lanterna fixa o refletor e o LED, e o mais próximo ao meio corrige a placa. Nós precisamos de uma média.

Dentro, você verá um anel de pressão com uma mola e dois orifícios nas bordas. Insira uma pinça / alicate fino / tesoura nos orifícios e gire-os no sentido anti-horário.

Depois que o anel for removido, você terá acesso ao quadro. Ainda está conectado com dois fios, portanto, tenha cuidado. Eles são torcidos juntos, então gire a placa até que os fios estejam soltos. Depois vire o quadro. É necessário que o chip com a inscrição "TINY13A" fique mais acessível.

Se os fios forem curtos e não derem certo, é necessário remover a placa.






Conexão.
Agora você precisa preparar a placa para o firmware.
O assistente usa o SOIC8 para conectar o chip ATtiny13 e o programador.
Como piscar uma lanterna para alterar os modos de operação



Veja a foto enquanto o assistente faz a conexão. Observe a linha vermelha na segunda figura.

Se você usa o programador USB ASP V2.0, é necessário conectá-lo assim:
Pino 1 em ATtiny13 - Pino 5 em USB ASP (redefinição)
Pino 4 em ATtiny13 - Pino 10 em ASP USB (terra)
Pino 5 em ATtiny13 - Pino 1 em USB ASP (MOSI)
Pino 6 em ATtiny13 - Pino 9 em USB ASP (MISO)
Pino 7 em ATtiny13 - Pino 7 em USB ASP (SCK)
Pino 8 em ATtiny13 - Pino 2 em USB ASP (VCC)

Se você usa o Arduino, como o assistente, siga estas etapas:
Abra o IDE do Arduino e verifique se o seu Arduino está conectado ao computador. Encontre o esboço do ISP em Arquivo> Exemplos> 11.ArduinoISP> ArduinoISP e faça o upload para o Arduino. Em seguida, conecte o ATtiny13 a ele da seguinte maneira:
Pino 1 no ATtiny13 - Pino 10 no Arduino (redefinir)
Pino 4 no ATtiny13 - GND no Arduino (terra)
Pino 5 em ATtiny13 - Pino 11 em Arduino (MOSI)
Pino 6 em ATtiny13 - Pino 12 em Arduino (MISO)
Pino 7 em ATtiny13 - Pino 13 em Arduino (SCK)
Pino 8 no ATtiny13 - VCC / 5V ou 3.3V no Arduino (5V de preferência)

Firmware.
Etapa 5: faça o flash
Para firmware, você deve instalar o AVRDUDE. Para verificar se isso funciona com o Arduino, o assistente grava um comando:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Se isso funcionar, vá para a pasta vazia e registre-se:
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
Faça uma cópia de backup do firmware existente. Para piscar, a partir da pasta com o blf-a6.hex modificado, ele inicia:
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
Você precisa especificar stk500v1 como programador e especificar a velocidade da porta e da transferência de dados. Se você estiver usando o Arduino e estiver em dúvida, tente desconectar o ATtiny13 do Arduino e faça o upload do esboço no IDE do Arduino usando essas configurações. Isso falhará, mas você descobrirá qual comando é usado na janela do console. Em seguida, você pode copiar os atributos para o comando AVRDUDE.

Se você estiver usando um programador USB ASP, execute:
avrdude -v -p attiny13 -c usbasp -n
Para ver se isso funciona:
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
Faça um backup:
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. Substitua blf-a6.hex pelo nome do arquivo, se for diferente.
-Ulfuse: w: 0x75: me -Uhfuse: w: 0xFF: m
Se ocorrer um erro, isso significa que o arquivo de imagem é muito grande para caber no chip e você precisará excluir parte do código. Se tudo estiver normal, alguns indicadores de progresso devem ser exibidos e as palavras "avrdude done. Obrigado".
Depois de piscar o chip, monte a lanterna e veja se ela funciona.
A pergunta \ tópico é publicada automaticamente no social. rede do site - fique atento às respostas:

Apropriado para o tópico

Tópicos relacionados

Adicionar um comentário

    • sorrirsorrisosxaxaoknão seiyahoonea
      chefearranhartolosimsim simagressivosegredo
      desculpedançardance2dance3perdãoajudabebidas
      pararamigosbomgoodgoodapitodesmaiarlíngua
      fumaçapalmascraydeclararirônicodon-t_mentionbaixar
      calorirritantelaugh1mdareuniãomoskingnegativo
      not_ipipocapunirlerassustarsustospesquisar
      provocarthank_youistoto_clueumnikagudoconcordar
      malbeeeblack_eyeblum3corargabar-setédio
      censuradobrincadeirasecret2ameaçarvitóriayusun_bespectacled
      sacudirrespektlolpreviubem vindoKrutoyya_za
      ya_dobryiajudantene_huliganne_othodifludproibirfechar

Aconselhamos que você leia:

Entregue-o para o smartphone ...