Съдържание:

Мигащ персонализиран фърмуер към фенерче BLF A6: 5 стъпки
Мигащ персонализиран фърмуер към фенерче BLF A6: 5 стъпки

Видео: Мигащ персонализиран фърмуер към фенерче BLF A6: 5 стъпки

Видео: Мигащ персонализиран фърмуер към фенерче BLF A6: 5 стъпки
Видео: Меню "Для разработчиков Flyme 6.7.8.8g 2024, Ноември
Anonim
Мигащ персонализиран фърмуер към фенерче BLF A6
Мигащ персонализиран фърмуер към фенерче BLF A6

Наскоро взех BLF A6. Много е хубаво, но не харесвам нито една от групите по подразбиране, затова промених фърмуера, за да използвам предпочитаните от мен яркости. Информацията беше трудна за намиране, затова поставям всичко, което научих тук, за себе си и за другите.

Консумативи

BLF A6 (вероятно ще работи с други фенери на базата на ATtiny)

Пинцети / тънки клещи / малки ножици / нещо, което да развърже задържащия пръстен на борда на водача

Компютър, с който да мигате, за предпочитане с дистрибуция на Linux

USB ASP програмист / Arduino / нещо, което може да прави AVR програмиране (очевидно е препоръчително USB ASP програмист, но аз използвах Arduino)

Клип SOIC8 (възможно е и без, но е много неудобно и изобщо не се препоръчва)

(по избор) Кабелни платки и/или джъмперни проводници за улесняване на свързването

Стъпка 1: Изтеглете фърмуера

Фърмуерът за BLF A6 (и много други фенерчета) е достъпен тук. Авторът говори за това тук. Можете да го изтеглите, като стартирате:

bzr клон lp: ~ играч на играчки/фенерче-фърмуер/blf-a6-final

в терминал. (може да се наложи да инсталирате bzr)

Забележка: В предишна редакция на тази инструкция вместо това използвах „bzr branch lp: фърмуер за фенерче“. Оттогава научих, че това изтегля остаряла версия с грешни стойности за кондензатора за изключено време, което прави натискането на бутона неудобно дълго. (благодарение на тази тема в Reddit)

Папката, която искате, е blf-a6-final/ToyKeeper/blf-a6. Той съдържа компилиран.hex файл, готов за флаш (blf-a6.hex) и C код, който можете да промените. (blf-a6.c) Ако искате да преминете стоковия фърмуер, можете да пропуснете следващата стъпка и просто да използвате blf-a6.hex. Някои от другите фърмуери в това хранилище вероятно също ще работят.

Стъпка 2: Променете фърмуера

Отворете blf-a6.c в предпочитания от вас текстов редактор или IDE. Най -интересните редове са групите за режими между редове 116 и 131. Те изглеждат така:

// Режимна група 1 #дефинирайте NUM_MODES1 7 // ШИМ нива за голямата верига (FET или Nx7135) #дефинирайте РЕЖИМИNx1 0, 0, 0, 7, 56, 137, 255 // ШИМ нива за малката верига (1x7135) # дефинирайте MODES1x1 2, 20, 110, 255, 255, 255, 0 // Моята извадка: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Krono проба: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47, … 6? = 68 // ШИМ скорост за всеки режим #define MODES_PWM1 ФАЗА, БЪРЗО, БЪРЗО, БЪРЗО, БЪРЗО, БЪРЗО, ФАЗА // Режимна група 2 #дефинирайте NUM_MODES2 4 #дефинирайте РЕЖИМИ Nx2 0, 0, 90, 255 #дефинирайте РЕЖИМИ 1x2 20, 230, 255, 0 #define MODES_PWM2 БЪРЗО, БЪРЗО, БЪРЗО, ФАЗА

За всяка група MODESN е PWM стойността, използвана за FET, а MODES1 е PWM стойността, използвана за 7135 във всеки режим. Номерът е между 0 и 255 и съответства на яркостта на светлината. Повече информация тук. (превъртете надолу до "Регулиране на режима:") Не съм сигурен каква е скоростта на ШИМ. Ако някой знае нека ми каже в коментарите. FET може да произвежда повече светлина от 7135, но 7135 поддържа нивото на светлината горе -долу същото през целия живот на батерията, докато FET става по -тъмен, когато се изтощи батерията.

Тук можете да регулирате стойностите на ШИМ, за да произвеждате режими по ваш вкус. Вероятно можете да промените и броя на режимите, но не съм го пробвал, тъй като исках четири режима, което е числото във втората група. Исках по -тъмен режим на лунна светлина, затова зададох първия на 0/1 и намирам турбо режима за малко безсмислен, затова го замених с 137/255, еквивалент на режим шест в групата със седем режима. Вероятно можете да промените останалата част от кода, ако е необходимо, но не съм го пробвал.

Когато получите желания код, трябва да го компилирате в.hex файл. Най-малкото имате нужда от gcc-avr и avr-libc. Ако имате проблеми, погледнете другите зависимости в readme на фърмуера. Хранилището включва скрипт за изграждане, но не успях да го накарам да работи. Вместо това изтеглих старата версия с

bzr клон lp: фърмуер за фенерче

и копирах стария скрипт за изграждане (който можех да започна да работя) над новия. Тогава тичах:

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

в папката blf-a6. (трябва да има по-добър начин за това)../../bin/build.sh извиква скрипта, 13 уточнява, че се изгражда за ATtiny13, а blf-a6 посочва, че е за BLF A6. (duh) Трябва да ви каже какви команди изпълнява и да ви даде резултата. Моят изглежда така:

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 програма: 1022 байта (99,8% пълен) Данни: 13 байта (20,3% пълни)

Командите вече са оптимизирани за размер, така че ако пише, че е повече от 100% пълен, опитайте да коментирате

#дефинирайте FULL_BIKING_STROBE

на линия 147, за да използвате по -малкия минимален велосипеден строб. Ако все още не се вписва, вероятно ще трябва да премахнете още код някъде. Когато приключи компилирането, в папката трябва да има файл, наречен blf-a6.hex. Това е вашият компилиран код, готов за мигане.

Стъпка 3: Демонтирайте фенерчето

Демонтирайте фенерчето
Демонтирайте фенерчето
Демонтирайте фенерчето
Демонтирайте фенерчето
Демонтирайте фенерчето
Демонтирайте фенерчето

Развийте края на крушката обратно на часовниковата стрелка. Тук има две винтови съединения. Този по -близо до края на крушката на фенерчето отваря рефлектора и светодиода, а този по -близо до средата отваря таблото на водача. Искате този по -близо до средата.

Вътре трябва да видите пружината на батерията и задържащия пръстен с два отвора в нея. Поставете пинсетите / тънките клещи / ножиците в отворите и ги завъртете обратно на часовниковата стрелка. Той е доста твърд и използването на два отделни обекта вероятно няма да ви даде достатъчно влияние. Използвах ножиците на швейцарски армейски нож.

След като извадите пръстена, освободете борда на водача. Той все още е прикрепен с два проводника, така че бъдете внимателни. Те са усукани заедно, така че завъртете дъската по един или друг начин, докато проводниците се разхлабят. Когато имате достатъчно свобода на действие, обърнете дъската. Искате го така, че чипът с „TINY13A“да е по -горе и по -достъпен. Ако е от грешната страна, обърнете го в другата посока. Пъхнете пружината отстрани. Това временно ще го задържи на място и ще улесни достигането до чипа. Ако имате проблеми с това, вероятно можете да развиете другото съединение и да разлеите двата проводника от другата страна, за да можете напълно да премахнете дъската, но не съм я пробвал.

Стъпка 4: Свържете мигащ хардуер

Свържете мигащ хардуер
Свържете мигащ хардуер
Свържете мигащ хардуер
Свържете мигащ хардуер
Свържете мигащ хардуер
Свържете мигащ хардуер

Сега използвате скобата SOIC8, за да свържете чипа ATtiny13 и вашия програмист. С моята скоба SOIC8, ако имам червения проводник вляво от двата края, редът щифтове по -близо до мен в края на щипката съответства на реда от щифтове по -близо до мен в края на конектора, когато конекторът е обърнат надолу. (вижте моята супер художествена диаграма) Това ръководство препоръчва да използвате USB ASP V2.0 програмист. Ако го направите, свържете го по следния начин:

  • Пин 1 на ATtiny13 до щифт 5 на USB ASP (нулиране)
  • Пин 4 на ATtiny13 до щифт 10 на USB ASP (заземяване)
  • Пин 5 на ATtiny13 към щифт 1 на USB ASP (MOSI)
  • Пин 6 на ATtiny13 до щифт 9 на USB ASP (MISO)
  • Пин 7 на ATtiny13 до щифт 7 на USB ASP (SCK)
  • Pin 8 на ATtiny13 към pin 2 на USB ASP (VCC)

Ако, като мен, използвате Arduino, трябва да направите малко повече подготовка. Следвайте стъпки нула и втора от това ръководство:

Отворете Arduino IDE и се уверете, че вашият Arduino е свързан с вашия компютър. Намерете скицата на ISP във Файл> Примери> 11. ArduinoISP> ArduinoISP и я качете на вашия Arduino. След това свържете ATtiny13 към него по следния начин:

  • Пин 1 на ATtiny13 до щифт 10 на Arduino (нулиране)
  • Пин 4 на ATtiny13 към GND на Arduino (земя)
  • Пин 5 на ATtiny13 до щифт 11 на Arduino (MOSI)
  • Pin 6 на ATtiny13 към pin 12 на Arduino (MISO)
  • Пин 7 на ATtiny13 до щифт 13 на Arduino (SCK)
  • Пин 8 на ATtiny13 към VCC / 5V / 3.3V на Arduino (всеки трябва да работи, но 5V е по -надежден) (VCC)

Инсталирах и хардуерния пакет, но вероятно не беше необходимо. Ако се съмнявате, опитайте. Няма да навреди. Но не изгаряйте буутлоудъра, защото той вероятно ще забие фенерчето ви.

Стъпка 5: Преминете го

За да мигате фърмуера, трябва да инсталирате AVRDUDE. За да проверя дали работи с моя Arduino, пускам:

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

Ако работи, се премествам някъде в празна папка и стартирам:

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

За да направите резервно копие на съществуващия фърмуер. И за да го мига от папката с модифицирания blf-a6.hex, който пускам:

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

По някаква причина трябва да посоча stk500v1 като програмист и не работи, освен ако не посочих порта и скоростта на предаване. Ако използвате Arduino и се съмнявате, опитайте да изключите своя ATtiny13 от Arduino и да качите скица в Arduino IDE, като използвате настройките тук. Това ще се провали, но трябва да каже каква команда използва в прозореца на конзолата. Можете да копирате атрибутите във вашата команда AVRDUDE.

Ако използвате USB ASP програмист, вместо това стартирайте:

avrdude -v -p attiny13 -c usbasp -n

За да видите дали работи и:

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

За да направите резервно копие и:

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

За да го мига.

-Uflash: w: blf-a6.hex се отнася до файла, който мига. Заменете blf-a6.hex с името на вашия файл, ако е различно.

-Ulfuse: w: 0x75: m и -Uhfuse: w: 0xFF: m са предпазителите. Вашите може да са различни, така че проверете отново стойностите във фърмуера на фенерчето/bin/flash-tiny13-fuses.sh.

Ако дава грешка извън обхвата, това означава, че изображението е твърде голямо, за да се побере на чипа и трябва да премахнете част от кода. Ако мига успешно, трябва да покаже някои ленти за напредък, след което кажете "avrdude свършено. Благодаря."

Ако пише „невалиден подпис на устройство“и джъмперът на вашия програмист е настроен на 3.3v, опитайте да го настроите на 5v.

След като го светнете, сглобете отново фенерчето си и вижте дали работи. Мина е направил, но времето е изключен за известно ̶r̶e̶a̶s̶o̶n̶.̶ дългосрочен преси трябва да бъдат около три секунди, вместо на ̶1̶.̶5̶.̶ Не знам и да не сте нещо общо с Ардуино или защото аз съм използвал грешен настройки ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Ако има някаква идея, ̶ нека да знаят в ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Редактиране: Поправих го. (вижте стъпка 1)

Препоръчано: