Mündəricat:

BLF A6 Fənərinə Xüsusi Firmware Yandırılır: 5 Addım
BLF A6 Fənərinə Xüsusi Firmware Yandırılır: 5 Addım

Video: BLF A6 Fənərinə Xüsusi Firmware Yandırılır: 5 Addım

Video: BLF A6 Fənərinə Xüsusi Firmware Yandırılır: 5 Addım
Video: BLF A6 Special Edition flashlight review! 2024, Iyul
Anonim
BLF A6 Fənərinə Xüsusi Firmware yanıb -sönür
BLF A6 Fənərinə Xüsusi Firmware yanıb -sönür

Bu yaxınlarda BLF A6 aldım. Çox gözəldir, amma standart rejim qruplarından heç birini bəyənmirəm, buna görə də üstünlük verdiyim parlaqlıqlardan istifadə etmək üçün proqram təminatını dəyişdirdim. Məlumat tapmaq çətin idi, buna görə də öyrəndiyim hər şeyi bura özüm və başqaları üçün qoyuram.

Təchizat

BLF A6 (yəqin ki, digər ATtiny əsaslı fənərlərlə işləyəcək)

Cımbız / nazik kəlbətinlər / kiçik qayçı / sürücü lövhəsinin bərkidici halqasını açmaq üçün bir şey

Kompüterin yanıb -sönməsi, tercihen Linux paylanması

USB ASP proqramçısı / Arduino / AVR proqramlaşdırma qabiliyyətinə malik bir şey (yəqin ki, USB ASP proqramçısı tövsiyə olunur, amma mən Arduino istifadə etmişəm)

SOIC8 klipi (onsuz da etmək mümkündür, amma çox cılızdır və qətiyyən tövsiyə edilmir)

(isteğe bağlı) Bağlanışı asanlaşdırmaq üçün breadboard və/və ya tullanan tellər

Addım 1: Firmware yükləyin

BLF A6 (və bir çox digər fənərlər) üçün proqram təminatı burada mövcuddur. Müəllif burada bu barədə danışır. Çalışaraq yükləyə bilərsiniz:

bzr filialı lp: ~ toykeeper/flashlight-firmware/blf-a6-final

bir terminalda. (bzr qurmalısınız)

Qeyd: bu Təlimat kitabının əvvəlki redaktəsində "bzr branch lp: flashlight-firmware" istifadə etmişəm. O vaxtdan bəri başa düşdüm ki, off-time kondansatör üçün yanlış dəyərləri olan köhnəlmiş bir versiyanı yükləyir və düyməni uzun müddət basdırır. (Redditdəki bu mövzu sayəsində)

İstədiyiniz qovluq blf-a6-final/ToyKeeper/blf-a6-dır. Yandırmağa hazır olan tərtib edilmiş.hex faylını (blf-a6.hex) və dəyişdirə biləcəyiniz C kodunu ehtiva edir. (blf-a6.c) Səhmdar proqramını yandırmaq istəyirsinizsə, növbəti addımı atlaya bilərsiniz və sadəcə blf-a6.hex istifadə edin. O anbardakı digər firmware proqramlarından bəziləri çox güman ki, işləyəcək.

Addım 2: Firmware -ni dəyişdirin

İstədiyiniz mətn redaktorunda və ya IDE-də blf-a6.c açın. Ən maraqlı xətlər 116 və 131 xətləri arasındakı rejim qruplarıdır. Bunlar belə görünür:

// Mod qrupu 1 #NUM_MODES1 7 müəyyən edir // Böyük dövrə üçün PWM səviyyələri (FET və ya Nx7135) #MODESNx1 0, 0, 0, 7, 56, 137, 255 // Kiçik dövrə üçün PWM səviyyələrini təyin edin (1x7135) # MODES1x1 2, 20, 110, 255, 255, 255, 0 təyin edin // Mənim nümunəm: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Krono nümunəsi: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // Hər bir rejim üçün PWM sürəti #MODES_PWM1 FAZASI, FAST, FAST, FAST, FAST, FAST, FAZA // Mode qrupu 2 #NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #MODES_PWM2 FAST, FAST, FAST, PHASE təyin edin

Hər qrup üçün MODESN, FET üçün istifadə olunan PWM dəyəridir və MODES1, hər rejimdə 7135 üçün istifadə olunan PWM dəyəridir. Sayı 0 ilə 255 arasındadır və işığın parlaqlığına uyğundur. Ətraflı məlumat burada. ("Mode tənzimləməsinə" gedin) PWM sürətinin tam olaraq nə olduğunu bilmirəm. Kim bilirsə, şərhlərdə mənə deyin. FET, 7135 -dən daha çox işıq istehsal edə bilər, ancaq 7135, batareyanın ömrü boyu işıq səviyyəsini az -çox eyni saxlayır, FET -in batareyası bitdikcə qaralır.

Burada PWM dəyərlərini istədiyiniz rejimə uyğunlaşdıra bilərsiniz. Çox güman ki, modların sayını da dəyişə bilərsiniz, amma ikinci qrupdakı sayı olan dörd rejimi istədiyim kimi sınamamışam. Daha qaranlıq bir ay işığı rejimi istədim, buna görə birincisini 0/1 olaraq təyin etdim və turbo rejimini bir az mənasız hesab etdim, buna görə yeddi rejim qrupundakı altı rejimin ekvivalenti olan 137/255 ilə əvəz etdim. Ehtiyac olarsa, kodun qalan hissəsini dəyişə bilərsiniz, amma sınamamışam.

İstədiyiniz kodu əldə etdikdən sonra onu.hex faylına yığmalısınız. Ən azından gcc-avr və avr-libc lazımdır. Problemləriniz varsa, proqram təminatı oxu proqramındakı digər asılılıqlara baxın. Anbarda bir quruluş skripti var, amma onu işə sala bilmədim. Bunun əvəzinə köhnə versiyasını yüklədim

bzr filialı lp: fənər firmware

və köhnə tikinti skriptini (işə başlaya biləcəyim) yenisinə kopyaladım. Sonra qaçdım:

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

blf-a6 qovluğunda. (bunu etmək üçün daha yaxşı bir yol olmalıdır)../../bin/build.sh skriptə zəng edir, 13 ATtiny13 üçün qurulduğunu və blf-a6 bunun BLF A6 üçün olduğunu bildirir. (duh) Hansı əmrlərin işlədiyini söyləməli və nəticəni verməlidir. Mənimki belə görünür:

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 -bölüm-bayraqlar =.eeprom = ayır, yük-dəyişdir-hissə-lma.eeprom = 0-dəyişmə-xəbərdarlıqları -O ihex blf-a6.elf blf-a6.hex Proqram: 1022 bayt (99,8% Tam)) Məlumat: 13 bayt (20.3% Tam)

Əmrlər artıq ölçü üçün optimallaşdırılıb, buna görə 100% -dən çox dolu olduğunu bildirirsə, şərh yazmağa çalışın

#FULL_BIKING_STROBE təyin edin

Kiçik minimal velosiped strobunu istifadə etmək üçün 147 xəttində. Hələ də uyğun deyilsə, ehtimal ki, bir yerdə daha çox kodu silməlisiniz. Kompilyasiya başa çatdıqda qovluqda blf-a6.hex adlı bir fayl olmalıdır. Bu, yığmağa hazır olduğunuz koddur, yanıb sönməyə hazırdır.

Addım 3: Fənəri sökün

Fənəri sökün
Fənəri sökün
Fənəri sökün
Fənəri sökün
Fənəri sökün
Fənəri sökün

Lampanın ucunu saat yönünün əksinə açın. Burada iki vida birləşməsi var. Fənərin lampa ucuna yaxın olan reflektoru və LED -i, ortaya yaxın olan isə sürücü lövhəsini açır. Birini ortaya yaxınlaşdırmaq istəyirsən.

İçəridə, batareya yayını və içərisində iki deşik olan bir tutma halqasını görməlisiniz. Cımbızlarınızı / nazik kəlbətinlərinizi / qayçılarınızı deliklərə daxil edin və saat əqrəbinin əksinə döndərin. Olduqca sərtdir və iki ayrı obyektdən istifadə etmək yəqin ki, sizə kifayət qədər rıçaq verməyəcək. Mən İsveçrə Ordusu Bıçağında qayçı istifadə etdim.

Üzüyü çıxardıqdan sonra sürücü lövhəsini boşaldın. Hələ iki tellə bağlanır, buna görə diqqətli olun. Bir -birinə bükülürlər, buna görə də telləri boşalana qədər lövhəni bu və ya digər şəkildə döndərin. Kifayət qədər boş vaxtınız olduqda, lövhəni çevirin. İstəyirsən ki, üzərində "TINY13A" olan çip daha yuxarı olsun və daha əlçatan olsun. Səhv tərəfdəsinizsə, digər tərəfə çevirin. Yanın altından bükün. Bu, müvəqqəti olaraq yerində saxlayacaq və çipə girməyi asanlaşdıracaq. Bununla probleminiz varsa, ehtimal ki, digər birləşməni sökün və iki teli digər tərəfdən ayırın, beləliklə lövhəni tamamilə çıxara bilərsiniz, amma sınamamışam.

Addım 4: yanıb sönən aparatı bağlayın

Yanıb sönən aparatı qoşun
Yanıb sönən aparatı qoşun
Yanıb sönən aparatı qoşun
Yanıb sönən aparatı qoşun
Yanıb sönən aparatı qoşun
Yanıb sönən aparatı qoşun

İndi ATtiny13 çipini və proqramçınızı birləşdirmək üçün SOIC8 klipindən istifadə edirsiniz. SOIC8 klipimlə, hər iki ucunun solunda qırmızı tel varsa, klipin ucunda mənə yaxın olan sancaqlar sırası, bağlayıcı aşağıya baxdıqda, konnektorun ucunda mənə yaxın olan sancaqlar sırasına uyğundur. (super bədii diaqramıma baxın) Bu təlimat USB ASP V2.0 proqramçıdan istifadə etməyi məsləhət görür. Əgər edirsinizsə, bu şəkildə bağlayın:

  • USB ASP -də 5 -i bağlamaq üçün ATtiny13 -də 1 -ci pin (sıfırlama)
  • USB ASP -də 10 -u bağlamaq üçün ATtiny13 -də 4 -cü pin (yerə)
  • USB ASP -də (MOSI) 1 -i bağlamaq üçün ATtiny13 -də 5 -ci pin
  • USB ASP -də (MISO) 9 -u bağlamaq üçün ATtiny13 -də 6 -cı pin
  • USB ASP -də (SCK) 7 -ni bağlamaq üçün ATtiny13 -də 7 -ci pin.
  • USB ASP -də (VCC) 2 -ni bağlamaq üçün ATtiny13 -də 8 pin

Mənim kimi bir Arduino istifadə edirsinizsə, bir az daha hazırlaşmalısınız. Bu təlimatın sıfır və ikinci addımlarını izləyin:

Arduino IDE -ni açın və Arduino -nun kompüterə qoşulduğundan əmin olun. Fayl> Nümunələr> 11. ArduinoISP> ArduinoISP -də ISP eskizini tapın və Arduino -ya yükləyin. Sonra ATtiny13 -ü bu şəkildə bağlayın:

  • ATtiny13 -dəki 1 -ci pin, Arduino'da 10 -cu pin üçün (sıfırlama)
  • ATtiny13 -də Arduino -da GND -ə 4 -cü pin (yerdə)
  • ATtiny13 -də 5 -ci pin, Arduino -da (MOSI) 11 -ə bərkidilir.
  • ATtiny13 -də 6 pin, Arduino -da (MISO) 12 -ə vurun.
  • ATtiny13 -də 7 -ci pin, Arduino -da (SCK) 13 -cü pin üçün
  • ATtiny13 -də Arduino -da VCC / 5V / 3.3V -ə 8 pin qoyun (hər kəs işləməlidir, amma 5V daha etibarlıdır) (VCC)

Donanım paketini də quraşdırdım, amma yəqin ki, lazım deyildi. Şübhə varsa, sınayın. Heç bir zərər verməyəcək. Ancaq yükləyicini yandırmayın, çünki ehtimal ki, fənərinizi kərpicə vuracaq.

Addım 5: Yandırın

Firmware -ni yandırmaq üçün AVRDUDE quraşdırmalısınız. Arduino ilə işlədiyini yoxlamaq üçün qaçıram:

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

İşə yarayarsa, boş bir qovluğa gedirəm və qaçıram:

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

Mövcud proqram təminatının ehtiyat nüsxəsini çıxarmaq üçün. Və işlətmək üçün dəyişdirilmiş blf-a6.hex qovluğundan qaçıram:

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

Nədənsə, proqramçı olaraq stk500v1 -i göstərməliyəm və liman və baud dərəcəsini təyin etmədiyim halda işləmədi. Bir Arduino istifadə edirsinizsə və şübhəniz varsa, buradakı parametrləri istifadə edərək ATtiny13 -ün Arduinodan ayrılmasını və Arduino IDE -də eskiz yükləməyi sınayın. Uğursuz olacaq, ancaq konsol pəncərəsində hansı əmri istifadə etdiyini söyləməlidir. Atributları AVRDUDE əmrinizə kopyalaya bilərsiniz.

Bir USB ASP proqramçısı istifadə edirsinizsə, bunun əvəzinə işləyin:

avrdude -v -p attiny13 -c usbasp -n

İşlədiyini görmək üçün:

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

Yedəkləmə etmək və:

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

Yandırmaq üçün.

-Uflash: w: blf-a6.hex yanıb-sönən fayla aiddir. Fərqlidirsə, blf-a6.hex fayl adı ilə əvəz edin.

-Ulfuse: w: 0x75: m və -Uhfuse: w: 0xFF: m qoruyuculardır. Sizinki fərqli ola bilər, buna görə fənər-firmware/bin/flash-tiny13-fuses.sh-dəki dəyərləri iki dəfə yoxlayın.

Çıxış aralığında bir səhv verərsə, bu, görüntünün çipə sığmayacaq qədər böyük olduğu və kodun bir hissəsini silməli olduğunuz deməkdir. Uğurla yanıb -sönürsə, bəzi irəliləyiş çubuqlarını göstərməlidir, sonra "tamamlandı. Təşəkkür edirəm" deyin.

"Yanlış cihaz imzası" yazılıbsa və proqramçınızdakı tullanan 3.3v olaraq təyin olunubsa, onu 5v olaraq təyin etməyə çalışın.

Yandırdıqdan sonra fənəri yenidən yığın və işlədiyini yoxlayın. Mine, amma THE vaxtı off üçün bəzi əsaslı səbəbləri Uzun presler lazımdır ola üç saniyə əvəzinə ̶1̶.̶5̶.̶ i do not bilirsinizsə Bu, bir şey do ilə THE Arduino və ya çünki Mən Bakıda istifadə THE yanlış ayarları ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ əgər hər hansı bir fikir, ̶ Let Me bilirik THE ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Düzəliş etdim: düzəltdim. (addım 1 -ə baxın)

Tövsiyə: