Obsah:

Blikanie vlastného firmvéru na baterku BLF A6: 5 krokov
Blikanie vlastného firmvéru na baterku BLF A6: 5 krokov

Video: Blikanie vlastného firmvéru na baterku BLF A6: 5 krokov

Video: Blikanie vlastného firmvéru na baterku BLF A6: 5 krokov
Video: 😖 Высший класс или ширпотреб? В каких версиях Focus 3 меньше проблем? 2024, Júl
Anonim
Blikanie vlastného firmvéru na baterku BLF A6
Blikanie vlastného firmvéru na baterku BLF A6

Nedávno som dostal BLF A6. Je to veľmi pekné, ale nepáči sa mi ani jedna z predvolených skupín režimov, takže som upravil firmvér tak, aby používal mnou preferované jasy. Informácie bolo ťažké nájsť, a tak tu vkladám všetko, čo som sa naučil, pre seba a ostatných.

Zásoby

BLF A6 (pravdepodobne bude fungovať s inými baterkami na báze ATtiny)

Pinzeta / tenké kliešte / malé nožnice / niečo na odopnutie poistného krúžku dosky vodiča

Počítač na flashovanie, najlepšie so spustenou distribúciou Linuxu

USB ASP programátor / Arduino / niečo, čo dokáže AVR programovanie (zrejme sa odporúča USB ASP programátor, ale použil som Arduino)

Klip SOIC8 (dá sa to urobiť aj bez, ale je to veľmi nešikovné a vôbec sa neodporúča)

(voliteľné) Breadboard a/alebo prepojovacie vodiče na uľahčenie pripojenia

Krok 1: Stiahnite si firmvér

Firmvér pre BLF A6 (a mnoho ďalších bateriek) je k dispozícii tu. Autor o tom hovorí tu. Môžete si ho stiahnuť spustením:

pobočka bzr lp: ~ toykeeper/baterka-firmware/blf-a6-final

v termináli. (možno budete musieť nainštalovať bzr)

Poznámka: v predchádzajúcej úprave tohto Instructable som namiesto toho použil „bzr branch lp: flashlight-firmware“. Odvtedy som sa dozvedel, že týmto sa sťahuje zastaraná verzia s nesprávnymi hodnotami pre off-time kondenzátor, čo spôsobuje, že tlačidlo je nepríjemne dlhé. (vďaka tomuto vláknu na Reddite)

Požadovaný priečinok je blf-a6-final/ToyKeeper/blf-a6. Obsahuje skompilovaný.hex súbor pripravený na flash (blf-a6.hex) a C kód, ktorý môžete upraviť. (blf-a6.c) Ak chcete flashovať kmeňový firmvér, môžete preskočiť nasledujúci krok a použiť iba blf-a6.hex. Pravdepodobne bude fungovať aj nejaký ďalší firmvér v tomto úložisku.

Krok 2: Upravte firmvér

Otvorte blf-a6.c v preferovanom textovom editore alebo IDE. Najzaujímavejšie riadky sú skupiny režimov medzi riadkami 116 a 131. Vyzerajú takto:

// Skupina režimov 1 #definuje NUM_MODES1 7 // Úrovne PWM pre veľký obvod (FET alebo Nx7135) #definujte MODESNx1 0, 0, 0, 7, 56, 137, 255 // Úrovne PWM pre malý obvod (1x7135) # definujte REŽIMY 1 x 1 2, 20, 110, 255, 255, 255, 0 // Moja vzorka: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Vzorka Krono: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47, … 6? = 68 // Rýchlosť PWM pre každý režim #definovať MODES_PWM1 FÁZA, RÝCHLO, RÝCHLO, RÝCHLO, RÝCHLO, RÝCHLO, FÁZOVÝ // Skupina režimov 2 #definovať NUM_MODES2 4 #definovať REŽIMY Nx2 0, 0, 90, 255 #definovať REŽIMY 1 x 2 20, 230, 255, 0 #define MODES_PWM2 RÝCHLO, RÝCHLO, RÝCHLO, FÁZOVO

Pre každú skupinu je MODESN hodnota PWM použitá pre FET a MODES1 je hodnota PWM použitá pre 7135 v každom režime. Číslo je medzi 0 a 255 a zodpovedá jasu svetla. Viac informácií tu. (prejdite nadol na „Regulácia režimu:“) Nie som si istý, aká je presne rýchlosť PWM. Ak niekto vie, dajte mi vedieť v komentároch. FET môže produkovať viac svetla ako 7135, ale 7135 udržuje úroveň svetla viac -menej rovnakú počas životnosti batérie, zatiaľ čo FET sa stmieva, keď sa vybíja batéria.

Tu môžete upraviť hodnoty PWM tak, aby vytvárali režimy podľa vašich predstáv. Pravdepodobne môžete zmeniť aj počet režimov, ale neskúšal som to, pretože som chcel štyri režimy, čo je zhoda okolností číslo v druhej skupine. Chcel som tmavší režim mesačného svitu, preto som prvý nastavil na 0/1 a turbo režim považujem za trochu zbytočný, a tak som ho nahradil 137/255, ekvivalentom režimu šesť v skupine siedmich režimov. V prípade potreby môžete pravdepodobne upraviť zvyšok kódu, ale neskúšal som to.

Keď získate požadovaný kód, musíte ho skompilovať do súboru.hex. Minimálne potrebujete gcc-avr a avr-libc. Ak máte problémy, pozrite sa na ďalšie závislosti v readme firmvéru. Úložisko obsahuje skript na zostavenie, ale nemohol som ho spustiť. Namiesto toho som si starú verziu stiahol pomocou

pobočka bzr lp: firmvér baterky

a skopíroval starý skript zostavy (aby som sa mohol dostať do práce) cez nový. Potom som bežal:

../../bin/build.sh 13 blf-a6

v priečinku blf-a6. (mal by existovať lepší spôsob, ako to urobiť)../../bin/build.sh volá skript, 13 určuje, že sa vytvára pre ATtiny13 a blf-a6 určuje, že je to pre BLF A6. (duh) Mal by vám povedať, aké príkazy beží, a poskytnúť vám výstup. Moje vyzerá takto:

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 Program: 1022 bajtov (99,8% plný) Údaje: 13 bajtov (20,3% plných)

Príkazy sú už optimalizované pre veľkosť, takže ak hovorí, že je zaplnený na viac ako 100%, skúste to komentovať

#define FULL_BIKING_STROBE

na linke 147, aby ste použili menší minimálny cyklistický blesk. Ak to stále nepasuje, pravdepodobne budete musieť niekde odstrániť ďalší kód. Keď je kompilácia dokončená, v priečinku by mal byť súbor s názvom blf-a6.hex. Toto je váš skompilovaný kód, pripravený na flash.

Krok 3: Demontujte baterku

Demontujte baterku
Demontujte baterku
Demontujte baterku
Demontujte baterku
Demontujte baterku
Demontujte baterku

Odskrutkujte koniec žiarovky proti smeru hodinových ručičiek. Tu sú dva skrutkové spoje. Ten, ktorý je bližšie k koncu žiarovky, otvára reflektor a diódu LED, a bližšie k stredu otvára dosku vodiča. Chcete ten, ktorý je bližšie k stredu.

Vnútri by ste mali vidieť pružinu batérie a poistný krúžok s dvoma otvormi. Vložte pinzetu / tenké kliešte / nožnice do otvorov a otáčajte nimi proti smeru hodinových ručičiek. Je to dosť tuhé a použitie dvoch oddelených predmetov vám pravdepodobne neposkytne dostatočné páky. Nožnice som použil na švajčiarsky armádny nôž.

Akonáhle vytiahnete prsteň, uvoľnite dosku vodiča. Stále je pripevnený dvoma drôtmi, takže buďte opatrní. Sú skrútené dohromady, takže doskou otáčajte tak či onak, kým sa vodiče neuvoľnia. Keď máte dostatok priestoru, prevráťte dosku. Chcete to tak, aby čip, na ktorom je „TINY13A“, bol vyššie a prístupnejší. Ak je na zlej strane, otočte ho opačným smerom. Zastrčte pružinu pod bok. To ho dočasne udrží na mieste a uľahčí vám prístup k čipu. Ak s tým máte problémy, pravdepodobne môžete odskrutkovať druhé spojenie a odpájať dva vodiče z druhej strany, aby ste mohli dosku úplne odstrániť, ale neskúsil som to.

Krok 4: Pripojte blikajúci hardvér

Pripojte blikajúci hardvér
Pripojte blikajúci hardvér
Pripojte blikajúci hardvér
Pripojte blikajúci hardvér
Pripojte blikajúci hardvér
Pripojte blikajúci hardvér

Teraz pomocou klipu SOIC8 prepojíte čip ATtiny13 a programátor. Ak mám pri mojej svorke SOIC8 červený vodič naľavo od oboch koncov, rad kolíkov bližšie ku mne na konci spony zodpovedá radu kolíkov bližšie ku mne na konci konektora, keď konektor smeruje nadol. (pozri môj super umelecký diagram) Táto príručka odporúča použiť programátor USB ASP V2.0. Ak to urobíte, pripojte ho takto:

  • Pin 1 na ATtiny13 na pin 5 na USB ASP (reset)
  • Pin 4 na ATtiny13 na pin 10 na USB ASP (uzemnenie)
  • Pin 5 na ATtiny13 na pin 1 na USB ASP (MOSI)
  • Pin 6 na ATtiny13 na pin 9 na USB ASP (MISO)
  • Pin 7 na ATtiny13 na pin 7 na USB ASP (SCK)
  • Pin 8 na ATtiny13 na pin 2 na USB ASP (VCC)

Ak ako ja používate Arduino, musíte sa trochu viac pripraviť. Vykonajte kroky nula a dva tejto príručky:

Otvorte Arduino IDE a uistite sa, že je Arduino pripojené k počítaču. Nájdite náčrt ISP v Súbor> Príklady> 11. ArduinoISP> ArduinoISP a nahrajte ho do svojho Arduina. Potom k nemu pripojte ATtiny13 takto:

  • Pin 1 na ATtiny13 až pin 10 na Arduino (reset)
  • Kolík 4 na ATtiny13 na GND na Arduino (zem)
  • Kolík 5 na ATtiny13 až pin 11 na Arduino (MOSI)
  • Pin 6 na ATtiny13 až pin 12 na Arduino (MISO)
  • Pin 7 na ATtiny13 na pin 13 na Arduino (SCK)
  • Kolík 8 na ATtiny13 na VCC / 5V / 3,3 V na Arduine (každý by mal fungovať, ale 5 V je spoľahlivejší) (VCC)

Nainštaloval som si aj hardvérový balík, ale pravdepodobne to nebolo potrebné. Ak máte pochybnosti, vyskúšajte to. Neuškodí to. Nespúšťajte však bootloader, pretože by vám pravdepodobne zničil baterku.

Krok 5: Flash to

Na spustenie firmvéru je potrebné nainštalovať AVRDUDE. Aby som skontroloval, či to funguje s mojím Arduinom, spustím:

avrdude -v -p attiny13 -c stk500v1 -P /dev /ttyUSB0 -b 19200 -n

Ak to funguje, presuniem sa niekde do prázdneho priečinka a spustím:

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

Vytvorenie zálohy existujúceho firmvéru. A aby som to zopakoval, z priečinka s upraveným súborom blf-a6.hex spustím:

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

Z nejakého dôvodu musím ako programátor špecifikovať stk500v1 a nefungovalo to, pokiaľ som nezadal port a prenosovú rýchlosť. Ak používate Arduino a máte pochybnosti, skúste odpojiť ATtiny13 od Arduina a nahrať skicu do Arduino IDE pomocou nastavení tu. Zlyhá, ale v okne konzoly by malo byť uvedené, aký príkaz používa. Atribúty môžete skopírovať do príkazu AVRDUDE.

Ak používate programátor USB ASP, namiesto toho spustite:

avrdude -v -p attiny13 -c usbasp -n

Ak chcete zistiť, či funguje, a:

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

Vytvorte zálohu a:

avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf -a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m

Blysnúť to.

-Uflash: w: blf-a6.hex odkazuje na súbor, ktorý bliká. Ak je súbor blf-a6.hex odlišný, nahraďte ho názvom súboru.

-Ulfuse: w: 0x75: m and -Uhfuse: w: 0xFF: m are the fuses. Váš môže byť iný, preto dvakrát skontrolujte hodnoty v súbore baterky-firmvér/bin/flash-tiny13-fuses.sh.

Ak sa zobrazí chyba mimo rozsahu, znamená to, že obrázok je príliš veľký na to, aby sa zmestil na čip, a budete musieť odstrániť časť kódu. Ak úspešne bliká, malo by sa zobraziť niekoľko indikátorov priebehu a potom povedať „hotovo. Ďakujem.“

Ak je na ňom napísané „neplatný podpis zariadenia“a prepojka na vašom programátore je nastavená na 3,3 V, skúste ho nastaviť na 5 V.

Potom, čo ste ho blikali, znova zložte baterku a skontrolujte, či funguje. Mine urobil, ale načasovanie je off pre niektoré ̶r̶e̶a̶s̶o̶n̶.̶ dlhoročnou lisov treba asi na tri sekundy namiesto 1.5. Neviem, či Je to niečo do činenia s Arduino, alebo preto, ̶I̶'̶v̶e̶ použitý nesprávne nastavenie ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ ak máte nejakú predstavu, ̶ dajte mi vedieť v ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Edit: Opravil som to. (pozri krok 1)

Odporúča: