Полетные режимы вашего квадрика и направление на экране аппы
Ну вот, как и обещал, выкладываю следующую версию 1.1.114
Скачать можно с гугла с помощью svn. Для тех, у кого возникали затруднения со скачиванием прошивок с гугла, прикрепляю архив с прошивками к этому посту.
Ставьте, тестируйте, отписывайтесь о найденных ошибках. Если сможете сами какие-то ошибки исправить - исправляйте, тестируйте, затем шлите мне куски исправленного кода.
Возможны небольшие недоразумения с отображением направления на точку взлета, в связи с тем, что у меня “нелетная погода” и протестировать в поле не было возможности. По тем же причинам не тестировалось расстояние до wp и home.
Обратите внимание, что появились отметки о направлении “домой” и “на waypoint”. Home_dist рассчитывается так же, как и в ArduCAM и MinimOSD.
Постарался учесть все пожелания/замечания, которые здесь обсуждались, но если что-то забыл, прошу прощения.
Поддерживаются все полетные режимы текущей версии 1.3.3-dev ардукоптера, включая FLIP, AutoTune и PosHold.
Поддержка 24 сообщений уровня SEVERITY_HIGH (все PreArm, AutoTune, а также новые ESC Cal, Low Battery и Lost GPS)
Поддержка DGPS и RTK режимов.
Остальное всё видно на фото.
Ну, в общем, всё как обычно: комменты, вопросы, пожелания - вэлкам!
Красотища!!!😇😃😃😃
Виктор,еще раз СПАСИБО за проделанную работу.
Уже поставил.64К
Появилось пару вопросов.
1.“Переходник ардуинку” обязательно прошивать,вроде память теперь увеличилась с 15к до 22Кб.
2.Что означает % ЦП под радаром?
3.Что теперь урезанно в 64к версии?
4.К АРМ у меня подключена и телеметрия-433 и ОСД,короче сыкотно соединять еще и фриску к RX-APMа,на данном этапе это критично.
Т.Е. АРМ общается с ардумодулем?
5.У меня на пульте стоит говорилка,есть какая-то возможность научить говорилку сообщать алармы?
6.И на ардумодуль световые сообщения ,хотя-бы два канала,трудно?
1-АРМИНГ.(Загорается).
2-Если есть проблемы.(Мигает).
1.“Переходник ардуинку” обязательно прошивать,вроде память теперь увеличилась с 15к до 22Кб.
да. в новой версии ардуина отдает несколько новых параметров
2.Что означает % ЦП под радаром?
это загрузка проца APM. Полезно тем, у кого много всего навешано на контроллер, особенно если задействованы оба UART
3.Что теперь урезанно в 64к версии?
Из стандартной 812 прошивки полностью убраны HELI и TEMPLATES, в моих доработках все направления считаются с высокой погрешностью, отключена индикация “здоровья” сенсоров, полностью отключена система передачи сообщений (PreArm и остальные)
4.К АРМ у меня подключена и телеметрия-433 и ОСД,короче сыкотно соединять еще и фриску к RX-APMа,на данном этапе это критично.
Т.Е. АРМ общается с ардумодулем?
Критично по питанию - да, возможно, лучше питание разнести (самая прожорливая - телеметрия 433, лучше ее отдельно запитывать).
А по каналу TX,RX - смело подключайте (не забудьте про землю). Если не подключать канал передачи от ардуины к ардупилоту могут наблюдаться задержки с отображением информации и отсутствие отображения некоторых параметров, однако при подключении на ОСД будут задержки с отображением горизонта accX, accY, accZ.
5.У меня на пульте стоит говорилка,есть какая-то возможность научить говорилку сообщать алармы?
С удовольствием бы сделал, но у меня пульт без говорилки.
6.И на ардумодуль световые сообщения ,хотя-бы два канала,трудно?
1-АРМИНГ.(Загорается).
2-Если есть проблемы.(Мигает).
Да, это можно сделать. Пендосы уже давно у меня просят - понакупали себе jd IO Board. Надо бы подумать нам всем вместе что именно требуется и сделаем.
😃
Еще у меня есть идея вот такого развития проекта:
В турнигу устанавливаем ардуино про мини, которая выступает как коммутатор, на нее принимаем данные телеметрии с модуля FrSky, затем отдаем в пульт (чтобы получилось как сейчас) и такой же поток данных отдаем на блютус модуль который коннектится со смартфоном на андроиде. На смартфоне прога типа AndroPilot, только наша и заточенная на нашу телеметрию и с возможностью отображения на картах гугл положения нашего квадрика.
Надо подумать, как еще можно использовать ардуину в пульте (звуковой мод?)
Прошу отписаться о том, кто что думает обо всем этом.
Ну вот сделал маленький тест видео.
Вроде все хорошо,кроме альтитуды.
И если не трудно HDOP X.XX можно сделать вместо XXX.
В турнигу устанавливаем ардуино про мини, которая выступает как коммутатор, на нее принимаем данные телеметрии с модуля FrSky, затем отдаем в пульт (чтобы получилось как сейчас) и такой же поток данных отдаем на блютус модуль который коннектится со смартфоном на андроиде. На смартфоне прога типа AndroPilot, только наша и заточенная на нашу телеметрию и с возможностью отображения на картах гугл положения нашего квадрика.
Надо подумать, как еще можно использовать ардуину в пульте (звуковой мод?)
Прошу отписаться о том, кто что думает обо всем этом.
Насчет смартфона,не вижу смысла,лишние помехи,по модему проще.
А вот организовать наземное логирование на сд кард(чтоб был читабельный для Миши тапа .log),было-бы круто
Да, это можно сделать.
Спасибо очень буду ждать,поверьте лампочки всегда привлекают.:devil:
все направления считаются с высокой погрешностью
В имеете виду радар?
П.с.Почемуто при арме линия на радаре прыгает влево,по идее она должна была смотреть вверх.На видео видно.
кто чем шьет хекс??? прошлую через ардуиновскую прогу шил а с новую прошивку в мини никак не загружу. походу не попадают кнопкой перегрузки в нужный момент
кто чем шьет хекс??? прошлую через ардуиновскую прогу шил а с новую прошивку в мини никак не загружу. походу не попадают кнопкой перегрузки в нужный момент
Arduino IDE - не самый лучший софт для прошивки, если не надо компиллять из исходников, которые используют ардуиновские либы (то еще гуано, надо сказать).
Для заливки бинарей и хексов в AVR очень хороша CodeVision AVR. Умеет кучу программаторов (от bit-bang через LPT до JTAG) и позволяет компиллять из Цэ и ассемблера.
P.S. 9XR и свои платы на ATtiny шил именно через CodeVision.
кто чем шьет хекс??? прошлую через ардуиновскую прогу шил а с новую прошивку в мини никак не загружу. походу не попадают кнопкой перегрузки в нужный момент
Почитайте это (раздел про XLoader). Проверял сам лично, все работает.
Используйте USB->TTL конвертер на базе чипов FTDI, CH340 или CP2104 с линией DTR (чтобы не мудрить с reset) вроде этого, или возьмите такой комплект. Получается по деньгам очень демократично: ардуина 100 руб + USB->TTL 100 руб. с бесплатной почтовой доставкой 😃
Если будете шить ардуину из исходников, то для текущей версии используйте ArduinoIDE 1.0.6 (предыдущий релиз был собран на более ранней версии, ссылка, указанная в начале топика устарела)
Турнигу я шью этим с помощью eePe.
Исправил замеченные ошибки и выложил новую версию.
Сейчас поддерживается 8-канальная подсветка.
4 канала подсветки на лучи: FRONT (arduino pin 7), REAR - 8, LEFT - 9, RIGHT - 10.
Подсветка настраивается по “паттернам” (об этом ниже)
4 канала для цветных светодиодов вроде этих
Белый светодиод (pin 2) включается при арминге
Голубой светодиод (pin 3) включается при 3D Fix и hdop <= 200
Красный светодиод (pin 4) включается при получении любого сообщения от APM уровня CRITICAL
Зеленый светодиод (pin 13) и светодиод на ардуине повторяют светодиоды переднего луча
По паттернам. Подсветка настраивается только в исходниках, настраивать через специальную программу как в jd IO_Board возможности нет, PWM тоже не реализовано (т.е. нельзя плавно включать-выключать светодиоды)
В файле APM_Mavlink_to_FrSky.ino начиная где-то со строки 60 вы найдете
char LEFT_STAB[] PROGMEM = "1111111110"; // pattern for LEFT light, mode - STAB
char RIGHT_STAB[] PROGMEM = "1111111110"; // pattern for RIGHT light, mode - STAB
char FRONT_STAB[] PROGMEM = "1111111110"; // pattern for FRONT light, mode - STAB
char REAR_STAB[] PROGMEM = "1111111110"; // pattern for REAR light, mode - STAB
char LEFT_AHOLD[] PROGMEM = "111000"; // medium blink
char RIGHT_AHOLD[] PROGMEM = "111000";
char FRONT_AHOLD[] PROGMEM = "111000";
char REAR_AHOLD[] PROGMEM = "111000";
char LEFT_RTL[] PROGMEM = "10"; // fast blink
char RIGHT_RTL[] PROGMEM = "10";
char FRONT_RTL[] PROGMEM = "10";
char REAR_RTL[] PROGMEM = "10";
char LEFT_OTHER[] PROGMEM = "1"; // always ON
char RIGHT_OTHER[] PROGMEM = "1";
char FRONT_OTHER[] PROGMEM = "1";
char REAR_OTHER[] PROGMEM = "1";
Это настройка подсветки левого луча в режиме STABILIZE. Один символ в строке - это 0,1сек времени. По умолчанию сейчас 0,9сек подсветка горит, затем на 0,1сек тухнет для всех лучей. Соответственно, строка типа “1111100000” будет означать 0,5сек вкл затем 0,5сек выкл, строка “01” 0,1сек выкл затем 0,1сек вкл и т.д. Строки могут быть разной длины. Суммарная длина всех таких строк ограничена размером флеш памяти на ардуине. Для подсветки осталось около 500 байт - довольно много.
Сейчас реализована настройка подсветки в четырех режимах: stab, althold, rtl и все остальные. Каждый из четырех лучей настраивается индивидуально.
Подсветка по умолчанию сейчас: STAB - медленно мигает (0.9+0.1),
ALTHOLD - средне (0,3+0,3), RTL - быстро (0,1+0,1), на остальных режимах горит постоянно.
Делайте свои красивые паттерны, выкладывайте видео. Самые прикольные сделаю в прошивке по умолчанию.
Ну и хочу напомнить пилотам без опыта в электронике, что обычные светодиоды можно подключать к ардуине только через токоограничивающие резисторы, а яркие светодиоды, светодиодные ленты и т.п. напрямую к ардуине подключать нельзя (ардуина выдерживает ток только до 20 миллиампер на один контакт и 200 на все устройство). За консультацией по подключению ярких светодиодов и лент к ардуине обращайтесь к спецам по электронике.
все получилось спасибо. Диоды на ардуинке подрубал через транзисторы кп 505. правда давно было
Еще не пробовал,программатор забрали,завтра пропишу.
А я ленты подключаю через ULN2003.
как то так.
Наконец прошил пульт,и ардуинку,огни пока не подключал,вроде все нормально . Постараюсь выйти на поле,и там потестить.
Пока настроен заменить мегу64 на 128.
Наконец прошил пульт,и ардуинку,огни пока не подключал,вроде все нормально . Постараюсь выйти на поле,и там потестить.
с нетерпением жду результатов
Пока настроен заменить мегу64 на 128
отличная идея
4refr0nt, THR и AIL всегда включены, наверное это неправильно, в прошивке не учтен FrSky-мод
9X, FrSky-мод, м128, v1.1.117
4refr0nt, THR и AIL всегда включены, наверное это неправильно.
9X, м128, v1.1.117
Прочитайте это
Наконец вчера смог выгулять своего питомца.😁
Экран,очень помог.😃
Правда в полете надписи мелковаты,чтоб на миг глянуть,что да как.Приходиться сосредотачиваться.
Из своих наблюдений.
Бортовое питание наверно лучше скинуть вниз отдельно,под радар.Сверху слева стока всяких питаний ,не успеваю понять,где на аппе,где на пульте.
И походу индикация бортовухи не совсем правильно работает,в начале показал,что акк разряжен,а под конец наоборот полный.Но это со слов напарника.
Да Виктор,не можете чуть подробней описать индикацию самого радара.Что-то недопонял…Что означают полоски кружечки?
Из ненужны параметров для меня.
Высота жпса.
Так и не понял,что показывает полоска под хдоп?
в полете надписи мелковаты,чтоб на миг глянуть,что да как.Приходиться сосредотачиваться.
Да, я так же думаю. Только как найти компромисс между набором отображаемых параметров и размерами шрифтов?
И походу индикация бортовухи не совсем правильно работает,в начале показал,что акк разряжен,а под конец наоборот полный.Но это со слов напарника.
Оставшийся заряд аккумулятора, ток и напряжение ардуине выдает APM. Ардуина отправляет его в пульт в неизменном виде. У меня неоригинальный PowerModule. Я его калибрую в MP при подключенном акке: Initial Setup -> Optional Hardware -> Battery Monitor: указываю свою емкость акка, измеренные тестером напряжение и ток, а MP сам выставляет Voltage Divider и Amps per Volt. Далее все работает примерно так: когда подключаете акк, APM считает, что тот полностью заряжен. Выдает вам на пульт напряжение с учетом дивайдера, рассчитаного при калибровке. Далее, под нагрузкой, считает ток и время - получаются амперчасы, которые он вычитает из введенной емкости акка. Поэтому если отключить/подключить разряженный акк - будет каша. Если нет PowerModule то эти данные, скорее всего, вообще не имеют смысла. Не могу точно сказать, как APM в этом случае считает. Без PowerModule ориентируйтесь по напряжению CPU.
Да Викор,не можете чуть подробней описать индикацию самого радара.Что-то недопонял…Что означают полоски кружечки?
На радаре три указателя: большой, маленький в одну полоску и маленький в три полоски.
Большой указатель показывает направление носа по компасу. До арминга направление соответствует обычному компасу (север вверху). После арминга работает как в SIMPLE режиме, т.е. вверху уже не север, а то положение, в котором находились до арминга, т.е. в точке взлета. Теоретически, чтобы вслепую вернуть коптер, который уже не видно куда повернут носом, нужно по пульту дать ему направление точно “на юг” и аппарат должен лететь в направлении к точке взлета и появится в зоне уверенной видимости. Вся затея с этой телеметрией мною задумывалась именно ради этого, а потом уже “обрасла” остальным.
Маленький указатель в одну линию - направление на текущий WP. Имеет смысл, если летаете по заранее спланированному маршруту в MP. Отдается в том виде, как его выдает APM.
Маленький указатель в три линии - направление домой. Находится в стадии тестирования, жду отзывов. Рассчитывается как и расстояние “до дома” по разнице текущих GPS координат и точки взлета (алгоритм тот же, что и в различных OSD).
Так и не понял,что показывает полоска под хдоп?
Это что-то типа “сердцебиения”. Индикатор приема данных. Заполнение этой полоски обратно пропорционально времени, прошедшему с момента приема последнего пакета данных телеметрии.
Полоска почти полностью заполнена - все ок, данные приходят. Не заполнена - превышено время ожидания, т.е. либо FrSky модуль не передает данные, либо ардуина. Попробуйте на земпле, когда все уже подключено и работает, сбросить ардуину кнопкой, при этом отслеживайте показания на аппе, вот тогда сразу все понятно станет.
Спасибо! Все работает четко, включая питание и иллюминацию (добавил все используемые режимы), только временные параметры мне кажется не соответствуют, но это не существенно.
По паттернам, кстати, замечание - длина паттерны должна быть одинакова для всех четырех каналов настраиваемого режима
как найти компромисс между набором отображаемых параметров и размерами шрифтов?
Может размер радара уменьшить?
“CPU” - нужен ли?
Индикатор приема данных
Не расточительно отдавать под него 4 пикселя?
Сверху слева стока всяких питаний
да, не разберешься… я бы напряжение пульта вообще убрал
Еще хотелось бы стрелочку на радаре более “сглаженную”, если не трудно 😃
я бы напряжение пульта вообще убрал
это напряжение в этом месте на всех страницах телеметрии. Из стандартной er9x. Переключаясь между экранами телеметрии вы всегда видите напряжение аппы в этом месте. Вот я и не взял на себя смелость это изменить. Тем кто привык, что напряжение аппы в этом месте, по другому покажется нелогичным. Так что попробуйте привыкнуть.
Еще хотелось бы стрелочку на радаре более “сглаженную”, если не трудно 😃
Если у вас версия для 64 меги, то сгладить можно, но нам не хватает памяти меги для подключения библиотеки расчета синусов и косинусов. А вырезать что-то другое ради красивости стрелок будет не очень разумно. Сейчас в этой версии углы считаются с точностью до 15 градусов. Синусы рассчитаны вручную и берутся из табличных значений. Поэтому, да, выглядит не очень.
Если у вас версия для 128 меги, то менее ломанную линию сделать невозможно - мы ограничены разрешением экрана. Правда есть вариант с использованием более красивых, заранее прорисованных не линий, а стрелок, но боюсь, мы опять будем расточительно расходовать все виды памяти меги (оперативки там тоже впритык). Хотя, быть может, готовые стрелки займут меньший размер, чем math библиотека. Кстати такой способ используется в OSD. Если кто-нибудь нарисует 16 или, хотя бы, 12 стрелок для радара (его размер 47х47) и они получатся симпатичней простых линий, то я постараюсь их запихать в существующий код.
Спасибо! Все работает четко, включая питание и иллюминацию (добавил все используемые режимы)
Поделитесь, пожалуйста, опытом по иллюминации. Какие режимы как у вас мигают.
Конечно!
//****************************************STAB***********************************************************
char REAR_STAB[] PROGMEM = "0100000000"; // левый передний
char LEFT_STAB[] PROGMEM = "1000000000"; // левый задний
char RIGHT_STAB[] PROGMEM = "0100000000"; // правый передний
char FRONT_STAB[] PROGMEM = "1000000000"; // правый задний
//****************************************ALTHOLD******************************************************
char REAR_AHOLD[] PROGMEM = "1000000000";
char LEFT_AHOLD[] PROGMEM = "1000000000";
char RIGHT_AHOLD[] PROGMEM = "1000000000";
char FRONT_AHOLD[] PROGMEM = "1000000000";
//****************************************RTL***********************************************************
char REAR_RTL[] PROGMEM = "1000000000";
char LEFT_RTL[] PROGMEM = "0100000000";
char RIGHT_RTL[] PROGMEM = "1000000000";
char FRONT_RTL[] PROGMEM = "0100000000";
//*****************************************LOITER*********************************************************
char REAR_LOITER[] PROGMEM = "1010100000";
char LEFT_LOITER[] PROGMEM = "1010100000";
char RIGHT_LOITER[] PROGMEM = "1010100000";
char FRONT_LOITER[] PROGMEM = "1010100000";
//******************************************AUTO*********************************************************
char REAR_AUTO[] PROGMEM = "1010000000";
char LEFT_AUTO[] PROGMEM = "1010000000";
char RIGHT_AUTO[] PROGMEM = "1010000000";
char FRONT_AUTO[] PROGMEM = "1010000000";
//******************************************LAND********************************************************
char REAR_LAND[] PROGMEM = "101000000000";
char LEFT_LAND[] PROGMEM = "101000000000";
char RIGHT_LAND[] PROGMEM = "000010100000";
char FRONT_LAND[] PROGMEM = "000010100000";
//****************************************OTHER***********************************************************
char REAR_OTHER[] PROGMEM = "0";
char LEFT_OTHER[] PROGMEM = "0";
char RIGHT_OTHER[] PROGMEM = "0";
char FRONT_OTHER[] PROGMEM = "0";
char *left[] PROGMEM = {LEFT_STAB, LEFT_AHOLD, LEFT_RTL, LEFT_LOITER, LEFT_AUTO, LEFT_LAND, LEFT_OTHER};
char *right[] PROGMEM = {RIGHT_STAB, RIGHT_AHOLD, RIGHT_RTL, RIGHT_LOITER, RIGHT_AUTO, RIGHT_LAND, RIGHT_OTHER};
char *front[] PROGMEM = {FRONT_STAB, FRONT_AHOLD, FRONT_RTL, FRONT_LOITER, FRONT_AUTO, FRONT_LAND, FRONT_OTHER};
char *rear[] PROGMEM = {REAR_STAB, REAR_AHOLD, REAR_RTL, REAR_LOITER, REAR_AUTO, REAR_LAND, REAR_OTHER};
Настроил только используемые мною режимы (ниже закомментированы коды всех режимов, можно по аналогии донастроить)
switch(last_mode) {
case 0: // STAB
index = 0;
break;
case 2: // AltHold
index = 1;
break;
case 6: // RTL
index = 2;
break;
case 5: // LOITER
index = 3;
break;
case 3: // AUTO
index = 4;
break;
case 9: // LAND
index = 5;
break;
default: // other
index = 6;
break;
}
/*
0 Stabilize
1 Acro
2 AltHold
3 Auto
4 Guided
5 Loiter
6 RTL
7 Circle
9 Land
10 OF_Loiter
11 Drift
13 Sport
16 PosHold
*/
Светодиоды подключил через ULN2803 по типовой схеме навесным монтажем, без ПП
Еще у меня есть идея вот такого развития проекта:
В турнигу устанавливаем ардуино про мини, которая выступает как коммутатор, на нее принимаем данные телеметрии с модуля FrSky, затем отдаем в пульт (чтобы получилось как сейчас) и такой же поток данных отдаем на блютус модуль который коннектится со смартфоном на андроиде. На смартфоне прога типа AndroPilot, только наша и заточенная на нашу телеметрию и с возможностью отображения на картах гугл положения нашего квадрика.
Надо подумать, как еще можно использовать ардуину в пульте (звуковой мод?)
Прошу отписаться о том, кто что думает обо всем этом.
Как то так получилось, что я пропустил этот проект.
Буду сдувать 64 проц, ставить 128, покупать Ардуину и наверстывать упущенное. Черезвычайно полезное дополнение к Турниге и Ардукоптеру.
Автору ОГРОМНАЯ БЛАГОДАРНОСТЬ!
По поводу отображения на андропланшете телеметрии и положения, ИМХО очень полезно, 3DR радио в основном использую для отслеживания положения на местности и телеметрии при полете в автомиссии,
можно было бы отказаться от радиомодемов.