Pull to refresh

Чем развлечься в самоизоляции, или передаем данные с помощью звуковой карты

Reading time 4 min
Views 12K
Привет Хабр.

После недавней публикации про передачу OFDM, стало интересно проверить, каким способом эффективнее всего передавать данные по воздуху. Мы попробуем разные виды модуляции, и посмотрим какие из них лучше подойдут для передачи данных из одного конца квартиры или офиса в другой. Для тестов будет достаточно ноутбука, смартфона и программы MultiPSK.



Для тех кому интересно как это работает, продолжение под катом.

Для тестов мы воспользуемся программой MultiPSK, которая удобна тем, что поддерживает огромное количество разных стандартов связи, как любительских (они доступны как на прием, так и на передачу), так и профессиональных (доступен только прием). Разумеется, чтобы не делать статью гигантской, я выберу лишь наиболее популярные виды модуляции, и мы посмотрим что из этого получится. Изначально MultiPSK предназначена для радиосвязи, для чего звуковая карта должна подключаться к приемнику или передатчику, но ничего не запрещает воспроизводить сигнал прямо из колонок. Тест будет будет довольно простым — простой текст «1234567890» кодируется разными способами, сигнал проигрывается на ПК, и записывается смартфоном в другом конце квартиры. Разумеется, повторить нижеописанные опыты может любой желающий, никакого специального оборудования для этого не требуется.

Let's get started.

Частотная модуляция (FSK, Frequency Shift Keying)


Как нетрудно догадаться из названия, суть модуляции заключается в изменении частоты сигнала. Простейший способ, доступный в MultiPSK, это RTTY. В данном случае мы передаем данные с помощью переключения между двумя частотами с определенной скоростью. На спектре это видно весьма наглядно. Посмотрим, что происходит с сигналом при его передаче по воздуху. Сверху исходный сигнал, снизу принятый:



Помимо очевидного затухания, есть более неочевидное изменение амплитуды — сигнал стал «рваным», на выходе получилось что-то вроде биений. Интересно то, что проявляются они в моменты смены частоты, в моменты когда частота не меняется, изменения амплитуды минимальны. С чем это связано, сказать сложно.

Кстати о спектре, он исказился, хотя в принципе, форму сигнала угадать можно:



Посмотрим, сможет ли MultiPSK декодировать записанный звук. Увы, нет, на выходе лишь «мусор». Разные попытки нормализации и фильтрации к успеху также не привели:



Следующий сигнал, который интересно попробовать — MFSK, частотная модуляция, в которой количество частот больше 2х. Картинка «до» и «после» передачи примерно похожа на предыдущий результат.



Мы также видим биения амплитуды, возникающие вероятно, в процессе переотражения звука. Но есть заметный плюс — при большем количестве частот, декодирование сигнала происходит гораздо увереннее. За исключением «мусора» в паузе между сигналами, сами данные принимаются без ошибок.



Возможно, это также связано со скоростью передачи или другим алгоритмом декодирования, но результат довольно-таки интересен.

Фазовая модуляция (PSK, Phase Shift Keying)


Следующий вид модуляции — фазовая, при которой передается синусоидальный сигнал, а информация кодируется изменением фазы.



Сигнал BPSK «до» и «после» передачи:



Результат распознавания: определилось где-то 20-40% символов, из строки 1234567890, как можно видеть, можно различить 3, 4, 7 и 9.



Спектр не показан, т.к. для фазовой модуляции BPSK он представляет собой практически прямую линию.

Общая идея, я думаю, понятна, и более сложные виды сигналов рассматривать смысла нет — понятно что устойчивого декодирования не будет. Однако, чисто для «спортивного интереса», рассмотрим аналоговый сигнал.

SSTV (Slow Scan Television)


Этот режим по своей сути напоминает факс, и изменение частоты здесь кодирует яркость или цвет картинки во времени. Интересно посмотреть, насколько исказится изображение после передачи, и останется ли оно читабельным.

Сигнал «до» и «после»:



Картинка с котиком, и попытка её приема:



При должной фантазии, контур котика наверное можно угадать. Хотя если передавать что-нибудь попроще, типа «черного квадрата», наверное распознать изображение будет легче. Кстати, в этом один из плюсов аналоговой передачи данных перед цифровой — там где «цифра» уже перестанет работать, в аналоге, среди шумов, человеческий глаз или ухо вполне может уловить полезный сигнал.

Дополнение: частотная и временная характеристики


Кстати об аналоговом сигнале, как подсказали в комментариях, проверить амплитудно-частотную характеристику «канала передачи» можно, если воспроизвести белый шум и изменяющийся по высоте тон. Такой сигнал несложно сгенерировать в любом аудио-редакторе. Для теста файл был проигран в одном конце квартиры, а запись сделана в другом. Результат довольно интересен, как интересно и то, что высокие частоты не слышны вообще (в моем случае граница где-то 14КГц), а передача данных на них в принципе еще возможна:



И наконец, не менее интересный результат получается, если сгенерировать короткий звуковой импульс:



При подаче импульса длиной 0.01с, «эхо» длится практически в 10 раз дольше. Разумеется, это также должно учитываться при выборе скорости передачи данных.

Заключение


Как можно видеть, передача звука по воздуху (как наверное и через воду), это не так уж просто, из-за переотражений, затуханий и прочих эффектов. Несмотря на кажущуюся «несерьезность» задачи, надежно передать данные даже на 10 метров не так-то просто из-за искажений сигнала. Метод частотной модуляции MFSK оказался самым стабильным. И похоже, аналогичные опыты проводил не только я, статья о протоколе активации Яндекс-станции говорит о том, что в ней используется такой же способ передачи данных. Ну а в целом, чем проще модуляция и меньше скорость, тем больше шансов, что данные будут приняты без ошибок.

Желающие могут дальше поэскпериментировать самостоятельно, программу MultiPSK легко найти в интернете, количество поддерживаемых ею стандартов передачи довольно велико.

Всем удачных экспериментов.
Tags:
Hubs:
+20
Comments 32
Comments Comments 32

Articles