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

AlexSneg

Эти мысли у меня начали оформляться в голове год назад. Делать это все я начал независимо ни от кого. Проекты Open LRS и 1slon.ru я узрел уже после того, как уже все сделал сам и взлетел мой самолет (правда я не сам управляю). Люди, которых я просил полетать, сказали, что все работает хорошо. Мне этого достаточно.

Скажу сразу передатчик с приемником у меня уже готовы, обкатаны и работают. Прошивки рабочие есть. Все летает с хорошей дальностью. Замеры показали 1Км земля-земля. В воздухе будет около 3 Км. И приемник и передатчик схемотехнически выполнены на STM32 + RFM22 433 MHz.Здесь вопросов быть не должно, уже эта тема давно народом опробована и свою работоспособность она подтвердила. Сейчас я работаю над темой автопилота.

В чем мое отличие от OpenRLS например?

Самое главное - я не могу понять чего все привязались к каким-то PPM сигналам и каналам. Извините, но в тему радиоуправления я пришел случайно 2 года назад. Я принципиально против наличия каких-либо промежуточных PPM для взаимодействия между приемником борта и автопилота. Моя цель - самодостаточная бортовая ЭВМ. Я хочу минимум проводом и модулей на борту. Хочу иметь все в одном флаконе.

Архитектура примерно следующая.

Передатчик - это полностью свое устройство, сделанное из чего-то китайского, где работают только джойстики. Вся электроника выкидывается на фиг и втыкается полностью моя схемотехника. Ставится цветной дисплей от S65 или что-то подобное. На борту USB разъем и встроенный эмулятор джойстика + FirmWare upgrade. То есть PC будет видеть это устройство как цифровой MS джойстик и все симуляторы будут работать (Это у меня уже есть, уже драйвер устройства написан и работает под крякнутым RealFlight). Всяких выключателей и крутилок можно будет навешать на передатчик в неограниченном кол-ве. Передатчик принимает всю телеметрию от борта и сможет на экране все показывать, вплоть до высоты и горизонта, то есть при отсутствии видео в теории можно будет рулить чисто по приборам.

Приемник - это фактически цифровой радиомодем с минимумом функций по управлению сервами и возможностью подключения неограниченного кол-ва датчиков либо по I2C бортовой шине либо CAN. Сервы подрубаются в приемник, тут мы ничего не сможем изменить, они будут управляться ШИМ сигналом от приемника. Однако всякие другие датчики в идеале будем подключать либо по CAN либо по i2c. В приемник заводим такие датчики как температура, скорость, обороты, дальномер, ток батареи, напряжение на ячейках ну и всякое другое, чего душа пожелает. Сам приемник умеет только держать двусторонний цифровой линк с наземным передатчиком и рулить сервами. На землю он передает всю бортовую телеметрию. FirmWare upgrade будет напрямую по радиоканалу. То есть, передатчик передает новую прошивку на приемник, тот ее заливает в свою флешку. Опционально разведем контактный площадки для USART апгрейда как запасной вариант.

Далее автопилот. Этот зверь цыпляется к приемнику по USART - 3 провода. Никаких PPM сигналов от серв к нему не будет в принципе. И вообще никаких датчиков по возможности цеплять не будем. Как только приемник видит, что к нему прицепили модуль автопилота, то он тут же становится слэйвом и становится транзитером всего трафика от датчиков и сигналов джойстика в модуль автопилота, который становится мастером и мозгом всего борта. Автопилот софтово обрабатывает все и передает на приемник сигналы руления, приемник их транслирует на сервы и другие механизмы. В автопилот будет встроем механизм firmware апгрейда приемника.

Сразу скажу всем скептикам - просьба не беспокоиться и не изголяться на тему “видели мы тут таких пачку…”. Повторяю еще раз прототипы передатчика и приемника у меня УЖЕ есть и они уже реально работают! Постепенно выложу фотки этих девайсов сюда в течение дня. Это прототипы версия 1, скажем так. Я их еще буду переделывать, но сейчас и их достаточно для движения вперед.

Задача следующего шага - автопилот. Схемотехника теоретически разработана. Печатная плата так же уже нарисована. Я провел работу по изучению того, что есть у народа сейчас. В частности ArduPilot и МегаПират. Поэтому, я не ставлю сверх задачу сделать квадратное колесо. На первом этапе возьмем, то, что есть и портируем в мое железо. Далее что-то кастрируем, что то доработаем.

Сейчас для заинтересовавшихся, показываю схемотехнику автопилота. Рабочее название пока “FlyBrain” Все конструктивные замечания и пожелания будут приняты с благодарностью. Я хочу иметь железку с запасом по максимуму, чтобы иметь возможность неограниченного программного апгрейда на годы вперед без изменения схемотехники.

Функционал, который я уже заложил в модуль автопилота:

STM32F405RG - камень
LSM303 - 3d accel + 3d компас
L3G4000 - 3d gyro
BMP085 - бародатчик
EB500 - GPS и PCB антенной прямо на плате
OSD - Видео вход прямо на плату автопилота, он подмикширует и все нарисует на экране. То есть на приемном конце вообще ничего не нужно будет иметь, все и так уже будет в видеосигнале.
LM75AD - датчик температуры
Ultrasonic Sensors - планирую метров на 10 чтобы сканировали. Есть очень компактный, по прикидкам около 15грамм добавят. Фактически это парктроник автомобильный. Буду ставить снизу, чтобы сканировали землю под углом 45 градусов примерно. Планирую это использовать для автопосадки.

Теперь схемотехника:

вот получше картинка, 300dpi

SkyWorker

Очень интересно! Желаю всяческих успехов! Буду следить.

baychi
AlexSneg:

Теперь схемотехника:

Нельзя ли картику схемки почетче? Можно через файлобменник. Хотелось бы на досуге изучить детали.
PS: Вопросов впереди будет много (надо даташиты на MEMSы изучить), а пока только один вопрос:

AlexSneg:

EB500 - GPS и PCB антенной прямо на плате

Выносной вариант, ИМХО, удобнее будет - подальше от помех.Ведь сама плата критична к установке (из-за MEMSoв). Совмещенный GPS только Paparazi делали, да и то не на всех версиях, но у них пиродатчик выносные, сам АП проще размещать…

AlexSneg:

L3G4000 - 3d gyro

Не нашел. Уточните маркировку.

AlexSneg:

BMP085 - бародатчик

AlexSneg:

LM75AD - датчик температуры

В бародатчике есть встроенный термоетр. Зачем еще датчик?
Кстати, Фишка использует датчик MS5561-C.
В отличии от Вашего он меряет давление в диапазоне от 10 до 1100 мбар, то есть может работать до десятков км.
А Ваш - предназначен больше для вариометров 300 - 1100 гПа, максиммум до 9 км берет, зато разрешающапя способность - десятки сантиметров.

AlexSneg:

OSD - Видео вход прямо на плату автопилота

На чем строится? Если интересно, фишкина OSD AP117 использует ч/б контроллер: pdfserv.maxim-ic.com/en/ds/MAX7456.pdf

AlexSneg

Я сейчас закачаю схему куда-нибудь и дам линк. Не понимаю почему этот форум картинки так жмет.
По гире сейчас уточню, может номер перепутал.

вот линк на схему.

baychi:

Выносной вариант, ИМХО, удобнее будет - подальше от помех.Ведь сама плата критична к установке (из-за MEMSoв).

Не согласен.

  1. если посмотрите на схему, то я развел 2 антенны. Желающие могут отодвинуть.
  2. EB500 я уже использовал ни раз. Работает отменно, стартует махом. Чувствительность чумовая, на входе встроенный дополнительный усилок. У меня в глубине комнаты ловит спутники просто на кусок провода засунутый в SMA разъем.
  3. откуда возьмутся помехи на 1,2 ГГЦ?
  4. Совсем озабоченные смогут просто отодвинуть саму плату, тащить придется 4 провода всего
baychi:

Не нашел. Уточните маркировку.

Я ошибся, должно быть L3G4200D

baychi:

В бародатчике есть встроенный термоетр. Зачем еще датчик?

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

baychi:

зато разрешающапя способность - десятки сантиметров.

Ну так мне выше 9 КМ и не надо. Мне как раз и нужна разрешающая способность. Я планирую иметь точную вертикальную скорость, чтобы из вектора гравитации ее удалять. Представь себе самолет падает плашкой, и что? Все пропало, гравитации нет? Я не согласен. Эта штука поможет нам прикинуть скорость набора высоты и снижения. GPS как вариант, но больно уж +/- лапоть. Нет нужен именно бародатчик с высоким разрешением сантиметровым и высокой частотой замера. Опять же, лучше сразу иметь, чем потом жалеть.

baychi:

На чем строится?

Смотри схему, там нарисовано. Операционник в качестве компаратора и детектора синхры, двумя сигналами будем варировать уровень серого и белые пикселы через MOSI гнать. Понимаешь, в нашем камушке 192кб честно озу. А кроме того, есть DMA аппаратный. Ну так вот если соединить память и MOSI через DMA мост, то фактически мы имеем аппартный OSD. Проц будет просто в памяти картинки перерисовывать, и адреса старта для SPI по прерываниям от компаратора перещелкивать. Идея ясна?
Самое главное, мы нагрузим аппаратный DMA, а все остальное даже отвлекаться на вывод не будет. Вполне реально выделить 8к памяти под честное 256х192 разрешение. Я даже думал выход DAC подключить, чтобы например иметь градации белого, но потом подумал - нафиг, и чисто белого будет достаточно.

baychi:

MAX7456.pdf

Я посмотрел. Это все-таки избыточно. Мы уже имеем почти DSP на частоте 166МГц. Лишний кристалл - лишнее место на плате. А так мы сможем разрешение OSD по нашему желанию варировать. И вообще более гибко себя будем чувствовать.

Сейчас размер разведенной и готовой для печати платы получился 7x5 см. Считаю более чем приемлемо. Если интересно картинку печатки могу так же скинуть.

Drinker
AlexSneg:

Смотри схему, там нарисовано. Операционник в качестве компаратора и детектора синхры, двумя сигналами будем варировать уровень серого и белые пикселы через MOSI гнать. Понимаешь, в нашем камушке 192кб честно озу. А кроме того, есть DMA аппаратный. Ну так вот если соединить память и MOSI через DMA мост, то фактически мы имеем аппартный OSD. Проц будет просто в памяти картинки перерисовывать, и адреса старта для SPI по прерываниям от компаратора перещелкивать. Идея ясна? Самое главное, мы нагрузим аппаратный DMA, а все остальное даже отвлекаться на вывод не будет. Вполне реально выделить 8к памяти под честное 256х192 разрешение. Я даже думал выход DAC подключить, чтобы например иметь градации белого, но потом подумал - нафиг, и чисто белого будет достаточно.

Любопытно. Главное, чтобы ресурсы проца не ушли на ОСД. А то планируемый калман некогда будет общитывать. А чем ДЦМ не устраивает? На стм он может 2000 раз в секунду вращаться железно. А ЕКФ на 72 мгц максимум 200 ГЦ.

AlexSneg

вот текущая разработанная печатка. Как только картридж в принтере поменяют на след неделе, разу в печать и под ЛУТ

baychi
AlexSneg:

Так и в гироскопе есть. Только они меряют что? Температуру внутри кристалла. Мне нужна температура борта. Надо понимать на какой температуре закалиброван был аксель. Дрейф нуля от температуры есть во всех дата шитах.

Какая разница, где брать температуру? Дрейф зависит от относительного изменения, а не от абсолютной величины.

AlexSneg:
  1. откуда возьмутся помехи на 1,2 ГГЦ?

От видео на 1.2 ГГц. 😃
Кстати, наша GPS частота 1575 МГц. Или Вы можете военный L1 использовать. 😃

AlexSneg:

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

А почему не хотите апааратный детектор синхроимпульсов, тотже LM1881?

AlexSneg:

вот линк на схему.

Спасибо. Смотрю. Пока не вижу серьезных емкостей по питанию. +5В ведь от борта будте брать? А оно веьсма нестабильно. И понижать до 3.3 и 1.8 В LDO КРЕНКами?

Отдельная FLASHка для лога полета - это правильно! Сразу другой класс АП получается. 😃

AlexSneg:

вот текущая разработанная печатка

Обратите внимание на разводку кварца. Возвратую землю С7, С8 желательно привести на одну из GND ног проца. Это существенно улучшит стойкость к помехам.

AlexSneg
Drinker:

ДЦМ не устраивает?

Ресурсов у нас с запасом.

Мне не нравится DCM. DCM это компромис между производительностью и результатом.
В идеале я хочу полноценные кватернионы вращения относительно референсного начального положения. Это сразу снимает все проблемы с переворотами вверх тормашками и вырождением опорных плоскостей при определенных обстоятельствах. А кроме того я хочу чтобы ничего не зависело от того как плату соорентировали внутри самолета при установке. Кроме того вот кватернионы в паре с фильтром Кальмана мне абсолютно понятно как работают, а припарка типа DCM меня напрягает, особенно когда я в коде DCM вижу места с комментариями, что типа “все плохо, уперлись в какие-то ограничения…”, и дальше куча ИФов в попытке понять что произошло.

Более того, вот я уже написал СИ код для кватернионов и кальмана на VC++ погонял в тестах. В принципе меня устраивает. Но это теория, хочу практики. Как вариант, поскольку в моем камне памяти 1Мег, то сделаем опцию типа: DCM - 1, Кватернионы - 2, альфа-бэтта - 3 … Еще что-нибудь - 4. И у меня еще есть одна безумная мысль как отсечь с вектора гравитации вектор центростремительного ускорения. Но реально можно это только рабочей железке проверить.

Вооо, посылка с камнями пришла, только что с почты позвонили. УРА!!!. Теперь у меня в руках есть все детали. На следующей неделе буду паять. Блин уже прямо руки чешутся и сверло в …опе покоя не дает. Я этот проект уже пол года вынашиваю…По секрету приоткрою планы на будущее. Следующим шагом после автопилота будет добавление цифрового видеолинка, скорее всего на 2.4 ГГц и хотя бы 320x240, хотя бы 15 кадров в сек. Схемотехника для меня уже ясна в этой задаче. Но это планы дальние, пока только автопилот и все вместе собрать, хотя бы к летним полетам для тестов.

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