#iphone #android #audio #signal-processing #data-transfer
#iPhone #Android #Аудио #обработка сигналов #передача данных
Вопрос:
В приложении Yamaha InfoSound и приложении ShopKick используются технологии, позволяющие передавать данные с помощью ультразвука. Это воспроизведение неслышимого сигнала (> 18 кГц), который может быть принят современными мобильными телефонами (iOS, Android).
Какой подход используется в таких технологиях? Какой вид модуляции они используют?
Комментарии:
1. Вопрос о схемах модуляции может быть задан на форуме electronics.stackexchange. После того, как вы определите схему модуляции, здесь может быть более уместным вопрос о звуковом коде DSP, необходимом для iPhone или Android для модуляции или демодуляции какого-либо протокола.
2. Существует как минимум 1 вирус, который использует ультразвук как средство для своего распространения. Довольно страшно arstechnica.com/security/2013/10 /…
3. @alexey — нашли ли вы решение для передачи данных с помощью ультразвука?
4. @alexey как shopkick использует это?? каков вариант использования?
Ответ №1:
Я вижу несколько проблем с этим подходом. Во-первых, частота 18 кГц не является неслышимой. Многие люди не слышат его, особенно с возрастом, но я знаю, что, безусловно, могу (я регулярно провожу тесты слуха, связанные с работой). Кроме того, большинство телефонов имеют разные фильтры нижних частот на своих A / D конвертерах, и многие устройства, особенно старые Android (я лично видел, как это происходит), фильтруют все, что ниже 16 кГц или около того. Поэтому работа вашего приложения не гарантируется ни на каком оборудовании. Вероятно, iPhone должен быть способен это сделать.
Что касается модуляции, это может быть что угодно, но я бы определенно исключил AM. Надежность звука близка к нулю, когда дело доходит до громкости. Если бы я должен был реализовать что-то подобное, я бы выбрал FSK. Я бы подумал, что PSK выйдет из строя из-за акустических отражений и тому подобного. Сложность в том, что вы работаете с ненадежной передачей энергии в пределах очень узкой полосы пропускания. Я, конечно, не сомневаюсь, что этого можно достичь, но я не вижу, чтобы что-то подобное доказывало надежность. Просто ИМХО, то есть.
Обновление: Теперь, когда я думаю об этом, простое включение-выключение будет работать с одним звуковым сигналом, если вы не передаете никаких данных, только несколько коротких сигналов.
Комментарии:
1. Можете ли вы сослаться на какой-либо (повторный) источник, где FSK использовалась для передачи данных с использованием ультразвука?
Ответ №2:
Не могу сказать о Yamaha InfoSound и ShopKick, но то, что мы использовали в нашем проекте, было разновидностью частотной модуляции: частота несущей модулируется цифровым двоичным сигналом, где 0 и 1 соответствуют 17 кГц и 18 кГц соответственно. Что касается демодулятора, мы попробовали гетеродин. Более подробную информацию вы могли бы найти здесь: http://rnd.azoft.com/mobile-app-transering-data-using-ultrasound
Ответ №3:
В использовании ультразвука нет ничего особенного, принцип тот же, что и при передаче данных через модем, поэтому любая цифровая модуляция — в принципе — возможна. У вас есть только определенная полоса частот (выше 18 кГц) и некоторые практические требования (я полагаю, носитель очень ненадежен), которые предполагают использование простой и надежной схемы с низкой скоростью передачи данных.
Ответ №4:
Я не знаю, как они это делают, но вот как я это делаю:
Если это строка, то убедитесь, что она не длинная (чем длиннее, тем выше вероятность ошибки). Давайте предположим, что мы работаем с жизненно важной частью ASCII-кода, а именно с номером символа 127, тогда все, что вам нужно, — это 7 бит на символ. Преобразуйте этот символ в биты и модулируйте эти биты с помощью QFSK (есть несколько модуляций на выбор, основанные на сдвиге частоты оказались самыми надежными, которые я пробовал из обычных… Я создал свою собственную схему модуляции для этого варианта использования). Выберите несущие частоты как 18,5, 19, 19,5 и 20 кГц (если вы хотите быть математически строгим в своем дизайне, выберите значения частоты, которые гарантируют вам как ортогональность, так и непрерывность фазы при переходах символов, если вы не можете, хороший способ избежать резких переходов символов — это умножить ваши символы на окно того же размера, например. по Гауссу или по Бартлету). По моему опыту, вы можете изменить эти значения в диапазоне от 17,5 до 20,5 кГц (если вы перейдете ниже, это начнет беспокоить людей, использующих ваше приложение, если вы перейдете выше, частотная характеристика микрофона среднего типа ослабит вашу передачу и вызовет нежелательные ошибки).
На стороне приемника внедрите приемник корреляции или согласованного фильтра (приемник FFT также работает, особенно с дополнением к нулю, но он может быть немного медленнее, я бы не рекомендовал Goertzel, потому что сдвиг частоты из-за эффекта Доплера или нелинейностей динамика-микрофона может повлиять на ваш прием). Как только вы получите поток битов, внесите в них символы, и вы восстановите свое сообщение
Если вы сталкиваетесь со слишком большим количеством ошибок вещания, попробуйте выбрать большее количество выборок на символ или полосовую фильтрацию каждого значения частоты, прежде чем передавать их демодулятору. Использование кода исправления ошибок, такого как BCH или Reed Solomon, иногда является единственным способом обеспечить безошибочную связь.
Одна тема, о которой все всегда забывают поговорить, — это синхронизация (чтобы знать на стороне получателя, когда началась передача), здесь нужно проявить творческий подход и провести множество тестов с большим количеством телефонов, прежде чем вы сможете определить фактический порог обнаружения, который работает на всех, обратите внимание, что это также может зависеть от расстояния
Если вы не знакомы с этими предметами, я бы порекомендовал пару отличных книг:
Методы цифровой модуляции от Fuqin Xiong
Основы ЦИФРОВОЙ СВЯЗИ и приложения от БЕРНАРДА СКЛАРА
Цифровые коммуникации от Джона Г. Проакиса
Ответ №5:
Возможно, вам повезет с библиотекой, которую я создал для модемов на основе звука, libquiet. Это предоставляет вам несколько профилей для работы, включая медленный профиль «Ультразвукового шепота» со спектральным содержанием выше 19 кГц. Библиотека написана на C, но для взаимодействия с iOS потребуется некоторая доработка.