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

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:

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

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

AlexSneg
fmkit:

Где вас учили английскому?

В английской спецшколе 😉 Там слэнга не преподавали. Если stoned воспринимается носителями языка как “под кайфом”, то лучше не надо

Glagool:

FlightCap

Мне тоже нравится. Зачислим пока первым кандидатом на название.Ждем еще вариантов.

Glagool:

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

Сегодня платку не удалось сделать. Картридж в принтере так и не поменяли, а текщий - плохой. Дрожки размазались. Во вторник было обещано, что сменят на новё. Сделаю вторую попытку.

Сегодня весь день разбирал код мегапирата и ардуину. В целом мне понятно как там все структурно устроено, нарисовал себе целую схему большую. Думаю, что буду с мегапирата все срисовывать. Один в один передирать не буду. Мне там чисто персонально подход не очень как-то нравится. Скорее всего будут некоторые структурные вариации продиктованные другой схемотехнической и хардварной платформой, но основные алгоритмы я менять не буду.

Кто мне скажет схемотехника есть где-то нарисованная от Black Vortex? Вроде как эта платка под Мегапирата идет? Глянуть бы, а то сложно по коду догадываться зачем там то или иное применяется.

PAF

В плане названия.

Несколько аналогий.

Имена детям дают родители. Это справедливо. Это их радость, терпение, труд, позор, успех, слава. Посторонние наблюдатели отдыхают. Им не причетается. 😦

В имени закладывается смысл, потенциал, действие.

Откуда пришла мысль автору, оттуда придет и название.

Начало полагает начальник. Начальник нормальное, полное смысла и уважения слово! Начальник не прожектер. Это тот кто начал, делал и завершил. Все и всё под его Началом. Его труд, его побои, его и слава, ему и честь. 😃

Как-то не воспринимается: ничего не сделал, а названье дал! О-от герой-то!😁 Нашелся smart fly!

fmkit

Сдерживался до сих пор чтоб не подумали что навязываюсь с Wii Nunchakами но всетаки вынужден спроситЬ- еслиу вас опыт 2 года и вы со свежим взглядом отказались от ППМ и не ограничены выбором пульта то почему на фотках убогий традиционный пульт с двумя стиками а не что нибyдь современное ? Думаю что миллионы игроков Nintendo и Playstation впали бы в ступор если бы им предложили такой пульт как у вас.

AlexSneg
fmkit:

бы им предложили такой пульт как у вас

Так это, оно ж халява доставатус. Кто ж мне хороший пуль подарит. Я уже много раз обращался, если у кого есть мертвый пульт, но джойстики в порядке, продайте по остаточной стоимости. Так ведь фиг! Мне Костя из Н.Н. (особая благодарность ему) еще один подарил от E-sky 6и канальный без экрана на 2.4 GHz. Там джойстики очень хорошие. Оно лежит ждет финальной версии, будет донором для production версии передатчика, будет уже с цветным дисплеем, с кучей кнопочек, клавиатурой, короче все дела. И платку туда стандартную прямоугольную можно будет впихнуть, не то что в этот, вон как раскорячиться пришлось с платой то!

PAF:

smart fly

Мне это в голову приходило, но тоже как-то слегка стереотипом отдает. Я снимаю шляпу перед теми , кто у нас реактивный огнемет назвал “Буратино” Вот это креатифф!!!

Короче, картридж сегодня сменили, сделаю сегодня - завтра еще раз попытку отгладить и протравить плату.