Передача данных с помощью ультразвука
Yamaha InfoSound и приложение приложение Shopkick использовать технологии, которые позволяют передача данных с помощью ультразвука. Это воспроизведение неслышимого сигнала (>18 кГц), который может быть подхвачен современными мобильными телефонами (iOS, Android).
какой подход используется в таких технологиях? Какую модуляцию они используют?
5 ответов
Я вижу несколько проблем с этим подходом. Во-первых, 18 кГц составляет не невнятно. Многие люди не могут слышать его, особенно с возрастом, но я знаю, что могу (я регулярно провожу тесты слуха, связанные с работой). Кроме того, большинство телефонов имеют различные фильтры нижних частот на их A/D преобразователи, и многие устройства, особенно старые Android (я лично видел, что это происходит), фильтруют все ниже 16 кГц или около того. Поэтому ваше приложение не гарантирует работу на любом оборудовании. IPhone, вероятно, сможет это сделать.
с точки зрения модуляции, это может быть что угодно, но я бы определенно исключил. Звук имеет почти нулевую надежность, когда дело доходит до громкости. Если бы я должен был реализовать что-то подобное, я бы пошел с ФСК. Я думаю, что 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 или Рид Соломон иногда является единственным способом обеспечения безошибочной связь.
одна тема все всегда забывают говорить о синхронизации (чтобы знать на стороне приемника, когда передача началась), вы должны быть творческими здесь и сделать много тестов с большим количеством телефонов, прежде чем вы можете получить фактический порог обнаружения, который работает на всех, обратите внимание, что это также может быть расстояние зависит
Если вы не знакомы с этими предметами, я бы рекомендовал пару больших книг:
Цифровой Модуляции Техники из Fuqin Xiong
основы цифровой связи и приложения от Бернарда Склара
цифровая связь от Джона Г. Проакиса