Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Download firmwaren
- Trin 2: Rediger firmwaren
- Trin 3: Adskil lommelygten
- Trin 4: Tilslut blinkende hardware
- Trin 5: Flash det
Video: Blinkende brugerdefineret firmware til en BLF A6 lommelygte: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Jeg har for nylig fået en BLF A6. Det er meget rart, men jeg kan ikke lide nogen af standardtilstandsgrupperne, så jeg ændrede firmwaren til at bruge mine foretrukne lysstyrker. Informationen var svær at finde, så jeg lægger alt, hvad jeg lærte her, for mig selv og andre.
Forbrugsvarer
BLF A6 (det fungerer sandsynligvis med andre ATtiny -baserede lommelygter)
Pincet / tynd tang / lille saks / noget for at fortryde førerkortets låsering
Computer til at blinke med, helst køre en Linux -distribution
USB ASP programmer / Arduino / noget der kan lave AVR programmering (tilsyneladende anbefales USB ASP programmereren, men jeg brugte en Arduino)
SOIC8 -klip (det er muligt at undvære, men det er meget besværligt og anbefales slet ikke)
(valgfrit) Brødbræt og/eller jumpertråde for at gøre tilslutningen lettere
Trin 1: Download firmwaren
Firmwaren til BLF A6 (og mange andre lommelygter) er tilgængelig her. Forfatteren taler om det her. Du kan downloade den ved at køre:
bzr branch lp: ~ toykeeper/lommelygte-firmware/blf-a6-final
i en terminal. (du skal muligvis installere bzr)
Bemærk: i en tidligere redigering af denne instruerbare brugte jeg i stedet "bzr branch lp: flashlight-firmware". Jeg har siden lært, at dette downloader en forældet version med forkerte værdier for off-time kondensatoren, hvilket gør, at knappen trykker ubehageligt længe. (tak til denne tråd på Reddit)
Den ønskede mappe er blf-a6-final/ToyKeeper/blf-a6. Den indeholder en kompileret.hex-fil, der er klar til at blinke (blf-a6.hex) og C-koden, som du kan ændre. (blf-a6.c) Hvis du vil blinke lager firmware, kan du springe det næste trin over og bare bruge blf-a6.hex. Nogle af de andre firmware i det lager vil sandsynligvis også fungere.
Trin 2: Rediger firmwaren
Åbn blf-a6.c i din foretrukne teksteditor eller IDE. De mest interessante linjer er tilstandsgrupperne mellem linje 116 og 131. De ser sådan ud:
// Tilstandsgruppe 1 #definer NUM_MODES1 7 // PWM -niveauer for det store kredsløb (FET eller Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // PWM -niveauer for det lille kredsløb (1x7135) # definere MODES1x1 2, 20, 110, 255, 255, 255, 0 // Min prøve: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Krono -prøve: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // PWM -hastighed for hver tilstand #define MODES_PWM1 FASE, HURTIG, HURTIG, HURTIG, HURTIG, HURTIG, FASE // Tilstandsgruppe 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 HURTIG, HURTIG, HURTIG, FASE
For hver gruppe er MODESN den PWM -værdi, der bruges til FET, og MODES1 er den PWM -værdi, der bruges til 7135 i hver tilstand. Tallet er mellem 0 og 255 og svarer til lysets lysstyrke. Mere information her. (rul ned til "Tilstandsregulering:") Jeg er ikke sikker på, hvad PWM -hastigheden nøjagtigt er. Hvis nogen ved det, så sig det til mig i kommentarerne. FET kan producere mere lys end 7135, men 7135 holder lysniveauet mere eller mindre det samme gennem batteriets levetid, mens FET bliver mørkere, når det løber tør for batteri.
Her kan du justere PWM -værdierne til at producere tilstande efter din smag. Du kan sikkert også ændre antallet af tilstande, men jeg har ikke prøvet det, da jeg ville have fire tilstande, hvilket tilfældigvis er tallet i den anden gruppe. Jeg ville have en mørkere måneskin -tilstand, så jeg satte den første til 0/1, og jeg synes, at turbotilstanden var lidt meningsløs, så jeg erstattede den med 137/255, svarende til tilstand seks i gruppen med syv tilstande. Du kan sandsynligvis ændre resten af koden, hvis det er nødvendigt, men jeg har ikke prøvet det.
Når du har den ønskede kode, skal du kompilere den til en.hex -fil. I det mindste har du brug for gcc-avr og avr-libc. Hvis du har problemer, skal du se på de andre afhængigheder i firmwaren. Depotet indeholder et build -script, men jeg kunne ikke få det til at fungere. I stedet downloadede jeg den gamle version med
bzr branch lp: lommelygte-firmware
og kopierede det gamle build -script (som jeg kunne komme i gang med) over det nye. Så løb jeg:
../../bin/build.sh 13 blf-a6
i blf-a6-mappen. (der burde være en bedre måde at gøre det på)../../bin/build.sh kalder scriptet, 13 angiver, at det bygger til en ATtiny13, og blf-a6 angiver, at det er til BLF A6. (duh) Det skulle fortælle dig, hvilke kommandoer det kører og give dig output. Min ser sådan ud:
avr -gcc -Wall -g -Os -mmcu = attiny13 -c -std = gnu99 -fgnu89 -inline -DATTINY = 13 -I.. -I../.. -I../../.. -fshort -enummer -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-advarsler -O ihex blf-a6.elf blf-a6.hex Program: 1022 bytes (99,8% fuld) Data: 13 bytes (20,3% fuld)
Kommandoerne er allerede optimeret til størrelse, så hvis den siger, at den er mere end 100% fuld, kan du prøve at kommentere
#define FULL_BIKING_STROBE
på linje 147 for at bruge den mindre minimale cykelstrobe. Hvis det stadig ikke passer, skal du sandsynligvis fjerne mere kode et eller andet sted. Når den er færdig med at kompilere, skal der være en fil kaldet blf-a6.hex i mappen. Dette er din kompilerede kode, klar til at blinke.
Trin 3: Adskil lommelygten
Skru pæreenden ud mod uret. Der er to skrueforbindelser her. Den tættere på pæreenden af lommelygten åbner reflektoren og LED'en, og den tættere på midten åbner driverbrættet. Du vil have den tættere på midten.
Inde skal du se batterifjederen og en fastholdelsesring med to huller i den. Sæt din pincet / tynde tang / saks i hullerne, og drej dem mod uret. Det er ret stift, og brug af to separate objekter vil sandsynligvis ikke give dig nok gearing. Jeg brugte saksen på en schweizisk hærkniv.
Når du har fået ringen ud, skal du frigøre driverbrættet. Det er stadig fastgjort med to ledninger, så vær forsigtig. De er snoet sammen, så drej brættet på en eller anden måde, indtil ledningerne løsner. Når du har nok spillerum, skal du vende brættet. Du vil have det, så chippen med "TINY13A" på er højere oppe og mere tilgængelig. Hvis det er på den forkerte side, skal du vende det den anden vej. Træk fjederen ind under siden. Dette vil midlertidigt holde det på plads og gøre det lettere at komme til chippen. Hvis du har problemer med dette, kan du sandsynligvis skrue den anden samling af og aflodde de to ledninger fra den anden side, så du kan fjerne brættet helt, men jeg har ikke prøvet det.
Trin 4: Tilslut blinkende hardware
Nu bruger du SOIC8 -klippet til at forbinde ATtiny13 -chippen og din programmør. Med mit SOIC8 -klip, hvis jeg har den røde ledning i venstre side af begge ender, svarer rækken af stifter tættere på mig på klipenden til rækken af stifter tættere på mig på konnektorenden, når stikket vender nedad. (se mit super kunstneriske diagram) Denne vejledning anbefaler, at du bruger en USB ASP V2.0 programmerer. Hvis du gør det, skal du forbinde det sådan:
- Pin 1 på ATtiny13 til pin 5 på USB ASP (nulstil)
- Pin 4 på ATtiny13 til pin 10 på USB ASP (jord)
- Pin 5 på ATtiny13 til pin 1 på USB ASP (MOSI)
- Pin 6 på ATtiny13 til pin 9 på USB ASP (MISO)
- Pin 7 på ATtiny13 til pin 7 på USB ASP (SCK)
- Pin 8 på ATtiny13 til pin 2 på USB ASP (VCC)
Hvis du ligesom mig bruger en Arduino, skal du forberede dig lidt mere. Følg trin nul og to i denne vejledning:
Åbn Arduino IDE, og kontroller, at din Arduino er forbundet til din computer. Find ISP -skitsen i Filer> Eksempler> 11. ArduinoISP> ArduinoISP, og upload den til din Arduino. Tilslut derefter ATtiny13 til det sådan:
- Pin 1 på ATtiny13 til pin 10 på Arduino (nulstil)
- Pin 4 på ATtiny13 til GND på Arduino (jorden)
- Pin 5 på ATtiny13 til pin 11 på Arduino (MOSI)
- Pin 6 på ATtiny13 til pin 12 på Arduino (MISO)
- Pin 7 på ATtiny13 til pin 13 på Arduino (SCK)
- Pin 8 på ATtiny13 til VCC / 5V / 3.3V på Arduino (enhver skal fungere, men 5V er mere pålidelig) (VCC)
Jeg har også installeret hardwarepakken, men det var sandsynligvis ikke nødvendigt. Hvis du er i tvivl, prøv det. Det vil ikke gøre nogen skade. Men lad være med at brænde bootloaderen, fordi den sandsynligvis vil tegne din lommelygte.
Trin 5: Flash det
For at flashe firmwaren skal du installere AVRDUDE. For at kontrollere, at det fungerer med min Arduino, kører jeg:
avrdude -v -p attiny13 -c stk500v1 -P /dev /ttyUSB0 -b 19200 -n
Hvis det virker, flytter jeg til en tom mappe et sted og kører:
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
For at lave en sikkerhedskopi af den eksisterende firmware. Og for at blinke det, fra mappen med den modificerede blf-a6.hex kører jeg:
avrdude -v -p attiny13 -c stk500v1 -P /dev /ttyUSB0 -b 19200 -u -Unflash: w: blf -a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Af en eller anden grund er jeg nødt til at angive stk500v1 som programmør, og det fungerede ikke, medmindre jeg angav port og baudrate. Hvis du bruger en Arduino og er i tvivl, kan du prøve at afbryde din ATtiny13 fra Arduino og uploade en skitse i Arduino IDE ved hjælp af indstillingerne her. Det mislykkes, men det skal sige, hvilken kommando det bruger i konsolvinduet. Du kan kopiere attributterne til din AVRDUDE -kommando.
Hvis du bruger en USB ASP -programmør, skal du i stedet køre:
avrdude -v -p attiny13 -c usbasp -n
For at se om det virker og:
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
For at lave en sikkerhedskopi og:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf -a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
For at blinke det.
-Uflash: w: blf-a6.hex refererer til den fil, den blinker. Erstat blf-a6.hex med dit filnavn, hvis det er anderledes.
-Ulfuse: w: 0x75: m og -Uhfuse: w: 0xFF: m er sikringerne. Din kan være anderledes, så tjek værdierne i lommelygte-firmware/bin/flash-tiny13-fuses.sh.
Hvis det giver en fejl uden for rækkevidde, betyder det, at billedet er for stort til at passe på chippen, og du skal fjerne noget af koden. Hvis det blinker med succes, skal det vise nogle statuslinjer og derefter sige "avrdude done. Tak."
Hvis der står "ugyldig enheds signatur", og jumperen på din programmør er indstillet til 3,3v, kan du prøve at indstille den til 5v.
Når du har blinket det, skal du samle din lommelygte igen og se, om den virker. Mine gjorde, men timingen er slukket for nogle ̶r̶e̶a̶s̶o̶n̶.̶ det lange presser nødt til at være cirka tre sekunder i stedet for 1.5. Jeg ved ikke, hvis udviklingsværdien er noget at gøre med Arduino, eller fordi jeg har brugt forkerte indstillinger ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Hvis du har nogen idé, ̶ lad mig vide i ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶
Edit: Jeg fik rettet det. (se trin 1)
Anbefalede:
Byg en bærbar bevægelsessporer (BLE fra Arduino til en brugerdefineret Android Studio App): 4 trin
Byg en bærbar bevægelsessporer (BLE fra Arduino til en brugerdefineret Android Studio App): Bluetooth Low Energy (BLE) er en form for lavstrøm Bluetooth -kommunikation. Bærbare enheder, ligesom de smarte beklædningsgenstande, jeg hjælper med at designe på Predictive Wear, skal begrænse strømforbruget, hvor det er muligt, for at forlænge batteriets levetid og ofte bruge BLE
Gør dig selv til en brugerdefineret, minimalistisk startside !: 10 trin
Gør dig selv til en brugerdefineret, minimalistisk startside !: Har du været nødt til at skifte til for det meste fjernarbejde, siden COVID-19 blev en ting? Samme! At arbejde hjemmefra med vores computere og over internettet betyder ofte, at vi skal holde styr på mange websteder til arbejde, til skolen eller endda … for sjov! Bogmærker
Geeetech Board til Raspberry Pi Via brugerdefineret USB -kabel Direkte kablet: 4 trin
Geeetech Board til Raspberry Pi Via brugerdefineret USB -kabel Direkte kablet: Hej! Denne vejledning viser, hvordan du laver et brugerdefineret USB til JST XH 4-benet kabel, så du direkte kan koble din Raspberry Pi eller en anden USB-enhed til et Geeetech 2560 rev 3-kort på en Geeetech-printer, f.eks. A10. Dette kabel tilsluttes den praktiske paral
Brugerdefineret 3D -printkabinet til Atari Punk -konsollen: 5 trin
Brugerdefineret 3D -printkabinet til Atari Punk -konsollen: For dem af jer som mig, der er interesseret i DIY -elektronik og analoge synthesizere, men er skræmt af elektronikens omkostninger og komplicerede natur, er Atari Punk Console (APC) en fantastisk indgangspunkt i dette felt. Det er
Blinkende SONOFF Tasmota Firmware på NodeMCU: 9 trin
Blinkende SONOFF Tasmota Firmware på NodeMCU: Sonoff er en WiFi -kontrolleret switch, der er integreret med ESP8266 IC og har relæer til at styre enheden via Internettet. Denne IC kan flashes og omprogrammeres af Arduino IDE. Skaberne af Sonoff udgav biblioteker og Arduino -filer på