
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 — Задавайте вопросы, делитесь проектами и сотрудничайте с другими участниками.
Рамка
Используйте собранную CAD-модель из папки 3.Models/ в качестве образца для сборки .
Спецификация механических компонентов
| Название товара | Кол-во |
| Шестигранная гайка 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 |
Подключение 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
Скачать 3D-файл: https://makerworld.com/en/models/1695470-quadcopter-3d-printable-stm32-mcu#profileId-1797658