Версия проекта: 2.9
Дата завершения работ: октябрь 2025
Дата публикации в открытом доступе: июнь 2026
Система телеметрии и спасения для модельной ракеты на базе Arduino. Включает бортовая электронику (сбор данных, логирование, передача) и наземный приёмник.
Система состоит из трёх основных частей:
-
Бортовой компьютер (Rocket Main) — Arduino Nano
Собирает данные с датчиков, пишет на SD-карту, определяет момент раскрытия парашюта. -
Бортовой передатчик LoRa — второй Arduino Nano
Принимает данные по SoftwareSerial от главного бортового компьютера и передаёт их по LoRa на землю. -
Наземный приёмник LoRa — Arduino (Uno/Nano)
Принимает пакеты по LoRa и выводит их в Serial-порт (для компьютера/телефона с терминальной программой).
[Датчики + GPS] → Arduino Main → SD-карта ↓ (SoftwareSerial) Arduino LoRa TX → LoRa 433 МГц → LoRa RX (на земле) → Serial (ПК)
Файл: rocket_main.ino
- BMP280 — температура + высота (барометрическая)
- GPS (u-blox) — широта, долгота
- MPU6050 — акселерометр и гироскоп (в основном акселерометр по Y)
- SD-карта (SPI) — логирование всех данных
- Пьезо (пин 9) — звуковая сигнализация
- Мортира 1 (пин 10) — основной сигнал на раскрытие парашюта
- Мортира 2 (пин 3) — дублирующий сигнал (с задержкой 1.5 секунды)
-
Определение апогея и спуска:
- Отслеживается максимальная высота (
max_alt). - Если высота упала более чем на 25 метров от максимума и максимум был ≥ 700 м — срабатывает
descent().
- Отслеживается максимальная высота (
-
Логирование:
- Каждую итерацию
loop()записывается строка на SD-карту в формате:millis();temp;lat;lon;alt;accelY;gyroX;gyroY;gyroZ
- Каждую итерацию
-
Передача телеметрии:
- Каждые 500 мс отправляется по SoftwareSerial строка:
lat;lon;alt
- Каждые 500 мс отправляется по SoftwareSerial строка:
-
Система спасения:
- При обнаружении спуска подаётся сигнал
HIGHна пин 10. - Через 1.5 секунды дополнительно активируется пин 3.
- Включается звуковая сирена.
- При обнаружении спуска подаётся сигнал
Файл: rocket_sender.ino
- Принимает данные по
SoftwareSerial(пин 5) от главного Arduino. - При получении полной строки (до
\n) отправляет её одним пакетом LoRa (433 МГц). - Использует библиотеку
LoRa.
Файл: receiver.ino
- Принимает пакеты LoRa.
- Приводит строку к фиксированной длине 60 байт (дополняет
;при необходимости). - Выводит данные в Serial (115200).
- Включает пищалку на пине 8 при приёме пакета.
- Поддерживает мониторинг уровня сигнала (RSSI можно добавить).
- Ракета стартует.
- Главный Arduino постоянно читает датчики, пишет логи на SD и отправляет координаты + высоту каждые 500 мс.
- Второй Arduino упаковывает эти данные в LoRa-пакеты.
- На земле приёмник выводит данные в реальном времени в терминал.
- При достижении апогея и начале спуска (падение >25 м) автоматически срабатывают мортиры (электровоспламенители) для раскрытия парашюта.
Во время настоящего пуска один из микроконтроллеров Arduino Nano отказал по неизвестной причине.
Последствия:
- На землю передавались статичные (замороженные) данные.
- Система определения спуска и команда на раскрытие парашюта не сработала с бортового компьютера.
- Ракета вернулась без раскрытого парашюта (жёсткая посадка).
Выводы и рекомендации:
- Использовать более надёжное питание (отдельные стабилизаторы, конденсаторы).
- Дублировать критически важные функции (например, иметь независимый таймер/барометрический выключатель спасения).
- Улучшить механическое крепление модулей и защиту от вибраций.
- Рассмотреть переход на более мощный/надёжный микроконтроллер (ESP32 или STM32) для основной логики.
Wire.hAdafruit_BMP280TinyGPS++SoftwareSerialSPI.hSDMPU6050LoRa(by sandeep mistry)
- Установите все библиотеки через Library Manager.
- Проверьте пины в коде под свою разводку.
- Для GPS — скорость 9600 бод.
- LoRa частота —
433E6(проверьте разрешённую в вашем регионе). - Задайте свой порог срабатывания системы спасения.
Автор: Александр Генералов
Лицензия: MIT / Open Source
Удачных полётов и мягких посадок! 🚀


