Приветствую, глубокоуважаемые!
"Здесь Дьявол много нового нашел" (C) Джон Мильтон, "Потерянный рай", 1667
Мы сделали гидроакустический конструктор: теперь при помощи Arduino можно управлять передачей, детектировать прием, измерять время распространения сигнала в воде, макетировать свои навигационные системы и системы связи и даже делать антенные решетки.
Зачем? Ну, если вы решили заняться астрономией или, скажем, биологией, или резьбой по дереву - у вас есть широкий выбор в инструментах, оборудовании, школах и даже направлениях. Но что делать, если вы решили посвятить себя передачи данных и навигации под водой? Как бы странно это не звучало. Вот для этого редкого случая мы и старались. Ну и, вдруг в школах, инженерных кружках или даже в университетах этому найдется применение - будем только рады.
0. Для кого и зачем эта коробка с кубиками?
В первую очередь ACubes задумывался для применения в сфере образования и подготовки инженерных кадров.
A³S (или ACubes, «Акустические кубики») — это конструктор, набор элементарных функциональных элементов, на основе которых можно создавать макеты практически любых типов гидроакустических навигационных систем и систем связи:
простейшие системы передачи цифровой информации — гидроакустические модемы;
системы для беспроводной передачи голоса;
фазированные антенные решётки, а на их основе — ультракороткобазисные (USBL) навигационные системы с маяками-ответчиками;
длиннобазисные, короткобазисные системы, а также системы с синтезированной измерительной базой;
системы телеуправления;
системы сетевого мониторинга.
«Кубики» берут на себя вопросы, связанные с преобразованием цифрового сигнала в гидроакустический и обратно, позволяя пользователю сосредоточиться на решении прикладных задач: разработке оригинальных навигационных алгоритмов, алгоритмов помехоустойчивого кодирования, сетевых протоколов и схем взаимодействия.
Как правило, для этих целей не требуются ни сверхминиатюрность, ни высокая мощность, ни рекордная дальность — важны простота, надёжность и доступность. Именно эти принципы мы заложили в основу при создании этой линейки устройств.
Мы сознательно не ограничиваем список самих «кубиков», поскольку он изначально задуман как пополняемый. Он будет расширяться в зависимости от сценариев применения — например, при сборке антенной решётки или приёмопередатчика для измерения наклонной дальности.
1. A3T и A3R
Это импульсный одноканальный (одночастотный) передатчик и одночастотный приёмник.
Передатчик A3T
Передатчик A³T излучает импульсы фиксированной частоты и длительности при изменении состояния на своём цифровом входе, которым управляет пользователь.
Приёмник A3R
Приёмник A³R может улавливать эти импульсы и передавать информацию пользователю, изменяя состояние своего цифрового выхода.
Особенности работы
Эти два устройства спроектированы таким образом, что могут объединяться в стек и использовать общую приёмо-передающую антенну, например, RT-1.332820-1. В такой конфигурации получается приёмо-передатчик.
Если выход приёмника подключить ко входу передатчика, получится маяк-ответчик: принятый сигнал сразу же передаётся на вход передатчика, который излучает ответный гидроакустический сигнал. Вся связка работает по принципу “эха”. Такая схема позволяет измерять, например, двойное время распространения сигнала между запрашивающим устройством и маяком-ответчиком, а следовательно, и наклонную дальность.
Возможности масштабирования
Разъёмы, смонтированные по длинным краям плат, образуют шину, позволяющую объединить один передатчик и до 12 приёмников. При этом выходы всех приёмников будут доступны на свободном разъёме.
Таким образом можно строить и изучать различные конфигурации антенных решёток. Если 12-элементной антенной решётки недостаточно, можно использовать любое количество стеков, в каждом из которых может быть до 12 модулей A³R.
Для удобного объединения до 24 приёмников существует специальная кросс-плата A³R-CB2. Естественно, можно использовать любое количество таких плат.
1.1. О гидроакустических антеннах
Для работы с модулями A³S доступны антенны двух типов:
Приёмо-передающие - совместимы как с модулями A³R, так и с A³T
Приёмные - предназначены исключительно для работы с модулями A³R
Особенности выбора антенн
При использовании устройства только в режиме приёма рекомендуется выбирать приёмные антенны, так как они:
имеют более низкую стоимость
отличаются меньшими габаритами и массой
Специализированные приёмные антенны
Антенны серии R-1.d3505-1:
разработаны специально для модулей A³R
оснащены специальными креплениями
оптимальны для построения антенных решёток при многоканальном приёме

Приёмо-передающие антенны
У нас есть несколько моделей:
Модель |
Характеристики |
---|---|
Наиболее доступное и компактное решение |
|
Свешиваемая антенна для надводного оборудования (2 пьезоэлемента) |
|
Модель с повышенной чувствительностью |
Правила эксплуатации
-
Механическая защита:
Избегайте ударных нагрузок
Не допускайте неравномерного нагружения
Антенны с крепёжным пазом должны фиксироваться только за него
Запрещается перекрывать рабочую поверхность антенны
-
Электрическая безопасность:
Перед подключением снимайте возможный заряд (закорачивайте выводы)
-
Уход и обслуживание:
Не используйте агрессивные растворители (ацетон, изопропанол)
Особенно осторожно обращайтесь с полиуретановыми покрытиями
При соблюдении этих правил антенны демонстрируют долговечность и простоту в обслуживании.
1.2. Проект 1 - Передаем и принимаем
Самый простой сценарий, в котором задействованы один приёмник и один передатчик.
1.2.1. Требуемый набор оборудования
№ |
Наименование |
Количество |
Примечание |
---|---|---|---|
1 |
Модуль A³R |
1 |
|
2 |
Модуль A³T |
1 |
|
3 |
Антенна приёмная R-1.d3505-1 |
1 |
|
4 |
Антенна приёмо-передающая RT-1.332820-1 |
1 |
|
5 |
Плата с микроконтроллером (например, Arduino Nano) |
2 |
Можно заменить кнопкой для инициации передачи |
6 |
Провода Dupont Female-Female или Male-Female, 25+ см |
4 |
|
Подключение антенн
Подключите приёмную антенну R-1.d3505-1 к модулю A³R:

Подключите приёмо-передающую антенну RT-1.332820-1 к модулю A³T:

1.2.2. Настройка передатчика
Принцип работы:
Инициация передачи осуществляется изменением логического уровня на пине 4 (разъём XS2)
Необходимо перевести пин из высокого состояния (HIGH) в низкое (LOW)
Для этого соедините пин 4 с любым нечётным пином GND на том же разъёме
Схема подключения к Arduino Nano:
Контакт на XS2 |
Контакт на Arduino Nano |
---|---|
1 (GND) |
GND |
4 (Инициация передачи) |
10 (D10) |
Скетч для передачи (1 импульс в секунду):
#define TX_PIN 4 // Пин инициации передачи
#define LED_PIN 13 // Индикаторный светодиод
void setup() {
pinMode(TX_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(TX_PIN, HIGH); // Исходное состояние
}
void loop() {
digitalWrite(TX_PIN, LOW); // Начало передачи
digitalWrite(LED_PIN, HIGH);
delay(10); // Длительность импульса 10 мс
digitalWrite(TX_PIN, HIGH); // Окончание передачи
digitalWrite(LED_PIN, LOW);
delay(990); // Общий период 1 секунда
}
Примечание: минимальный интервал между передачами - 40 мсек
1.2.3. Настройка приёмника
Принцип работы:
При обнаружении сигнала модуль переводит пин 1 (XS3) в состояние LOW на 2 мсек
Для детектирования можно использовать Arduino или осциллограф
Схема подключения к Arduino Nano:
Контакт на XS3 |
Контакт на Arduino Nano |
---|---|
2 (GND) |
GND |
1 (Строб приёма) |
2 (D2) |
Скетч для приёма:
#define RX_PIN 2 // Пин детектирования приёма
#define LED_PIN 13 // Индикаторный светодиод
void setup() {
pinMode(RX_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
attachInterrupt(digitalPinToInterrupt(RX_PIN), rxDetected, FALLING);
}
void rxDetected() {
digitalWrite(LED_PIN, HIGH);
delay(100); // Светодиод горит 100 мс при приёме
digitalWrite(LED_PIN, LOW);
}
void loop() {
// Основной цикл не требуется
}
1.2.4. Тестирование системы
-
На воздухе:
Разместите антенны на расстоянии 10-15 см друг от друга
При успешной передаче светодиоды на обеих платах Arduino будут синхронно мигать
-
В водной среде:
Обеспечьте заглубление антенн не менее 1 метра от поверхности
Избегайте пузырей воздуха возле рабочих поверхностей антенн

1.3. Кратко о многолучевости и защитных интервалах
Многолучевость и методы борьбы с ней представляют собой обширную область исследований. В данном разделе мы рассмотрим лишь основные принципы.
1.3.1. Суть явления многолучевости
Явление многолучевости можно сравнить с акустическим эхом. Звуковой сигнал от источника распространяется сферическим фронтом, при этом:
Прямой луч - кратчайший путь от источника к приёмнику
-
Отражённые лучи - сигналы, отразившиеся от:
Дна водоёма
Поверхности воды
Подводных объектов
-
Преломлённые лучи - сигналы, изменившие направление из-за:
Неоднородностей водной среды
Изменения скорости звука на разных глубинах
1.3.2. Проблемы, вызванные многолучевостью
-
Ошибки измерения:
Ложное определение наклонной дальности
-
Эффект “эхо-петли”:
В системах маяков-ответчиков возможно возникновение бесконечного цикла “запрос-ответ”
Особенно критично при использовании одной частоты для передачи и приёма
1.3.3. Методы борьбы (на примере ACubes)
Для простых сигнальных систем наиболее эффективным решением является защитный интервал:
Параметр |
Описание |
---|---|
Принцип работы |
После детектирования сигнала приёмник временно прекращает обработку входящих сигналов |
Длительность |
Определяется экспериментально для конкретных условий |
Факторы влияния |
Глубина, рельеф дна, наличие объектов, свойства водной среды |
Рекомендации по настройке:
Начинайте с интервала 50-100 мсек для небольших акваторий
Постепенно увеличивайте интервал до исчезновения ложных срабатываний
Для точных измерений может потребоваться калибровка статической ошибки
Примечание: В профессиональных системах используются более сложные методы (разнесённые частоты, кодирование сигналов, адаптивные алгоритмы), но они выходят за рамки данного руководства.
1.4. Проект 2 - Собираем приемопередатчик и измеряем наклонную дальность
В ходе данной работы мы соберем два приемопередатчика, один из которых будет выполнять функцию маяка-ответчика, а другой сможет излучать запросный сигнал, ожидать ответный и по времени распространения сигнала и скорости звука определять наклонную дальность между абонентами.
1.4.1. Требуемый набор оборудования
№ |
Наименование |
Количество |
Примечание |
---|---|---|---|
1 |
Модуль A3R |
2 |
|
2 |
Модуль A3T |
2 |
|
3 |
Антенна приемопередающая RT-1.332820-1 |
2 |
|
4 |
Любая плата с МК, например, Arduino Nano |
2 |
|
5 |
LCD-экран, например MT-204S |
1 |
Для отображения измеренного времени и дальности, но можно выводить и в COM-порт |
6 |
Провода Dupont Female-Female или Male-Female, 25+ см |
15 |
|
На самом деле данный сценарий содержит как минимум два разных подсценария:
первый подразумевает установку перемычки P0 на маяке-ответчике, таким образом, чтобы выход приемника был соединен со входом передатчика. И маяк-ответчик в этом случае будет излучать ответный сигнал с нулевой задержкой. Казалось бы, схема наиболее удобная и максимально простая, но такой подход накладывает определенные ограничения. Дело в том, что у приемных модулей есть т.н. защитный интервал, который определяет, через какое время после приема возможен следующий прием. В свою очередь это означает, что у такой системы будет некоторая минимальная дальность, расстояние меньше которой измерить не получится - в момент прихода ответного сигнала с расстояния, меньше минимального, приемник будет ожидать завершения защитного интервала и будет невосприимчив.
Во втором подсценарии мы вводим фиксированную задержку между приемом запросного сигнала и излучением ответа. Значение этой задержки известно на запрашивающем устройстве и может быть легко учтено. Такая схема хоть и сложнее, но позволяет измерять расстояния почти до нулевого. Для формирования этой задержки удобнее всего воспользоваться каким-нибудь МК, например, той же Arduino.
Итак, начнем с запрашивающего устройства. Опять же, мы подготовили два варианта разной сложности - с использованием экрана и без - с передачей необходимой информации по UART.
1.4.2. Запрашивающее устройство
Сначала соберем “бутерброд” из модулей A3R и A3T. Зададим адрес приемника на шине, установив джампер P1. Это сделано для того, чтобы все подключение к плате Arduino было на разъеме XS2. Оплетку и минус антенны спаиваем вместе. Платы приемника и передатчика соединяем перемычками из отрезков проводов через разъемы XS1.

Далее, подключаем сборку кубиков к плате Arduino. Для этого потребуется 4 провода папа-мама.

Номер/Наименование контакта на XS2 |
Номер/Наименование контакта на Arduino Nano |
---|---|
1 / GND |
GND |
2 / Строб при начале передачи |
3 / INT1 |
4 / Инициация передачи импульса |
10 |
6 / Строб приемника №1 |
2 / INT0 |
Если вы планируете использовать LCD-экран МЭЛТ МТ-20S4S или совместимый, то необходимо соединить пины следующим образом:
Номер контакта на экране |
Номер/Наименование контакта на Arduino Nano |
---|---|
1 |
GND |
2 |
5V |
4 |
8 (D8) |
5 |
9 (D9) |
10 |
4 (D4) |
11 |
5 (D5) |
12 |
6 (D6) |
13 |
7 (D7) |
Кроме того, необходимо на плате экрана соединить контакты 1-5 и 2-18, а также контакты 2-3 между собой. Сопротивление между контактами 2-3 задает контрастность экрана, и в некоторых случаях простого их замыкания может оказаться недостаточно.
1.4.2.1. Скетч - Инициирует передачу и измеряет время между запросом и ответом
Если использование экрана не планируется, необходимо закомментировать строчку #define USE_LCD
. Скорость звука задана константой 1500.0, для более точного значения предлагаем обратиться к нашему онлайн-калькулятору скорости звука в воде: Толковый калькулятор скорости звука в воде
#define USE_LCD
#ifdef USE_LCD
#include "LiquidCrystal.h"
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // RS, E, D4-D7
#define X_MAX (20) // Число символов на строчку экрана
#define MSG_LINE (3) // Номер строки для сообщения
#define W_LINE (0) // Номер стоки для отображения прогресса
#endif
// Пин-назначения
#define TX_CONTROL_PIN 10 // Пин управления передатчиком (активный HIGH)
#define TX_STROBE_PIN 3 // Пин строба передатчика (ожидаем FALLING edge)
#define RX_STROBE_PIN 2 // Пин строба приемника (ожидаем FALLING edge)
// Параметры системы
#define ANSWER_DELAY_MS 500 // Фиксированная задержка ответа маяка [мс]
#define SOS_MPS 1500 // Скорость звука в воде [м/с]
#define MAX_DISTANCE_M 500 // Максимальная измеряемая дальность [м]
#define PULSE_WIDTH_MS 10 // Длительность управляющего импульса [мс]
#define PAUSE_MS (1000) // Пауза между измерениями
#define TIMEOUT (2 * 1000000L * MAX_DISTANCE_M / SOS_MPS + ANSWER_DELAY_MS * 1000L)
#ifdef USE_LCD
#define TKS_PER_CHAR ((TIMEOUT - ANSWER_DELAY_MS * 1000L) / X_MAX)
#endif
// Глобальные переменные
volatile uint32_t tor = 0; // Время излучения сигнала
volatile uint32_t toa = 0; // Время приема ответного сигнала
volatile bool rx_strobe = false; // Флаг получения строба
// Обработчик прерывания по стробу передатчика
void txStrobeISR() {
tor = micros();
}
// Обработчик прерывания по стробу приемника
void rxStrobeISR() {
toa = micros();
rx_strobe = true;
}
void setup() {
#ifdef USE_LCD
lcd.begin(20, 4);
lcd.clear();
lcd.print(F("Starting..."));
#endif
Serial.begin(9600);
Serial.println(F("Starting..."));
// Настройка пинов
pinMode(TX_CONTROL_PIN, OUTPUT);
digitalWrite(TX_CONTROL_PIN, HIGH);
pinMode(TX_STROBE_PIN, INPUT);
pinMode(RX_STROBE_PIN, INPUT);
// Настройка прерываний
attachInterrupt(digitalPinToInterrupt(TX_STROBE_PIN), txStrobeISR, FALLING);
attachInterrupt(digitalPinToInterrupt(RX_STROBE_PIN), rxStrobeISR, FALLING);
delay(1000);
}
void loop() {
#ifdef USE_LCD
lcd.setCursor(0, W_LINE);
lcd.print(" ");
#endif
// 0. Сброс
tor = 0;
// 1. Инициируем передачу
digitalWrite(TX_CONTROL_PIN, LOW);
// 2. Ждем строб передатчика (прерывание установит tor)
while (tor == 0) {
// Ожидание...
}
// 3. Возвращаем состояние пина, управляющего передачей
digitalWrite(TX_CONTROL_PIN, HIGH);
// 4. В течение фиксированной задержки ответа не обрабатываем приемник
delay(ANSWER_DELAY_MS);
toa = 0;
rx_strobe = false;
// 5. Ждем строб приемника с таймаутом
#ifdef USE_LCD
int c_idx = 0;
uint32_t tks = micros();
#endif
while (!rx_strobe && (micros() - tor < TIMEOUT)) {
// Ожидание...
#ifdef USE_LCD
if ((micros() - tks) >= TKS_PER_CHAR) {
lcd.setCursor(c_idx, W_LINE);
lcd.print(")");
if (c_idx < X_MAX) c_idx++;
tks = micros();
}
#endif
}
// 6. Если сигнал получен - вычисляем дальность
if (rx_strobe) {
// Корректно обрабатываем переполнение micros()
uint32_t tof;
if (toa > tor) {
tof = toa - tor;
} else {
tof = (0xFFFFFFFF - tor) + toa;
}
// Вычитаем фиксированную задержку маяка и делим на 2 (туда и обратно)
tof = (tof - ANSWER_DELAY_MS * 1000L) / 2;
// Рассчитываем дальность
float srn = tof * 1e-6 * SOS_MPS;
#ifdef USE_LCD
lcd.setCursor(0, MSG_LINE);
lcd.print(" ");
lcd.setCursor(0, MSG_LINE);
lcd.print(srn, 1);
lcd.print(" m");
#endif
Serial.println(srn, 1);
} else {
#ifdef USE_LCD
lcd.setCursor(0, MSG_LINE);
lcd.print(" TIMEOUT ");
#endif
Serial.println("TIMEOUT");
}
// Пауза между измерениями
delay(1000);
}
1.4.3. Маяк-ответчик. Вариант 1 - без Arduino
Здесь нам необходимо собрать такой же “бутерброд”, как и для запрашивающего устройства, с тем лишь отличием, что мы устанавливаем джампер P0, который замыкает выход приемника и вход передатчика. Строб от приемника при получении сигнала станет стробом, инициирующим передачу. Также не забудем установить джампер для задания адреса приемника на шине - это позволит вывести его на разъем XS2.

Антенну подключаем таким же образом, как и для запрашивающего устройства: оплетка и минус спаяны, перемычками соединены разъемы XS1 приемника и передатчика. Отметим, что питание и в случае запрашивающего устройства, и в случае маяка-ответчика необходимо подавать на передающий модуль, чтобы избежать прохождения существенных токов по шине в момент излучения.
1.4.4. Маяк-ответчик. Вариант 2 - с Arduino и фиксированной задержкой
В этом случае в скетче для Arduino запрашивающего устройства необходимо задать какое-то ненулевое значение ANSWER_DELAY_MS
. И у платы приемника, и у платы передатчика длительность защитного интервала составляет 40 мсек. Соответственно, выбираемая длительность фиксированной задержки должна быть больше этого значения. В нашем примере мы установили значение 500 мсек, что подойдет для большинства небольших акваторий с длительным “хвостом” отражений.
Кроме изменения значения ANSWER_DELAY_MS
в скетче запрашивающего устройства не потребуется никаких изменений. А к маяку-ответчику теперь необходимо убрать джампер P0 и подключить вторую плату Arduino Nano, согласно следующей таблице:
Номер/Наименование контакта на XS2 |
Номер/Наименование контакта на Arduino Nano |
---|---|
1 / GND |
GND |
4 / Инициация передачи импульса |
10 |
6 / Строб приемника №1 |
2 / INT0 |
Вот так может выглядеть незамысловатый скетч, который ожидает приема сигнала, выдерживает паузу и излучает ответный сигнал:
1.4.4.1. Скетч - Фиксированная задержка ответа
#define A3R_STATE_PIN (2)
#define A3T_TX_ENGAGE_PIN (10)
#define LED_PIN (13)
#define ANSWER_DELAY_MS (500L) // Фиксированная задержка ответа на ответчике, [мс]
#define DEAD_TIME_MS (500L) // Защитный интервал после излучения
#define TX_STROBE_DURATION_MS (10L)
void setup() {
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
pinMode(A3T_TX_ENGAGE_PIN, OUTPUT);
digitalWrite(A3T_TX_ENGAGE_PIN, HIGH);
pinMode(A3R_STATE_PIN, INPUT_PULLUP);
}
void loop() {
if (digitalRead(A3R_STATE_PIN) == LOW) {
delay(ANSWER_DELAY_MS);
digitalWrite(A3T_TX_ENGAGE_PIN, LOW);
digitalWrite(LED_PIN, HIGH);
delay(TX_STROBE_DURATION_MS);
digitalWrite(A3T_TX_ENGAGE_PIN, HIGH);
delay(DEAD_TIME_MS);
digitalWrite(LED_PIN, LOW);
}
}
1.4.5. Эксперименты
1.4.5.1. На столе
При работе с пьезокерамическими антеннами всегда нужно иметь в виду, что питаются они напряжением, как правило от десятков до сотен вольт. Частоты при этом обычно килогерцы и десятки килогерц. Такое сочетание может привести к тому, что на столе или даже более общо - на воздухе, гидроакустические системы могут вполне работать не акустически, а электромагнитно. В реальности же при проверках на воздухе мы имеем дело с обоими эффектами - как с акустическим, так и с электромагнитным.
Итак, для чего вообще в этом случаем может потребоваться проверка на столе, или на “столе”, или даже “на столе”? Помимо того, что мы можем убедится в правильности всех соединений и в том, что в целом макет рабочий, имеет смысл определить величину статической ошибки и ее статистические параметры. Причины ее возникновения могут быть разными - и неточность хода часов, и аппаратные ограничения, ограничения, связанные с типом сигнала и методами его обработки, ну и возможно что-то где-то мы могли забыть, оценить неверно и т.д. и т.п.
К примеру, в наш тестовый макет, когда антенны лежат на воздухе и соприкасаются друг с другом, т.е. когда фактическое расстояние равно нулю, выдает такие времена распространения:
№ |
TOF, c |
---|---|
1 |
0.001054 |
2 |
0.001182 |
3 |
0.001024 |
4 |
0.001052 |
5 |
0.001148 |
6 |
0.001174 |
7 |
0.000966 |
8 |
0.001154 |
9 |
0.001004 |
10 |
0.001044 |
11 |
0.001282 |
12 |
0.001170 |
Среднее значение времени распространения по 150 измерениям равно 0.001096 с, что эквивалентно расстоянию 1.64 м при скорости звука 1500 м/с. Диапазон изменения величины TOF составляет от 0.000886 до 0.001308 с, или от 1.33 до 1.96 м соответственно.
Интересно выглядит распределение величины статической ошибки - это очень похоже на т.н. Гауссову смесь (Gaussian Mixture), т.е. смесь нормальных (Гауссовых) распределений. Мультимодальность может говорить о наличии нескольких сценариев, по которым происходит процесс.

Определить и устранить причины этой статической ошибки - интересная и увлекательная задача, и мы не можем лишить читателя удовольствия сделать это самостоятельно.
Мы же, для упрощения учтем измеренную статическую ошибку, путем вычитания ее среднего значения: введем #define MAGIC_STATIC_S (0.001096253)
, и будем вычитать это значение при расчете наклонной дальности:
float srn = ((tof * 1e-6) - MAGIC_STATIC_S) * SOS_MPS;
Подытожим:
в результате экспериментов “на столе” мы:
удостоверились в работоспособности системы;
выявили наличие статической ошибки и даже немного проанализировали распределение ее величины;
скомпенсировали статическую ошибку самым простым способом - вычитанием.
Теперь можно переходить к водным экспериментам.
1.4.5.2. В тазу
После отладки макета на столе, можно попробовать любую емкость с водой или водоем - начать можно хоть с пластикового ведра - главное, чтобы туда можно было налить воды и разместить две антенны.
Вот, к примеру, вариант “лабораторной установки”. Антенны в нем расположены на расстоянии 40 см друг от друга.

Распределение измеренного времени распространения имеет уже несколько иной вид:

Размер выборки не позволяет сделать однозначные выводы, но здесь есть намек на нормальное распределение. Данную гипотезу, увеличив размер выборки, мы предлагаем проверить пользователям самостоятельно. И если эта гипотеза подтвердится, в несколько ином свете выгладит мультимодальность в распределении, полученном по измерениям на воздухе.
Если перейти от времени к дальности, то для данного эксперимента получается диапазон от, фактически, нуля: -0.08 м до 2.07 м. Среднее значение и мода 0.58 м и 0.52 м соответственно. Это некоторым образом отличается от фактического расстояния в 0.4 м между антеннами, но в таких условиях малого объема не стоит ожидать высокой точности и повторяемости результата.
Подытожим:
эксперимент в малом объеме имеет право на существование и даже позволяет сделать грубые количественные оценки.
1.4.5.3. Плавательный бассейн
Даже в небольшом плавательном бассейне объемом ~100 м3 уже появляется возможность провести количественные оценки макета оборудования более тщательно.


Антенны можно разместить вдоль одной и той же стенки. Очевидно, более крупные бассейны с мягким полимерным покрытием являются более благоприятными для акустических экспериментов. В ходе экспериментов были выполнены измерения в диапазоне от 0.8 до 8 метров через фиксированные интервалы 0.8 м - соответствующие ширине бордюрной плитки, покрывающей борт бассейна.

Распределение измеренного времени распространения, выполненное по 150 измерениям имеет такой вид:

Снова распределение имеет мультимодальный, или даже бимодальный вид. При этом, все измерения располагаются в диапазоне от 7.8 до 8.9 м, а среднее значение 8.2 хорошо согласуется с фактическим расстоянием 8 м.
Стоит отметить, что в случае мультимодального распределения не вполне корректно говорить о среднем значении всей выборки. Разобраться в этом вопросе мы также предлагаем пользователю самостоятельно.
Подытожим:
макет хорошо себя показал даже в небольшом (~100 м3) бассейне - измерения соответствуют фактическим расстояниям, разброс по выборке составляет порядка 1 м.
1.4.5.4. Водоем
Напомним, что максимальная практическая дальность кубиков A³R и A³T согласно спецификациям составляет 300 м. Естественно это не значит что в любых, даже самых неблагоприятных условиях оборудование позволит достичь заявленных показателей, ровно не значит это и того, что на удалении 301 м, устойчиво работающая до этого связь мгновенно прекратится.
Например, при проверке на максимальную дальность, передатчик, излучающий сигнал 1 раз в секунду располагался на заякоренном плоту, а приемник постепенно удалялся от него на весельной лодке, заметные перебои в приеме начинали происходит при достижении расстояния 350-370 метров. Условия эксперимента нельзя назвать ни идеальными ни очень сложными. Водоем представляет собой затон р. Волга, длиной порядка 3 км и шириной от 400 до 200 метров в разных местах. Песчаное дно, судоходство средней интенсивности, существенное количество металлических конструкций на дне.
На этом же водоеме проводились эксперименты с обсуждаемым макетом оборудования. Маяк-ответчик располагался на заякоренном плоту из плотного вспененного материала сначала на удалении порядка 80 метров от лодочной пристани, а потом был перемещен на расстояние 156 метров. В обоих случаях расстояние фиксировалось при помощи лазерного дальномера.


При проведении экспериментов на водоемах, полезно вести запись сигналов. Например, в обсуждаемых испытаниях гидрофон, на который велась запись, располагался в непосредственной близости от антенны запрашивающего устройства и ниже представлены снимки экрана (аудиоредактор Oceanaudio), на которых представлены случайные фрагменты с одним циклом “запрос-ответ” - для дальностей 80 и 156.


Во-первых, из записи можно составить представление об акватории: наличие шумов и их распределение по частотам, длительность послезвучания и т.п., а во-вторых, проконтролировать полученные результаты. Согласно этим двум фрагментам, расстояния между фронтами запросного и ответного сигналов составили 610 и 711 мсек соответственно.
Если учесть фиксированную задержку ответа в 500 мсек, а остаток поделить на два - путь “туда-обратно”, а еще учесть определенную в п. 1.4.5.1. статическую ошибку в 1.096 мсек и скорость звука 1500 м/с, то значение наклонной дальности будут:
((0.610-0.500) / 2 - 0.001096) 1500 = 80.86 м
, и((0.711-0.500) / 2 - 0.001096) 1500 = 156.6 м
что отлично согласуется и с измерением при помощи лазерного дальномера, и с тем, что отображается на экране макета.
Также примечательна длительность послезвучания, составляющая около четверти секунды:

Если бы фиксированная задержка была меньше этой величины, то запрашивающее устройство вполне могло бы принять свой собственный сигнал за сигнал маяка-ответчика.
Что же до статистического анализа измерений наклонной дальности, то мы предлагаем пользователю провести его самому. Будет интересно сравнить результаты экспериментов, проведенных в разных водоемах и разных условиях - погрешность, процент успешных измерений, оценить влияние скорости звука и т.п.
Например, в ледовых условиях гораздо проще обеспечить статичное положение запрашивающего устройства и маяка-ответчика, а также более точно измерить фактическое расстояние между ними.
Подытожим:
устройства показали работоспособность в условиях реального водоема
проверка тремя независимыми способами: лазерным дальномером, по записи и по проверяемому макету оборудования хорошо согласуются между собой
2. Планы
В этом лонгриде я попытался описать и даже еще не полностью просто нет мочи терпеть первые два кубика - импульсные приемник и передатчик. А их еще планируется как минимум пять - это просто одночастотные приемник и передатчик, на которых можно будет сделать модем на основе OOK-модуляции или морзянку. Двухчастотные импульсные приемник и передатчик - на них можно будет сделать FSK-модем. Еще планируется приемопередатчик для голоса и для всего этого много много разных проектов.
Собственно, вот так выглядит дальнейший план (продолжая нумерацию пунктов этой статьи)
Дальнейший план
1.5. Проект 3 - Гидроакустический модем с временным кодированием
1.6. Проект 4 - Определение положения ответчика методом виртуальной длинной базы
1.7. Проект 5 - Длиннобазисная навигационная система
1.8. Проект 6 - Фазированная антенная решетка
2. Кубики A3TC и A3RC - приемник и передатчик
3. Кубики A3T2 и A3R2 - двухчастотные импульсные приемник и передатчик
4. Кубик A3AM - амплитудный модулятор/демодулятор голоса
3. Outro
Надеемся, вам было интересно, почти не надеемся, что вот конкретно вам, да именно вам было полезно, потому что скажем без тени ложного сомнения тема очень узкая. Всем коллективом благодарим вас за внимание и интерес к ней. Мы совершенно искренне рады, если это будет кому-то полезно. Нам очень важна обратная связь - конструктивная критика, вопросы, пожелания - не стесняйтесь высказываться. У нас полно идей для подобных материалов, и если они востребованы, то по мере возникновения свободного времени мы будем их публиковать.
Ваши, до глубины души
@AlekDikarev
@StDmitriev
@Creathor
Комментарии (4)
nv13
15.07.2025 11:53А за счёт чего такая полоса у антенны 10-40 кГц?
Актуальным направлением также может быть измерение уровней жидкостей, там правда частоты другие используют и пролезть в нефтехим надо как то суметь) Удачи!
AlekDikarev Автор
15.07.2025 11:53Спасибо! Собственно это просто полоса, в которой измерена ее характеристика, она там не везде 3 дБ. Если прям отвечать на вопрос "в лоб", то за счет размеров и материала.
Yukr
за такое техническое рукоделие - сразу плюс. в далеком детстве, 6 классником, я начал с конструктора элетроники. Удачи Вам!
AlekDikarev Автор
Спасибо за добрые слова!