diff --git a/README.md b/README.md index c27fdf2..40899f5 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,9 @@ SDR_Rover └── gnuradio/ пока пусто ``` +Лабораторные работы и расположение их кода, проверок, документов и данных: +[`docs/LABS_INDEX.md`](docs/LABS_INDEX.md). + ### `protocol` Ядро системы. Пакет с CRC32, фрагментация изображений, кадр канала, исправление стираний, приоритеты, аварийная логика, сеансы связи, примитивы BPSK-радиотракта. diff --git a/data/processed/lab044/README.md b/data/processed/lab044/README.md new file mode 100644 index 0000000..0da2cc3 --- /dev/null +++ b/data/processed/lab044/README.md @@ -0,0 +1,17 @@ +# Lab044 + +В этом каталоге отдельные обработанные данные Lab044 не сохранялись. Файл +служит только указателем и не содержит копий аппаратных данных. + +- Основной код: + [`experiments/lab044_hackrf_bpsk_packet.py`](../../../experiments/lab044_hackrf_bpsk_packet.py). +- Проверки: + [`tests/test_lab044_hackrf_bpsk_packet.py`](../../../tests/test_lab044_hackrf_bpsk_packet.py). +- Текущее состояние и аппаратный отчёт: + [`docs/lab044_current_state.md`](../../../docs/lab044_current_state.md). +- Внешние аппаратные данные: + `C:\Users\user\Documents\SDR_Rover_Lab044_raw\20260831_140142_bpsk_packet\`. +- Общий указатель: + [`docs/LABS_INDEX.md`](../../../docs/LABS_INDEX.md). + +Большие IQ-записи и бинарные файлы сюда не копировать. diff --git a/data/processed/lab045/README.md b/data/processed/lab045/README.md new file mode 100644 index 0000000..7091b87 --- /dev/null +++ b/data/processed/lab045/README.md @@ -0,0 +1,18 @@ +# Lab045 + +В этом каталоге отдельные обработанные данные Lab045 не сохранялись. Файл +служит только указателем и не содержит копий аппаратных данных. + +- Основной код: + [`experiments/lab045_hackrf_bpsk_fec.py`](../../../experiments/lab045_hackrf_bpsk_fec.py). +- Проверки: + [`tests/test_lab045_hackrf_bpsk_fec.py`](../../../tests/test_lab045_hackrf_bpsk_fec.py). +- Текущее состояние и аппаратный отчёт: + [`docs/lab045_current_state.md`](../../../docs/lab045_current_state.md). +- Внешние аппаратные данные: + `C:\Users\user\Documents\SDR_Rover_Lab045_raw\20260901_103434_bpsk_fec\`. +- Общий указатель: + [`docs/LABS_INDEX.md`](../../../docs/LABS_INDEX.md). + +Большие аппаратные артефакты специально не хранятся в Git. IQ-записи и +бинарные файлы сюда не копировать. diff --git a/docs/LABS_INDEX.md b/docs/LABS_INDEX.md new file mode 100644 index 0000000..c5ec126 --- /dev/null +++ b/docs/LABS_INDEX.md @@ -0,0 +1,156 @@ +# Указатель лабораторных работ + +Этот файл показывает, где находятся код, проверки, документы и данные +лабораторных работ. Он не заменяет отчёты и не дублирует большие IQ-записи. +Пути к внешним аппаратным данным приведены только там, где они уже зафиксированы +в документации проекта и существуют на текущем компьютере. + +## Lab043 + +- **Цель:** воспроизводимый BPSK-канал HackRF -> HackRF с общей опорой, + независимой кадровой синхронизацией и измерением параметров радиотракта. +- **Статус:** рабочая точка BPSK и общий опорный генератор подтверждены; + дополнительные аппаратные ветви использовались для диагностики усиления, + непрерывности и асимметрии сигнала. +- **Основной эксперимент:** + [`experiments/lab043_hackrf_bpsk.py`](../experiments/lab043_hackrf_bpsk.py). +- **Основные проверки:** + [`tests/test_lab043_hackrf_bpsk.py`](../tests/test_lab043_hackrf_bpsk.py). + Дополнительные проверки находятся в файлах `tests/test_lab043_*.py`. +- **Документ состояния:** + [`docs/lab043_current_state.md`](lab043_current_state.md). +- **Обработанные данные:** каталоги + [`data/processed/lab043_diagnostics`](../data/processed/lab043_diagnostics), + [`lab043_hackrf_compare`](../data/processed/lab043_hackrf_compare), + [`lab043_hackrf_continuity`](../data/processed/lab043_hackrf_continuity), + [`lab043_hackrf_counter`](../data/processed/lab043_hackrf_counter) и + [`lab043_hackrf_gain_ladder`](../data/processed/lab043_hackrf_gain_ladder). +- **Внешние аппаратные данные:** + `C:\Users\user\Documents\SDR_Rover_Lab043_raw\`. +- **Журнал:** отдельной записи с темой Lab043 нет. Переход к Lab043 указан в + записи 020, а подтверждённая рабочая точка Lab043 используется и упоминается + в записях 021-024 + ([`PROJECT_LOG.md`](../PROJECT_LOG.md)). + +## Lab044 + +- **Цель:** передача произвольного протокольного пакета через реальный + BPSK-канал HackRF с независимым решением CRC. +- **Статус:** один аппаратный запуск, `RESULT C`; преамбула и PHY sync + восстановлены, пакет не дошёл до проверки CRC. +- **Основной эксперимент:** + [`experiments/lab044_hackrf_bpsk_packet.py`](../experiments/lab044_hackrf_bpsk_packet.py). +- **Основные проверки:** + [`tests/test_lab044_hackrf_bpsk_packet.py`](../tests/test_lab044_hackrf_bpsk_packet.py). +- **Документ состояния:** + [`docs/lab044_current_state.md`](lab044_current_state.md). +- **Обработанные данные:** отдельные результаты не сохранялись; каталог + [`data/processed/lab044`](../data/processed/lab044) содержит только + навигационный README. +- **Внешние аппаратные данные:** + `C:\Users\user\Documents\SDR_Rover_Lab044_raw\20260831_140142_bpsk_packet\`. +- **Журнал:** подготовка в записи 021, аппаратный результат в записи 022 + ([`PROJECT_LOG.md`](../PROJECT_LOG.md)). + +## Lab045 + +- **Цель:** защищённый BPSK-кадр со свёрточным FEC R=1/2, K=7, перемежением, + мягким декодером Витерби, защищённым PHY-заголовком и CRC. +- **Статус:** аппаратный `RESULT A`; исправление реальных ошибок FEC доказано, + CRC пройден, полезная нагрузка восстановлена без ошибок. +- **Основной эксперимент:** + [`experiments/lab045_hackrf_bpsk_fec.py`](../experiments/lab045_hackrf_bpsk_fec.py). +- **Основные проверки:** + [`tests/test_lab045_hackrf_bpsk_fec.py`](../tests/test_lab045_hackrf_bpsk_fec.py). +- **Документ состояния:** + [`docs/lab045_current_state.md`](lab045_current_state.md). +- **Обработанные данные:** отдельные результаты не сохранялись; каталог + [`data/processed/lab045`](../data/processed/lab045) содержит только + навигационный README. +- **Внешние аппаратные данные:** + `C:\Users\user\Documents\SDR_Rover_Lab045_raw\20260901_103434_bpsk_fec\`. +- **Журнал:** программная подготовка в записи 023, аппаратный результат в + записи 024 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)). + +## Lab046 + +- **Цель:** фрагментация произвольного бинарного объекта, передача его + несколькими независимо защищёнными кадрами Lab045 и аварийно-безопасная + сборка объекта. +- **Статус:** программная проверка завершена успешно; RF не запускался. +- **Основной эксперимент:** + [`experiments/lab046_bpsk_object_transport.py`](../experiments/lab046_bpsk_object_transport.py). +- **Основные проверки:** + [`tests/test_lab046_bpsk_object_transport.py`](../tests/test_lab046_bpsk_object_transport.py). +- **Документ состояния:** + [`docs/lab046_current_state.md`](lab046_current_state.md). +- **Обработанные данные:** отдельного каталога в `data/processed` нет. +- **Внешние аппаратные данные:** отсутствуют, поскольку этап программный. +- **Журнал:** запись 025 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)). + +## Lab046A + +- **Цель:** независимый поиск и приём нескольких кадров объекта в одном + непрерывном нормированном потоке мягких BPSK-значений. +- **Статус:** программная проверка завершена успешно; работа с IQ и + аппаратная проверка на этом этапе не выполнялись. +- **Основной эксперимент:** отдельного `lab046a_*.py` нет; реализация находится + в [`experiments/lab046_bpsk_object_transport.py`](../experiments/lab046_bpsk_object_transport.py). +- **Основные проверки:** отдельного `test_lab046a_*.py` нет; сценарии находятся + в [`tests/test_lab046_bpsk_object_transport.py`](../tests/test_lab046_bpsk_object_transport.py). +- **Документ состояния:** + [`docs/lab046_current_state.md`](lab046_current_state.md). +- **Обработанные данные:** отдельного каталога в `data/processed` нет. +- **Внешние аппаратные данные:** отсутствуют, поскольку этап программный. +- **Журнал:** запись 026 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)). + +## Lab046B + +- **Цель:** поиск и приём нескольких полных кадров Lab045 в одном непрерывном + сыром IQ-потоке без использования границ кадров передатчика. +- **Статус:** программная проверка завершена успешно; RF не запускался. +- **Основной эксперимент:** + [`experiments/lab046b_continuous_iq.py`](../experiments/lab046b_continuous_iq.py). +- **Основные проверки:** + [`tests/test_lab046b_continuous_iq.py`](../tests/test_lab046b_continuous_iq.py). +- **Документ состояния:** + [`docs/lab046_current_state.md`](lab046_current_state.md). +- **Обработанные данные:** отдельного каталога в `data/processed` нет. +- **Внешние аппаратные данные:** отсутствуют, поскольку этап программный. +- **Журнал:** запись 027 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)). + +## Lab046C + +- **Цель:** непрерывная аппаратная передача объекта 16 КиБ последовательностью + защищённых BPSK-кадров и независимое восстановление объекта из IQ-записи. +- **Статус:** полный аппаратный результат на 1400 МГц равен `RESULT A`: + принято 68/68 кадров, объект восстановлен без ошибок. Первый полный опыт на + 1080 МГц сохраняется отдельно как исторический `RESULT C`. +- **Основной аппаратный эксперимент:** + [`experiments/lab046c_hackrf_bpsk_object.py`](../experiments/lab046c_hackrf_bpsk_object.py). +- **Автономная обработка сохранённых записей:** + [`experiments/lab046c_offline_recovery.py`](../experiments/lab046c_offline_recovery.py). +- **Основные проверки:** + [`tests/test_lab046c_hackrf_bpsk_object.py`](../tests/test_lab046c_hackrf_bpsk_object.py) + и + [`tests/test_lab046c_offline_recovery.py`](../tests/test_lab046c_offline_recovery.py). +- **Документы состояния:** + [`docs/lab046_current_state.md`](lab046_current_state.md) и отдельный отчёт + о короткой записи 1400 МГц + [`docs/lab046c_1400mhz_offline_reprocessing.md`](lab046c_1400mhz_offline_reprocessing.md). +- **Обработанные данные:** локально присутствуют каталоги + `data/processed/lab046c_offline_recovery` и + `data/processed/lab046c_1400mhz_offline`; в текущем состоянии Git их файлы + не отслеживаются. +- **Внешние аппаратные данные:** + `C:\Users\user\Documents\SDR_Rover_Lab046_raw\20260901_145339_bpsk_object\`, + `C:\Users\user\Documents\SDR_Rover_RF_Check\20260901_172749_1400MHz\` и + `C:\Users\user\Documents\SDR_Rover_Lab046_raw\20260902_151819_1400MHz_full\`. +- **Журнал:** записи 028-032 ([`PROJECT_LOG.md`](../PROJECT_LOG.md)). + +## Правило хранения данных + +Большие записи IQ, потоки `cs8`, бинарные объекты и другие аппаратные исходные +данные остаются во внешних каталогах. В `data/processed` хранятся только +небольшие обработанные результаты или навигационные README. Пустые и +фиктивные файлы результатов не создаются.