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

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

AlexSneg
fmkit:

У вас нет идей улучшить ВЧ часть ?

Получить на малой мощности дальность в десятки км без бустера и припарок в виде узконаправленных антенн можно только, если пойдем путем честного Spread Spectrum. Реально ли это теоретически ? Ответ ДА. Реально ли это практически? Ответ будет ДА, как только найдется кто-то, кто расскажет мне где и как и в разумные деньги добыть двойной балансный смеситель размером хотя бы 1см на 1,5см. Пример модели, который нужен MBA-15L. Еще бы неплохо найти источник добывания ВЧ усилителей типа MSA-0886. И готовьтесь к тому, что приемник с такой хренью существенно прибавит в размерах печатной платы.

fmkit:

летаю с RFM22B модулями примерно

А у вас не старая ревизия? А то там мощность была ниже, чем у модулей начиная с 3-ей ревизии. У меня на земле расстояние 1 км с пол пинка прошибает.

AlexSneg

Подумал насчет PWM выходов. Есть два решения для чистового варианта:

  1. отдельный модуль-переход в который поставить самую младшую stm32F100c6 за 40 руб, чтобы преобразовать usart -> PWM 8 - 12 каналов + она будет принимать PPM от приемника и слать по usart в модуль автопилота. Фактически этот модуль будет притворяться приемником. Размеров можно будет достичь минимальных. На нее поставим импульсник, оно же будет питать автопилот и играть роль приемника для моей, изначально задуманной архитектуры. Любители пачки ненужных проводов и разъемов будут довольны. Управлять внутренними настройками и калибровками им придется через USB софт, как это и сейчас в MegaPirat’е.

  2. переход к корпусу LQFP100. Там будет доступно еще 3 таймера на свободных пинах по 4 pwm канала на каждый таймер. Тогда можно будет прямо на плате все развести. Это добавит тоже в районе 50 руб к себестоимости
    Оба варианта никак на повлияют на firmware и останутся 100% совместимыми программно с моей исходной схемотехникой

Я за первый вариант. Не хочу городить огород и занимать место не нужной ни при каких обстоятельствах мне байдой и разъемами, тем более, что я изначально был против. Модуль перехода я спроектирую и напишу в него firmware, апгрейдить можно будет через usb модуля автопилота. Как такой вариант развития для людей со стандартными приемниками и передатчиками?

fmkit:

я не вижу никакой выгоды в таком решении -дальность точно не улучшится

Я тоже не понимаю в чем тут фишка, если честно. Просто два канала и два диапазона и все. С чего вдруг там дальность вдруг в разы подпрыгнула? Спрашивать Слона стесняюсь. Ну да помехоустойчивость улучшится. Но радиус действия то тут при чем!

Drinker
AlexSneg:

В воздухе будет около 3 Км.

Прочитал внимательно первый пост. Недопонял, аппа на 3 км, моделью сам не управляю… трольь на форуме?

fmkit
Drinker:

Прочитал внимательно первый пост. Недопонял, аппа на 3 км, моделью сам не управляю… трольь на форуме?

Drinker, здесь в одном посте больше информации чем в вашей ветке на 3-х страницах 😉

с РФМ модулями удавалось связатся до 6км с нормальными диполями а так на самике антенна -кусок провода в горизонтальной плоскости а с нунчака свисает хвостик в вертикальной плоскости ни 1.5км работает стабильно
такие же результаты на форуме Флайтроне, может поэтому его опен-ЛРС не завоевал популярности с Июня когда стал доступен код и приемники/передатчики модули. Представитель ХопРФ прямо написал мне что чувствительности лучше -115дБ они сами не видели а заявленная -122 цифра теоретическая
Вообщем ВЧ надо обязательно улучшить а иначе будет как у всех остальных uhf lrs
Зачем вам миксер, запустить RFM22B на 50MHz ?

baychi
AlexSneg:

Подумал насчет PWM выходов. Есть два решения для чистового варианта:

Зачем 100 ножек? На Вашей STM-ке и так полно свободных выходов. С той-же точностью - 256 дискрет в пределах 1 мс - это 4 мкс на дискрету. Разве таймер не справится? Или прерывания долгие?
На простейшей DSP-шке я бы такую точность в легкую обеспечил… Таже фишка 4 выхода делает…

AlexSneg:

Я тоже не понимаю в чем тут фишка, если честно. Просто два канала и два диапазона и все. С чего вдруг там дальность вдруг в разы подпрыгнула?

Потому что в одном диапазоне трудно использовать доступную чувствительность RFMки. Если повезет, на 100 мВт можно улететь на 10-15 км. Но любая помеха свыше 55 дБ от сигнала в пределах диапазона, гарантированно заглушит приемник. 868 МГц - сам по себе более чистый диапазон. Плюс 433, вероятность заглушить сразу оба - в квадрате меньше. Практически это FHSS по двум диапазонам. 😃