продолжение
Прошивка полётника под пищалку моторами
Если вы прошились JESC то скорее всего вам этого достаточно. Полетайте так. Но если ну очень нужен к примеру бипер моторами, который собственно пищит то очень тихо, то дальше для вас.
Существенное дополнение. Я попытался прошить старый полётник, он с виду такой же как оранжевый только чёрного цвета. И получил не летающий вуп - работает только газ а остальные каналы молчат. Прошивка на заводскую LiteSilverware_f042_1s_bl_v1.0.hex возвращает вуп к жизни. В чём дело не разбирался но рекомендую прошивать оранжевые.
1. Компиляция
Если вы не имеете навыков в программировании, то лучше скачайте уже готовый образ HEX
https://yadi.sk/d/kPs8zYDIt87kjw
Если вы что-то сделаете не так или не понравится моя прошивка то теоретически всегда можно будет прошиться стандартной прошивкой по умолчанию. В интернете по поиску LiteSilverware_f042_1s_bl_v1.0.hex
https://yadi.sk/d/XLpcC2Oka3-MOQ
Для прошивки нам понадобится ST-LINK программатор
Компилировать будем программой Arm Keil. Установить её пробную версию можно с
https://www.keil.com/demo/eval/arm.htm
При установке нам возможно понадобятся драйвера и прочие неприятности. Но это осилите. Возможно будет война с драйверами через Zadig, будем надеяться что нет.
Оборудование нам нужно под stm32f042g6ux потому как у нас процессор STM32F042G6U6. При установке-запуске Keil выводит форму, позволяющую выбрать этот процессор.
Сами исходные тексты как это указано на картинке выше из описания сильвера расположены на
https://github.com/BETAFPV/LiteSilverware
Нас интересует прошивка под 1s, выбираем её и скачиваем Code-Dowload ZIP, который открываем
..\LiteSilverware-f042_1s_bl\Silverware\silverware.uvprojx
Ничего не правим в коде, пробуем компиляцию по клавише F7.
Опять же рекомендую посмотреть этот процесс в видео
https://www.youtube.com/watch?v=lovWwyzNWFo
Подводные камни:
Keil версия без лицензии не откомпилирует код и выдаст ошибку. Это проблема. Evalation версия имеет какие-то ограничения на размер файла или исходного когда. Используйте готовый hex файл для прошивки или боритесь с Keil.
В Keil при прошивке есть функция автоматичского обновления ST-LINK программатора, штука удобная и может пригодится. Это есть в видео.
2.Правки кода под бипер
У меня настойчивое впечатление что код на github меняется, так что вы можете скачать что-то похожее но не точно такое же. К примеру код что я скачал немного отличается от кода в видео.
Открываем если ещё не открыли в Keil проект
..\LiteSilverware-f042_1s_bl\Silverware\silverware.uvprojx
Config.h
#define Lite_BrushlessRX
Безколлекторый вуп со встроенным приемником. В видео у камрада стояла отдельная опция для FrSky, но этого достаточно.
//#define BUZZER_ENABLE CHAN_OFF
#define BUZZER_ENABLE CHAN_8
Сажаем баззер на 8 канал. По идее можно выбрать любой от CHAN_6 до CHAN_8.
К примеру у меня на LiteRadio2 по факту каналом 8 управляет тумблер SD.
#define MOTOR_BEEPS
Может лишнее но пусть будет.
hardware.h
вместо
#if defined(Lite_Brushless)
//FC must have MOSFETS and motor pulldown resistors removed. MAY NOT WORK WITH ALL ESCS
#define USE_SERIAL_4WAY_BLHELI_INTERFACE
Пусть будет
#if defined(Lite_BrushlessRX)
//FC must have MOSFETS and motor pulldown resistors removed. MAY NOT WORK WITH ALL ESCS
#define USE_SERIAL_4WAY_BLHELI_INTERFACE
Это чтобы оставить возможность прошить регуляторы по BLHELI на нашем Lite_BrushlessRX
Крайне рекомендую.
Target.h
#define Lite_OSD
комментим
//#define Lite_OSD
Отключаем OSD. Можно не отключать, но тогда надо что-то отключать ещё. Потому как исходный HEX получается большим и не влезет в полётник, будет писать ошибки с памятью наподобие:
memory exceed
Error: Flash Download failed - "Cortex-M0"
Buzzer.c
Можно удалить всё, сведя к виду
#include "project.h"
#include "drv_time.h"
#include "buzzer.h"
#include "defines.h"
#include "led.h"
#ifdef BUZZER_ENABLE
void buzzer(){
extern char aux[];
extern int failsafe;
if ( aux[BUZZER_ENABLE] ) {
ledflash ( 500000 , 8);
extern void motorbeep( void);
motorbeep();
}}
#endif
Drv_dshot_dma.c
Этот файл придётся открыть в Keil вручную через File-Open
..\LiteSilverware-f042_1s_bl\Silverware\src\drv_dshot_dma.c
void motorbeep(){
static unsigned long motor_beep_time = 0;
if ( failsafe ) {
исправляем на
void motorbeep(){
static unsigned long motor_beep_time = 0;
if ( failsafe || aux[BUZZER_ENABLE]) {
Компилируем (F7) и если повезёт получаем hex файл вида
…\LiteSilverware-f042_1s_bl\Silverware\Objects\nfe_silverware.hex
Смотрим на размер файла. Если он порядка 90килобайт, то это не влезет в полётник. Прошивки будут ругаться на память. Hex файл должен быть в районе 79-81 килобайт.
Надо обрезать функциональность в исходных кодах. Как вариант мною предложенный отключать OSD. Не нужен на вупах ОСД, пользуйтесь таймарами и сажайтесь как просядет тяга.
3. Прошивка полётника
Подключаем наш полётник к ST-LINK
D - SWDIO
C - SWCLK
G – GND
Подключаем батку.
Можно попробовать прошить из Keil, Download (F8) как это сделано в видео
https://www.youtube.com/watch?v=lovWwyzNWFo
Но есть вариант что не выйдет.
У меня прошивка очень бодро прошла через утилиту STM32CubeProgrammer
https://www.st.com/en/development-tools/stm32cubeprog.html
Подключаем через St-link полётник с баткой.
Open File,
Выбираем наш nfe_silverware.hex
Connect – должно быть успешно. Если упорно не хочет видеть st-link, боритесь с драйверами. Если не видит target (наш полётник) то смотрите-шевелите контакт нашего разъёма со штырьками на полётнике.
Download – полётник должен прошиться и выдать сообщение об успехе.
Готово. Заново биндимся. Проверяем что канал 8 работает – по тумблеру будет мигать зелёный светодиод на полётнике.
Квадрокоптер может не полететь если будут при арминге включены какие-то другие каналы с 6 по 8. Если квадрокоптер ведёт себя странно, в первую очередь проверяйте тумблеры.
Полетели?
Не факт. Если коптер вертится как волчёк, брыкается. То скорее всего моторы вертятся не так как нужно, даже если в родной прошивке они крутились как надо. Первое это посмотреть тубмлеры, повешенные на 6,7,8 каналы, всё ли выключено.
Возможно неправильно на аппе у вас настроен коптер, должно быть AETR. Хотя LiteRadio успешно работает с TAER потому как на моей literadio походу каналы все перепутаны.
Если нет, я не знаю как это исправить прошивкой, в прошивке законно стоят PROPS OUT как #define INVERT_YAW_PID
Исправьте вращение через BLHELI.
Законным считается что Красный провод это вращение по часовой стрелке CW а Чёрный против часовой CCW.
У меня после прошивки направление пропов слетело и нормально летает только так
1 – Normal
2 – Reverse
3 – Reverse
4 – Normal
На рисунке из инстукции направления вращения и номер регулятора показан со стороны брюха
Удачных полётов.
Любое копирование, правки и публикации абсолютно свободны.
p.s. а ещё st-link может быть с браком или контакты перепутаны. И в поле если влажность большая полётник может не заармится и надо его мазать жижей... И так можно говорить многое, но вы я думаю уже всё поняли.
p.p.s
Сильвер без сюрпризов не сильвер. Выезжаете вы на природу. Армитесь. Не работает. Полётник тупо не запускается до конца. Приезжаете домой – работает. Выезжаете – не работает. Приезжаете домой – работает.
ОСД в таких случаях якобы (мы же его отключили) пишет low battery и полётник не может стартовать. Отключаем эту левую функцию.
config.h
// *************do not start software if battery is too low (below 3.3v per cell) - only works on 1s lipos
// *************flashes 2 times repeatedly at startup
#define STOP_LOWBATTERY
Комментим как
// *************do not start software if battery is too low (below 3.3v per cell) - only works on 1s lipos
// *************flashes 2 times repeatedly at startup
//#define STOP_LOWBATTERY
Последняя прошивка с фиксеным этим багом