Obsah:

Blikání vlastního firmwaru na svítilnu BLF A6: 5 kroků
Blikání vlastního firmwaru na svítilnu BLF A6: 5 kroků

Video: Blikání vlastního firmwaru na svítilnu BLF A6: 5 kroků

Video: Blikání vlastního firmwaru na svítilnu BLF A6: 5 kroků
Video: Test čelovek 2 - vybírám čelovku pro vás 2024, Listopad
Anonim
Blikání vlastního firmwaru do svítilny BLF A6
Blikání vlastního firmwaru do svítilny BLF A6

Nedávno jsem dostal BLF A6. Je to velmi pěkné, ale nelíbí se mi ani jedna ze skupin výchozích režimů, takže jsem upravil firmware tak, aby používal mnou preferované jasy. Informace se sháněly těžko, proto sem dávám vše, co jsem se naučil, pro sebe i pro ostatní.

Zásoby

BLF A6 (pravděpodobně bude fungovat s jinými baterkami na bázi ATtiny)

Pinzeta / tenké kleště / malé nůžky / něco k odepnutí přídržného kroužku desky řidiče

Počítač, na kterém se bliká, nejlépe s distribucí Linuxu

USB ASP programátor / Arduino / něco, co umí AVR programování (zřejmě se doporučuje USB ASP programátor, ale já jsem použil Arduino)

Klip SOIC8 (dá se bez něj obejít, ale je velmi háklivý a vůbec se nedoporučuje)

(volitelně) Breadboard a/nebo propojovací vodiče pro snazší připojení

Krok 1: Stáhněte si firmware

Firmware pro BLF A6 (a mnoho dalších baterek) je k dispozici zde. Autor o tom mluví zde. Můžete si jej stáhnout spuštěním:

větev bzr lp: ~ toykeeper/baterka-firmware/blf-a6-final

v terminálu. (možná budete muset nainstalovat bzr)

Poznámka: v předchozí úpravě tohoto Instructable jsem místo toho použil „bzr branch lp: flashlight-firmware“. Od té doby jsem se dozvěděl, že se tím stáhne zastaralá verze se špatnými hodnotami pro off-time kondenzátor, což způsobí nepříjemné dlouhé stisknutí tlačítka. (díky tomuto vláknu na Redditu)

Požadovaná složka je blf-a6-final/ToyKeeper/blf-a6. Obsahuje zkompilovaný soubor.hex připravený k flashování (blf-a6.hex) a kód C, který můžete upravit. (blf-a6.c) Pokud chcete flashovat standardní firmware, můžete přeskočit další krok a použít pouze blf-a6.hex. Některý další firmware v tomto úložišti bude pravděpodobně také fungovat.

Krok 2: Upravte firmware

Otevřete blf-a6.c v preferovaném textovém editoru nebo IDE. Nejzajímavější řádky jsou skupiny režimů mezi řádky 116 a 131. Vypadají takto:

// Skupina režimů 1 #definuje NUM_MODES1 7 // Úrovně PWM pro velký obvod (FET nebo Nx7135) #definujte MODESNx1 0, 0, 0, 7, 56, 137, 255 // Úrovně PWM pro malý obvod (1x7135) # definujte MODES1x1 2, 20, 110, 255, 255, 255, 0 // Můj vzorek: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Krono vzorek: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47, … 6? = 68 // Rychlost PWM pro každý režim #define MODES_PWM2 RYCHLE, RYCHLE, RYCHLE, FASE

Pro každou skupinu je MODESN hodnota PWM použitá pro FET a MODES1 je hodnota PWM použitá pro 7135 v každém režimu. Číslo je mezi 0 a 255 a odpovídá jasu světla. Více informací zde. (přejděte dolů na „Regulace režimu:“) Nejsem si jistý, jaká je přesně rychlost PWM. Pokud někdo ví, napište mi to do komentářů. FET může produkovat více světla než 7135, ale 7135 udržuje úroveň světla víceméně stejnou po celou dobu životnosti baterie, zatímco FET tmavne, když dochází baterie.

Zde můžete upravit hodnoty PWM tak, aby vytvářely režimy podle vašich představ. Pravděpodobně můžete také změnit počet režimů, ale nezkoušel jsem to, protože jsem chtěl čtyři režimy, což je náhodou číslo ve druhé skupině. Chtěl jsem tmavší režim měsíčního svitu, takže jsem první nastavil na 0/1 a turbo režim mi připadal trochu zbytečný, a tak jsem jej nahradil 137/255, ekvivalentem režimu šest ve skupině sedmi režimů. V případě potřeby můžete pravděpodobně upravit zbytek kódu, ale nezkoušel jsem to.

Když máte požadovaný kód, musíte jej zkompilovat do souboru.hex. Přinejmenším potřebujete gcc-avr a avr-libc. Pokud máte problémy, podívejte se na další závislosti v souboru readme firmwaru. Úložiště obsahuje skript pro sestavení, ale nemohl jsem jej spustit. Místo toho jsem stáhl starou verzi pomocí

bzr větev lp: baterka-firmware

a zkopíroval starý skript sestavení (abych se mohl dostat do práce) přes nový. Pak jsem běžel:

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

ve složce blf-a6. (měl by existovat lepší způsob, jak to udělat)../../bin/build.sh volá skript, 13 určuje, že se vytváří pro ATtiny13 a blf-a6 určuje, že je to pro BLF A6. (duh) Měl by vám říci, jaké příkazy běží, a poskytnout vám výstup. Moje vypadá 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 bytů (99,8% plný) Data: 13 bytes (20,3% Full)

Příkazy jsou již optimalizovány pro velikost, takže pokud uvádí, že je zaplněno více než 100%, zkuste to komentovat

#define FULL_BIKING_STROBE

na lince 147 použít menší minimální stroboskop na kole. Pokud to stále nesedí, budete pravděpodobně muset někde odstranit další kód. Po dokončení kompilace by ve složce měl být soubor s názvem blf-a6.hex. Toto je váš zkompilovaný kód, připravený blikat.

Krok 3: Demontujte svítilnu

Demontujte svítilnu
Demontujte svítilnu
Demontujte svítilnu
Demontujte svítilnu
Demontujte svítilnu
Demontujte svítilnu

Odšroubujte konec žárovky proti směru hodinových ručiček. Jsou zde dva šroubové spoje. Ten blíže ke konci žárovky baterky otevírá reflektor a LED a ten blíže středu otevírá desku řidiče. Chcete ten blíže ke středu.

Uvnitř byste měli vidět pružinu baterie a pojistný kroužek se dvěma otvory. Vložte pinzetu / tenké kleště / nůžky do otvorů a otáčejte je proti směru hodinových ručiček. Je to docela tuhé a použití dvou samostatných objektů vám pravděpodobně neposkytne dostatečnou páku. Nůžky jsem použil na švýcarský armádní nůž.

Jakmile prsten vytáhnete, uvolněte desku řidiče. Stále je připevněn dvěma dráty, takže buďte opatrní. Jsou zkroucené dohromady, takže desku otáčejte tak či onak, dokud se dráty neuvolní. Až budete mít dost volného místa, otočte desku. Chcete to tak, aby byl čip s „TINY13A“výše a dostupnější. Pokud je na špatné straně, otočte jej opačným směrem. Zastrčte pružinu pod bok. Tím se dočasně udrží na místě a usnadní se přístup k čipu. Pokud s tím máte potíže, můžete pravděpodobně odšroubovat druhý spoj a odspájkovat dva dráty z druhé strany, abyste mohli desku úplně odstranit, ale nezkoušel jsem to.

Krok 4: Připojte blikající hardware

Připojte blikající hardware
Připojte blikající hardware
Připojte blikající hardware
Připojte blikající hardware
Připojte blikající hardware
Připojte blikající hardware

Nyní pomocí klipu SOIC8 propojíte čip ATtiny13 a váš programátor. Pokud mám u klipu SOIC8 červený vodič vlevo od obou konců, řada pinů blíže ke mně na konci klipu odpovídá řadě pinů blíže ke mně na konci konektoru, když konektor směřuje dolů. (viz můj super umělecký diagram) Tato příručka doporučuje použít programátor USB ASP V2.0. Pokud ano, připojte jej takto:

  • Pin 1 na ATtiny13 na pin 5 na USB ASP (reset)
  • Pin 4 na ATtiny13 na pin 10 na USB ASP (uzemnění)
  • 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)

Pokud stejně jako já používáte Arduino, musíte se trochu víc připravit. Postupujte podle kroků nula a dva této příručky:

Otevřete Arduino IDE a ujistěte se, že je Arduino připojeno k vašemu počítači. Najděte skicu ISP v nabídce Soubor> Příklady> 11. ArduinoISP> ArduinoISP a nahrajte ji do svého Arduina. Potom k němu připojte ATtiny13 takto:

  • Pin 1 na ATtiny13 na pin 10 na Arduino (reset)
  • Pin 4 na ATtiny13 na GND na Arduino (zem)
  • Pin 5 na ATtiny13 na pin 11 na Arduino (MOSI)
  • Pin 6 na ATtiny13 na pin 12 na Arduino (MISO)
  • Pin 7 na ATtiny13 na pin 13 na Arduino (SCK)
  • Pin 8 na ATtiny13 na VCC / 5V / 3,3V na Arduinu (jakýkoli by měl fungovat, ale 5V je spolehlivější) (VCC)

Také jsem nainstaloval balíček hardwaru, ale pravděpodobně to nebylo nutné. Pokud máte pochybnosti, zkuste to. Neuškodí to. Nespouštějte však zavaděč, protože vám pravděpodobně zlikviduje baterku.

Krok 5: Flash it

Abyste mohli flashovat firmware, musíte nainstalovat AVRDUDE. Chcete -li zkontrolovat, zda funguje s mým Arduino, spustím:

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

Pokud to funguje, přesunu se někam do prázdné složky 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

Vytvořit zálohu stávajícího firmwaru. A abych to flashnul, ze složky s upraveným 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 nějakého důvodu musím jako programátor zadat stk500v1 a nefungovalo to, pokud jsem nezadal port a přenosovou rychlost. Pokud používáte Arduino a máte pochybnosti, zkuste odpojit ATtiny13 od Arduina a nahrát skicu do Arduino IDE pomocí nastavení zde. Neuspěje, ale v okně konzoly by mělo být uvedeno, jaký příkaz používá. Atributy můžete zkopírovat do příkazu AVRDUDE.

Pokud používáte USB ASP programátor, místo toho spusťte:

avrdude -v -p attiny13 -c usbasp -n

Chcete -li zjistit, zda 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

Chcete -li provést zálohu a:

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

Blýsknout se.

-Uflash: w: blf-a6.hex odkazuje na soubor, který bliká. Pokud je soubor blf-a6.hex jiný, nahraďte jej názvem.

Pojistky -Ulfuse: w: 0x75: ma and -Uhfuse: w: 0xFF: m are the fuses. Váš může být jiný, proto zkontrolujte hodnoty v baterka-firmware/bin/flash-tiny13-fuses.sh.

Pokud se zobrazí chyba mimo rozsah, znamená to, že obrázek je příliš velký na to, aby se vešel na čip, a budete muset odstranit část kódu. Pokud úspěšně bliká, mělo by se zobrazit několik ukazatelů průběhu a potom říci „hotovo. Děkuji.“

Pokud je uvedeno „neplatný podpis zařízení“a propojka na vašem programátoru je nastavena na 3,3 V, zkuste ji nastavit na 5 V.

Poté, co jste jej zasvítili, znovu sestavte baterku a zkontrolujte, zda funguje. Mine udělal, ale načasování je off pro některé ̶r̶e̶a̶s̶o̶n̶.̶ dlouholetou lisů je třeba asi na tři sekundy namísto 1.5. Nevím, jestli Je to něco do činění s Arduino, nebo proto, ̶I̶'̶v̶e̶ použit nesprávné nastavení ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ pokud máte nějakou představu, ̶ dejte mi vědět v ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Edit: Opravil jsem to. (viz krok 1)

Doporučuje: