Оглавление:

Прошивка кастомной прошивки на фонарик BLF A6: 5 шагов
Прошивка кастомной прошивки на фонарик BLF A6: 5 шагов

Видео: Прошивка кастомной прошивки на фонарик BLF A6: 5 шагов

Видео: Прошивка кастомной прошивки на фонарик BLF A6: 5 шагов
Видео: Kugoo G1 на глубоком песке 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: ~ toykeeper / flashlight-firmware / blf-a6-final

в терминале. (возможно, вам придется установить bzr)

Примечание: в предыдущей редакции этого руководства я использовал вместо этого "bzr branch lp: flashlight-firmware". С тех пор я узнал, что при этом загружается устаревшая версия с неправильными значениями конденсатора отключения, из-за чего кнопки нажимаются слишком долго. (спасибо этой теме на 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) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // Уровни ШИМ для малой схемы (1x7135) # define 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) // Манкер2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // Скорость ШИМ для каждого режима #define MODES_PWM1 PHASE, FAST, FAST, FAST, FAST, FAST, PHASE // Группа режимов 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 FAST, FAST, FAST, PHASE

Для каждой группы MODESN - это значение ШИМ, используемое для полевого транзистора, а MODES1 - это значение ШИМ, используемое для 7135 в каждом режиме. Число от 0 до 255 и соответствует яркости света. Больше информации здесь. (прокрутите вниз до «Регулировка режима:») Я не уверен, что такое скорость ШИМ. Если кто знает, подскажите в комментариях. Полевой транзистор может производить больше света, чем 7135, но 7135 сохраняет уровень освещенности более или менее одинаковым на протяжении всего срока службы батареи, в то время как полевой транзистор темнеет по мере разряда батареи.

Здесь вы можете настроить значения ШИМ, чтобы настроить режимы по своему вкусу. Вы, вероятно, также можете изменить количество режимов, но я не пробовал, так как мне нужно было четыре режима, что является числом во второй группе. Мне нужен более темный режим лунного света, поэтому я установил первый на 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. (да) Он должен сказать вам, какие команды он выполняет, и дать вам результат. Мой выглядит так:

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%, попробуйте закомментировать

#define 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)
  • Контакт 8 на ATtiny13 к контакту 2 на USB ASP (VCC)

Если вы, как и я, используете Arduino, вам нужно немного больше подготовиться. Выполните нулевой и второй шаги этого руководства:

Откройте IDE Arduino и убедитесь, что ваш Arduino подключен к вашему компьютеру. Найдите эскиз ISP в меню «Файл»> «Примеры»> 11. ArduinoISP> ArduinoISP и загрузите его на свой Arduino. Затем подключите к нему ATtiny13 следующим образом:

  • Контакт 1 на ATtiny13 к контакту 10 на Arduino (сброс)
  • Контакт 4 на ATtiny13 к GND на Arduino (земля)
  • Контакт 5 на ATtiny13 к контакту 11 на Arduino (MOSI)
  • Контакт 6 на ATtiny13 к контакту 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: я

Чтобы сделать резервную копию и:

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 предохранители. Ваш может быть другим, поэтому дважды проверьте значения в flashlight-firmware / bin / flash-tiny13-fuses.sh.

Если он выдает ошибку вне допустимого диапазона, это означает, что изображение слишком велико для размещения на чипе, и вам необходимо удалить часть кода. Если он успешно мигает, он должен отобразить несколько индикаторов выполнения, а затем сказать «avrdude done. Спасибо».

Если он говорит «недействительная подпись устройства» и перемычка на вашем программаторе установлена на 3,3 В, попробуйте установить ее на 5 В.

После того, как вы его прошили, соберите фонарик и посмотрите, работает ли он. Mine сделали, но хронометраж отключен по ̶r̶e̶a̶s̶o̶n̶.̶ Длинных пресс должны быть около трех секунд, а не 1.5. Я не знаю, если подмигнул что-то делать с Arduino или из-за ̶I̶'̶v̶e̶, используемыми неверном ПараМеТрЫ ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Если ты хоть представляешь, ̶ дайте мне знать, в ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Изменить: я исправил это. (см. шаг 1)

Рекомендуемые: