Inhaltsverzeichnis:

Benutzerdefinierte Firmware auf eine BLF A6-Taschenlampe flashen - Gunook
Benutzerdefinierte Firmware auf eine BLF A6-Taschenlampe flashen - Gunook

Video: Benutzerdefinierte Firmware auf eine BLF A6-Taschenlampe flashen - Gunook

Video: Benutzerdefinierte Firmware auf eine BLF A6-Taschenlampe flashen - Gunook
Video: Neue Methode OHNE Boden öffnen 07/2021 - Artillery Firmware Upgrade _ MBL+ABL 2024, Juli
Anonim
Flashen von benutzerdefinierter Firmware auf eine BLF A6-Taschenlampe
Flashen von benutzerdefinierter Firmware auf eine BLF A6-Taschenlampe

Ich habe vor kurzem einen BLF A6 bekommen. Es ist sehr schön, aber ich mag keine der Standardmodusgruppen, also habe ich die Firmware geändert, um meine bevorzugten Helligkeiten zu verwenden. Die Informationen waren schwer zu finden, daher stelle ich alles, was ich hier gelernt habe, für mich und andere zur Verfügung.

Lieferungen

BLF A6 (es wird wahrscheinlich mit anderen ATtiny-basierten Taschenlampen funktionieren)

Pinzette / dünne Zange / kleine Schere / etwas zum Lösen des Halterings der Treiberplatine

Computer zum Flashen, vorzugsweise mit einer Linux-Distribution

USB-ASP-Programmierer / Arduino / etwas, das AVR-Programmierung durchführen kann (anscheinend wird der USB-ASP-Programmierer empfohlen, aber ich habe einen Arduino verwendet)

SOIC8-Clip (kann auch darauf verzichtet werden, ist aber sehr fummelig und überhaupt nicht zu empfehlen)

(optional) Steckbrett und/oder Überbrückungsdrähte, um das Anschließen zu erleichtern

Schritt 1: Laden Sie die Firmware herunter

Die Firmware für das BLF A6 (und viele andere Taschenlampen) ist hier erhältlich. Der Autor spricht hier darüber. Sie können es herunterladen, indem Sie Folgendes ausführen:

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

in einem Terminal. (evtl. musst du bzr installieren)

Hinweis: In einer früheren Bearbeitung dieses Instructable habe ich stattdessen "bzr branch lp: flashlight-firmware" verwendet. Ich habe inzwischen erfahren, dass hierdurch eine veraltete Version mit falschen Werten für den Ausschaltkondensator heruntergeladen wird, wodurch der Tastendruck unangenehm lange gedrückt wird. (Danke an diesen Thread auf Reddit)

Der gewünschte Ordner ist blf-a6-final/ToyKeeper/blf-a6. Es enthält eine kompilierte.hex-Datei, die zum Flashen bereit ist (blf-a6.hex) und den C-Code, den Sie ändern können. (blf-a6.c) Wenn Sie die Standard-Firmware flashen möchten, können Sie den nächsten Schritt überspringen und einfach blf-a6.hex verwenden. Einige der anderen Firmware in diesem Repository werden wahrscheinlich auch funktionieren.

Schritt 2: Ändern Sie die Firmware

Öffnen Sie blf-a6.c in Ihrem bevorzugten Texteditor oder IDE. Die interessantesten Zeilen sind die Modusgruppen zwischen den Zeilen 116 und 131. Sie sehen so aus:

// Modusgruppe 1#define NUM_MODES1 7 // PWM-Pegel für den großen Schaltkreis (FET oder Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // PWM-Pegel für den kleinen Schaltkreis (1x7135) # define MODES1x1 2, 20, 110, 255, 255, 255, 0 // Mein Sample: 6=0..6, 7=2..11, 8=8..21(15..32) // Krono Sample: 6=5..21, 7=17..32, 8=33..96(50..78) // Manker2: 2=21, 3=39, 4=47, … 6?=68 // PWM-Geschwindigkeit für jeden Modus #define MODES_PWM1 PHASE, FAST, FAST, FAST, FAST, FAST, PHASE // Modusgruppe 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 SCHNELL, SCHNELL, SCHNELL, PHASE

Für jede Gruppe ist MODESN der PWM-Wert, der für den FET verwendet wird, und MODES1 ist der PWM-Wert, der für den 7135 in jedem Modus verwendet wird. Die Zahl liegt zwischen 0 und 255 und entspricht der Helligkeit des Lichts. Mehr Informationen hier. (scrollen Sie nach unten zu "Modusregelung:") Ich bin mir nicht sicher, welche PWM-Geschwindigkeit genau ist. Wenn es jemand weiß, sagt es mir in den Kommentaren. Der FET kann mehr Licht erzeugen als der 7135, aber der 7135 hält die Lichtstärke während der gesamten Lebensdauer der Batterie mehr oder weniger gleich, während der FET dunkler wird, wenn die Batterie leer ist.

Hier können Sie die PWM-Werte anpassen, um Modi nach Ihren Wünschen zu erzeugen. Sie können wahrscheinlich auch die Anzahl der Modi ändern, aber ich habe es nicht ausprobiert, da ich vier Modi haben wollte, was zufällig die Nummer in der zweiten Gruppe ist. Ich wollte einen dunkleren Mondlichtmodus, also habe ich den ersten auf 0/1 gesetzt, und ich finde den Turbomodus etwas sinnlos, also habe ich ihn durch 137/255 ersetzt, das Äquivalent von Modus sechs in der sieben Modusgruppe. Sie können den Rest des Codes bei Bedarf wahrscheinlich ändern, aber ich habe es nicht ausprobiert.

Wenn Sie den gewünschten Code haben, müssen Sie ihn in eine.hex-Datei kompilieren. Sie benötigen mindestens gcc-avr und avr-libc. Wenn Sie Probleme haben, sehen Sie sich die anderen Abhängigkeiten in der Firmware-Readme an. Das Repository enthält ein Build-Skript, aber ich konnte es nicht zum Laufen bringen. Stattdessen habe ich die alte Version mit heruntergeladen

bzr branch lp:flashlight-firmware

und kopierte das alte Build-Skript (das ich zum Laufen bringen konnte) über das neue. Dann lief ich:

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

im blf-a6-Ordner. (es sollte einen besseren Weg geben) Die../../bin/build.sh ruft das Skript auf, die 13 gibt an, dass es für ein ATtiny13 erstellt und das blf-a6 gibt an, dass es für das BLF A6 ist. (duh) Es sollte Ihnen sagen, welche Befehle es ausführt und Ihnen die Ausgabe geben. Meine sieht so aus:

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 Programm: 1022 Byte (99,8% voll) Daten: 13 Byte (20,3% voll)

Die Befehle sind bereits für die Größe optimiert. Wenn also angezeigt wird, dass sie zu mehr als 100% voll sind, versuchen Sie es auszukommentieren

#define FULL_BIKING_STROBE

auf Linie 147, um den kleineren minimalen Fahrradblitz zu verwenden. Wenn es immer noch nicht passt, müssen Sie wahrscheinlich irgendwo weiteren Code entfernen. Wenn die Kompilierung abgeschlossen ist, sollte sich im Ordner eine Datei namens blf-a6.hex befinden. Dies ist Ihr kompilierter Code, bereit zum Flashen.

Schritt 3: Zerlegen Sie die Taschenlampe

Zerlegen Sie die Taschenlampe
Zerlegen Sie die Taschenlampe
Zerlegen Sie die Taschenlampe
Zerlegen Sie die Taschenlampe
Zerlegen Sie die Taschenlampe
Zerlegen Sie die Taschenlampe

Schrauben Sie das Lampenende gegen den Uhrzeigersinn ab. Hier gibt es zwei Schraubverbindungen. Das eine näher am Lampenende der Taschenlampe öffnet den Reflektor und die LED, und das näher an der Mitte öffnet die Treiberplatine. Sie möchten das eine näher an der Mitte.

Im Inneren sollten Sie die Batteriefeder und einen Haltering mit zwei Löchern sehen. Stecken Sie Ihre Pinzette / dünne Zange / Schere in die Löcher und drehen Sie sie gegen den Uhrzeigersinn. Es ist ziemlich steif und die Verwendung von zwei separaten Objekten wird Ihnen wahrscheinlich nicht genug Hebelwirkung geben. Ich habe die Schere an einem Schweizer Taschenmesser verwendet.

Sobald Sie den Ring herausgeholt haben, befreien Sie die Treiberplatine. Es ist immer noch mit zwei Drähten befestigt, also sei vorsichtig. Sie sind miteinander verdreht, also drehen Sie die Platine auf die eine oder andere Weise, bis sich die Drähte lösen. Wenn Sie genügend Spielraum haben, drehen Sie das Brett um. Sie möchten, dass der Chip mit "TINY13A" höher und zugänglicher ist. Wenn es auf der falschen Seite ist, drehen Sie es in die andere Richtung. Stecken Sie die Feder unter die Seite. Dies hält ihn vorübergehend an Ort und Stelle und erleichtert den Zugang zum Chip. Wenn Sie damit Probleme haben, können Sie wahrscheinlich die andere Verbindung abschrauben und die beiden Drähte von der anderen Seite entlöten, damit Sie die Platine vollständig entfernen können, aber ich habe es nicht versucht.

Schritt 4: Flash-Hardware anschließen

Flash-Hardware anschließen
Flash-Hardware anschließen
Flash-Hardware anschließen
Flash-Hardware anschließen
Flash-Hardware anschließen
Flash-Hardware anschließen

Jetzt verwenden Sie den SOIC8-Clip, um den ATtiny13-Chip und Ihren Programmierer zu verbinden. Wenn ich bei meinem SOIC8-Clip das rote Kabel links von beiden Enden habe, entspricht die Reihe der Stifte, die mir am Clipende näher liegen, der Reihe der Stifte, die mir am Steckerende näher liegen, wenn der Stecker nach unten zeigt. (Siehe mein super künstlerisches Diagramm) In diesem Handbuch wird empfohlen, einen USB ASP V2.0-Programmierer zu verwenden. Wenn Sie dies tun, verbinden Sie es wie folgt:

  • Pin 1 am ATtiny13 an Pin 5 am USB ASP (Reset)
  • Pin 4 am ATtiny13 an Pin 10 am USB ASP (Masse)
  • Pin 5 am ATtiny13 an Pin 1 am USB ASP (MOSI)
  • Pin 6 am ATtiny13 an Pin 9 am USB ASP (MISO)
  • Pin 7 am ATtiny13 an Pin 7 am USB ASP (SCK)
  • Pin 8 am ATtiny13 an Pin 2 am USB ASP (VCC)

Wenn Sie wie ich ein Arduino verwenden, müssen Sie etwas mehr Vorbereitung tun. Befolgen Sie die Schritte null und zwei dieser Anleitung:

Öffnen Sie die Arduino IDE und stellen Sie sicher, dass Ihr Arduino mit Ihrem Computer verbunden ist. Suchen Sie die ISP-Skizze in Datei>Beispiele>11. ArduinoISP>ArduinoISP und laden Sie sie auf Ihr Arduino hoch. Verbinden Sie dann den ATtiny13 wie folgt damit:

  • Pin 1 am ATtiny13 an Pin 10 am Arduino (Reset)
  • Pin 4 am ATtiny13 an GND am Arduino (Masse)
  • Pin 5 am ATtiny13 an Pin 11 am Arduino (MOSI)
  • Pin 6 am ATtiny13 an Pin 12 am Arduino (MISO)
  • Pin 7 am ATtiny13 an Pin 13 am Arduino (SCK)
  • Pin 8 am ATtiny13 an VCC / 5V / 3.3V am Arduino (jeder sollte funktionieren, aber 5V ist zuverlässiger) (VCC)

Ich habe auch das Hardwarepaket installiert, aber es war wahrscheinlich nicht notwendig. Im Zweifelsfall versuchen Sie es. Es wird nicht schaden. Aber verbrennen Sie den Bootloader nicht, da er wahrscheinlich Ihre Taschenlampe kaputt macht.

Schritt 5: Flashen Sie es

Um die Firmware zu flashen, müssen Sie AVRDUDE installieren. Um zu überprüfen, ob es mit meinem Arduino funktioniert, führe ich aus:

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

Wenn es funktioniert, verschiebe ich irgendwo in einen leeren Ordner und führe aus:

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

Um ein Backup der vorhandenen Firmware zu erstellen. Und um es zu flashen, führe ich aus dem Ordner mit der modifizierten blf-a6.hex aus:

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

Aus irgendeinem Grund muss ich stk500v1 als Programmierer angeben, und es hat nicht funktioniert, es sei denn, ich habe den Port und die Baudrate angegeben. Wenn Sie ein Arduino verwenden und im Zweifel sind, versuchen Sie, Ihr ATtiny13 vom Arduino zu trennen und eine Skizze in der Arduino-IDE mit den Einstellungen hier hochzuladen. Es wird fehlschlagen, aber es sollte sagen, welcher Befehl im Konsolenfenster verwendet wird. Sie können die Attribute in Ihren AVRDUDE-Befehl kopieren.

Wenn Sie einen USB-ASP-Programmierer verwenden, führen Sie stattdessen Folgendes aus:

avrdude -v -p attiny13 -c usbasp -n

Um zu sehen, ob es funktioniert und:

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

So erstellen Sie ein Backup und:

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

Um es zu flashen.

-Uflash:w:blf-a6.hex bezieht sich auf die zu blinkende Datei. Ersetzen Sie blf-a6.hex durch Ihren Dateinamen, falls dieser anders ist.

-Ufuse:w:0x75:m und -Uhfuse:w:0xFF:m sind die Sicherungen. Ihre können anders sein, also überprüfen Sie die Werte in flashlight-firmware/bin/flash-tiny13-fuses.sh.

Wenn ein Fehler außerhalb des Bereichs angezeigt wird, bedeutet dies, dass das Bild zu groß ist, um auf den Chip zu passen, und Sie müssen einen Teil des Codes entfernen. Wenn es erfolgreich blinkt, sollten einige Fortschrittsbalken angezeigt werden, und sagen Sie dann "avrdude done. Danke."

Wenn "ungültige Gerätesignatur" angezeigt wird und der Jumper an Ihrem Programmierer auf 3,3 V gesetzt ist, versuchen Sie, ihn auf 5 V zu setzen.

Nachdem Sie es geflasht haben, bauen Sie Ihre Taschenlampe wieder zusammen und sehen Sie, ob sie funktioniert. Mine tat, aber das Timing ihn für einige ̶r̶e̶a̶s̶o̶n̶.̶ Die lange presst sein müssen etwa drei Sekunden statt 1.5. ich weiß nicht, ob es ist etwas mit dem Arduino oder weil ive verwendet falsche Einstellungen ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ wenn Sie eine Idee haben, ̶ Lassen Sie mich wissen in der ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Edit: Ich habe es behoben. (siehe Schritt 1)

Empfohlen: