Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Nedavno sam dobio BLF A6. Vrlo je lijepo, ali ne sviđa mi se niti jedna od zadanih grupa načina rada, pa sam izmijenio firmver tako da koristi željene svjetline. Teško je bilo pronaći podatke pa sve što sam naučio stavljam ovdje za sebe i druge.
Pribor
BLF A6 (vjerojatno će raditi s drugim svjetiljkama temeljenim na ATtinyju)
Pinceta / tanka kliješta / male škare / nešto za otpuštanje pričvrsnog prstena vozačke ploče
Računalo za flash, po mogućnosti s 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, ali vrlo je zahtjevan i uopće se ne preporučuje)
(izborno) 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 pokretanjem:
bzr grana lp: ~ čuvar igračaka/svjetiljka-firmware/blf-a6-final
u terminalu. (možda ćete morati instalirati bzr)
Napomena: U prethodnom uređivanju ovog Instructable-a umjesto toga sam koristio "bzr branch lp: flashlight-firmware". Od tada sam saznao da se ovim preuzima zastarjela verzija s pogrešnim vrijednostima za kondenzator izvan radnog vremena, zbog čega je pritiskanje gumba 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 kôd 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. Vjerojatno ć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 skupine načina između redaka 116 i 131. Izgledaju ovako:
// Grupa načina 1 #definiraj NUM_MODES1 7 // razine PWM -a za veliki krug (FET ili Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // razine PWM -a 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 skupinu 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 toč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 više -manje jednakom tijekom vijeka trajanja baterije, dok FET postaje tamniji kako se isprazni.
Ovdje možete prilagoditi vrijednosti PWM -a tako da stvaraju načine prema vašim željama. Vjerojatno možete promijeniti i način rada, ali nisam isprobao jer sam želio četiri načina, što je slučajno broj u drugoj skupini. Htio sam tamniji mjesečev način, pa sam prvi postavio na 0/1, i smatram da je turbo način pomalo besmislen, pa sam ga zamijenio sa 137/255, što je ekvivalent šestom načinu rada u grupi sa sedam načina rada. Ostatak koda vjerojatno možete izmijeniti ako je potrebno, ali to nisam pokušao.
Kad dobijete željeni kôd, morate ga sastaviti u.hex datoteku. U najmanju ruku, trebate gcc-avr i avr-libc. Ako imate problema, pogledajte ostale ovisnosti u readmeu firmvera. Spremište uključuje skriptu za izgradnju, ali nisam je mogao natjerati da radi. Umjesto toga, preuzeo sam staru verziju sa
bzr grana lp: svjetiljka-firmver
i kopirao staru skriptu za izgradnju (da bih mogao pristupiti poslu) preko nove. Zatim sam otrčao:
../../bin/build.sh 13 blf-a6
u mapi 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) Trebao bi vam reći koje naredbe izvodi i dati vam izlaz. Moj izgleda ovako:
avr -gcc -Zid -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89 -inline -DATTINY = 13 -I.. -I../.. -I../../.. -kratko -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-upozorenja bez promjene -O ihex blf-a6.elf blf-a6.hex program: 1022 bajta (99,8% puna) 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 je komentirati
#define FULL_BIKING_STROBE
na liniji 147 za korištenje manjeg minimalnog stroboskopskog stroba. Ako se i dalje ne uklapa, vjerojatno ćete morati negdje ukloniti još koda. Kad završi sa sastavljanjem, u mapi bi se trebala nalaziti datoteka pod nazivom blf-a6.hex. Ovo je vaš sastavljeni kod, spreman za bljeskanje.
Korak 3: Rastavite svjetiljku
Odvrnite kraj žarulje u smjeru suprotnom od kazaljke na satu. Ovdje postoje dva vijčana spoja. Onaj bliže kraju žarulje svjetiljke otvara reflektor i LED, a onaj bliže sredini otvara vozačku ploču. Želite onaj 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 zakrenite 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.
Kad izvadite prsten, oslobodite tablu vozača. I dalje je pričvršćen s dvije žice, stoga budite oprezni. Uvijeni 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 s "TINY13A" na njemu bude viši i pristupačniji. Ako je na pogrešnoj strani, okrenite je na drugu stranu. Uvucite oprugu ispod strane. To će ga privremeno zadržati na mjestu i olakšati pristup čipu. Ako imate problema s tim, vjerojatno možete odvrnuti drugi spoj i odspojiti dvije žice s druge strane, tako da možete potpuno ukloniti ploču, ali to nisam pokušao.
Korak 4: Povežite blještavi hardver
Sada koristite isječak SOIC8 za povezivanje čipa ATtiny13 i programatora. S mojom SOIC8 kopčom, ako imam crvenu žicu s lijeve strane oba kraja, red pinova koji su mi bliže na kraju isječka odgovara redu pinova koji su mi bliže na kraju priključka, kada je konektor okrenut prema dolje. (pogledajte moj super umjetnički dijagram) Ovaj vodič preporučuje korištenje USB ASP V2.0 programatora. Ako to učinite, povežite ga ovako:
- Pin 1 na ATtiny13 na pin 5 na USB ASP -u (resetiranje)
- Pin 4 na ATtiny13 na pin 10 na USB ASP -u (uzemljenje)
- Pin 5 na ATtiny13 na pin 1 na USB ASP -u (MOSI)
- Pin 6 na ATtiny13 na pin 9 na USB ASP -u (MISO)
- Pin 7 na ATtiny13 na pin 7 na USB ASP -u (SCK)
- Pin 8 na ATtiny13 na pin 2 na USB ASP (VCC)
Ako, poput mene, koristite Arduino, morate se dodatno pripremiti. Slijedite nula i dva koraka 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 na njega povežite ATtiny13 ovako:
- Pin 1 na ATtiny13 do pin 10 na Arduinu (resetiranje)
- Pin 4 na ATtiny13 do GND na Arduinu (uzemljenje)
- Pin 5 na ATtiny13 do pin 11 na Arduinu (MOSI)
- Pin 6 na ATtiny13 na pin 12 na Arduinu (MISO)
- Pin 7 na ATtiny13 do 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 vjerojatno nije bilo potrebno. Ako ste u nedoumici, pokušajte. Neće naštetiti. Ali nemojte spaljivati pokretački program jer će vam vjerojatno zapeći 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
Za izradu sigurnosne kopije postojećeg firmvera. I da ga bljeskam, 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, ali nije radio ako nisam naveo port i brzinu prijenosa. Ako koristite Arduino i sumnjate, pokušajte odvojiti svoj ATtiny13 od Arduina i prenijeti 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 biste vidjeli radi li 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
Za izradu sigurnosne kopije i:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf -a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Za bljeskanje.
-Uflash: w: blf-a6.hex se odnosi na datoteku koju treperi. Zamijenite blf-a6.hex imenom datoteke ako se razlikuje.
-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 pogreš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 recite "avrdude gotovo. Hvala vam".
Ako piše "nevažeći potpis uređaja", a kratkospojnik na vašem programeru postavljen je 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 vrijeme je isključeno za neke ̶r̶e̶a̶s̶o̶n̶.̶ dugoj preše morate biti oko tri sekunde umjesto 1.5. Ne znam, ako njega je nešto za napraviti sa Arduino ili zbog Ive koristi pogrešne postavke ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ ako se uopće pojma, ̶ javi mi u ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶
Edit: Popravio sam. (vidi korak 1)