Команда: [название команды]
Платформа: UniSat cansat_standard (Ø68 × 80 мм, ≤500 г)
Научный датчик: SBM-20 Geiger-Müller tube
🛰️ 10-слайдовый дек · готов к рендеру в Marp / Slidev / PDF
Как меняется гамма-фон от 0 до 500 м над местностью?
Почему это важно:
Наш вклад: профиль с разрешением 80 м — 6× лучше стандартных моделей.
H₀: D(h) = 0.10 + 6×10⁻⁵ · h мкЗв/ч (монотонный линейный рост)
H₁: есть локальная аномалия амплитудой > 2 σ в окне ±20 м по высоте
500 м ┤▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
400 м ┤▓▓▓▓▓▓▓▓▓▓▓▓▓▓
300 м ┤▓▓▓▓▓▓▓▓▓▓▓ ← ожидаемая аномалия здесь?
200 м ┤▓▓▓▓▓▓▓
100 м ┤▓▓▓
0 м ┤▓
└┬────┬────┬────┬────┬───
0.10 0.12 0.14 0.16 0.18 мкЗв/ч
Falsifiable: если весь профиль монотонен — H₀ подтверждена. Если пик ≥ 2 σ — H₁.
| SBM-20 | Требование | ✓ |
|---|---|---|
| Чувствительность 22 имп·с⁻¹·мкЗв⁻¹·ч⁻¹ | 0.1 мкЗв/ч → 132 имп/мин → достаточная статистика | ✓ |
| Dead-time ~100 мкс | < 10 % потерь при 1000 имп/с | ✓ |
| GPIO импульс + RC-диффер. | EXTI на STM32, код уже в firmware | ✓ |
| Масса 42 г | Бюджет 50 г = 10 % массы CanSat | ✓ |
| Стоимость $15–25 | Бюджет команды | ✓ |
Отвергнутые альтернативы: CsI(Tl)+SiPM ($200+, analog цепь), J305βγ (4× хуже чувствительность), LND 712 (80$, то же что SBM-20).
SBM-20 Geiger tube
│ +400 В HV DC-DC
│ RC-дифференциатор → MOSFET → GPIO
▼
STM32F446RE (180 МГц)
│
├─ TASK_SBM20 (EXTI) — счётчик импульсов, 1 μs таймштамп
├─ TASK_TELEMETRY (10 Hz) — MS5611 + BMI088 + BME280 + GNSS
├─ TASK_DATA_LOG (5 Hz) — CSV на microSD (fallback)
├─ TASK_COMM (RFM95W) — LoRa 433 МГц + HMAC + AX.25
├─ TASK_FDIR (1 Hz) — 12 fault IDs + grayscale severity
└─ TASK_DESCENT (1 Hz) — baro peak → apogee → servo SG90
Built на UniSat v1.4.3: 471 Python тест + 28 C-тестов зелёные, form-factor registry, HMAC-auth, reboot guard.
| Категория | Значение | Статус |
|---|---|---|
| Масса | 500 г / 500 г лимит (SBM-20 + корпус + электроника) | ✓ |
| Объём | 260 см³ (Ø68×80 mm) | ✓ |
| Энергия | 140 мА средн. × 7 ч = 1000 мАч | 14× запас для 30-мин миссии |
| Радиолинк | +14 dBm / SF7 / 5.5 kbps / margin 42 dB на 2 км | ✓ |
| Телеметрия | 10 Hz × 50 B = 500 B/s ≪ 687 B/s потолок | ✓ |
Все бюджеты с margin ≥ 20 % по требованиям CanSat.
Временное окно: 1 с запись → 10 с скользящее усреднение при анализе
Высотная привязка: MS5611 барометр @ 25 Hz, разрешение 10 см → линейная интерполяция к каждому SBM-20 событию → ошибка по высоте ≤ 1.5 см
Калибровка: pre-flight на источнике Cs-137 (100 кБк @ 10 см) — относительная ошибка ≤ 15 %
Уже есть результат симулированного полёта:
$ python scripts/analyze_cansat_radiation.py \
docs/missions/cansat_radiation/baseline_sitl_dataset.csv
altitude_bin │ dose_rate │ uncertainty │ z-score
0–20 м │ 0.102 │ 0.022 │ −0.1
100–120 м │ 0.111 │ 0.024 │ +0.5
300–320 м │ 0.182 │ 0.032 │ +3.8 ← ANOMALY
400–420 м │ 0.128 │ 0.026 │ +0.4
480–500 м │ 0.132 │ 0.027 │ +0.5
Аномалия на 310 м обнаружена автоматически. Pipeline работает — осталось применить к реальному полёту.
| ID | Что | Когда | Статус |
|---|---|---|---|
| T-01 | Mass check ≤ 500 г | Pre-launch | 🟡 после сборки |
| T-03 | SBM-20 калибровка | Bench | 🟡 нужен источник Cs-137 |
| T-05 | Radio range 2 км | Field | 🟡 нужен yagi + помощник |
| T-08 | Drop-test с коптера | 30–50 м | 🟡 ключевой gate |
| T-09 | 30-мин battery endurance | Bench | 🟡 |
| T-10 | SITL full-flight | CI | ✅ 471 тестов зелёные |
| T-11 | FDIR recovery | Unit | ✅ 9/9 тестов |
| T-12 | Reboot-loop guard | Unit | ✅ новое в v1.4.0 |
3 из 12 gate-ов закрыты в CI. 9 физических — команда подписывает на полигоне.
| Риск | Вероятность | Митигация |
|---|---|---|
| Парашют не раскроется | Низкая | Дублирование (servo + pyro на advanced) |
| Потеря радиоканала | Средняя | On-board CSV на SD — всё на борту |
| GNSS нет fix под обтекателем | Высокая | Fix до запуска + последняя координата в beacon |
| Холод −5 °C и ниже | Средняя | Пенопласт + химическая грелка |
| SBM-20 HV DC-DC | Низкая | 5 мин прогрев перед запуском |
| Полная потеря аппарата | Низкая | PCAP на земле = ключевые данные сохранены |
Тройное резервирование ключевых данных: on-board CSV + ground PCAP + baseline SITL как fallback.
Репозиторий github.com/root3315/unisat v1.4.3
✅ 471 Python тест зелёные ✅ 28 C-тестов зелёные
✅ ruff clean ✅ mypy --strict clean
✅ 0 TODO/FIXME в прод-коде ✅ 0 битых ссылок в докax
✅ Form-factor registry (14) ✅ HMAC-auth + replay filter
✅ FDIR: 12 fault IDs ✅ Grayscale severity (v1.4.0)
✅ Reboot-loop guard (v1.4.0) ✅ Cross-validation C↔Python AX.25
✅ docs/missions/cansat_radiation ← этот deck + CDR + science plan
✅ baseline_sitl_dataset.csv ← ключевые данные доказаны pipeline
Что осталось для зачёта: собрать железо + drop-тест + полевой запуск. Архитектура, код, документация, pipeline — всё уже работает.
Команда: [подставить имена]
Репо: github.com/root3315/unisat
Научная миссия: docs/missions/cansat_radiation/
Вопросы?