Lab042: adapt spec to the actual hardware and environment
Hardware confirmed from a photo of the bench: the device is a Pluto+ (2RX/2TX, Gigabit Ethernet), not the stock ADALM-PLUTO, plus an RTL-SDR dongle and several antennas. No attenuator on hand. - record the actual inventory and the Pluto+ differences that matter: Ethernet transport, two channels, adi.Pluto first with adi.ad9361 as the only permitted fallback - replace "use an attenuator" with numbers: TX puts out about +7 dBm at 0 dB, the RX damage threshold is about +2.5 dBm, so give a staged gain procedure starting at -60 dB and capped at -30 dB until an attenuator arrives - require the antennas to be physically removed from the bench rather than merely left unplugged - add the environment blocker found on inspection: the interpreter on PATH is a standalone Python 3.13.1 without pyadi-iio, libiio or scipy, while Lab024a clearly ran somewhere else; identifying and recording that environment is now the first task - renumber sections and align the TX gain figure with the safety section Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -47,20 +47,73 @@
|
||||
|
||||
---
|
||||
|
||||
## 4. Требования безопасности
|
||||
## 4. Наличное оборудование
|
||||
|
||||
Подтверждено по состоянию на 10 августа 2026 года.
|
||||
|
||||
| Позиция | Состояние |
|
||||
|---|---|
|
||||
| **Pluto+** — SDR, 2 приёмника и 2 передатчика, гигабитный Ethernet | есть |
|
||||
| RTL-SDR — приёмный донгл | есть, понадобится в Lab043 |
|
||||
| Кабели SMA | будут найдены |
|
||||
| Антенны: штыревые на магнитном основании, короткая штыревая | есть, **в Lab042 не используются** |
|
||||
| Рамочная антенна Donut AM (0,5–2 МГц) | к проекту отношения не имеет |
|
||||
| **Аттенюатор SMA 30 дБ** | **отсутствует** |
|
||||
|
||||
Важно: устройство — **Pluto+**, а не оригинальный ADALM-PLUTO. Отличия, которые имеют значение:
|
||||
|
||||
- связь по Ethernet, а не по USB; адрес `ip:192.168.2.1` уже подтверждён работой Lab024a;
|
||||
- два приёмных и два передающих канала; в Lab042 используется только первый канал каждого;
|
||||
- класс `adi.Pluto` в Lab024a отработал на приёме. Начинать с него. Если передача на этом классе не пойдёт из-за двухканальности, перейти на `adi.ad9361` с тем же адресом. Это единственное разрешённое отступление от задания, и о нём нужно сообщить.
|
||||
|
||||
## 5. Требования безопасности
|
||||
|
||||
Обязательны к исполнению. Это правило 8 проекта, оно не формальное.
|
||||
|
||||
1. Выход передатчика соединяется с входом приёмника **только кабелем через аттенюатор**. Рекомендуемое ослабление 30 дБ.
|
||||
2. **Антенну на передатчик не подключать.** Выход в эфир в этой лабораторной не выполняется ни при каких условиях.
|
||||
3. Передатчик не включать при отключённом кабеле: выход без нагрузки вреден для оконечного каскада.
|
||||
4. Усиление передатчика начинать с минимального и поднимать только при необходимости.
|
||||
1. **Антенны убрать со стола до начала работы.** Не «не подключать», а физически убрать. Случайно вкрученная в передатчик антенна превращает лабораторную в незаконный выход в эфир.
|
||||
2. Передатчик не включать при отключённом кабеле: выход без нагрузки вреден для оконечного каскада.
|
||||
3. Соединять выход передатчика со входом приёмника **только через аттенюатор**. Аттенюатора сейчас нет, поэтому действует временный порядок ниже.
|
||||
|
||||
### Про аттенюатор: почему он нужен и как начать без него
|
||||
|
||||
Выход передатчика Pluto+ при нулевом ослаблении даёт примерно **+7 дБм**. Предельно допустимый уровень на входе приёмника — около **+2,5 дБм**. То есть прямой кабель при максимальном усилении передатчика выводит приёмник за предел и может его повредить.
|
||||
|
||||
Регулировка `tx_hardwaregain_chan0` работает в диапазоне от −89 до 0 дБ. При установке −30 дБ выход составит около −23 дБм — это в тридцать раз ниже опасного порога и одновременно отличный рабочий уровень для кабеля.
|
||||
|
||||
**Временный порядок до появления аттенюатора:**
|
||||
|
||||
1. Перед первым включением выставить `tx_hardwaregain_chan0 = -60`.
|
||||
2. Убедиться, что приёмник видит сигнал. При −60 дБ он будет слабым, но различимым.
|
||||
3. Поднимать усиление шагами по 10 дБ, **не превышая −30 дБ**, пока созвездие не станет чистым.
|
||||
4. Значение выше −20 дБ без аттенюатора не выставлять ни при каких обстоятельствах.
|
||||
|
||||
Аттенюатор на 30 дБ стоит недорого и защищает не от расчётного уровня, а от ошибки оператора: одна опечатка в настройке усиления — и приёмник выходит из строя. **Заказать стоит, начинать работу можно не дожидаясь.**
|
||||
|
||||
---
|
||||
|
||||
## 5. Параметры тракта
|
||||
## 6. Программное окружение: препятствие, которое надо снять первым
|
||||
|
||||
Все значения взяты из Lab018 и менять их в этой лабораторной **запрещено**. Причина: переход на железо сам по себе вносит достаточно неизвестных. Менять одновременно и параметры сигнала — значит потерять возможность понять причину отказа.
|
||||
Проверка окружения 10 августа 2026 года показала следующее.
|
||||
|
||||
Интерпретатор, доступный в командной строке — `C:\Users\user\AppData\Local\Programs\Python\Python313\python.exe`, версия 3.13.1. В нём **отсутствуют `pyadi-iio` и `libiio`**, то есть работать с Pluto+ из него невозможно. Также отсутствует `scipy`, который нужен лабораторным Lab020–Lab022, Lab024b и Lab025.
|
||||
|
||||
При этом Lab024a когда-то отработала с настоящим устройством. Значит, существует второе окружение — по всей видимости, среда Anaconda, — где всё установлено, и запуск шёл оттуда.
|
||||
|
||||
**Первое действие исполнителя: определить, в каком окружении запускаются лабораторные, и зафиксировать это.** Пока это не сделано, невозможно ни повторить Lab024a, ни начать Lab042.
|
||||
|
||||
Требуется:
|
||||
|
||||
1. Найти окружение, где установлены `pyadi-iio` и `libiio`, и проверить связь с устройством.
|
||||
2. Записать в отчёт: путь к интерпретатору, версию Python, версии `pyadi-iio` и `libiio`.
|
||||
3. Если такого окружения нет — установить `pyadi-iio` и `libiio`, зафиксировав версии.
|
||||
|
||||
Расчётные лабораторные, включая Lab041, в окружении без `pyadi-iio` запускаются нормально — им нужны только `numpy`, `matplotlib` и `opencv`. Разделение аппаратных и расчётных зависимостей относится к этапу стабилизации и в Lab042 не решается, но результат проверки надо записать: он понадобится при составлении описания окружения.
|
||||
|
||||
---
|
||||
|
||||
## 7. Параметры тракта
|
||||
|
||||
Значения тракта взяты из Lab018 и менять их в этой лабораторной **запрещено**. Причина: переход на железо сам по себе вносит достаточно неизвестных. Менять одновременно и параметры сигнала — значит потерять возможность понять причину отказа.
|
||||
|
||||
| Параметр | Значение | Источник |
|
||||
|---|---|---|
|
||||
@@ -84,7 +137,7 @@
|
||||
| Несущая передачи и приёма | 435 МГц | обе одинаковые |
|
||||
| Частота дискретизации | 640 000 | совпадает с трактом |
|
||||
| Полоса радиочастотного тракта | 200 000 Гц | минимум Pluto, сигнал занимает около 27 кГц |
|
||||
| Усиление передатчика | начать с −40 дБ | допустимый диапазон от −89 до 0 |
|
||||
| Усиление передатчика | начать с −60 дБ, не выше −30 дБ без аттенюатора | см. раздел 5 |
|
||||
| Режим усиления приёмника | `manual` | автоматика мешает измерениям |
|
||||
| Усиление приёмника | начать с 20 дБ | подобрать по амплитуде |
|
||||
| Циклический буфер передачи | **выключен** | см. раздел 7 |
|
||||
@@ -93,7 +146,7 @@
|
||||
|
||||
---
|
||||
|
||||
## 6. Порядок работы
|
||||
## 8. Порядок работы
|
||||
|
||||
**Передающая сторона**
|
||||
|
||||
@@ -116,7 +169,7 @@
|
||||
|
||||
---
|
||||
|
||||
## 7. Ловушки, на которых спотыкаются в первый раз
|
||||
## 9. Ловушки, на которых спотыкаются в первый раз
|
||||
|
||||
Перечислено то, что почти наверняка будет сделано неправильно без предупреждения.
|
||||
|
||||
@@ -136,7 +189,7 @@
|
||||
|
||||
---
|
||||
|
||||
## 8. Что считается выполненной работой
|
||||
## 10. Что считается выполненной работой
|
||||
|
||||
Лабораторная принимается, если выполнено всё перечисленное.
|
||||
|
||||
@@ -178,7 +231,7 @@
|
||||
|
||||
---
|
||||
|
||||
## 9. Что в этой лабораторной делать не надо
|
||||
## 11. Что в этой лабораторной делать не надо
|
||||
|
||||
Перечислено, чтобы не расширять объём.
|
||||
|
||||
@@ -193,17 +246,17 @@
|
||||
|
||||
---
|
||||
|
||||
## 10. Порядок приёмки
|
||||
## 12. Порядок приёмки
|
||||
|
||||
1. Исполнитель выполняет работу и сообщает о готовности.
|
||||
2. Проверяется `python tools/quick_gate.py` — должен проходить.
|
||||
3. Проводится аудит: соответствие разделу 8, отсутствие вписанных результатов, происхождение каждого числа в отчёте.
|
||||
3. Проводится аудит: соответствие разделу 10, отсутствие вписанных результатов, происхождение каждого числа в отчёте.
|
||||
4. При наличии замечаний они оформляются списком с указанием файла и строки.
|
||||
5. После приёмки в `PROJECT_LOG.md` добавляется новая запись по принятому в проекте образцу.
|
||||
|
||||
---
|
||||
|
||||
## 11. Что дальше
|
||||
## 13. Что дальше
|
||||
|
||||
- **Lab043** — разведение на два устройства: передаёт PlutoSDR, принимает RTL-SDR. Появляется настоящий уход несущей частоты и расхождение часов. Здесь понадобятся Lab021–Lab023.
|
||||
- **Lab044** — выбор рабочего диапазона и первый выход в эфир на малой мощности.
|
||||
|
||||
Reference in New Issue
Block a user