Передача данных с помощью ультразвука

В приложениях Yamaha InfoSound и ShopKick используются технологии, позволяющие передавать данные с помощью ультразвука . Это играет неслышимый сигнал (> 18 кГц), который можно поднять современными мобильными телефонами (iOS, Android).

Каков подход, используемый в таких технологиях? Какую модуляцию они используют?

Solutions Collecting From Web of "Передача данных с помощью ультразвука"

Я вижу несколько проблем с этим подходом. Во-первых, 18 кГц не слышно. Многие люди не могут это слышать, особенно по мере их старения, но я знаю, что, безусловно, могу (я регулярно слушаю тесты, связанные с работой). Кроме того, большинство телефонов имеют разные фильтры нижних частот на своих аналого-цифровых преобразователях , и многие устройства, особенно старые Android (я лично видел это), фильтруют все ниже 16 кГц или около того. Поэтому ваше приложение не гарантирует работу с любым оборудованием. Возможно, iPhone сможет это сделать.

С точки зрения модуляции, это может быть что-то действительно, но я определенно исключаю AM. Звук имеет нулевую устойчивость, когда речь заходит об объеме. Если бы я мог реализовать что-то подобное, я бы пошел с FSK . Я бы подумал, что PSK потерпит неудачу из-за акустических отражений и тому подобного. Трудность состоит в том, что вы работаете с ненадежной передачей энергии в пределах очень узкой полосы пропускания. Я, конечно, не сомневаюсь, что это может быть достигнуто, но я не вижу ничего подобного, доказывающего надежность. Просто ИМХО, то есть.

Обновление : теперь, когда я думаю об этом, простой вкл-выкл будет работать с одним тоном, если вы не переносите какие-либо данные, а только короткие сигналы.

Не могу сказать, что для Yamaha InfoSound и ShopKick, но мы использовали в нашем проекте вариацию частотной модуляции: частота несущей модулируется цифровым двоичным сигналом, где 0 и 1 соответствуют 17 кГц и 18 кГц соответственно. Что касается демодулятора, мы попробовали гетеродин. Более подробную информацию вы можете найти здесь: http://rnd.azoft.com/mobile-app-transering-data-using-ultrasound/

В ультразвуке нет ничего особенного, принцип такой же, как передача данных через модем, поэтому любая цифровая модуляция – в принципе возможна. У вас есть только определенная полоса частот (выше 18 кГц) и некоторые практические реквизиты (на мой взгляд, это очень ненадежная среда), которые предлагают использовать простую схему с низкой скоростью передачи.

Возможно, вам повезло с библиотекой, которую я создал для звуковых модемов, libquiet . Это дает вам несколько профилей для работы, включая медленный профиль «Ультразвуковой шепот» со спектральным содержимым выше 19 кГц. Библиотека написана на C, но для работы с iOS потребуется некоторая работа.

Я не знаю, как они это делают, но так я это делаю:

Если это строка, убедитесь, что она не длинная (чем дольше вероятность ошибки). Предположим, что мы работаем с важной частью кода ASCII, а именно с номером 127, тогда вам нужно всего 7 бит на символ. Преобразуйте этот символ в биты и модулируйте эти биты с помощью QFSK (есть несколько модуляции на выбор, основанные на частотном сдвиге оказались наиболее надежными, которые я пробовал из обычных … Я создал свою собственную модуляцию Схема для этого варианта использования). Выберите несущие частоты как 18,5,19,19,5 и 20 кГц (если вы хотите быть математически строгими в своем дизайне, выберите частотные значения, которые гарантируют вам как ортогональность, так и непрерывность фаз на символьных переходах, если вы не можете, хороший обходной путь Чтобы избежать резких переходов символов, нужно умножить символы на окно того же размера, например, гауссов или бартлет). По моему опыту вы можете перемещать эти значения в диапазоне от 17,5 до 20,5 кГц (если вы понизте, он начнет беспокоить людей, использующих ваше приложение, если вы выйдете на более высокий частотный отклик микрофона среднего типа, будет ослаблять вашу передачу и вызывать нежелательные ошибки) ,

На стороне приемника реализуется корреляционный или согласованный приемник фильтра (приемник FFT работает также, особенно с нулевым дополнением, но он может быть немного медленнее, я бы не рекомендовал Goertzel, потому что сдвиг частоты из-за эффекта Допплера или динамика-микрофона Нелинейность может повлиять на ваш прием). После того, как вы получили бит-поток, создайте с ними символы, и вы восстановите свое сообщение

Если вы сталкиваетесь с слишком большим количеством ошибок в вещании, попробуйте выбрать большее количество выборок на символ или полосовое фильтрование каждого значения частоты перед передачей их демодулятору, используя код исправления ошибок, такой как BCH или Reed Solomon, иногда является единственным способом обеспечить Сообщение об ошибке.

Одна из тем, о которой всегда забывают говорить, – это синхронизация (знать на стороне приемника при начале передачи), вы должны быть творческими здесь и проводить много тестов с большим количеством телефонов, прежде чем вы сможете получить фактический порог обнаружения, который Работает на всех, заметьте, что это также может быть зависимым от расстояния

Если вы не знакомы с этими темами, я бы порекомендовал пару отличных книг:

Цифровые методы модуляции от Fuqin Xiong

ЦИФРОВЫЕ СООБЩЕНИЯ Основы и приложения от BERNARD SKLAR

Цифровая связь от Джона Г. Проакиса