Cheerson CX-20 - добаляем Bluetooth-модуль + бонус: прошивка 3.2 с работающей телеметрией.

Как говорилось в известном забугорном сериале - с Bluetooth все становится лучше. В случае Cheerson CX-20 - это более чем верно. Этот модуль позволит в поле задавать маршруты для полета по точкам, использовать возможность FollowMe ну и просто удобнее ковыряться в настройках без USB-провода. Ставить радио модуль в этом случае мне кажется несколько лишним, блютуз -в самый раз, хоть и радиус его действия намного меньше.

Итак начнем!

Конечно, сначала нужно заиметь в хозяйстве Bluetooth-модуль Я выбрал этот, потому что он предназначен для работы с APM и нам не придется его настраивать.

Разбираем квадрик и смотрим на платку. Есть несколько версий APM контроллера для Cheerson CX-20, в моем есть разъем для подключения телеметрии. Почему было не сделать его стандартным для APM - загадка, но будем работать с тем что имеем, тем более что это самый красивый вариант, поскольку в других версиях контроллера придется подпаиваться на плату к специальным контактам или даже к резисторам на соответствующих ногах Atmega.

Посмотрим на распиновку разъема:

Распиновка Bluetooth-модуля указаня прямо на модуле, так что тут проблем не будет. Все что нам сделать - это соединить соответствуюещие выводы модуля и контроллера:
Vcc-Vcc
Rx-Tx
Tx-Rx
Gnd-Gnd

К сожалению комплектный кабель нам не подходит, точнее та его часть которая должна втыкаться в APM, поэтому безжалостно обрезаем его. У меня в закромах нашелся подходящий разъем, поэтому я спаял кабель для соединен6ия модуля и контроллера:

Если у вас такого разъема нет, то придется подпаиваться к ножкам гнезда, что неудобно и не эстетично, так что лучше найти =)

Собираем контроллер в первоначальное состояние и размещаем Bluetooth-модуль где-нибудь в пространстве корпуса:

Затем можно собрать квадрик и подключить его к MissionPlanner по USB-кабелю. Необходимо перейти в Config/Tunning-Full Parameter List и найти параметр SERIAL0_BAUD SERIAL1_BAUD и установить его в значение 57, затем нажать кнопку Write, чтобы параметры записались в мозги коптера.

Теперь можно включить квадрик, спарить Bluetooth по имени Autopilot с устройством(планшет,телефон) и подключиться через соответствующу программу.

Прошивка Arducopter 3.2 с поддержкой телеметрии.
Многие счастливые владельцы Cheerson CX-20 без задней мысли соглашались с предложением MissionPlanner на обновление прошивки до версии 3.2. Делать этого не стоило, потому что в стоке прошивка слегка модифицирована: добавлена калибровка компаса стиками с пульта и включен порт телеметрии, который разведен на плате контроллера. Если отсутсвие калибровки компаса с пульта не так страшно, то неработающий порт телеметрии уже проблема.
К счастью существует модифицированая прошивка версии 3.2 с исправленной телеметрией - качаем тут. Также нам понадобится список заводских параметров, который можно скачать тут.

Нижеследующие шаги только для тех у кого уже стоит прошивка 3.2 и кто хочет вернуть возможность работы телеметрии.

  1. Снимаем винты и подсоединяем квадрик по USB и запускаем MissionPlanner
  2. Заходим на вкладку Inital Setup - Install Firmware
  3. Тыкаем кнопку Load Custom Firmware, выбираем скачанный выше hex файл и ждем загрузки новой прошивки.
  4. Если все ок, жмем Connect выбрав нужный Com-порт
  5. Переходим на вкладку Config/Tunning - Full Parameter List
  6. Жмем кнопку Reset to default
  7. Тыкаем кнопку Load и выбираем скачанный файл с параметрами
  8. Жмем Write

Теперь у вас будет прошивка Arducopter 3.2 с работающей телеметрией. Калибровки компаса стиками не будет, но я, например, делаю ее крайне редко - в начале сезона, для меня это не проблема.

UPD:
Список разных версий модифицированных прошивок:

  • 13918
Comments
AlexxNB

Здесь можно скачать патченную версию прошивки 3.2.1

gosha57

Калибровки компаса стиками не будет,
 но, если появляется блютусная связь, значит можно запускать ВСЕ калибровки из МП в поле, а без кабеля и калибровать удобнее.
И с планшетов, где есть блютус, но нет ОТГ- гнёзд для телеметрии.
Спасибо !!! Надо подумать - у меня старая платка с подаянными к ногам выводами для ОСД-миниМ.
(…говорят, что 3.2 народу не очень понравилась…)

AlexxNB

Я задался вопросом, если калибровка так важна то почему создатели Arducopter не сделали возможность калибровки компаса со стиков. Хотел запостить к ним на Github такой вопрос, но нашел подобный вопрос. Там кодер говорит, что компас не надо калибровать каждый раз на новом месте. Достаточно один раз записать офсеты. Интересно другое. Такую функцию они не делают не из-за того, что им не хочется, а потому что всей математикой при калибровке компаса занимается MissionPlanner и в проце нету нужных инструкций. Я не представляю как калибровку сделали в Cheersonе =)

Тут можно скачать версию 3.1.5 с исправленной телеметрией.

gosha57

Нет у меня знаний в рассуждалках на такой глубине.
Возможно, тут используется просто калибровка положения копа относттельно 360 градусов, а “уже потом” привязывается к координатам спутников. Коп-то не знает, что в природе есть люди и ОНИ называют нечто - “направлением на север” - ему важно понимать направление движения точно “туда” и точно “оттуда”. Т.е. относительные координаты (направления), привязываемые “по ходу полёта” к карте. Калибруя, мы размечаем эту сетку (например, на 360 или 239…57395721… направлений, относительно магнитного поля (как только значение повториться - калибровка закончена), а где именно север - говорит МП через привязку к спутникам… Но эт только мои фантазии-предположения. Суть любой калибровки - определение "начала и конца и установка размерностей относительно этих точек. Наверное… 😒
Если я прав, то в чирике мы размечаем стиками круг и делим его, а мозг потом привязывает направление полёта к ЖПС - ведь летает же и автовозвращается это у тех, кто купил вчера и о МП ещё не слышал…

AlexxNB

ГПС не может выдать направление носа. Оно может дать только точку в 2D-пространстве, с натяжкой в 3D-поскольку высоту с нужной точностью определить не может. Значение курса по ГПС определяется в движении.
Вот обсуждение того почему нельзя сделать калибровку со стиков. Интересно было бы покапаться в прошивке Чирика и посмотреть как они это реализовали - есть у меня смутное подозрение, что лажа это всё =)

gosha57

ГПС не может выдать направление носа.
 Дык, никто и не говорит, что он его выдаёт. Он выдает вектор между двумя координатами при движении , который “накладывается” на “ближайший” из размеченных калибровкой компаса векторов-напрвлений, а для понимания (а для даптации человека к железу, ему - человеку - потом рисуют карту).
1.Будь я копом, я бы нарисовал циферблат (эт когда хозяин сказал откалибровать компас).
2.Потом меня поставили на пол, но Я циферблат держу ВСЕГДА 12 от себя, 6часов к себе.
3 Стик вперёд - иду к 12, направо - к 3 часам и т.д.
Где Север или Юг - мне всё равно. Главная моя задача - согласовать стики вперё-назад, влево-вправо с моей разметкой. Или ввести поправку при повороте по часовой стрелке или против, так, что бы при отпускании ЯВ опять стик прямо-летел прямо (сверившись с полем земли).Т.е. циферблат был 12 перед носом. Именно сверка с истинным полем земли при поворотах в плоскости делает калибровку нужной при полётах в разных и оч удалённых друг от друга точках. Иначе - стик направо, а он летит не под 90градусов, а 87 … Или унитазить начинает, когда чёт намагничено рядом с компасом или летит не туда - он берёт поправку на поворот не от земли, а от болтика и лети …к нему 😁.
Кстати, если отключить эту поправку получится … СИМПЛ режим - т.е. летишь вперёд, стик ява - и коп кака летающая тарелка , или возвращается параллельно …“начальной разметке циферблата”.
… Вот жаль англицкого не помню совсем 😅 - я б ваши ссыли почитал …

Кстати - не рекомендуют стиками калибровать наверное потому, что НИКТО не согласует истинный север, с тем, что показывает компас и не делает поправки, а мозг может и ошибиться при полётах по точкам.

AlexxNB

но, если появляется блютусная связь, значит можно запускать ВСЕ калибровки из МП в поле, а без кабеля и калибровать удобнее.

Замечу, что калибровка таки возможна только в MissionPlanner. В Droidplanner на Android нет возможности калибровать компасс.

жаль англицкого не помню совсем - я б ваши ссыли почитал …

Вот самое важное:
The challenge for adding it to the flight code is that the implementation uses a stats math library to calculate the ‘least squares’ of all the readings. If somebody wrote that function in plain c it would be easy add to the flight controllers with more memory
Сложность добавления её(калибровки) в полетный контроллер в том что реализация алгоритма использует математическую библиотеку Stats для расчета методом “наименьших квадратов” всех считываний с датчика. Если кто-либо напишет функцию на чистом С, то можно будет легко и просто добавить ее в полетный контроллер с бОльшей памятью.

dis-s

Спасибо за обзор! Вот чего мне не хватало, так это bluetooth! Думаю, в поле с планшета или телефона гораздо удобнее по bluetooth с аппаратом связываться.

У меня в закромах нашелся подходящий разъем

А не знаете как такие разъемы называются для ADC и UART? К ADC уже пришлось подпаяться для установки делителя - не смог найти подходящий разъем в местном радиомагазине, но там всего один провод нужно было паять. А разъем для UART хотелось бы все таки найти, хотя бы на aliexpress…

Да, а OSD ведь вроде бы через тот-же UART подключается? Будет возможность одновременно bluetooth и OSD подключить?

AlexxNB

Да, а OSD ведь вроде бы через тот-же UART подключается? Будет возможность одновременно bluetooth и OSD подключить?

Да, конечно. Провод от TX разъема в контроллере нужно распараллелить просто. А от Rх подключить только к блютузу.

С типом разъемов определится сложнее. Я их взял со старого Crius AIOP - там врод они обзывались MOLEX 1.25 - типа таких. Но я не обещаю что это именно такие - есть очень похожие разъемы немного другого типа.
У меня были эти разъемы, но на большее количество дырок - я их располовинил ножом и обе части прекрасно подошли, так что в случае чего не обязательно искать разъем именно на 5 дырок.

dis-s

С типом разъемов определится сложнее. Я их взял со старого Crius AIOP - там врод они обзывались MOLEX 1.25 - типа таких. Но я не обещаю что это именно такие - есть очень похожие разъемы немного другого типа.

ОК, спасибо. Но просить $6 за один маленький кабель - это жлобство. Не знаю, что уж за разъемы такие китайцы используют - переискал весь интернет с разными ключевыми словами, ерунда какая то с ответными частями. Вроде бы и разъем сейчас популярный, а народу продавать не хотят, только оптом.

Заказал вот такие, 5-пиновые. Не подойдут, придется паять.

AlexxNB

Заказал вот такие, 5-пиновые. Не подойдут, придется паять.

Судя по картинке - вроде они.

gmarapet

Забавная новость: ребята их 3DR похоже переписали калибровку на чистом С. В группе поддержки дроидпланнера написали, что реализовали калибровку компаса из дроидпланнера для их нового дрона Solo, который они строят на втором пиксе, и обещают в скором времени портировать эту функцию в другие прошивки ардукоптера.

AlexxNB

Врятли переписали. Просто написали в Tower аналогичную обработку как в МиссионПланере.

Sacrament

А Блютуз можно юзать в полете? Он не будет забивать аппаратуру управления? Пробовали?

AlexxNB

Пробовали, не забивает.

Sacrament

Классно, тогда закажу себе с подвесом его. Попробую поиграться. Дальность у него небольшая же? Хотя бы для фоллоу ме хватит? 15-20 м?

dis-s

Метров на 50 берет. Ну понятно, по прямой. Т.е. если высота метров 20, то расстояние по земле метров 25 или около этого.

mfilitovich

По стабильности полёта/висения в Loiter какая-либо из перечисленных выше прошивок лучше стоковой 3.1.2?

Всем привет. Подключал bluetooth по написанной выше схеме, ноут/планшет/телефон с MP/DP/Tower видит модуль но проги не соединяются. Менял: Comport, скорость 9600-57600, даже поставил мод. прошивку 3.2.1, пока не помогло. В Советском гугле - не нашёл ответ. Что посоветуете?

Anwar

Возможно ли отправить в полет по точкам, если например я соединил свой чирик CX 20 по кабелю к смартфону, подключил к droidplanner ?? или у программы должна быть постоянно быть связь с квадриком ??

AlexxNB

Возможно. Точки загружаются в память коптера. Вы можете даже из приложения отправить его в полет и когда связь со смартфоном потеряется коптер будет продолжать свой путь. Только на всякий случай не пытайтесь намеренно восстановить связь по блютуз при возвращении пока коптер еще в воздухе, а то могут быть эксцессы.

Димоноид
Skodovod;bt144812

Всем привет. Подключал bluetooth по написанной выше схеме, ноут/планшет/телефон с MP/DP/Tower видит модуль но проги не соединяются. Менял: Comport, скорость 9600-57600, даже поставил мод. прошивку 3.2.1, пока не помогло. В Советском гугле - не нашёл ответ. Что посоветуете?

Тоже имел проблему с подключением к программам. В итоге сделал по этому совету
поставил скорость 57600 и модулю и в ардупилоте в обоих параметрах SERIAL0_BAUD и SERIAL1_BAUD. Все заработало.

pastettt

блютуз не подключал, но воспользовался частью статьи для подключения телеметрии на АС3.2, изначально не выводились параметры. Как новичку всё понятно.

Sergey345

пытался заставить заработать модуль HC-06
Изменил скорость на 57600
на секунду коннект загорается зелёным и отваливается с ошибкой. Так и не смог побороть.

Буду заказывать такой как выше у автора.

Sergey345

заработал модуль - проблема конкретного виндоуз, соединяется в момент подачи питания на коптер

anton_tsvet

Не могли бы Вы продублировать ссылки на прошивки, а то выложенные в статье уже не рабочие