flybrain. передатчик + приемник + автопилот. powered by stm32

fmkit

пока не поздно поменяйте название а то можно перевести как “мозг мухи” 😃

у меня тоже похожее устройство - на самике одна плата, в руке одна плата (в нунчаке), а третья с LCD где угодно но чаще всего на висит на шее - телеметрия.

А ПАВ фильтр на приемнике планируется?

AlexSneg
baychi:

Кстати, наша GPS частота 1575 МГц.

Да 1,5ГГц, где-то так…😉

Я для себя видео планирую в районе 900Мгц, либо 2,4 или выше. но опять же никто не мешает GPS антенну отнести подальше если есть сомнения на эту тему. Но я думаю, что не должно мешать.

baychi:

LM1881

Смотрел, отмел. Там +5В, значит нужно будет согласование с STM и к тому же нет у меня +5В нигде. А STM входа, они хотя и 5V tolerant, но я не люблю кривизны. Значт придется полевики колхозить. К тому же ничего нового от 1881 мы не получим кроме синхры, а это я и так получу с компаратора. Кроме того, опорное для компаратора заведено с DAC1 выхода. Я тогда смогу в реал тайме подбирать порог срабатывания прямо на ходу. Мне кажется здесь будет преимущество.

baychi:

И понижать до 3.3 и 1.8 В LDO КРЕНКами

Питание я завожу от приемника, у меня там импульсник +5 - +18 до 3,3В. А приемник запитываентся напрямую от +12В. Питание +5 от регулятора я только в сервы напрямую пускаю. Оно у меня нигде не используется. Я может на выходных выложу схемотехнику передатчика и приемника готового. Там понятнее станет.

fmkit:

мозг мухи

Fly не только муха но и глагол летать.
Пусть будет FlyingBrain.

Необходимости в ПАВе я пока не увидел. Опыт людей с этого форума говорит о том, что 433 МГц это достаточно далеко от видео.

baychi:

Возвратую землю С7, С8 желательно привести на одну из GND ног проца

С7, С6. Сейчас посмотрел на плату. Они туда и идут на 63 пин проца.

У меня вот реальные сомнения насчет необходимости энерго независимых часов и кварца на 32Кгц. Так и сяк думал, но плюнул и решил не делать.

baychi:

Дрейф зависит от относительного изменения, а не от абсолютной величины

Мозгом я понимаю, что ты прав. Но тело не дает, убрать термометр с платы. Пусть будет. Буду хоть смотреть разницу в нагреве барометра, ядра STM, гиры и окружающей среды. Ну и + опция температуры для OSD уже встроенная будет.

baychi
AlexSneg:

Необходимости в ПАВе я пока не увидел. Опыт людей с этого форума говорит о том, что 433 МГц это достаточно далеко от видео.

ПАВ не от видео нужен а от мощной помехи внутри диапазона. Представте, что летите досттоно далеко, сигнал на уровне -100 дБ. А тут на соседнем канале далнобойщик рацию включил и уровень -50 дБ, всего-то. А RFM уже в ауте:(

AlexSneg:

С7, С6. Сейчас посмотрел на плату. Они туда и идут на 63 пин проца.

Sorry, С6 с JPEG на бумаге нечетко выходит. 😦 Но проблеммв в том, что возвратная земля идет через GND нескольких других элеметов. Лучше бы напрямую и уже полсе ножки проца - куда либо еще.
Кстати, платка ведь не четырехслойная? Лучше сразу 4-х слойку закладвать - цена копейки, а всяких помех на порядок меньше при грамотной разводке…

AlexSneg:

тело не дает, убрать термометр с платы. Пусть будет

Больше не меньше. Можно ведь и не запаивать. 😃

AlexSneg:

реальные сомнения насчет необходимости энерго независимых часов и кварца на 32Кгц. Так и сяк думал, но плюнул и решил не делать.

И правильно! До полета он нафиг не нужен, а в процессе GPS время будет. 😃

Drinker
AlexSneg:

олее того, вот я уже написал СИ код для кватернионов и кальмана на VC++ погонял в тестах.

Подробнее про тесты можно?

И предлагаю делать это всё под управлением многозадачки. Чтобы в лопах не запутаццо.

AlexSneg
baychi:

А RFM уже в ауте

А ну так я не все сказал. У меня реальный FHSS реализован. Передатчик меняет синхронно частоту с приемником 25 раз в секунду. + еще 2 запасных failsafe канала, заранее отнесенных подальше от раций.

baychi:

Лучше сразу 4-х слойку закладвать - цена копейки, а всяких помех на порядок меньше при грамотной разводке…

Двухслойка. Я при помощи лазера и утюга. Для прототипа - нормал. Второй вариант работы над ошибками все равно будет. Сейчас и это сойдет.

baychi:

До полета он нафиг не нужен, а в процессе GPS время будет

Да, вот я тоже все время в этот аргумент упираюсь. Однако вот сценарий:
Летим. Вдруг питание умерло, потом вернулось. Все пересбросилось. Если батарейку не ставить, так ведь и не узнаем, что был сброс. Если только во флешку логи писать постоянно. Но ресурс перезаписи флеши тож не бесконечен, писать ее постоянно - плохо. В проце есть 2кб энергонезависимого ОЗУ. но нужно батарейку 3В разводить на плату

baychi
AlexSneg:

А ну так я не все сказал. У меня реальный FHSS реализован. Передатчик меняет синхронно частоту с приемником 25 раз в секунду. + еще 2 запасных failsafe канала, заранее отнесенных подольше от раций.

Так не поможет все это! Максиммум 45-50 дБ избирательности, а потом затыкается RFM-ка. С другой стороны и PAW при FHSS как собаке пятая нога…
Кстати, любопытны подробности Вашей FHSS реализации на 433. Сколько каналов? Какая длительность пакета/паузы? Точность PWM кодирования и количество сигналов?

AlexSneg:

ведь и не узнаем, что был сброс. Если только во флешку логи писать постоянно. Но ресурс перезаписи флеши тож не бесконечен, писать ее постоянно - плохо.

Лог то все равно писать будете 1-5 раз в сек. Признак “в полете” ввести и можно много понять…

AlexSneg:

В проце есть 2кб энергонезависимого ОЗУ. но нужно батарейку 3В разводить на плату

Не обязательно батарейку. Ионистор на 0.25-1 Ф, дает несколько недель храннения данных. Тантал на 200 мКф - несколько часов…

Еще несколько мелочей по схеме:

  1. C15 470 нФ. Типоразмер 0805. Требуется 10% точность и хороший ТКС. Найти в столь малом корпусе с диэлектриком не Z5U весьма проблематично. Советую в след. раз ставить 1206 или вообще не SMD.
AlexSneg
baychi:

Кстати, любопытны подробности Вашей FHSS реализации на 433

1 секунда делится на 50 частей (тайм слоты). 1 пакет передается внутри одного тайм слота. Пакеты нумеруются. Нечетные шлет передатчик на борт. Четные шлет приемник на передатчик. То есть имеем 25 раз в секунду передачу в каждую сторону. 1 пакет тащит на себе 9 полезных байт. 4 джойстика (8 бит на джойстик) + 2 нагрузочных байта под всякое разное, дискретные переключатели + 1 байт команда от передатчика для частотных переходов. Если передатчик решает сменить частотную сетку, то он передает в течение 1 сек, новую частотную сетку, затем отдает команду о переходе. Приемник подтверждает прием частотной сетки и применяет ее на следующей секунде. То есть в принципе можно на ходу сканить каналы и если какой-то один портится, то переходить на другой. Я это сделал, полетал. Потом забил болт на это дело. Взял тупо сделал меню для забивки 25 разных частот и двух запасных для failsafe. Ну просто не увидел больших плюсов. Опять же функционально это работает, сделать это или реализовать любые фантазии на эту тему можно в любой момент, но сейчас не хочется на мелочи отвлекаться.

По поводу PWM. Сейчас использую 8 бит на джойстик. А приемник все PWM на сервы формирует аппаратно от таймеров. У меня таймеров на борту камня штук10. Мне их девать не куда 😃 Я прямо с точностью до 1 мкс длиной импульса таймера управляю и засылаю его на серву. То есть, там точность позиционирования серв кварцованая. Китайские синие сервы стоят мертвяком, где поставили. Дерганье отсутствует как понятие. Я пробовал и 16бит но я реально не вижу разницы. А 255 положений джойстика и так за глаза. Там сам резистор джойстика не позволят даже такое разрешение использовать. Но у меня еще пульт - говно китайское от дешевой игрушки. Но даже с ним такие результаты достигнуты.

Опять же я сейчас в канале выставил скорость 4800 бит/сек. Ее запросто до 9600 можно поднять, гнать например 16 байт в пакете. Но это опять же бантики, которые сейчас на фиг не нужны. Ну буду доводить это дело до стадии production, так продумаем это дело и реализуем, проблем то ведь нет.

А для совсем параноиков, можно SIM900 запроектировать в production вариант. И прямо гнать DTMF частоты для управления на борт. Такая мысль у меня тоже была, но я себя вовремя отговорил.

baychi:

Лог то все равно писать будете 1-5 раз в сек

Ну писать без очистки страницы, это не тоже самое, что чистить страницу каждый раз. С ионистором это идея, признаю, тормознул чего-то я. Но в прототип наверное не буду уже ставить. Потом решу это дело для чистового варианта.

baychi:

C15 470 нФ

тоже согласен, моя лажа мелкая. Не подумал. Если поместится параллельно добавлю еще кондер с 1206 принт футом. Либо тот, либо другой кондер воткну, какой найду поточнее.

baychi
AlexSneg:

Приемник подтверждает прием частотной сетки и применяет ее на следующей секунде.

А если подтверждение не дойдет?

AlexSneg:

тупо сделал меню для забивки 25 разных частот и двух запасных для failsafe. Ну просто не увидел больших плюсов. Опять же функционально это работает, сделать это или реализовать любые фантазии на эту тему можно в любой момент, но сейчас не хочется на мелочи отвлекаться.

Вот и я всегда говорил: cимплексные системы (не требующие обратной связи) всегда надежнее полудуплексных. 😃

AlexSneg:

255 положений джойстика и так за глаза. Там сам резистор джойстика не позволят даже такое разрешение использовать.

Для FPV носителей может и без разницы, но хорошие пульты 2048 дискрет от 256 отличить позволяют.

AlexSneg:

прямо гнать DTMF частоты для управления на борт. Такая мысль у меня тоже была, но я себя вовремя отговорил.

Зачем DTFM? - масло маслянное - надежности канала двухчаcтотное кодирование не улучшит. И там и там, по сути, ЧМ прием а пропускная способность одна. Вот автокорелляционное кодировани (типа кода Баркера), реальная альтернатива, но эффективность не очевидна.

AlexSneg
baychi:

А если подтверждение не дойдет?

Ну как оно не дойдет? Оно пытается 25 раз его передать на разных частотах. Ну если не дойдет, еще через 1 сек будет failsafe там они найдут друг друга все равно. Опять же не обязательно менять всю сетку сказу. Можно постепенно частоты заменять.

baychi:

Вот и я всегда говорил: cимплексные системы

В чем-то да, а в чем-то нет. Летать на цифре без обратной связи и не видя RSSI на стороне приема, очень опасно. Нет уж, пусть будет дуплекс.

baychi:

хорошие пульты 2048 дискрет от 256 отличить позволяют.

Мой не позволяет 😉 ни при каких обстоятельствах. Это все “бантики” добавить дискретности всегда можно. +4 бита погоды не сделают. Мы ничем не ограничены в этом вопросе.

baychi:

Вот автокорелляционное кодировани (типа кода Баркера), реальная альтернатива, но эффективность не очевидна.

Я думал о настоящем SpreadStectrum’e это интересная тема. Я нашел проект одного немца. Он на одном смесителе и точном гетеродине сделал чисто софтовый GPS приемник, причем пребразование у него прямое, а АЦП 2вух битное, далее он это засунул на com порт PC и чисто софтово ищет корреляции. за 10 секунд он накапливает статистику, находит сигналы и считает координаты. Самое засадное в данной теме для меня - это балансный смеситель качественный и миниатюрный. Я сколько не мотал это дело, все фигня получалась. Если удастся найти источник заполучения этих компонентов, хотябы Mimicircits производителя, то можно реально работать ниже уровня шума. Вводить коды баркера или N-последовательности как в CDMA. Я придумал как изготовить цифровой управляемый стабильный гетеродин на одном кристале, стоимость будет 200руб. А если все это заработает, то мы вообще все будем в шоколаде и все кипятком будут писать не только на этом форуме. Я уже молчу про коммерческую ценность такой разработки. Представь сколько можно отжать дальности на минимальной мощности. И ведь никто не поймает и хрен заглушит. Но тему честного SS я не готов тянуть один. Я могу участвовать всеми силами, но не один.

2 шт STM32F405RGT6 у меня в руках. Посмотри по схеме нет ли еще каких принципиальных плюшек, а то у меня глаз уже реально замылился. Я буду на выходных печатку гладить и травить.

Drinker:

Подробнее про тесты можно?

Чисто математическая модель. Просто отлажен код, который работает. Генерятся показания гироскопа и акселя, подмешивается шум, подается на вход тестового кода, потом сравнивается. Это чисто теоретические исследования.

baychi
AlexSneg:

Нет уж, пусть будет дуплекс.

Передавать телеметрию на землю - кто-ж против. Я возражаю только в плане использования обратного канала для перестройки параметров связи на лету. Уже много раз доказывал и готов доказать еще раз: алгоритмы построенные на принципах “договора в процессе” позволяют оптимизировать лишь энергетику линии связи, но ВСЕГДА будут иметь худшую надежность, чем алгоритмы, где логика перестройки каналов известна заранее и не требует подтверждений в стророну земли.
Даже учитиывая, что по известным причинам обратныый канал для летающей модели как правило надежнее прямого, нельзя гарантировать что не услышав ответа приемник и передатчик окажуться в разных сетках. 😦

AlexSneg:

Посмотри по схеме нет ли еще каких принципиальных плюшек

Посмотрю еще, надо даташиты на MEMSы докурить.
Есть одно возражение иделогического плана. У Вас все завязано на приемник Вашей разработки. Между тем добавление 4-6 PWM выходов и одного PPM входа позволить подключать к АП большинство современных приемников и сделает данный модуль пригодным для многих авиамоделистов.

AlexSneg
baychi:

Между тем добавление 4-6 PWM выходов и одного PPM входа позволить подключать

Я этого ждал:)
Приемник стандартно имеет универсальный один PPM выход с инфой обо всех каналах?
Согласен на 6 PWM выходов, но как вариант расширения. Изначально добиваюсь работы для своей архитектуры. Меня ломает занимать место на плате 6-ю здоровыми разъемами. К тому же планирую иметь модификацию совсем совмещенного варианта на одной плате: приемник+автопилот.
Если есть вариант разводки с микроразъемом, чтобы совсем мало места заняли эти PWM выхода и не торчали, то будет совсем хорошо.

baychi:

Я возражаю только в плане использования обратного канала для перестройки параметров связи на лету

Александр, я уже говорил, что фактически пришел к такому-же выводу, полетав на динамической перестройке. В результате сделал статическую сетку и забил болт. Но принципиально в финальной версии можно реализовать как опцию и то и другое. Главное, что есть железка с широкими возможностями программного апгрейда.

baychi:

сделает данный модуль пригодным для многих авиамоделистов.

У меня реально большие сомнения, что широкая аудитория сумеет запаять такие форм факторы чипов даже на заводские платы 😃
Production вариант будет по максимуму small size optimized. Хочу, чтобы было максимально мелко и плотно и занимало мало места.

baychi
AlexSneg:

Приемник стандартно имеет универсальный один PPM выход с инфой обо всех каналах?

Те которые вообще имеют PPM выход - да. К сожалению, не все это имеют, но по крайней мере популярные здесь LRS - имеют.
Для остальных остается несложное решение encoder - преобразователь PWM-ов в PPM.

AlexSneg:

К тому же планирую иметь модификацию совсем совмещенного варианта на одной плате: приемник+автопилот.

Только хотел спросить, почему сразу не добавили MEMSы в приемник? 😃

Еще по идеологии, можно отметить полезность выноса MEMSов и компаса на отдельной миниплатке - для удобства установки на модели. Но это уже в “идеальном варианте” . 😃

Кстати, по телеметрии с приемника: Вы силовой ток меряете? И если да, то чем?

Вопросы по схеме:

  1. STM-ка поддерживат 3 I2C интерфейса. Почему Вы посадили все MEMSы и т.п. на один интерфейс?
  2. Все-же смущает меня такая экономия на электролитах! В даташите на LSM303 явно указан 100 мкФ по питанию, не спроста ведь. 😃
AlexSneg
baychi:

но по крайней мере популярные здесь LRS - имеют.

Ну тогда сделаем при доводке до финала.

baychi:

Только хотел спросить, почему сразу не добавили MEMSы в приемник?

Хочу иметь две модификации. Приемник + автопилот совмещенный и приемник с автопилотом модульно. Не всегда же FPV надо.
Схемотехнически и софтово это будет максимально одинаково, просто либо две платы, либо все на одной плате.

baychi:

Еще по идеологии, можно отметить полезность выноса MEMSов и компаса на отдельной миниплатке

Ну не знаю, здесь у меня много сомнений. В первую очередь длина I2C. Я ее гоняю на 400кГц. Я уже попробовал и запаял LSM303 на отдельной платке и отнес на разъеме на расстояние 20 см. Я задолбался глюки ловить. Неделю проблему не мог понять. Как убрал разъемы и длинные провода, все как часы заработало. Так что не думаю…

baychi:

Почему Вы посадили все MEMSы и т.п. на один интерфейс?

А почему бы и нет? Мне с точки зрения разводки это место экономит. Опять же I2C пины могут занимать что-то другое нужное. Читать я буду по прерываниям от устройства. Не вижу причин лишние проводники на плате разводить. А разнос устройств по разным шинам ничего к функционалу не добавит.

baychi:

В даташите на LSM303

Я уже LSM попробовал. Все работает. Глобально 3,3В вырабатывается на импульснике, там достаточно микрофорадов стоит. Если мы хотим ВЧ помехи снять в точке питания, то зачем все глобально микрофорадами обвешивать. Даташит еще не повод всю конструкцию электролитами загромождать. В этом же даташите написано и во всех апноутах нарисовано, что I2C должно от 1,8в работать + колхоз из транзисторов чтобы согласовать двунаправленную I2C с микроконтроллером. Так вот - вранье. Я это уже проверил, все там от 3,3 пашет без всяких согласований.

baychi:

Кстати, по телеметрии с приемника: Вы силовой ток меряете?

ACS712ELCTR-30A-T прямо в разрыв, ближе к разъему аккумулятора.
Еще есть модель до 40 - 60 ампер. Но мне и этого достаточно.

Drinker
AlexSneg:

Чисто математическая модель. Просто отлажен код, который работает. Генерятся показания гироскопа и акселя, подмешивается шум, подается на вход тестового кода, потом сравнивается. Это чисто теоретические исследования.

А я думал макет трясся - вертелся - ускорялся.
Тады ждем реальных опытов. Как положение тела будет отслежывацца.

albertr
AlexSneg:


Fly не только муха но и глагол летать.
Пусть будет FlyingBrain.

А почему такое название? “МозГ” в названии - имхо вообше как-то двусмысленно звучит, а ешё с приставкой “улётный”… 😃

Может обьявить конкурс на этом форуме на лучшее название?

-albertr

AlexSneg
albertr:

Может обьявить конкурс

Предлагайте свой вариант, я не против. Выберем лучшее к моменту релиза.

albertr

Если подразумевается, что все исходники будут открытыми, то я бы использовал приставку “Open”.
“OpenLRS” уже занято, но есть куча других вариантов, например: OpenFPV, OpenPilot, OpenRC…

-albertr

AlexSneg

Оно будет открыто в исходниках в части общего функционала, протоколов, интерфейсов и прочей лабуды для любого некоммерческого использования. Однако, оставляю за собой право не открывать исходники в части алгоритмов стабилизации, придуманных лично мной на каком-то этапе и имеющих признаки ноу-хау. Однако, такие алгоритмы будут доступны в виде накомпиленой DLL которую можно будет линковать, если кто-то захочет что-то улучшить или пересобрать, опять же не в коммерческих целях. Так же оставляю за собой право на каком-то этапе отпочковать коммерческую версию, которая будет существовать параллельно с открытой версией и имеющей признаки специфического функционала. На этапе адаптации кода МегаПирата под эту железку, уж точно не будет ничего закрытого. Любой желающий сможет скачать, накомпилять и улучшить. Никаких ограничений на существование альтернативных самостоятельных софтовых разработок на базе данного железа так же не будет.

Еще раз хочу подчеркнуть обязательно будет первоначальный релиз, в котором в основном весь автопилотный код будет не мой и я на него не претендую. Я НЕ БУДУ изобретать колеса. Главная цель - уйти от печальной системной ошибки всех более менее работающих открытых проектов - убогость и хилость архитектуры микроконтроллера на котором они строятся. Тема Mega 128 должна отмереть. Надо набрать воздуха в грудь и сделать шаг вперед уже.

Теперь по названию. Хотелось бы уйти от стереотипных штампов в принципе и названий типа Open SomeThing… в частности.
MegaPirat звучит классно, но оно уже занято. Предлагаю не торопиться и проявить больше фантазии и накидать больше разнообразных вариантов.

Rost

Может назвать просто - БУЛАТ или СУСАНИН 😃

fmkit

летаю с RFM22B модулями примерно 1 год, без ретрансляторов или бустеров надежное управление ограничивается радиусом 1.5км с простыми антеннами из куска провода. У вас нет идей улучшить ВЧ часть ? Слон предложил 2 модуля на разных диапазонах, я не вижу никакой выгоды в таком решении -дальность точно не улучшится а бустер превращается в двойную головную боль так как без фильтров, дуплексеров -ключей останавливается телеметрия. Зато весть о двух-диапазонной LRS взбудоражила многих на RCGroups 😃 Я принципиально против бустеров (закон !) , с репитерами больше возможностей но поскольку репитер вносит задержку как минимум один пакет вам надо перейти с 50 тайм-слотов на 200-300