Daftar Isi:

Mem-flash Firmware Kustom ke Senter BLF A6: 5 Langkah
Mem-flash Firmware Kustom ke Senter BLF A6: 5 Langkah

Video: Mem-flash Firmware Kustom ke Senter BLF A6: 5 Langkah

Video: Mem-flash Firmware Kustom ke Senter BLF A6: 5 Langkah
Video: [TUTORIAL] Pengoperasian/Operations & Setting Driver A17DD/Default BLF A6 2024, Juli
Anonim
Mem-flash Firmware Kustom ke Senter BLF A6
Mem-flash Firmware Kustom ke Senter BLF A6

Saya baru saja mendapat BLF A6. Ini sangat bagus, tetapi saya tidak menyukai salah satu dari grup mode default, jadi saya memodifikasi firmware untuk menggunakan kecerahan pilihan saya. Informasinya sulit ditemukan, jadi saya meletakkan semua yang saya pelajari di sini untuk diri saya sendiri dan orang lain.

Perlengkapan

BLF A6 (mungkin akan bekerja dengan senter berbasis ATtiny lainnya)

Pinset / tang tipis / gunting kecil / sesuatu untuk melepaskan cincin penahan papan driver

Komputer untuk di-flash, lebih disukai menjalankan distribusi Linux

Programmer USB ASP / Arduino / sesuatu yang dapat melakukan pemrograman AVR (ternyata programmer USB ASP disarankan, tetapi saya menggunakan Arduino)

Klip SOIC8 (mungkin tanpanya, tetapi sangat rumit dan sama sekali tidak direkomendasikan)

(opsional) Papan tempat memotong roti dan/atau kabel jumper untuk memudahkan penyambungan

Langkah 1: Unduh Firmware

Firmware untuk BLF A6 (dan banyak senter lainnya) tersedia di sini. Penulis membicarakannya di sini. Anda dapat mengunduhnya dengan menjalankan:

bzr branch lp:~toykeeper/senter-firmware/blf-a6-final

di sebuah terminal. (Anda mungkin harus menginstal bzr)

Catatan: dalam pengeditan sebelumnya dari Instructable ini saya menggunakan "bzr branch lp:flashlight-firmware" sebagai gantinya. Sejak itu saya mengetahui bahwa ini mengunduh versi lama dengan nilai yang salah untuk kapasitor off-time, membuat tombol ditekan lama dengan tidak nyaman. (terima kasih untuk utas ini di Reddit)

Folder yang Anda inginkan adalah blf-a6-final/ToyKeeper/blf-a6. Ini berisi file.hex terkompilasi yang siap untuk di-flash (blf-a6.hex) dan kode C yang dapat Anda modifikasi. (blf-a6.c) Jika Anda ingin mem-flash firmware bawaan, Anda dapat melewati langkah berikutnya dan gunakan saja blf-a6.hex. Beberapa firmware lain di repositori itu mungkin akan berfungsi juga.

Langkah 2: Ubah Firmware

Buka blf-a6.c di editor teks atau IDE pilihan Anda. Baris yang paling menarik adalah grup mode antara baris 116 dan 131. Mereka terlihat seperti ini:

// Grup mode 1#define NUM_MODES1 7 // Level PWM untuk sirkuit besar (FET atau Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // Level PWM untuk sirkuit kecil (1x7135) # define MODES1x1 2, 20, 110, 255, 255, 255, 0 // Sampel saya: 6=0..6, 7=2..11, 8=8..21(15..32) // Krono sampel: 6=5..21, 7=17..32, 8=33..96(50..78) // Manker2: 2=21, 3=39, 4=47, … 6?=68 // Kecepatan PWM untuk setiap mode #define MODES_PWM1 PHASE, FAST, FAST, FAST, FAST, FAST, PHASE // Grup mode 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 CEPAT, CEPAT, CEPAT, FASE

Untuk setiap grup, MODESN adalah nilai PWM yang digunakan untuk FET, dan MODES1 adalah nilai PWM yang digunakan untuk 7135 di setiap mode. Angkanya antara 0 dan 255, dan sesuai dengan kecerahan cahaya. Informasi lebih lanjut di sini. (gulir ke bawah ke "Peraturan mode:") Saya tidak yakin berapa tepatnya kecepatan PWM. Jika ada yang tahu, beri tahu saya di komentar. FET dapat menghasilkan lebih banyak cahaya daripada 7135, tetapi 7135 menjaga tingkat cahaya kurang lebih sama selama masa pakai baterai, sedangkan FET menjadi lebih gelap karena kehabisan baterai.

Di sini Anda dapat menyesuaikan nilai PWM untuk menghasilkan mode sesuai keinginan Anda. Anda mungkin dapat mengubah jumlah mode juga, tetapi saya belum mencobanya karena saya ingin empat mode, yang merupakan nomor di grup kedua. Saya menginginkan mode cahaya bulan yang lebih gelap, jadi saya mengatur yang pertama ke 0/1, dan saya menemukan mode turbo sedikit tidak berguna, jadi saya menggantinya dengan 137/255, setara dengan mode enam dalam grup tujuh mode. Anda mungkin dapat memodifikasi sisa kode jika perlu, tetapi saya belum mencobanya.

Setelah mendapatkan kode yang diinginkan, Anda harus mengompilasinya ke file.hex. Paling tidak, Anda memerlukan gcc-avr dan avr-libc. Jika Anda memiliki masalah, lihat dependensi lain di firmware readme. Repositori menyertakan skrip build, tetapi saya tidak dapat membuatnya berfungsi. Sebagai gantinya, saya mengunduh versi lama dengan

bzr cabang lp:senter-firmware

dan menyalin skrip build lama (yang bisa saya gunakan) di atas yang baru. Lalu saya berlari:

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

di folder blf-a6. (harus ada cara yang lebih baik untuk melakukannya)../../bin/build.sh memanggil skrip, 13 menentukan bahwa itu membangun untuk ATtiny13 dan blf-a6 menetapkan bahwa itu untuk BLF A6. (duh) Ini akan memberi tahu Anda perintah apa yang sedang dijalankan dan memberi Anda hasilnya. Milik saya terlihat seperti ini:

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 byte (99,8% Penuh) Data: 13 byte (20,3% Penuh)

Perintah sudah dioptimalkan untuk ukuran, jadi jika dikatakan lebih dari 100% penuh, coba beri komentar

#define FULL_BIKING_STROBE

pada jalur 147 untuk menggunakan strobo bersepeda minimal yang lebih kecil. Jika masih tidak cocok, Anda mungkin harus menghapus lebih banyak kode di suatu tempat. Setelah selesai dikompilasi, seharusnya ada file bernama blf-a6.hex di folder tersebut. Ini adalah kode terkompilasi Anda, siap untuk di-flash.

Langkah 3: Bongkar Senter

Bongkar Senter
Bongkar Senter
Bongkar Senter
Bongkar Senter
Bongkar Senter
Bongkar Senter

Lepaskan ujung bohlam berlawanan arah jarum jam. Ada dua sambungan sekrup di sini. Yang lebih dekat ke ujung bohlam senter membuka reflektor dan LED, dan yang lebih dekat ke tengah membuka papan driver. Anda ingin yang lebih dekat ke tengah.

Di dalam, Anda akan melihat pegas baterai dan cincin penahan dengan dua lubang di dalamnya. Masukkan pinset / tang tipis / gunting ke dalam lubang dan putar berlawanan arah jarum jam. Ini cukup kaku, dan menggunakan dua objek terpisah mungkin tidak akan memberi Anda pengaruh yang cukup. Saya menggunakan gunting pada Pisau Tentara Swiss.

Setelah Anda mengeluarkan cincin, bebaskan papan driver. Itu masih terpasang dengan dua kabel, jadi berhati-hatilah. Mereka dipelintir bersama, jadi putar papan satu atau lain cara sampai kabelnya kendur. Saat Anda memiliki cukup waktu luang, balikkan papan. Anda menginginkannya agar chip dengan "TINY13A" di atasnya lebih tinggi dan lebih mudah diakses. Jika di sisi yang salah, balikkan ke arah lain. Selipkan pegas di bawah samping. Ini untuk sementara akan membuatnya tetap di tempatnya dan membuatnya lebih mudah untuk mendapatkan chip. Jika Anda mengalami masalah dengan ini, Anda mungkin dapat melepaskan sambungan yang lain dan melepas solder kedua kabel dari sisi lain sehingga Anda dapat melepas papan sepenuhnya, tetapi saya belum mencobanya.

Langkah 4: Hubungkan Perangkat Keras Berkedip

Hubungkan Perangkat Keras Berkedip
Hubungkan Perangkat Keras Berkedip
Hubungkan Perangkat Keras Berkedip
Hubungkan Perangkat Keras Berkedip
Hubungkan Perangkat Keras Berkedip
Hubungkan Perangkat Keras Berkedip

Sekarang Anda menggunakan klip SOIC8 untuk menghubungkan chip ATtiny13 dan programmer Anda. Dengan klip SOIC8 saya, jika saya memiliki kabel merah di sebelah kiri kedua ujungnya, deretan pin yang lebih dekat dengan saya di ujung klip sesuai dengan deretan pin yang lebih dekat dengan saya di ujung konektor, ketika konektor menghadap ke bawah. (lihat diagram super artistik saya) Panduan ini menyarankan Anda menggunakan programmer USB ASP V2.0. Jika sudah, hubungkan seperti ini:

  • Pin 1 pada ATtiny13 ke pin 5 pada USB ASP (reset)
  • Pin 4 pada ATtiny13 ke pin 10 pada USB ASP (ground)
  • Pin 5 pada ATtiny13 ke pin 1 pada USB ASP (MOSI)
  • Pin 6 pada ATtiny13 ke pin 9 pada USB ASP (MISO)
  • Pin 7 pada ATtiny13 ke pin 7 pada USB ASP (SCK)
  • Pin 8 pada ATtiny13 ke pin 2 pada USB ASP (VCC)

Jika, seperti saya, Anda menggunakan Arduino, Anda harus melakukan sedikit lebih banyak persiapan. Ikuti langkah nol dan dua dari panduan ini:

Buka Arduino IDE dan pastikan Arduino Anda terhubung ke komputer Anda. Temukan sketsa ISP di File>Contoh>11. ArduinoISP>ArduinoISP dan unggah ke Arduino Anda. Kemudian hubungkan ATtiny13 ke sana seperti ini:

  • Pin 1 pada ATtiny13 ke pin 10 pada Arduino (reset)
  • Pin 4 di ATtiny13 ke GND di Arduino (tanah)
  • Pin 5 pada ATtiny13 ke pin 11 pada Arduino (MOSI)
  • Pin 6 pada ATtiny13 ke pin 12 pada Arduino (MISO)
  • Pin 7 pada ATtiny13 ke pin 13 pada Arduino (SCK)
  • Pin 8 pada ATtiny13 ke VCC / 5V / 3.3V pada Arduino (apa pun harus berfungsi, tetapi 5V lebih andal)(VCC)

Saya juga menginstal paket perangkat keras, tetapi mungkin tidak perlu. Jika ragu, cobalah. Itu tidak akan membahayakan. Tapi jangan membakar bootloader karena mungkin akan merusak senter Anda.

Langkah 5: Flash It

Untuk mem-flash firmware, Anda perlu menginstal AVRDUDE. Untuk memeriksanya berfungsi dengan Arduino saya, saya menjalankan:

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

Jika berhasil, saya pindah ke folder kosong di suatu tempat dan menjalankan:

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

Untuk membuat cadangan dari firmware yang ada. Dan untuk mem-flash-nya, dari folder dengan blf-a6.hex yang dimodifikasi saya jalankan:

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

Untuk beberapa alasan, saya harus menentukan stk500v1 sebagai programmer, dan itu tidak berfungsi kecuali saya menentukan port dan baud rate. Jika Anda menggunakan Arduino dan ragu, coba lepaskan ATtiny13 Anda dari Arduino dan unggah sketsa di Arduino IDE menggunakan pengaturan di sini. Itu akan gagal, tetapi harus mengatakan perintah apa yang digunakannya di jendela konsol. Anda dapat menyalin atribut ke perintah AVRDUDE Anda.

Jika Anda menggunakan programmer USB ASP, jalankan:

avrdude -v -p attiny13 -c usbasp -n

Untuk melihat apakah itu berfungsi dan:

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

Untuk membuat cadangan dan:

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

Untuk mem-flash-nya.

-Uflash:w:blf-a6.hex mengacu pada file yang sedang di-flash. Ganti blf-a6.hex dengan nama file Anda jika berbeda.

-Ulfuse:w:0x75:m dan -Uhfuse:w:0xFF:m adalah sekeringnya. Anda mungkin berbeda, jadi periksa kembali nilainya di flashlight-firmware/bin/flash-tiny13-fuses.sh.

Jika memberikan kesalahan di luar jangkauan, itu berarti gambar terlalu besar untuk muat di chip dan Anda harus menghapus beberapa kode. Jika berhasil berkedip, itu akan menampilkan beberapa bilah kemajuan, lalu katakan "avrdude done. Terima kasih."

Jika tertulis "tanda tangan perangkat tidak valid" dan jumper pada programmer Anda disetel ke 3.3v, coba setel ke 5v.

Setelah Anda mem-flash-nya, pasang kembali senter Anda dan lihat apakah itu berfungsi. Saya lakukan, tapi waktu tidak aktif untuk beberapa ̶r̶e̶a̶s̶o̶n̶.̶ panjang menekan perlu sekitar tiga detik bukan ̶1̶.̶5̶.̶ saya tidak tahu jika IT'S ada hubungannya dengan Arduino atau karena aku pernah digunakan salah pengaturan ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Jika Anda memiliki ide, ̶ beritahu saya di ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Sunting: Saya memperbaikinya. (lihat langkah 1)

Direkomendasikan: