STM32 Flight controller

Сегодня большая веха на пути моего увлечения мультикоптерами. 2 с лишним года назад я заинтересовался мультикоптерами всерьез и с тех пор с другом проектировали и закупали запчасти, был почти годовой перерыв, затем эксперименты с различными полетными контроллерами и рамами, винтомоторными группами, куча побочных проектов.
Весной я всерьез взялся за STM32, поняв, что с Atmega328 как планировалось изначально каши не сварить.
И вот сегодня я наконец-то собрал полетный контроллер на основе платы на STM32F103VE и отдельной платы сенсоров.
Стоимость электроники примерно $35. На борту 32битный контроллер с поддержкой USB, CAN, SPI, I2C, UART, PWM, причем не по одной штуке.
Софт на основе проекта Naze32 я адаптировал к своей плате. Он поддерживает все виды имеющихся у меня сенсоров:

  • Акселерометр ADXL345
  • Гироскоп L3G4200D
  • Комбинированный акселерометр с гироскопом MPU6050
  • Барометр BMP085 и MS6511
  • Магнитометр HMC5883L
STM32FC

STM32 Flight Controller

Светодиоды-индикаторы работоспособны.

Софт полностью поддерживается софтинками MultiWiiConf и MultiWii WinGUI. Телеметрия исправно работает, настройки сохраняются и проект полностью адаптирован к EmBlocks.
Вес двух плат с МК и сенсорами всего 55г.

STM32FC

Телеметрия с работающей платы. Все сенсоры работают

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

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

Начинается самое интересное – доработка полетного контроллера для своих задач.

Em::Blocks 1.20

Вышла Em::Blocks 1.20, в которой довольно много вкусностей:

  • Semihosting as library option for EmBlocks Bare-metal ARM
  • Semihosting checkbox in debug interfaces JLink and STlink
  • Live data implemented on memory watch and debugger variable tooltip.
  • New STlinkGDB server with live data and semihosting support
  • Syntax highlight on GNU linker scripts
  • Yagarto toolchain replaced by Generic GCC (Yagarto project is cancelled)
  • C++ library linker option and C++ compiler options added
  • Make file tool entry is replaced by CPP tool entry.
  • Device list updated for JLinks
  • STmicro project wizard is changed so that the debug interfaces are preconfigured at the beginning.
  • Breakpoint on-the-fly is now working
  • Run to main() is working smoothly
  • Pre-compiled headers is supported
  • File manager plugin added to the installation package
  • EnergyMicro project wizard is using the preinstalled header files from EM instead of copying all the files with the wizard.
  • Project wizard can also use ZIP archive as template storage.
  • Bug fix STmicro project wizard
  • Bug fix EnergyMicro project wizard
  • and a lot of minor fixes.

В связи с этим я сделал новую сборку с версией 1.20
Читать далее