Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Laden Sie die Firmware herunter
- Schritt 2: Ändern Sie die Firmware
- Schritt 3: Zerlegen Sie die Taschenlampe
- Schritt 4: Flash-Hardware anschließen
- Schritt 5: Flashen Sie es
Video: Benutzerdefinierte Firmware auf eine BLF A6-Taschenlampe flashen - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
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
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
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:
Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde – wikiHow
Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde: HintergrundgeschichteIch habe sechs automatisierte Gewächshäuser, die über Dublin, Irland, verteilt sind. Durch die Verwendung einer maßgeschneiderten Handy-App kann ich die automatisierten Funktionen in jedem Gewächshaus aus der Ferne überwachen und mit ihnen interagieren. Ich kann den Win manuell öffnen / schließen
So kopieren Sie Spielstände auf einfache Weise auf eine Microsoft- oder Drittanbieter-MU.: 9 Schritte
So kopieren Sie Spielstände einfach auf eine Microsoft- oder Drittanbieter-MU.: Original-Tutorial HIER CD, die es einfach macht, genau das zu tun. Dies ist kein vollständiges Softmod-Tutorial, dies
Wie zeichne ich einen Computerbildschirm auf einem Mac auf?: 7 Schritte
Wie zeichne ich den Computerbildschirm auf dem Mac auf?: Wie zeichne ich den Bildschirm auf dem Mac auf? Wollten Sie schon immer etwas aufzeichnen, was auf Ihrem Computer oder Telefon passiert? Vielleicht sehen Sie sich ein Video an und möchten einen Clip aufnehmen; Vielleicht versuchst du jemandem zu zeigen, wie man etwas macht, und ein Video würde es schaffen
Stativ-Kopf auf Einbeinstativ-Kopf Adapter auf 43 Cent. Wörtlich.: 6 Schritte
Stativ-Kopf auf Einbeinstativ-Kopf Adapter auf 43 Cent. Wörtlich.: Kurze Version meiner Geschichte: Ich habe eine Kamera gekauft, sie kam mit einem Bündel an Zubehör, darunter ein Samsonite 1100 Stativ. Ich habe ein Einbeinstativ. Ich möchte sehr bald Fotos mit einem Schwenkkopf auf dem Einbeinstativ machen und hatte keine 40 $, um ein L
So aktualisieren Sie die Firmware auf einer Universalplatine: 4 Schritte
So aktualisieren Sie die Firmware auf einem Universal PCB: Das Projekt Universal PCB (kurz UPCB) wurde gestartet, um einen einzelnen Gamecontroller, insbesondere Fighting Sticks, auf möglichst vielen verschiedenen Konsolen zu ermöglichen. Informationen zum Projekt findet ihr im folgenden Thread im Shoryuken.com