Sadržaj:

Bljeskanje prilagođenog firmvera na baterijsku lampu BLF A6: 5 koraka
Bljeskanje prilagođenog firmvera na baterijsku lampu BLF A6: 5 koraka

Video: Bljeskanje prilagođenog firmvera na baterijsku lampu BLF A6: 5 koraka

Video: Bljeskanje prilagođenog firmvera na baterijsku lampu BLF A6: 5 koraka
Video: Ремонт обуви (замена подошвы) 2024, Juli
Anonim
Bljeskanje prilagođenog firmvera na BLF A6 svjetiljku
Bljeskanje prilagođenog firmvera na BLF A6 svjetiljku

Nedavno sam dobio BLF A6. Vrlo je lijepo, ali ne sviđa mi se nijedna od zadanih grupa načina rada, pa sam izmijenio firmver tako da koristi željene svjetline. Bilo je teško pronaći informacije, pa sve ovo što sam naučio stavljam ovdje za sebe i druge.

Supplies

BLF A6 (vjerojatno će raditi s drugim svjetiljkama zasnovanim na ATtinyju)

Pinceta / tanka kliješta / male škare / nešto za otkopčavanje potpornog prstena vozačke ploče

Računar za flešovanje, po mogućnosti sa Linux distribucijom

USB ASP programer / Arduino / nešto što može programirati AVR (očito se preporučuje USB ASP programer, ali ja sam koristio Arduino)

SOIC8 isječak (moguće je i bez njega, ali vrlo je škrti i uopće se ne preporučuje)

(opcionalno) Oglasna ploča i/ili kratkospojne žice za lakše povezivanje

Korak 1: Preuzmite firmver

Firmver za BLF A6 (i mnoge druge svjetiljke) dostupan je ovdje. Autor o tome govori ovdje. Možete ga preuzeti tako što ćete pokrenuti:

bzr grana lp: ~ čuvar igračaka/firmware-lampica/blf-a6-final

u terminalu. (možda ćete morati instalirati bzr)

Napomena: U prethodnom uređivanju ovog uputstva umjesto toga koristio sam "bzr branch lp: firmware-flashlight". Od tada sam saznao da se na ovaj način preuzima zastarjela verzija s pogrešnim vrijednostima za kondenzator izvan vremena, zbog čega je pritiskanje dugmeta neugodno dugo. (zahvaljujući ovoj temi na Redditu)

Mapa koju želite je blf-a6-final/ToyKeeper/blf-a6. Sadrži kompiliranu.hex datoteku spremnu za bljeskanje (blf-a6.hex) i C kod koji možete promijeniti. (blf-a6.c) Ako želite ažurirati dionički firmver, možete preskočiti sljedeći korak i samo upotrijebite blf-a6.hex. Vjerovatno će raditi i neki drugi firmver u tom spremištu.

Korak 2: Izmijenite firmver

Otvorite blf-a6.c u željenom uređivaču teksta ili IDE-u. Najzanimljivije linije su grupe načina između redova 116 i 131. Izgledaju ovako:

// Grupa načina 1 #definiraj NUM_MODES1 7 // PWM nivoi za veliko kolo (FET ili Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // PWM nivoi za mali krug (1x7135) # definirati MODES1x1 2, 20, 110, 255, 255, 255, 0 // Moj uzorak: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Krono uzorak: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // Brzina PWM -a za svaki način #define MODES_PWM1 FAZA, BRZO, BRZO, BRZO, BRZO, BRZO, FAZNO // Grupa načina 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 BRZO, BRZO, BRZO, FAZNO

Za svaku grupu, MODESN je PWM vrijednost koja se koristi za FET, a MODES1 je PWM vrijednost koja se koristi za 7135 u svakom načinu rada. Broj je između 0 i 255 i odgovara jačini svjetla. Više informacija ovdje. (pomaknite se dolje do "Regulacija načina rada:") Nisam siguran koja je tačno brzina PWM -a. Ako neko zna neka mi javi u komentarima. FET može proizvesti više svjetla od 7135, ali 7135 održava razinu svjetla manje -više istom kroz vijek trajanja baterije, dok FET postaje tamniji kako se isprazni.

Ovdje možete prilagoditi vrijednosti PWM -a tako da stvaraju načine prema vašem ukusu. Vjerovatno možete promijeniti i način rada, ali nisam probao jer sam htio četiri načina, što je slučajno broj u drugoj grupi. Htio sam tamniji mjesečev način, pa sam postavio prvi na 0/1, i smatram da je turbo način pomalo besmislen, pa sam ga zamijenio sa 137/255, ekvivalent šestom načinu rada u grupi sa sedam načina rada. Ostatak koda vjerovatno možete izmijeniti ako je potrebno, ali to nisam pokušao.

Kada dobijete željeni kôd, morate ga kompajlirati u.hex datoteku. U najmanju ruku, potrebni su vam gcc-avr i avr-libc. Ako imate problema, pogledajte ostale ovisnosti u readmeu firmvera. Spremište uključuje skriptu za izgradnju, ali nisam uspio natjerati je da funkcionira. Umjesto toga, preuzeo sam staru verziju sa

bzr branch lp: firmware sa svjetiljkom

i kopirao staru skriptu za izgradnju (koju sam mogao dobiti na posao) preko nove. Zatim sam otrčao:

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

u fascikli blf-a6. (trebao bi postojati bolji način za to)…/../bin/build.sh poziva skriptu, 13 navodi da se radi za ATtiny13, a blf-a6 za BLF A6. (duh) Trebalo bi vam reći koje naredbe izvodi i dati vam izlaz. Moj izgleda ovako:

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 bajtova (99,8% Full) Podaci: 13 bajtova (20,3% punih)

Naredbe su već optimizirane za veličinu, pa ako kaže da je više od 100% puna, pokušajte dati komentar

#define FULL_BIKING_STROBE

na liniji 147 za korištenje manjeg minimalnog biciklističkog stroba. Ako se i dalje ne uklapa, vjerojatno ćete morati negdje ukloniti još koda. Kada završi sa kompajliranjem, u mapi bi trebala biti datoteka pod nazivom blf-a6.hex. Ovo je vaš kompajlirani kod, spreman za fleš.

Korak 3: Rastavite svjetiljku

Rastavite baterijsku svjetiljku
Rastavite baterijsku svjetiljku
Rastavite baterijsku svjetiljku
Rastavite baterijsku svjetiljku
Rastavite baterijsku svjetiljku
Rastavite baterijsku svjetiljku

Odvrnite kraj sijalice u smjeru suprotnom od kazaljke na satu. Ovdje postoje dva vijčana spoja. Onaj bliže kraju svjetiljke otvara reflektor i LED, a onaj bliže sredini otvara vozačku ploču. Želite onu bliže sredini.

Unutra biste trebali vidjeti oprugu baterije i pričvrsni prsten s dvije rupe u njoj. Umetnite pincetu / tanka kliješta / škare u rupe i okrenite ih u smjeru kazaljke na satu. Prilično je krut, a upotreba dva odvojena predmeta vjerojatno vam neće dati dovoljno utjecaja. Koristio sam škare na švicarskom vojnom nožu.

Kada izvadite prsten, oslobodite tablu vozača. I dalje je pričvršćen s dvije žice, stoga budite oprezni. Uvijene su zajedno, pa rotirajte ploču na ovaj ili onaj način dok se žice ne olabave. Kad imate dovoljno slobode, okrenite ploču. Želite da čip sa "TINY13A" na njemu bude viši i pristupačniji. Ako je na pogrešnoj strani, okrenite je na drugu stranu. Zavucite oprugu sa strane. Ovo će ga privremeno zadržati na mjestu i olakšati pristup čipu. Ako imate problema s ovim, vjerovatno možete odvrnuti drugi spoj i odlijepiti dvije žice s druge strane, tako da možete potpuno ukloniti ploču, ali ja to nisam pokušao.

Korak 4: Povežite blještavi hardver

Povežite trepćući hardver
Povežite trepćući hardver
Povežite trepćući hardver
Povežite trepćući hardver
Povežite trepćući hardver
Povežite trepćući hardver

Sada koristite SOIC8 isječak za povezivanje ATtiny13 čipa i vašeg programatora. Sa mojom SOIC8 kopčom, ako imam crvenu žicu s lijeve strane oba kraja, red pinova bliže meni na kraju kopče odgovara redu pinova koji su mi bliže na kraju konektora, kada je konektor okrenut prema dolje. (pogledajte moj super umjetnički dijagram) Ovaj vodič preporučuje upotrebu USB ASP V2.0 programatora. Ako to učinite, povežite ga na ovaj način:

  • Pin 1 na ATtiny13 na pin 5 na USB ASP -u (resetiranje)
  • Pin 4 na ATtiny13 na pin 10 na USB ASP (uzemljenje)
  • 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)

Ako, poput mene, koristite Arduino, morate se dodatno pripremiti. Slijedite korake nula i dva ovog vodiča:

Otvorite Arduino IDE i provjerite je li vaš Arduino povezan s vašim računalom. Skicu ISP -a pronađite u Datoteka> Primjeri> 11. ArduinoISP> ArduinoISP i prenesite je na svoj Arduino. Zatim povežite ATtiny13 na njega ovako:

  • Pin 1 na ATtiny13 na pin 10 na Arduinu (reset)
  • Pin 4 na ATtiny13 prema GND na Arduinu (uzemljenje)
  • Pin 5 na ATtiny13 na pin 11 na Arduinu (MOSI)
  • Pin 6 na ATtiny13 na pin 12 na Arduinu (MISO)
  • Pin 7 na ATtiny13 na pin 13 na Arduinu (SCK)
  • Pin 8 na ATtiny13 do VCC / 5V / 3,3 V na Arduinu (bilo koji bi trebao raditi, ali 5 V je pouzdaniji) (VCC)

Instalirao sam i hardverski paket, ali to vjerovatno nije bilo potrebno. Ako ste u nedoumici, pokušajte. To neće naštetiti. Ali nemojte spaljivati pokretački program jer će vam vjerovatno zapaliti baterijsku svjetiljku.

Korak 5: Zablistajte

Da biste ažurirali firmver, morate instalirati AVRDUDE. Da provjerim radi li s mojim Arduinom, pokrećem:

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

Ako uspije, premještam se u praznu mapu i pokrećem:

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

Da napravite sigurnosnu kopiju postojećeg firmvera. I da biste ga fleširali, iz mape s izmijenjenim blf-a6.hex koji pokrećem:

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

Iz nekog razloga moram navesti stk500v1 kao programera, i nije radio ako nisam naveo port i brzinu prijenosa. Ako koristite Arduino i sumnjate, pokušajte isključiti svoj ATtiny13 iz Arduina i učitati skicu u Arduino IDE koristeći ovdje navedene postavke. Neće uspjeti, ali bi trebalo reći koju naredbu koristi u prozoru konzole. Atribute možete kopirati u svoju naredbu AVRDUDE.

Ako koristite USB ASP programer, umjesto toga pokrenite:

avrdude -v -p attiny13 -c usbasp -n

Da vidite da li radi i:

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

Da biste napravili sigurnosnu kopiju i:

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

Da ga trepnem.

-Uflash: w: blf-a6.hex se odnosi na datoteku koju treperi. Zamijenite blf-a6.hex imenom datoteke ako je drugačije.

-Ulfuse: w: 0x75: m i -Uhfuse: w: 0xFF: m su osigurači. Vaše bi se mogle razlikovati pa provjerite vrijednosti u flashware-firmware/bin/flash-tiny13-fuses.sh.

Ako daje grešku izvan dometa, znači da je slika prevelika da stane na čip i da morate ukloniti dio koda. Ako uspješno treperi, trebao bi prikazati neke trake napretka, a zatim reći "avrdude gotovo. Hvala."

Ako piše "nevažeći potpis uređaja", a kratkospojnik na vašem programatoru je postavljen na 3,3 V, pokušajte ga postaviti na 5 V.

Nakon što ste ga upalili, sastavite svjetiljku i provjerite radi li. Mine učinio, ali tajming je isključena za neke ̶r̶e̶a̶s̶o̶n̶.̶ duge Prese treba da budu tri sekunde umjesto 1.5. í ne znam ako IT'S veze sa Arduino ili zato što ̶I̶'̶v̶e̶ se koristi pogrešne postavke ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Ako imate bilo kakvih ideja, ̶ javite mi u ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Edit: Popravio sam. (vidi korak 1)

Preporučuje se: