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

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 которая бы не тормозила проц в пустых ожиданиях”
я понял что вы не в курсе, что можно сделать по-другому.
Попробовал объяснить плюсы и минусы.
Наверное, объяснил плохо, ибо в ответ назван был мазохистом. 😃

AlexSneg
serj:

Наверное, объяснил плохо, ибо в ответ назван был мазохистом.

ну ОК, я думаю мы друг друга поняли. В данном случае, когда на одной шине 4 устройства с которыми нужно непрерывно работать, программный I2C никак не катит, тем более при наличии аппаратного решения и к тому же наличию DMA , который напрямую вяжет i2c -> RAM.

Данную схемотехнику я затачивал на следующий алгоритм:

  1. Создаем группу приоритетов прерываний I2C. Раздаем приоритеты одинаковые на гиру, аксель, компас
  2. Получаем прерывание о готовности данных
  3. Смотрим от кого пришло. Запускаем I2C к устройству, которое вызвало прерывание. Ждем готовности устройства к передаче, после передачи START и его адреса, это так же реализуется аппаратно на прерываниях от I2C
  4. Пришла готовность, подключаем DMA
  5. Получаем прерывание, что все байты считаны, DMA аппаратно сам передает сигнал STOP на I2C. обрабатываем сырые данные
  6. Ждем сигналов готовности данных дальше от других устройств.

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

fmkit
AlexSneg:


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

Где вас учили английскому? 😉
Stoned - значит обкуреный, можно сказать невменяемый

Зря вы так категорично о программном I2C, ето очень удобно(любые пины), полный контроль над задержками (никогда не зависает), и что вам мешает вместо ожидания очередного бита проверить флаги и выполнить еще несколько функциии ? Очередной бит дождется до завтра если надо - ведь спецификация протокола не ограничивает ожидание.

Я пользуюсь репитерами без бустеров но раньше когда был озабочен мошностью накупил модули Митсубши и кучу транзисторов. Поскольку репитеры удобнее мощные детали остались без дела.

Glagool

Ничего не понимаю в схемотехнике, но раз уж тут идет речь о названии, то почему бы не поучаствовать? Мне кажется удачной идея обыграть слова “полет” и “голова”, но вот Brain в самом деле не очень звучит. Голова как по-латыни? Сaput. А какое слово произошло от Caput? Капитан. Вот и вариант: полетный капитан. А вариантов много: FlightCap (тут еще вариант “крышка, насадка, фуражка” работает в слове cap). CapFly опять же. Capiflight. Ну или как-то так.
Извините что не в тему, но больно мне нравится на умных людей за работой наблюдать 😃

SkyWorker
Glagool:

FlightCap

Мне нравится!

Glagool:

Извините что не в тему, но больно мне нравится на умных людей за работой наблюдать

Человек вообще очень любит смотреть, как другие работают… 😃