» Témata » Opravy, modernizace »Jak blikat baterku pro změnu provozních režimů

Jak blesk baterku změnit provozní režimy


Autor tohoto materiálu neměl rád normální režimy provozu baterky BLF A6. Poté se rozhodl zablokovat softwarovou část baterky a nastavit její režimy. Jak se ukázalo, není to tak jednoduché, existuje jen minimum informací o firmwaru a pinoutech a musel je sbírat kousek po kousku. A aby se neztratila, rozhodl se pomoci ostatním a uspořádat vše do článku.

Pro práci budete tedy potřebovat:
Svítilna BLF A6 (pravděpodobně to bude fungovat s jinými baterkami založenými na ATtiny).
Pinzeta / kleště / malé nůžky.
Počítač pro firmware, nejlépe s distribucí Linuxu.
USB ASP / Programátor Arduino / něco, co dokáže programování AVR (samozřejmě, programátor USB ASP je lepší, ale průvodce použil Arduino).
Vysokorychlostní zesilovač Rail-to-Rail [SOIC-8] (bez něj se můžete obejít, ale je to velmi nepohodlné).
Vývojové desky a propojovací vodiče pro připojení.

Firmware.
Firmware pro BLF A6 (a mnoho dalších baterek) je k dispozici zde. K tomu je k dispozici diskusní fórum odkaz.
Firmware si můžete stáhnout spuštěním hledání „bzr branch lp: flashlight-firmware“. Potřebujete složku s firmwarem / ToyKeeper / blf-a6. Obsahuje kompilovaný soubor. hex, připravený na firmware (blf-a6.hex) a C kód, který lze také změnit (blf-a6.c). Pokud chcete flash firmware na skladě, můžete přeskočit další krok a použít pouze blf-a6.hex. V tomto úložišti bude pravděpodobně fungovat i jiný firmware.

Změnit firmware.
Pozor symboly, aby nedošlo ke zkreslení významu, jsou dány bez překladu.
Otevřete blf-a6.c ve svém preferovaném textovém editoru nebo IDE. Nejzajímavější řádky jsou skupiny režimů mezi řádky 94 a 109. Vypadají takto:
// Skupina režimů 1
#definovat NUM_MODES1 7
// PWM úrovně pro velký obvod (FET nebo Nx7135)
#define MODESNx1 0,0,0,7,56,137,255
// PWM úrovně pro malý obvod (1x7135)
#definovat MODES1x1 3,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_PWM1 FÁZE, RYCHLÉ, RYCHLÉ, RYCHLÉ, RYCHLÉ, RYCHLÉ, FÁZOVÉ
// Skupina režimů 2
#definovat NUM_MODES2 4
#define MODESNx2 0,0,90,255
#definovat MODES1x2 20 230 255,0
#define MODES_PWM2 RYCHLÝ, RYCHLÝ, RYCHLÝ, FÁZOVÝ

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 v rozsahu od 0 do 255 a odpovídá jasu světla. Více informací
zde. (přejděte dolů na "Ovládání režimu:") Master si není jistý, jaká je rychlost PWM.Pokud to někdo ví, řekněte mi to v komentářích. Tranzistor s polním efektem 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 při použití tranzistoru s polním efektem se světlo při vybití baterie ztmavne.

Zde můžeme upravit hodnoty PWM a vytvářet režimy podle našeho vkusu. Můžete také změnit počet režimů, ale master to neudělal, protože potřebuje čtyři režimy, a to je počet ve druhé skupině. Chtěl tmavší režim měsíčního svitu, a proto nastavil první na 0/1. Turbo režim také považuje za zbytečný, takže jsem jej nahradil 137/255, což je ekvivalent šestého režimu ve skupině sedmi režimů.

Pokud potřebujete kód, musíte jej zkompilovat do souboru .hex. Alespoň potřebujete gcc-avr a avr-libc. Pokud máte problémy, podívejte se na další závislosti v souboru readme. Úložiště obsahuje skript sestavení, takže vše, co musíte udělat, je spustit:
../../bin/build.sh 13 blf-a6
ve složce blf-a6. ../../Bin/build.sh je skript. 13 ukazuje, že je pro ATtiny13, a blf-a6 znamená, že je pro 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 = alloc, load --change-section-lma .eeprom = 0 - no-change-warning -O ihex blf-a6.elf blf-a6.hex
Program: 1022 bytů (99,8% plný)
data: 13 bytů (20,3% plné)
Týmy jsou již optimalizovány co do velikosti, takže pokud je napsáno, že jsou více než 100% plné, zkuste vymazat
#define FULL_BIKING_STROBE

Linka 125 kouzla malá kolo bleskové světlo. Pokud to nestačí, bude se muset snížit něco jiného.
Po dokončení kompilace by složka měla obsahovat soubor s názvem blf-a6.hex. Toto je kompilovaný kód, připravený pro firmware.

Demontáž baterky.
Odšroubujte světlomet. Existují dvě šroubová spojení. Ten, který je blíže k tělu svítilny, fixuje reflektor a LED a ten, který je blíže ke středu, upevní desku. Potřebujeme průměr.

Uvnitř uvidíte pojistný kroužek s pružinou a dvěma otvory podél okrajů. Vložte do otvorů pinzetu / tenké kleště / nůžky a otočte je proti směru hodinových ručiček.

Jakmile je prsten odstraněn, budete mít přístup k desce. Je stále připevněn dvěma dráty, takže buďte opatrní. Jsou zkrouceny dohromady, takže otáčejte deskou, dokud nejsou dráty uvolněné. Poté otočte desku. Je nutné, aby byl čip s nápisem „TINY13A“ přístupnější.

Pokud jsou dráty krátké a nefunguje to, musíte desku odstranit.






Připojení.
Nyní musíte připravit desku na firmware.
Průvodce používá rozhraní SOIC8 k propojení čipu ATtiny13 a programátoru.
Jak blesk baterku změnit provozní režimy



Podívejte se na fotografii, jak průvodce vytváří spojení. Všimněte si červené čáry na druhém obrázku.

Pokud používáte programátor USB ASP V2.0, musíte jej připojit takto:
Pin 1 na ATtiny13 - Pin 5 na USB ASP (reset)
Pin 4 na ATtiny13 - Pin 10 na USB ASP (zem)
Pin 5 na ATtiny13 - Pin 1 na USB ASP (MOSI)
Pin 6 na ATtiny13 - Pin 9 na USB ASP (MISO)
Pin 7 na ATtiny13 - Pin 7 na USB ASP (SCK)
Pin 8 na ATtiny13 - Pin 2 na USB ASP (VCC)

Pokud používáte Arduino, jako průvodce, postupujte takto:
Otevřete Arduino IDE a ujistěte se, že je Arduino připojeno k počítači. Najděte skicu ISP v nabídce Soubor> Příklady> 11.ArduinoISP> ArduinoISP a nahrajte ji do Arduino. Poté k němu připojte ATtiny13 takto:
Pin 1 na ATtiny13 - Pin 10 na Arduino (reset)
Pin 4 na ATtiny13 - GND na Arduino (Ground)
Pin 5 na ATtiny13 - Pin 11 na Arduino (MOSI)
Pin 6 na ATtiny13 - Pin 12 na Arduino (MISO)
Pin 7 na ATtiny13 - Pin 13 na Arduino (SCK)
Pin 8 na ATtiny13 - VCC / 5V nebo 3,3 V na Arduino (5V upřednostňováno)

Firmware.
Krok 5: blesk
Pro firmware musíte nainstalovat AVRDUDE. Chcete-li zkontrolovat, zda to funguje s Arduino, píše průvodce příkaz:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Pokud to funguje, přejděte do prázdné složky a zaregistrujte se:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: r: flash-dump.hex: i -Ueprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse -dump.hex: i -Uhfuse: r: hfuse-dump.hex: i
Vytvořte záložní kopii existujícího firmwaru. Chcete-li flash, ze složky s upraveným blf-a6.hex se spustí:
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
Jako programátor musíte zadat stk500v1 a zadat rychlost přenosu portů a dat. Pokud používáte Arduino a máte pochybnosti, zkuste odpojit ATtiny13 od Arduino a nahrát skicu do Arduino IDE pomocí tato nastavení. Toto nebude fungovat, ale zjistíte, který příkaz se používá v okně konzoly. Dále můžete zkopírovat atributy do příkazu AVRDUDE.

Pokud používáte USB ASP programátor, spusťte:
avrdude -v -p attiny13 -c usbasp -n
Chcete-li zjistit, zda to funguje:
avrdude -v -p attiny13 -c usbasp -u -Uflash: r: flash-dump.hex: i -Ueprom: r: eeprom-dump.hex: i -Ulfuse: r: lfuse-dump.hex: i -Uhfuse: r: hfuse-dump.hex: i
Vytvořte zálohu:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Blesk:
-Uflash: w: blf-a6.hex. Nahraďte blf-a6.hex názvem souboru, pokud se liší.
-Uluse: w: 0x75: ma -Uhuseuse: w: 0xFF: m
Pokud dojde k chybě, znamená to, že obrazový soubor je příliš velký na to, aby se vešel na čip, a budete muset odstranit část kódu. Pokud je vše v pořádku, měly by se zobrazit některé ukazatele pokroku a poté slova „avrdude hotovo. Děkuji.“
Poté, co jste čip blikali, sestavte baterku a zkontrolujte, zda funguje.
Otázka \ topic je automaticky publikována v sociálních sítích. síť webu - zůstaňte naladěni na odpovědi:

Vhodné pro téma

Související témata

Přidejte komentář

    • úsměvúsměvyxaxaokdontknowyahoone
      šéfeškrábnutíhlupákanoano-anoagresivnítajemství
      promiňtanecdance2dance3prominoutpomocnápoje
      zastavitpřátelédobředobrá náladapískatlžícejazyk
      kouřtleskánícrayprohlásitvýsměšnýdon-t_mentionstáhnout
      teploirefulsmích1mdasetkánímoskingnegativní
      not_ipopcorntrestatčístvyděsitděsíhledat
      posměchděkujitototo_clueumnikakutnísouhlasím
      špatnévčelablack_eyeblum3červenat sechlubit senuda
      cenzurovánopleasantrysecret2hrozitvítězstvíyusun_bespectacled
      třástrespektlolprovedenívítejtekrutoyya_za
      ya_dobryipomocníkne_huliganne_othodibludzákazblízko

Doporučujeme si přečíst:

Podejte to pro smartphone ...