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

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 по двум диапазонам. 😃

AlexSneg
baychi:

Зачем 100 ножек? На Вашей STM-ке и так полно свободных выходов.

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

baychi:

Если повезет, на 100 мВт можно улететь на 10-15 км

то есть фактически вероятность “повезет” увеличена в 2 раза. А поскольку она изначальна равно 0 целых хрен десятых… Короче ноль умножить на 2 будет 0. Делали бы тогда два модуля на диапазон 868. Нет, я не верю в чудеса. Откуда вязалясь заявленная улучшенная дальность в РАЗЫ, как это на писано на сайте 1slon.ru ?

Реально увеличить дальность можно только увеличением выходной мощности. А уж если увеличивать, то есть модули мицубиси готовые. Нужно только отработать по схемотехнике быстрое переключение прием-передача.

fmkit:

Вообщем ВЧ надо обязательно улучшить а иначе будет как у всех остальных uhf lrs

А давай я так поставлю вопрос.
Вот сколько хочет иметь дальности среднестатистический FPVишник? Понятно, что все хотят ставить рекорды на 200к. Ну а если с точки зрения разума?

baychi
AlexSneg:

нужны ножки с выходами от таймеров.

Зачем? Вы что там Linux собираетесь в качестве ОС ставить?
Достаточно просто параллельного 8/4 бит порта, где можно одномоменто изменить состояние всех бит. Даже на однкристалках I8051 такое возможно было. Ну перетусуйте ножки, в конце концов, даже I2c/SPI легко на портах общего назначения сделать…

AlexSneg:

Я хочу чисто аппаратное решение.

Это вопрос религии? 😃
Даже на Фишках 4-6 PWM выходов работают с разрешение в 1 мкс…

AlexSneg:

то есть фактически вероятность “повезет” увеличена в 2 раза.

Вероятности перемножаются.

AlexSneg:

Делали бы тогда два модуля на диапазон 868.

И оба будут заглушены близкой помехой в диапазоне?

AlexSneg:

Реально увеличить дальность можно только увеличением выходной мощности.

Почему то на 2.4 ГГц можно на 100 мВт летать 2-3 км стабильно и 5-7, если повезет, а на 433 - нельзя?

AlexSneg:

Вот сколько хочет иметь дальности среднестатистический FPVишник?

Сегодня: 10-15 км стабильной связи (это связано с энергетикой среднего электролета) и 30-50 км с ухищрениями типа бустеров, направленных антенн и т.п. Завтра 50-100 км. 😃

AlexSneg
baychi:

Это вопрос религии?

нет, это вопрос рациональности кода. Зачем городить код, если можно просто асинхронно на лету управлять скважностью таймера. Это красиво, эффективно и просто как 3 копейки. Камень не будет отвлекаться это раз. Исключены любые софтовые ошибки - это два. Не надо заниматься никакими вычислениями дополнительными - три. Не нужно задействовать прерывания - четыре. Чем меньше софта, тем меньше возможности программеру наделать глюков.

baychi:

И оба будут заглушены близкой помехой в диапазоне?

22-й модуль позволяет отстроится довольно широко. Какая предполагается ширина полосы помехи? 100 Мгц?

baychi:

а на 433 - нельзя?

Так вроде не я говорил что диапазон 433МГц забит под завязку. А 868 чистый. Отсюда логика, зачем лезть в 433 если можно подальше в полосе 860+ разнести два модуля. На 20 Мгц два модуля можно отодвинуть.

baychi:

10-15 км стабильной связи

Такой дальности можно достичь если доработать выход RFM22 до выходной мощности хотя бы 500мВт. В принципе можно добавить усилитель на транзисторе. Только у меня нет ни спектрометра, ни КСВ метра. На глаз не получится настроить, нужны приборы. У меня есть только осцил в свободном доступе. Но я не против маленько подшаманить выход в последствии.

baychi:

Завтра 50-100 км

Ога, а пслезавтра в космос захотим!

baychi:

Ну перетусуйте ножки, в конце концов, даже I2c/SPI легко на портах общего назначения сделать…

Плохая мысль. Нельзя этого делать. Быстродействие камня в сотню раз больше быстродействия i2c. Реализовывать i2c софтово, это поставить камень на ручник. В STM все можно на аппаратных DMA каналах и прерываниях по началу, окончанию организовать. Так и буду делать. Софтовый I2C не наш путь.

serj
AlexSneg:

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

Простите, но больно пафосно. Почему-то все начинающие так думают- а ведь “более менее работающие проекты” появились несколько лет, когда и у STM32 еще только баги вылавливали и ерраты писали…

Тут уже один такой есть, тезка президента. На 400-мегагерцовом TMS320. 😃 Уже год с хвостиком делает- но пока не полетел 😦… По компасу дрейф гиросковов устраняет.

Почему-то берущиеся за это сразу думают, что причина плохого поведения некоторых автопилотов в “убогой архитектуре” контроллеров. 😃

2baychi : программирование уже давно превратилось в ремесло…
Куда проще ( с точки зрения скорости разработки) взять камень с 5000 процентным запасом и делать все аппаратно- думать не надо.
Если програмный I2C у человека вызывает опасения - (поставить камень на ручник 😃 ) - ну не чувствует человек пока что такое синхронный интерфейс, - зачем лишний геморрой ему?

А вот уйти от связки проводов от приемника- это правильно.
Но тогда логично делать и второй шаг- какие нафиг аппаратные таймера, куда 100 ногий проц?
Всего 1 нога- как футаба! ( машинки и регуляторы S-bus)

fmkit
AlexSneg:

…если доработать выход RFM22 до выходной мощности хотя бы 500мВт. В принципе можно добавить усилитель на транзисторе. Только у меня нет ни спектрометра, ни КСВ метра. На глаз не получится настроить, нужны приборы…

У вас же есть RSSI и амперметр - пол-ватта делается за несколько минут 😃 Даите мне вашу платку потестить а в замен предлагаю несколько сотен BFG198 транзисторов и несколько штук PD55003 и PD55008 (практически неубиваемые в отличие от модулей Mitsubishi) , правда без фильтра LPF бустер угробит видео но фильтр можно приобрести отдельно.
Между прочим всегда пользуюсь софтовым i2c, пульт Wii Nunchuck опрашивается и передает пакеты 300 раз в секунду

fmkit
AlexSneg:


STM32F405RG - камень… Понимаешь, в нашем камушке 192кб честно озу…Как вариант, поскольку в моем камне памяти 1Мег…Вооо, посылка с камнями пришла…У меня таймеров на борту камня штук10…Камень не будет отвлекаться это раз. …Быстродействие камня в сотню раз больше быстродействия i2c.Реализовывать i2c софтово, это поставить камень на ручник. ,…Куда проще ( с точки зрения скорости разработки) взять камень с 5000 процентным запасом…Теперь по названию. Хотелось бы уйти от стереотипных штампов в принципе и названий типа Open SomeThing… в частности.

Извините !
Не удержался ! 😃

КаменныйМозг !

AlexSneg
serj:

Почему-то все начинающие так думают-

Ну вот обозвали начинающим. Пошел фоткать передатчик с приемником, а то так и будут считать, что ничего не работает и ничего не летает.
И еще раз, я не буду на первом этапе ничего изобретать. Возьмем то, что есть и портируем. На данном этапе я склоняюсь к порту МегаПирата. Дальше будем смотреть в какую сторону развивать.

serj:

ну не чувствует человек пока что такое синхронный интерфейс

Я как раз знаю что такое программный I2C поэтому и не буду реализовывать такю шнягу, когда процессор в 20 раз работает быстрее чем предельная скорость выдачи 1 бита, которую может воспринять слэйв устройство. Я не видел ни одной программной реализации I2C которая бы не тормозила проц в пустых ожиданиях

serj:

На 400-мегагерцовом TMS320

я читал эту ветку и долго ждал пока будут результаты. Но автора понесло в GSM управление и какие-то побочные продукты. К тому же для меня подход к DSP достаточно проблематичен. Да, там до фига вычислительной мощности, но не развитая периферия (может конечно я не те модели смтрел, но из доступных это именно так). Размер корпусов - конский. И у меня нет навыков и аппаратуры аппаратного дебага. Затраты на подход с нуля к STM для человека , который имеет дело с атмелом примерно 1000руб на все железо.

fmkit:

Даите мне вашу платку потестить

Если бы вы жили в Н.Н., то без проблем дал бы. Сейчас выложу схему приемника и передатчика, как это есть на данный момент в рабочем состоянии. Можете дорисовать выходной усилитель, какой пожелаете, я его соберу, посмотрим как будет работать. Беретесь за это дело? Только чур делать из обще доставаемых компонентов.

fmkit:

КаменныйМозг

Stone Brain

Так?

serj:

Всего 1 нога- как футаба!

так и придем к этому в последствии 😉

fmkit
AlexSneg:


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

ничего придумывать не надо, у меня и деталей для бустера и готовых печатных плат целый склад

Stone Brain

Так?

если добавить всего одну букву то название преврашается в родное и понятное для большинства англоязычных -
Stoned Brain 😃

serj
AlexSneg:

Ну вот обозвали начинающим. …////
Я как раз знаю что такое программный I2C поэтому и не буду реализовывать такю шнягу, когда процессор в 20 раз работает быстрее чем предельная скорость выдачи 1 бита, которую может воспринять слэйв устройство. Я не видел ни одной программной реализации I2C которая бы не тормозила проц в пустых ожиданиях

“Пустые ожидания”- это , что называется решение “в лоб”, простите. Оно подходит было для тех приложений - где вагон времени.
Если “вы не видели реализации” - это не значит, что этого нельзя СОЗДАТЬ САМОМУ. Вопрос только потраченного времени. В вашем случае кристалл дешевле потраченного времени.

На Атмеге с ее большими по сравнению с STM32 затратами времени на прерывания на прерывания и на порядок более низкой тактовой-
действительно софтовая реализация приводила бы к замедлению в 8-12раз. (просто мало инструкций “основного” кода можно было выполнить во время пауз интерфейса)
На stm32- ожидаемая потеря производительности- примерно 40-50%.

AlexSneg

Схема приемника линк на большое разрешение

serj:

“Пустые ожидания”- это , что называется решение “в лоб”, простите. Оно подходит было для тех приложений - где вагон времени.

То есть, запускать таймеры, отпускать процессор и ждать прерываний? И городить 3ех этажный код. Если задача стоит опрашивать один датчик и больше ничего не делать, то на здоровье, занимайтесь мазохизмом. Я ж не говорю, что это нельзя сделать. Делайте, кто ж мешает. Мне такие алгоритмы не улыбаются.

serj:

На stm32- ожидаемая потеря производительности- примерно 40-50%.

Так вот я и спрашиваю зачем? Зачем делать что-то программно, чтобы потерять 40-50%, если есть решение аппартное, встроенное, халявное и без потерь?

serj:

В вашем случае кристалл дешевле потраченного времени.

А это, типа не аргумент?

fmkit:

ничего придумывать не надо, у меня и деталей для бустера и готовых печатных плат целый склад

Можно конкретнее, схемку или эскиз конкретно для RFM22 дифференциальных выходов с поддержкой передачи и приема?

fmkit:

Stoned Brain

Stoned это выложенный из камня. Stone это и существительное (камень) и прилагательное (каменный)
Любое существительное в английском языке может быть атрибутом. В вашем варианте Stoned образуется как причастие от глагола to stone
Я не прав?

Схема передатчика. Высокое разрешение

serj
AlexSneg:

Я ж не говорю, что это нельзя сделать. Делайте, кто ж мешает. Мне такие алгоритмы не улыбаются.

Из Ваших слов “Я не видел ни одной программной реализации I2C которая бы не тормозила проц в пустых ожиданиях”
я понял что вы не в курсе, что можно сделать по-другому.
Попробовал объяснить плюсы и минусы.
Наверное, объяснил плохо, ибо в ответ назван был мазохистом. 😃