Проектирование квадрокоптера на базе STM32 с открытым исходным кодом.

 Проектирование квадрокоптера на базе STM32 с открытым исходным кодом. 

2026-08-27

Это квадрокоптер, созданный на основе полетного контроллера STM32F411CEU Blackpill. Полетный контроллер совместим с прошивкой INAV 6.0.

В полетном контроллере используется MPU6500 для инерциальных измерений и BMP280 для определения высоты, а также поддерживаются опциональные модули GPS и магнитометра.

Рама состоит преимущественно из двухмерных деталей, вырезанных из листов углеродного волокна. В качестве альтернативы,

Детали можно печатать на 3D-принтере из филаментов, армированных углеродным волокном (PET-CF, PAHT-CF, PA6-CF, PPS-CF), а менее важные компоненты — из ABS-пластика.

1.IM-Robotics-Lab/STM32-Quadcopter — Содержит целевые модули прошивки, CAD-модели, печатные платы/схемы.
2. Страница MakerWorld: 3D-модели каркасов для печати — Готовые к печати и резке на станках с ЧПУ детали с профилями печати.
3. Discord-сервер сообщества: Сервер IM Robotics Lab — Задавайте вопросы, делитесь проектами и сотрудничайте с другими участниками.

1. Квадрокоптер на базе STM32 — содержит целевые микропрограммы, CAD-модели, печатные платы/схемы.

Рамка

Используйте собранную CAD-модель из папки 3.Models/ в качестве образца для сборки .

Проектирование квадрокоптера на базе STM32 (4)

Компоненты CF и компоненты ABS :

Проектирование квадрокоптера на базе STM32 (5)

Спецификация механических компонентов

Название товара Кол-во
Шестигранная гайка M3 19
Болт с потайной головкой M3 x 12 мм 2
Болт с потайной головкой M3 x 20 мм 7
Болт с шестигранной головкой M3 x 20 мм 6
Болт с шестигранной головкой M3 x 30 мм 16
Болт с потайной головкой M3 x 35 мм 3
Болт с потайной головкой M3 x 40 мм 1
Нейлоновая прокладка 3-5-11.2 8
Нейлоновая прокладка 3-5-20 16
Нейлоновая прокладка 3-5-30 4
Нейлоновая прокладка 3-5-5 2

электроники :

1.Электроника/

├── Дополнительно/

│ ├── *.step

│ └── ...

├── Аппаратное резервное копирование/

│ └── ...

├── Производство/ ← Вывод Gerber для изготовления

│ ├── Аппаратное обеспечение-B_Cu.gbl

│ └── ...

├── Hardware.kicad_pcb ← Файл печатной платы KiCAD

├── Hardware.kicad_sch ← Файл схем KiCAD

├── Hardware.kicad_pro ← Проект KiCAD

├── JLCPCB.kicad_dru ← Правила производства JLCPCB

├── Production.zip ← Gerber

└── Schematics.pdf ← Schematics

Спецификация компонентов электроники

Компонент Кол-во
Бесщеточный двигатель постоянного тока RS2205 4
BLHeli_S 20A ESC 4
Пропеллер 5030R 2
STM32F411CEU6 «Черная пилюля» 1
Модуль MPU6500 / MPU9250 1
Модуль BMP280 1
Конденсатор 330 мкФ при 50 В 1
Приёмник FS-iA6B 1
Передатчик FS-iA6B 1
Аккумулятор Ovonic 1500 мАч 120C 3S 1
Разъем XT60 1

Пример схемы:

Проектирование квадрокоптера на базе STM32 (6)

Подключение GPS (UART1)
Убедитесь, что разъемы подключены правильно в соответствии с распиновкой. Обратите внимание, что RX должен быть подключен к TX: RX1 → GPS TX, TX1 → GPS RX.

Конденсатор для фильтрации скачков напряжения
Рекомендуется использовать один или несколько электролитических конденсаторов большого объема для защиты от скачков напряжения. Используйте электролитический конденсатор, например, 330 мкФ при 50 В,
и разместите его между VBAT и GND рядом с входом. Для дополнительной защиты идеально подойдет TVS-диод с ограничением напряжения на уровне ~12 В.

Сборка
прошивки .
Используется прошивка INAV версии 6.0.0 (ссылка на GitHub). В настоящее время данный проект не поддерживает INAV версии 7+ из-за проблем с USB.

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

Необходимые компоненты :

CMake ≥ 3.15,
Ninja
, gcc-arm-none-eabi toolchain.
Клонирование INAV

: git clone https://github.com/iNavFlight/inav.git
, cd inav,
git checkout 6.0.
Добавление цели:

Скопируйте всю папку 2.Firmware/GYW_BLACKPILL_F411 в локальный репозиторий INAV в каталог src/main/target/, чтобы получился следующий вид:

inav/
└── src/
└── main/
└── target/
├── GYW_BLACKPILL_F411/
└── ...
Код патча:

INAV 6.0 по умолчанию не поддерживает тактовую частоту HSE 25 МГц, поэтому, если ваша плата (например, Blackpill F411) использует частоту 25 МГц, Crystal, вам необходимо обновить настройки PLL в файле src/main/target/system_stm32f4xx.c следующим образом:

В файле system_stm32f4xx.c найдите область настроек PLL и измените ее следующим образом:

#if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F469_479xx) || defined(STM32F446xx) || defined(STM32F410xx) || defined(STM32F411xE)
+ #if HSE_VALUE == 25000000
+ #define PLL_M 25
+ #elif HSE_VALUE == 24000000
- #if HSE_VALUE == 24000000
#define PLL_M 24
#elif HSE_VALUE == 16000000
#define PLL_M 16
#elif HSE_VALUE == 8000000
#define PLL_M 8
#else
#error Invalid HSE_VALUE
#endif
#else
#error Undefined CPU
#endif
Build

Убедитесь, что вы установили все зависимости. Внутри корневого репозитория inav выполните:

mkdir -p build && cd build
cmake .. -G Ninja \
-DBOARD=GYW_BLACKPILL_F411 \
-DCMAKE_TOOLCHAIN_FILE=../tools/cmake/toolchain-arm-none-eabi.cmake
ninja
Бинарный файл прошивки должен находиться по адресу build/inav_6.0.0_GYW_BLACKPILL_F411.hex. Сначала

загрузите
INAV Configurator v6.0.0 по этой ссылке. После установки запустите INAV Configurator и подключитесь к Blackpill через USB.

Перережьте красный провод в USB-кабеле, чтобы предотвратить его питание от Blackpill. Вместо этого питайте полетный контроллер от внешнего 3S-аккумулятора.

Проблема с MPU9250.
Если вы используете модуль MPU9250, вы можете столкнуться с проблемой, когда INAV не распознает акселерометр.
Это связано с тем, что многие платы с маркировкой MPU9250 на самом деле содержат только MPU6500 (без магнитометра или с заменой его на другой).
Поскольку дроны часто используют внешний магнитометр, это обычно не критично, если ваш акселерометр и гироскоп (MPU6500) работают.

Чтобы идентифицировать ваш чип, считайте регистр WHO_AM_I (0x75) через I²C (используйте Arduino или что-то подобное для этой части). Пример кода Arduino:

#include <Wire.h>
const uint8_t MPU_ADDR = 0x68; // Адрес I²C
const uint8_t WHO_AM_I_REG = 0x75;
void setup() {
Serial.begin(115200);
Wire.begin();
delay(100);
Wire.beginTransmission(MPU_ADDR);
Wire.write(WHO_AM_I_REG);
if (Wire.endTransmission(false) != 0) {
Serial.println(F("устройство не найдено")); while (1);
}
Wire.requestFrom(MPU_ADDR, (uint8_t)1);
if (Wire.available()) {
uint8_t id = Wire.read();
Serial.print(F("WHO_AM_I = 0x"));
Serial.println(id, HEX);
} else {
Serial.println(F("данные не возвращены"));
}
}
Если выводится 0x71, это MPU6500; 0x73 указывает на MPU9250.

Текущий двоичный файл и целевое устройство настроены для MPU6500. Для использования MPU9250 закомментируйте блок для MPU6500 и раскомментируйте блок MPU9250 в целевом файле. Пересоберите бинарный файл и прошейте его. Это будет выглядеть так:

#define USE_IMU_MPU9250
#define IMU_MPU9250_ALIGN CW0_DEG
#define MPU9250_CS_PIN PB12
#define MPU9250_SPI_BUS BUS_SPI2

2. 3D-модели каркасов для печати — готовые к печати и резке на станках с ЧПУ детали с профилями печати.

Скачать 3D-файл: https://makerworld.com/en/models/1695470-quadcopter-3d-printable-stm32-mcu#profileId-1797658

Главная
Продукция
О Нас
Контакты

Пожалуйста, оставьте нам сообщение

Политика конфиденциальности

Спасибо за использование этого сайта (далее — «мы», «нас» или «наш»). Мы уважаем ваши права и интересы на личную информацию, соблюдаем принципы законности, легитимности, необходимости и целостности, а также защищаем вашу информационную безопасность. Эта политика описывает, как мы обрабатываем вашу личную информацию.

1. Сбор информации
Информация, которую вы предоставляете добровольно: например, имя, номер мобильного телефона, адрес электронной почты и т.д., заполнена при регистрации. Автоматически собирается информация, такая как модель устройства, тип браузера, журналы доступа, IP-адрес и т.д., для оптимизации сервиса и безопасности.

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

3. Защита и обмен информацией
Мы используем меры безопасности, такие как шифрование и контроль доступа, чтобы защитить вашу информацию и храним её только на минимальный срок, необходимый для выполнения задачи.
Не продавайте и не сдавайте личную информацию третьим лицам без вашего согласия; Делитесь только если:
Получите своё явное разрешение;
третьим лицам, которым доверено предоставлять услуги (с учётом обязательств по конфиденциальности);
Отвечать на юридические запросы или защищать законные интересы.

4. Ваши права
Вы имеете право на доступ, исправление и дополнение вашей личной информации, а также можете подать заявление на аннулирование аккаунта (после отмены информация будет удалена или анонимизирована согласно правилам). Чтобы реализовать свои права, вы можете связаться с нами, используя контактные данные, указанные ниже.

5. Обновления политики
Любые изменения в этой политике будут уведомлены путем публикации на сайте. Ваше дальнейшее использование услуг означает ваше согласие с изменёнными правилами.