» tråder » Reparasjon, modernisering »Hvordan blinke en lommelykt for å endre driftsmodus

Hvordan blinke en lommelykt for å endre driftsmodus


Forfatteren av dette materialet likte ikke de normale driftsformene for lommelykten BLF A6. Så bestemte han seg for å blinke programvaredelen av lommelykten, og stille inn modusene. Som det viste seg, er dette ikke så enkelt, det er et minimum av informasjon om firmware og pinouts og han måtte samle den litt etter litt. Og for at hun ikke skulle gå seg vill, bestemte han seg for å hjelpe andre og ordne alt i en artikkel.

Så for arbeid trenger du følgende:
Lommelykt BLF A6 (sannsynligvis vil dette fungere med andre lommelykter basert på ATtiny).
Pincet / tynn tang / liten saks.
En datamaskin for firmware, helst med Linux-distribusjon.
USB ASP / programmerer Arduino / noe AVR-programmering kan gjøre (USB ASP-programmereren er tydeligvis bedre, men veiviseren brukte Arduino).
Høyhastighets Rail-to-Rail forsterker [SOIC-8] (du kan klare deg uten det, men det er veldig upraktisk).
Utviklingstavle og jumpertråder for tilkobling.

Firmware.
Firmware for BLF A6 (og mange andre lommelykter) er tilgjengelig her. Et diskusjonsforum er tilgjengelig om dette lenken.
Du kan laste ned firmware ved å søke "bzr branch lp: lommelykt-firmware". Trenger lommelykt-firmware / ToyKeeper / blf-a6-mappen. Den inneholder en samlet fil. hex, klar for firmware (blf-a6.hex), og C-kode, som også kan endres (blf-a6.c). Hvis du vil blitsere fast firmware, kan du hoppe over neste trinn og bare bruke blf-a6.hex. Noen andre firmware i dette repository vil sannsynligvis fungere også.

Endre firmware.
Forsiktig symboler, for ikke å forvrenge betydningen, blir gitt uten oversettelse.
Åpne blf-a6.c i den foretrukne tekstredigereren eller IDE. De mest interessante linjene er modusgruppene mellom linjene 94 og 109. De ser slik ut:
// Modusgruppe 1
#definere NUM_MODES1 7
// PWM-nivåer for den store kretsen (FET eller Nx7135)
#define MODESNx1 0,0,0,7,56,137,255
// PWM-nivåer for den lille kretsen (1x7135)
#definere MODES1x1 3,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-hastighet for hver modus
#definere MODES_PWM1 FASE, RASK, RASK, RASK, RASK, RASK, FASE
// Modusgruppe 2
#definere NUM_MODES2 4
#define MODESNx2 0,0,90,255
#definere MODES1x2 20,230,255,0
#definere MODES_PWM2 RASK, RASK, RASK, FASE

For hver gruppe er MODESN PWM-verdien som brukes for FET, og MODES1 er PWM-verdien som brukes for 7135 i hver modus. Tallet ligger i området fra 0 til 255 og tilsvarer lysstyrken. Mer info
her. (bla ned til "Moduskontroll:") Masteren er ikke sikker på hva PWM-hastigheten er.Hvis noen vet, så fortell meg i kommentarene. En felteffekttransistor kan produsere mer lys enn 7135, men 7135 holder lysnivået mer eller mindre det samme gjennom batteriets levetid, mens lyset dimmes når batteriet blir tomt når du bruker en felteffekttransistor.

Her kan vi justere PWM-verdiene for å opprette modus etter vår smak. Du kan også endre antall moduser, men masteren gjorde ikke dette fordi han trenger fire moduser, og dette er tallet i den andre gruppen. Han ønsket et mørkere måneskinnregime, og satte derfor det første til 0/1. Han anser også turbomodusen som litt meningsløs, så jeg erstattet den med 137/255, noe som tilsvarer den sjette modusen i en gruppe på syv modus.

Når du har koden du trenger, må du samle den til en .hex-fil. I det minste trenger du gcc-avr og avr-libc. Hvis du har problemer, kan du se på andre avhengigheter i readme-filen. Depotet inneholder et build-skript, så alt du trenger å gjøre er å kjøre:
../../bin/build.sh 13 blf-a6
i blf-a6-mappen. ../../Bin/build.sh er manuset. 13 indikerer at det er for ATtiny13, og blf-a6 indikerer at det er for BLF A6.
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.c
avr-gcc -Vegg -g -Os -mmcu = attiny13 -fgnu89-inline -o blf-a6.elf blf-a6.o
avr-objcopy - set-section-flags = .eeprom = alloc, load - bytteseksjon-lma .eeprom = 0 --no-Change-advarsler -O ihex blf-a6.elf blf-a6.hex
Program: 1022 byte (99,8% full)
data: 13 byte (20,3% full)
Lagene er allerede optimalisert i størrelse, så hvis det skrives at de er mer enn 100% fulle, kan du prøve å slette
#definere FULL_BIKING_STROBE

Linje 125 staver lite syklus strobe lys. Hvis dette ikke er nok, må noe annet kuttes.
Når samlingen er fullført, skal mappen inneholde en fil som heter blf-a6.hex. Dette er samlet kode, klar for firmware.

Demontering av lommelykten.
Skru ut lyskasteren på lommelykten. Det er to skrueforbindelser. Den som er nærmere lommelyktens kropp fikser reflektoren og LED, og ​​den som er nærmere midten fikserer brettet. Vi trenger et gjennomsnitt.

Inni ser du en snapring med en fjær og to hull langs kantene. Sett pinsett / tynn tang / saks inn i hullene og roter dem mot klokken.

Når ringen er fjernet, har du tilgang til brettet. Den er fremdeles festet med to ledninger, så vær forsiktig. De er vridd sammen, så roter brettet til ledningene er løse. Så snu brettet. Det er nødvendig at brikken med påskriften "TINY13A" var mer tilgjengelig.

Hvis ledningene er korte og det ikke fungerer, må du fjerne brettet.






Tilkobling.
Nå må du forberede brettet på firmware.
Veiviseren bruker SOIC8 for å koble ATtiny13-brikken og programmereren.
Hvordan blinke en lommelykt for å endre driftsmodus



Se bildet mens veiviseren kobler til. Legg merke til den røde streken i den andre figuren.

Hvis du bruker USB ASP V2.0 programmerer, må du koble den slik:
Pin 1 på ATtiny13 - Pin 5 på USB ASP (reset)
Pin 4 på ATtiny13 - Pin 10 på USB ASP (Ground)
Pin 5 på ATtiny13 - Pin 1 på USB ASP (MOSI)
Pin 6 på ATtiny13 - Pin 9 på USB ASP (MISO)
Pin 7 på ATtiny13 - Pin 7 på USB ASP (SCK)
Pin 8 på ATtiny13 - Pin 2 på USB ASP (VCC)

Hvis du bruker Arduino, som veiviseren, følger du disse trinnene:
Åpne Arduino IDE og sørg for at Arduino er koblet til datamaskinen. Finn ISP-skissen i File> Eksempler> 11.ArduinoISP> ArduinoISP og last den opp til Arduino. Koble deretter ATtiny13 til den på følgende måte:
Pin 1 on ATtiny13 - Pin 10 on Arduino (reset)
Pin 4 på ATtiny13 - GND på Arduino (Ground)
Pin 5 på ATtiny13 - Pin 11 på Arduino (MOSI)
Pin 6 på ATtiny13 - Pin 12 på Arduino (MISO)
Pin 7 på ATtiny13 - Pin 13 på Arduino (SCK)
Pinne 8 på ATtiny13 - VCC / 5V eller 3.3V på Arduino (5V foretrukket)

Firmware.
Trinn 5: blitz det
For firmware, må du installere AVRDUDE. For å sjekke om dette fungerer med Arduino, skriver veiviseren en kommando:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Hvis dette fungerer, gå til den tomme mappen og registrer deg:
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
Lag en sikkerhetskopi av eksisterende firmware. Å blinke, fra mappen med den endrede blf-a6.hex starter den:
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
Du må spesifisere stk500v1 som programmerer, og spesifisere port og dataoverføringshastighet. Hvis du bruker Arduino og er i tvil, kan du prøve å koble ATtiny13 fra Arduino og laste opp skissen til Arduino IDE ved å bruke disse innstillingene. Dette vil ikke fungere, men du vil finne ut hvilken kommando som brukes i konsollvinduet. Deretter kan du kopiere attributtene til AVRDUDE-kommandoen.

Hvis du bruker en USB ASP-programmerer, kjører du:
avrdude -v -p attiny13 -c usbasp -n
For å se om dette fungerer:
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
Lag en sikkerhetskopi:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhuse: w: 0xFF: m
Å blinke:
-Uflash: w: blf-a6.hex. Erstatt blf-a6.hex med filnavnet hvis det er annerledes.
-Ulfuse: w: 0x75: m og -Uhuse: w: 0xFF: m
Hvis det oppstår en feil, betyr dette at bildefilen er for stor til å passe på brikken, og du må slette en del av koden. Hvis alt er normalt, bør noen fremdriftsindikatorer vises, og deretter ordene "avrdude gjort. Takk."
Når du har blinket brikken, sett sammen lommelykten og se om den fungerer.
Spørsmål \ emne blir automatisk publisert i det sosiale. nettverk av nettsteder - følg med for svar der:

Passer for tema

Beslektede emner

Legg til en kommentar

    • smilersmilerxaxaokdontknowyahoonea
      sjefscratchlurejaja-jaaggressivhemmelighet
      beklagerdansedance2dance3benådninghjelpdrikkevarer
      stoppvennergodgoodgoodfløytebesvimelsetunge
      røykklappingCrayerklærehånligdon-t_mentionnedlasting
      heteirefullaugh1MDAmøtemoskingnegative
      not_ipopcornstraffeleseskremmeskremmersøk
      spydighetthank_youdetteto_clueumnikakuttenig
      dårligbeeeblack_eyeblum3rødmeskrytekjedsomhet
      sensurertpleasantrysecret2trueseieryusun_bespectacled
      ShokRespektlolPrevedvelkommenKrutoyya_za
      ya_dobryihelperne_huliganne_othodiFLUDforbudnær

Vi anbefaler deg å lese:

Gi den til smarttelefonen ...