Isi kandungan:

Mengedip Firmware Tersuai ke Lampu suluh BLF A6: 5 Langkah
Mengedip Firmware Tersuai ke Lampu suluh BLF A6: 5 Langkah

Video: Mengedip Firmware Tersuai ke Lampu suluh BLF A6: 5 Langkah

Video: Mengedip Firmware Tersuai ke Lampu suluh BLF A6: 5 Langkah
Video: FULL BUILD | Rebuilding A DESTROYED Porsche 911 Turbo! 2024, Julai
Anonim
Mengedip Firmware Khusus ke Lampu Senter BLF A6
Mengedip Firmware Khusus ke Lampu Senter BLF A6

Saya baru-baru ini mendapat BLF A6. Ia sangat bagus, tetapi saya tidak menyukai mana-mana kumpulan mod lalai, jadi saya mengubah suai firmware untuk menggunakan kecerahan pilihan saya. Maklumatnya sukar dijumpai, jadi saya meletakkan semua yang saya pelajari di sini untuk diri sendiri dan orang lain.

Bekalan

BLF A6 (mungkin berfungsi dengan lampu suluh berasaskan ATtiny yang lain)

Pinset / tang nipis / gunting kecil / sesuatu untuk melepaskan gelang penahan papan pemandu

Komputer untuk dimuatkan, lebih baik menjalankan pengedaran Linux

Pengaturcara ASP USB / Arduino / sesuatu yang boleh melakukan pengaturcaraan AVR (nampaknya pengaturcara USB ASP disyorkan, tetapi saya menggunakan Arduino)

Klip SOIC8 (boleh dilakukan tanpa, tetapi sangat digemari dan sama sekali tidak disyorkan)

(pilihan) Papan roti dan / atau kabel pelompat untuk memudahkan penyambungan

Langkah 1: Muat turun Firmware

Firmware untuk BLF A6 (dan banyak lampu suluh lain) boleh didapati di sini. Pengarang membincangkannya di sini. Anda boleh memuat turunnya dengan menjalankan:

bzr cawangan lp: ~ penjaga permainan / lampu suluh-firmware / blf-a6-final

di terminal. (anda mungkin perlu memasang bzr)

Catatan: dalam pengeditan sebelumnya dari Instructable ini saya menggunakan "bzr branch lp: flashlight-firmware" sebagai gantinya. Sejak itu saya mengetahui bahawa ini memuat turun versi lama dengan nilai yang salah untuk kapasitor off-time, menjadikan butang menekan lama. (terima kasih kepada utas ini di Reddit)

Folder yang anda mahukan ialah blf-a6-final / ToyKeeper / blf-a6. Ia mengandungi fail.hex yang dikompilasi siap untuk flash (blf-a6.hex) dan kod C yang boleh anda ubah. (blf-a6.c) Sekiranya anda ingin memuat naik firmware stok, anda boleh melangkau langkah seterusnya dan hanya menggunakan blf-a6.hex. Sebilangan firmware lain di repositori itu mungkin akan berfungsi juga.

Langkah 2: Ubahsuai Firmware

Buka blf-a6.c di editor teks atau IDE pilihan anda. Garis yang paling menarik adalah kumpulan mod antara baris 116 dan 131. Mereka kelihatan seperti ini:

// Mod kumpulan 1 # tentukan NUM_MODES1 7 // Tahap PWM untuk litar besar (FET atau Nx7135) #tentukan MODESNx1 0, 0, 0, 7, 56, 137, 255 // Tahap PWM untuk litar kecil (1x7135) # tentukan MODES1x1 2, 20, 110, 255, 255, 255, 0 // Sampel saya: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Sampel Krono: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // Kelajuan PWM untuk setiap mod #define MODES_PWM1 FASA, CEPAT, CEPAT, CEPAT, CEPAT, CEPAT, FASA // Kumpulan mod 2 #tentukan NUM_MODES2 4 #tentukan MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #tentukan MODES_PWM2 CEPAT, CEPAT, CEPAT, FASA

Untuk setiap kumpulan, MODESN adalah nilai PWM yang digunakan untuk FET, dan MODES1 adalah nilai PWM yang digunakan untuk 7135 dalam setiap mod. Angka antara 0 dan 255, dan sesuai dengan kecerahan cahaya. Maklumat lebih lanjut di sini. (tatal ke bawah ke "Peraturan mod:") Saya tidak pasti apa sebenarnya kelajuan PWM. Sekiranya ada yang tahu, beritahu saya di komen. FET dapat menghasilkan lebih banyak cahaya daripada 7135, tetapi 7135 mengekalkan tahap cahaya lebih kurang sama sepanjang hayat bateri, sementara FET semakin gelap ketika kehabisan bateri.

Di sini anda boleh menyesuaikan nilai PWM untuk menghasilkan mod mengikut keinginan anda. Anda mungkin boleh mengubah bilangan mod juga, tetapi saya belum mencubanya kerana saya mahukan empat mod, yang kebetulan adalah nombor dalam kumpulan kedua. Saya mahukan mod cahaya bulan yang lebih gelap, jadi saya menetapkan yang pertama ke 0/1, dan saya mendapati mod turbo menjadi sedikit sia-sia, jadi saya menggantinya dengan 137/255, setara dengan mod enam dalam kumpulan mod tujuh. Anda mungkin boleh mengubah kod yang lain jika perlu, tetapi saya belum mencubanya.

Apabila anda mendapat kod yang anda mahukan, anda harus menyusunnya ke fail.hex. Paling tidak, anda memerlukan gcc-avr dan avr-libc. Sekiranya anda menghadapi masalah, lihat kebergantungan lain dalam readme firmware. Repositori termasuk skrip binaan, tetapi saya tidak dapat berfungsi. Sebaliknya, saya memuat turun versi lama dengan

bzr cawangan lp: lampu suluh-firmware

dan menyalin skrip binaan lama (yang saya dapat bekerja) yang baru. Kemudian saya berlari:

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

dalam folder blf-a6. (mesti ada cara yang lebih baik untuk melakukannya) The../../bin/build.sh memanggil skrip, 13 menetapkan bahawa ia membina untuk ATtiny13 dan blf-a6 menentukan bahawa itu untuk BLF A6. (duh) Ia harus memberitahu anda perintah apa yang dijalankan dan memberi anda output. Milik saya kelihatan 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 = peruntukan, beban --change-section-lma.eeprom = 0 --no-change-Warnings -O ihex blf-a6.elf blf-a6.hex Program: 1022 byte (99.8% Penuh) Data: 13 bait (20.3% Penuh)

Perintah sudah dioptimumkan untuk ukuran, jadi jika dikatakan lebih dari 100% penuh, cuba komen

#tentukan FULL_BIKING_STROBE

di talian 147 untuk menggunakan strob basikal minimum yang lebih kecil. Sekiranya masih tidak sesuai, anda mungkin perlu membuang lebih banyak kod di suatu tempat. Setelah selesai menyusun, mesti ada fail yang disebut blf-a6.hex dalam folder. Ini adalah kod anda yang disusun, sedia untuk dikedip.

Langkah 3: Bongkar Lampu suluh

Lepaskan Lampu suluh
Lepaskan Lampu suluh
Lepaskan Lampu suluh
Lepaskan Lampu suluh
Lepaskan Lampu suluh
Lepaskan Lampu suluh

Buka penutup mentol lawan arah jam. Terdapat dua sambungan skru di sini. Yang lebih dekat dengan hujung mentol lampu suluh membuka reflektor dan LED, dan yang lebih dekat ke tengah membuka papan pemacu. Anda mahu yang lebih dekat ke tengah.

Di dalamnya, anda akan melihat spring bateri dan cincin penahan dengan dua lubang di dalamnya. Masukkan pinset / gunting nipis / gunting anda ke dalam lubang dan putar ke arah lawan jam. Cukup kaku, dan menggunakan dua objek yang berasingan mungkin tidak akan memberi anda pengaruh yang mencukupi. Saya menggunakan gunting pada Pisau Tentera Switzerland.

Sebaik sahaja anda mengeluarkan cincin, bebaskan papan pemandu. Ia masih terpasang dengan dua wayar, jadi berhati-hatilah. Mereka dipusingkan bersama, jadi putar papan dengan satu cara atau yang lain sehingga wayar melonggarkan. Apabila anda mempunyai kelonggaran yang cukup, balikkan papan. Anda mahukan supaya cip dengan "TINY13A" di atasnya lebih tinggi dan lebih mudah diakses. Sekiranya berada di sisi yang salah, balikkan dengan cara yang lain. Letakkan spring di sebelah. Ini akan meletakkannya buat sementara waktu dan menjadikannya lebih mudah untuk sampai ke cip. Sekiranya anda menghadapi masalah dengan ini, anda mungkin boleh melepaskan sambungan yang lain dan melepaskan kedua-dua wayar dari sisi lain sehingga anda dapat melepaskan papan sepenuhnya, tetapi saya belum mencubanya.

Langkah 4: Sambungkan Perkakasan Berkelip

Sambungkan Perkakasan Berkelip
Sambungkan Perkakasan Berkelip
Sambungkan Perkakasan Berkelip
Sambungkan Perkakasan Berkelip
Sambungkan Perkakasan Berkelip
Sambungkan Perkakasan Berkelip

Sekarang anda menggunakan klip SOIC8 untuk menyambungkan cip ATtiny13 dan pengaturcara anda. Dengan klip SOIC8 saya, jika saya mempunyai wayar merah di sebelah kiri kedua-dua hujung, barisan pin yang lebih dekat dengan saya di hujung klip sepadan dengan baris pin yang lebih dekat dengan saya di hujung penyambung, apabila penyambung menghadap ke bawah. (lihat gambar rajah seni super saya) Panduan ini mengesyorkan anda menggunakan programmer USB ASP V2.0. Sekiranya anda melakukannya, sambungkan seperti ini:

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

Sekiranya, seperti saya, anda menggunakan Arduino, anda perlu melakukan sedikit persediaan lagi. Ikuti langkah sifar dan dua panduan ini:

Buka Arduino IDE dan pastikan Arduino anda disambungkan ke komputer anda. Cari lakaran ISP dalam Fail> Contoh> 11. ArduinoISP> ArduinoISP dan muat naik ke Arduino anda. Kemudian sambungkan ATtiny13 kepadanya seperti ini:

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

Saya juga memasang pakej perkakasan, tetapi mungkin tidak diperlukan. Sekiranya ragu-ragu, cubalah. Ia tidak akan membahayakan. Tetapi jangan membakar pemuat but kerana ia mungkin akan menyekat lampu suluh anda.

Langkah 5: Flash It

Untuk mem-flash firmware, anda perlu memasang AVRDUDE. Untuk memastikan ia berfungsi dengan Arduino saya, saya menjalankan:

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

Sekiranya ia berfungsi, saya berpindah ke folder kosong di suatu tempat dan jalankan:

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 -Uffuse: r: hfuse-dump.hex: i

Untuk membuat sandaran firmware yang ada. Dan untuk menyalakannya, dari folder dengan blf-a6.hex yang diubah suai saya jalankan:

avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uffuse: w: 0xFF: m

Atas sebab-sebab tertentu, saya harus menentukan stk500v1 sebagai pengaturcara, dan ia tidak berfungsi kecuali saya menentukan port dan baud rate. Sekiranya anda menggunakan Arduino dan ragu-ragu, cuba putuskan sambungan ATtiny13 anda dari Arduino dan muat naik lakaran di Arduino IDE menggunakan tetapan di sini. Ia akan gagal, tetapi harus menyatakan perintah apa yang digunakannya di tetingkap konsol. Anda boleh menyalin atribut ke dalam perintah AVRDUDE anda.

Sekiranya anda menggunakan programmer USB ASP, jalankan:

avrdude -v -p attiny13 -c usbasp -n

Untuk melihat apakah ia 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 sandaran dan:

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

Untuk menyalakannya.

-Uflash: w: blf-a6.hex merujuk kepada fail yang dipancarkannya. Gantikan blf-a6.hex dengan nama fail anda jika berbeza.

-Ulfuse: w: 0x75: m dan -Uhfuse: w: 0xFF: m adalah sekering. Anda mungkin berbeza, jadi periksa semula nilai dalam lampu suluh-firmware / bin / flash-tiny13-fuses.sh.

Sekiranya ia memberikan ralat di luar jangkauan, itu bermaksud gambar terlalu besar untuk dipasang di cip dan anda harus membuang sebahagian kodnya. Sekiranya berjaya berkelip, ia akan memaparkan beberapa bar kemajuan, kemudian ucapkan "avrdude selesai. Terima kasih."

Sekiranya tertulis "tandatangan peranti tidak sah" dan pelompat pada programmer anda ditetapkan ke 3.3v, cuba tetapkan ke 5v.

Setelah anda menyalakannya, pasang semula lampu suluh anda dan lihat apakah ia berfungsi. Mine lakukan, tetapi masa dimatikan untuk beberapa ̶r̶e̶a̶s̶o̶n̶.̶ panjang menekan perlu kira tiga saat Daripada ̶1̶.̶5̶.̶ saya rasa tidak tahu jika nilai perkembangan sesuatu untuk dilakukan dengan Arduino atau kerana saya mengusulkan digunakan yang salah Tetapan ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Jika anda mempunyai apa-apa idea, ̶ Biar saya tahu dalam ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Edit: Saya memperbaikinya. (lihat langkah 1)

Disyorkan: