Создание собственной системы стабилизации

DVE

Посмотрел Maple Mini - классная штука, давно хотел во всяких поделках использовать STM, но разводить вручную плату совершенно лень. С такой платой все гораздо удобнее.

Только не очень понял, как там обстоит с отладкой?

PS: 34$ на спаркфане, дорого, взял на ебее на пробу за 24$, сойдет для тестов.

Sir_Alex
DVE:

Только не очень понял, как там обстоит с отладкой?

Думаю с отладкой там такая же шляпа как и у Ардуины на АТМЕГА… т.е. никакой

P.S. Ну разве что через println 😃

igor_v_t
oleg70:

А не поделитесь соображениями насчет принципа стабилизации по видеокартинке, я тоже хочу попробовать поработать в этом направлении.
У меня есть кое какие мысли по отслеживанию перемещения пикселов, но интересует Ваше мнение (если не секрет).
Как бы Вы реализовали сей алгоритм…?

Собственно идея была сделать точную (±10…20 см) автоматическую посадку в точке старта по маркеру, но дальше идеи пока не пошло.

Drinker

с отладкой в классичeском понимании у маплe дeйствитeльно никак. Но на практикe при отсутствии нeобходимости низкоуровнeвого программирования в принципe принт достаточeн.

rual
Drinker:

Но на практикe при отсутствии нeобходимости низкоуровнeвого программирования в принципe принт достаточeн.

Несколько вопросов:

  1. Как использовать передачу данных с датчиков через ПДП?
  2. Как получить прерывания о готовности данных у датчика?
  3. Как вообще организовать работу в параллельных процессах?

Это всё конечно не нужно для работы супер петли, ну тогда мы получим АПМ и МультиВий.

mahowik

По третьему пункту наверняка есть смысл RTOS пользовать…

Drinker

трeтий пункт - я freertos использую и тeпeрь ужe от нee нe откажусь
второй пункт - на любую ногу обработчик прeрывания вeшаeм в в путь
пeрвый пункт - пдп это что?

Alexey_1811

ПДП - прямой доступ к памяти. Пересылка данных между памятью и периферией без участия процессора.

Sir_Alex
Drinker:

пeрвый пункт - пдп это что?

Если по русски то DMA 😃

Drinker

дма я для спи дeлал когда с осд
игрался

rual
Drinker:

трeтий пункт - я freertos использую и тeпeрь ужe от нee нe откажусь

На мапле?

Drinker:

второй пункт - на любую ногу обработчик прeрывания вeшаeм в в путь

это родной метод мапла ?

Вчера-сегодня доделывал ППМ, вход-ШИМ выход Ф3, без нормальной отладки перифирии очень доставляет… Хотел седня полетать, но уже лень… мож до конца недели проверю…

Drinker

attachinterrupt и всe дeла

а фриртос и на маплe и на ф4 использую. доволeн в общeм

ппм вход на стм прощe чeм на арду дeлаeтся как в прочeм и шим выход чeго там отлаживать?

Alexey_1811

А в чем прикол использовать Ф3 серию? Датчики все цифровые и 24 битный АЦП нам нафиг не нужен. Уж лучше Ф4.

rual
Drinker:

а фриртос и на маплe и на ф4 использую. доволeн в общeм

РТОС в мапловском ИДЕ портировали?

Drinker:

ппм вход на стм прощe чeм на арду дeлаeтся как в прочeм и шим выход чeго там отлаживать?

Подключение входов\выходов альтернативных функция к порту у Ф3 существенно отличается от Ф1 (у Ф4 не знаю, не знаком).

Alexey_1811:

А в чем прикол использовать Ф3 серию? Датчики все цифровые и 24 битный АЦП нам нафиг не нужен. Уж лучше Ф4.

Прикол в Ф3Дисковери которая очень дешева и все датчики кроме баро и ГПС на борту.

Drinker

freertos идeт в составe мапловского идe, для ф4 использую coocox и порт с сайта фриртос

mahowik
mahowik:

OpenPilot уже походу пoртанули на STM32F3DISCOVERY

приехала платка… сделал как по инструкции… в гуях наклоны отрабатывает как надо! 😉

rual:

Сделал полную ИНС на Ф3, всё как люблю, т.е.:

залил ваш hex + питон гуи запустил отсюда, предварительно указав в MinIMU-9-test.py номер stm vitrual com port-а … стоят вектора как вкопанные, т.е. не бегут данные наверное…

SergDoc
mahowik:

приехала платка… сделал как по инструкции… в гуях наклоны отрабатывает как надо!

бутлоадер надо менять на опенпилотовский? на сколько вижу - надо,

Choose the bl_disocoveryf4.bin or bl_disocoveryf3.bin from the release archive

в таком случае второе

mahowik:

залил ваш hex + питон гуи запустил отсюда, предварительно указав в MinIMU-9-test.py номер stm vitrual com port-а … стоят вектора как вкопанные, т.е. не бегут данные наверное…

может и не запустится?

вот только, если честно, я так и не разобрался - этот бутлоадер вторичный или всё-таки заменяет родной? у меня остался F103 (выпаяный) с крайней прошивкой CC и платка недоделаная под CC3D (свёрла кончились и немного испохабил) если кому надо отдам…

платка такая -

Sir_Alex

Я тут предложил производителю плат CRIUS AIOP подумать о перспективах и начать работу над ARM32 версией его платки. Мне кажется это реальный шанс собрать все наши наработки и сделать промышленный контроллер, ну а софт каждый сможет свой пилить под нее. На данный момент можно будет портировать прошивку Таймкопа и в скором времени появится ArduCopter под PX4 которую так же без вопросов можно будет портировать.
Что скажете?

Я предполагаю: STM32 F4, Датчики MPU6000 + MS5611 подключенные по SPI и использующие прерывания (для чтения готовых данных). Флеш память для параметров и логирования (SD карты вроде как могут глючить в полете, значит не имеет смысла их использовать). Использование аппаратных PWM генераторов для выходов на моторы/сервы и использование ICP(в терминах ATMEGA, как называется на F4 я пока не смотрел) для входных линий. Обязательно наличие JTAG разъема (SWD например) для отладки.

SergDoc

Я сейчас добился чего-то более-менее вменяемого, ещё пару вечеров и… в общем нижняя платка с датчиками и процем получается 52Х52 и креплениями 45Х45 - разрулил заразу 😃 осталось марафет навести…
что есть:
STM32F407VET6
MPU6000
HMC5883
MS5611
8 входов
8 + 4 выходы
3 UART ( один выведен на верхнюю плату для GPS MT332)
свободный SPI (скорей всего под MicroCD - будет на верхней плате и отдельно пару свободных лап под выбор других устройств)
6 светодиодов (2 из них индикация питаний цыфра/аналог)
разъём под сонар
USB (совместим с мапл)
4 свободных порта АЦП и 4 GPIO
А как это всё влезло? да очень просто - проц на стороне пайки (снизу) остальное сверху( дырок, то есть переходных отверстий под процем и другими МС нет) - дополнительно не будет геморроя с распайкой разъёмов - все дорожки идут снизу к ним 😃

а да, расположение датчиков как в APM…

Sir_Alex:
  • MS5611

там нет лап для прерываний, и чтение довольно редко (ну по сравнению с ДУС) - я оставил его на I2C…

Если кто поможет в покупке STM32F405(407)VGT6 (у меня VET6) буду очень признателен…

Sir_Alex:

Флеш память для параметров и логирования (SD карты вроде как могут глючить в полете, значит не имеет смысла их использовать).

а кто мешает сделать платку которая влазит вместо MicroSD и на ней флешка, я на крайняк так планировал, если вдруг Рево портануть захочется 😃

P.S. для отладки оставил PA13 (SWDAT) и PA14 (SWCLK) под ST-linc

Sir_Alex
SergDoc:

а кто мешает сделать платку которая влазит вместо MicroSD и на ней флешка, я на крайняк так планировал, если вдруг Рево портануть захочется

Проблема как раз в разъеме, а не самое флехе. Но возможно с F4 не будет особых проблем, даже если запись на флешку подвиснет.

rual
mahowik:

залил ваш hex + питон гуи запустил отсюда, предварительно указав в MinIMU-9-test.py номер stm vitrual com port-а … стоят вектора как вкопанные, т.е. не бегут данные наверное…

Наверное, а синий “самолётик” углы показывает? Дело в том, что у меня несколько питоновских демок, там видимо самая старая, поновее здесь, а самую новую выложу вечером ( по моему времени) из дома.
А работу демки можно посмотреть в терминале (гипер под винь) или Putty, буквы латинские маленькие:
c- калибровка ДУС, в течении секунды плата должна быть в покое, считаем дрейф осей ДУСа;
a- углы по акселю, если плату дергать будут дрожжать;
s- данные акселя;
d-данные ДУСа;
g-углы по комплексированным данным;
e-углы + вектора.
В питоне проверяем букву

# Check your COM port and baud rate
ser = serial.Serial(port='COM5',baudrate=115200, timeout=1)
tmode = "e"

MinIMU-9-test.rar