
Пролог
Чего я только ни делал со звуком. Передавал бинарные данные звуком BPSK модуляцией, измерял расстояние следя за фазой несущей. Определял частоту через преобразование Фурье, делал эхо-эффект в реальном времени на MCU. Определял объем бутылочек по их звучанию резонансом Гельмгольца. Регистрировал звук аппаратным таймером на МК. Генерировал DTMF тоны. Передавал и принимал звук по BLE-Audio 5.3, определял направление прихода звуковой волны.
Теперь вот попробую сделать локатор.
Что если из диктофона сделать акустический локатор? Давайте разбираться.
Почему я решил попробовать исследовать возможность создания сонара именно на звуке, а не на ультразвуке? Ответ прост. Для воспроизведения и записи звука существует огромное количество всяческих ASIC чипов аудиокодеков. Например NAU8814, WM8731, CS42L52, MAX9860, SGTL5000XNAA3 и др. При этом аудиокодеков на ультразвуке просто нет в продаже. Даже те мои знакомые, кто профессионально создает ультразвуковые устройства утверждают, что таких чипов просто нет. Вот и остается экспериментировать на частотах до 20kHz.
Постановка задачи
Записать *.wav файл во время действия точечного звукового источника генерирующего импульсы ЛЧМ сигнала.
Вычислить корреляцию и оценить расстояние до предметов вокруг.
Основная идея
Я попробовал периодически излучать ЛЧМ импульсы и непрерывно вычислять корреляцию. Измерять время между пиками TOF и пересчитывать его в расстояние. Всё как в настоящих радарах.
Определения
Радиоголограмма — это результат математической свёртки между зондирующим сигналом и волной, отражённой от объекта
Реализация
Как известно скорость звука это 331 метр/с. Если умножить скорость звука на TOF и поделить на два, то получится расстояние до предмета.
Прежде всего надо подготовить файл с зондирующими импульсами. Для этого я написал на Си утилиту которая синтезирует такие файлы по опциям из командной строки.
Для частоты дискретизации я посчитал выбрать 44.1kHz. Это предельное значения для аудиокодеков внутри смартфонов. Да и потом, мобильное приложение Audio Rec записывает именно на частоте 44.1kHz.
В качестве зондирующего импульса я выбрал chirp сигнал (он же ЛЧМ сигнал). ЛЧМ используют в радиолокации, поэтому я выбрал его для сонара. Параметры ЛЧМ: F1= 500 Hz, F2=5000 Hz, длительность 6 ms. Этот звук похож на лопающиеся мыльные пузыри.

Почему именно ЛЧМ, а не амплитудный детектор (компаратор)?
Дело в том что компаратор для регистрации эхо - это очень плохая идея. Так как, например, взвыв петарды в соседнем дворе приемник на компараторе станет интерпретировать как эхо.
В радиолокации существуют формулы для разрешающей способности по дальности.
Для ЛЧМ c параметрами 500 Hz 5kHz и скорости звука 331 м/c разрешение равно 3см.
В связи с этим зондирующий сигнал должен быть уникальным и иметь неземное происхождение. Таких звуков как зондирующий сигнал в принципе не должно быть в природе. В этом вся и суть. А в идеале локатор должен ещё и менять параметры зондирующего сигнала, чтобы его не смогли воспроизвести злоумышленники.
Измерений надо делать много. Поэтому локатор должен излучать серию сhirp импульсов. В данном *.wav файле зондирующие ЛЧМ сигналы следуют с периодом 0.362 s.

Я взял два мобильных телефона и вышел во двор. Первый смартфон я включил проигрывать *.wav файл с последовательностью зондирующих ЛЧМ сигналов, а второй смартфон поставил рядом и включил обыкновенный диктофон на запись *.wav файла на частоте дискретизации 44100 Hz.
Получился вот такой файл записи.

Затем я взял файл записи и подал его на вход моей консольной утилиты, которая делает свёртку записанного файла и того самого зондирующего ЛЧМ сигнала.
Свёртку я сделал FIR фильтром у которого коэффициенты - это значения семплов ЛЧМ сигнала.

На частоте дискретизации 44100 Hz за один семпл (22.6 us) звук пролетает 331*(1/44100)=7.5mm. Свертка ЛЧМ дает максимум в одном семпле. Получается погрешность измерения расстояния должна быть -/+ 7.5 mm.

Получился вот такой результат свёртки. Тут можно заметить, что после 23 ms присутствует стабильное эхо. Поделив TOF 23ms на два и умножая на скорость звука 331 м/s получается 4 метра до какой-то цели.

Эхо особенно заметно в логарифмическом масштабе по оси Y.

В логарифмическом масштабе чётче видны максимумы корреляции записанного сигнала с локальной копией ЛЧМ.

На расстоянии 4 метров в самом деле находилась стена ворот.
А это следующий эксперимент. Тут по оси X время пересчитывается сразу в расстояние до цели по формуле (1). То есть умножается на коэффициент 331*0.5=165.5 [m]/[c]. На оси Y - результат свёртки.

Заметна высокая воспроизводимость эхо сигнала. На первый взгляд что-то похожее на правду.

А тут я зондировал импульсом 5ms, BW=9550 Hz.
При этом ЛЧМ импульс был амплитудно промодулирован окном Хэмминга. Получилась такая свёртка.

Что можно улучшить?
Повысить частоту дискретизации до 96kHz. Это улучшит разрешение измерения расстояния.
Увеличить длительность ЛЧМ сигнала. Вероятно это даст больший максимум свёртки, так как будет больше слагаемых.
Записывать эхо на матрицу из трёх микрофонов в одной горизонтальной плоскости. Так можно будет определять направление прихода эхо и, тем самым, вычислять расстояние до предметов с привязкой к азимуту (bearing).
Вычислять свёртку в реальном времени на FPGA. Это позволит повысить эффективность сонара.
Измеряя эхо в заранее известных местах, например вдоль линии, можно численными методами построить карту окружающего пространства. Тут в акустике можно применить все те же методы и алгоритмы обработки сигналов, как и в радиолокации с синтезированной апертурой (SAR/РСА).
Если анализировать локальные максимумы, то получится массив возможных целей. При этом отдельный микрофон не знает откуда по азимуту пришли эти эхо. Поэтому надо построить концентрические окружности местонахождения целей вокруг каждого микрофона. Пересечения этих окружностей и будут показывать координаты цели в декартовой системе координат.
К примеру, благодаря измерениям эха всего лишь из двух известных координат вдоль линии на расстоянии D можно определить координаты цели с точностью до зеркального отражения.

Что можно исследовать?
В общем, сонар на диктофоне это поле для масштабных, широчайших исследований и решающих экспериментов.
--Можно провести серию экспериментов, чтобы понять как форма огибающей влияет на эффективность всей системы.
--Можно попробовать другие модуляции для зондирующего импульса. Например зондировать BPSK кодом.
--Определить характер отражения от разнообразных материалов: древесина, металл, стекло и прочее.
Надеюсь, что ВУЗ-овцы составят на теме акустического зондирования серию своих исследований.
Итоги
Удалось на практике убедиться, что сделать сонар из обыкновенного телефонного аудиокодека вполне реальная задача. Это лишь вопрос вычислений. ЛЧМ сигнал может выполнять роль зондирующего импульса.
FIR фильтр можно использовать для вычисления свёртки, просто прописав функцию коэффициентами фильтра.
Подобные эксперименты со звуком можно проводить в качестве лабораторных работ в ВУЗах по цифровой обработке сигналов, радиолокации и гидроакустике.
Словарь
Акроним | Расшифровка |
ЛЧМ | Линейная частотная модуляция |
DDS | direct digital synthesis |
TOF | Time-of-Flight |
ВУЗ | Высшее учебное заведение |
FIR | finite impulse response |
Ссылки
№ | Название | URL |
1 | Принципы работы сонаров и подводная акустика: как, зачем и почему | |
11 | Дискретное преобразование Фурье | |
2 | LaTeX Editor | |
7 | Разрешающая способность по дальности | |
3 | Модуль подводного ультразвукового дальномера. Часть третья | |
4 | Модуль подводного ультразвукового дальномера | |
5 | Как работают эхолоты | |
6 | Утилита генератор wav файла с ЛЧМ и приложение консольный сонар | |
8 | Спектр периодической последовательности прямоугольных импульсов | https://ru.dsplib.org/content/fourier_series_pimp/fourier_series_pimp.html |
9 | Animated GIF Maker | |
10 | Опыт применения теоремы о свертке |
Вопросы
--Существуют ли микросхемы аппаратных конфигурируемых FIR фильтров (в ASIC исполнении)?
--Как же мне понять какой длительности должен быть зондирующий ЛЧМ сигнал? 6ms, 15ms, 30ms?