Transferencia de datos mediante ultrasonido

7

Yamaha InfoSound y aplicación ShopKick utilizan tecnologías que permiten transferir datos mediante ultrasonido . Eso es reproducir una señal inaudible (> 18kHz) que puede ser captada por los teléfonos móviles modernos (iOS, Android).

¿Cuál es el enfoque utilizado en tales tecnologías? ¿Qué tipo de modulación utilizan?

    
pregunta alexey

3 respuestas

10

Pasar datos digitales por ultrasonido es mucho más complicado de lo que parece a primera vista. Estamos haciendo esto en un producto actualmente en pruebas de campo, pero cuando comenzamos a diseñar había muy poca información al respecto.

La mayoría de los problemas provienen del hecho de que el sonido se propaga lentamente (aproximadamente 3 ms por metro), y puede reflejarse y hacer eco en una habitación por un tiempo. Hicimos algunos experimentos y aproximadamente, debe asumir que cualquier sonido emitido rebotará alrededor de 10 m de propagación o 30 ms. Esto significa que el protocolo debe permitir que el receptor capte copias duplicadas de la señal emitida y señales fuera de servicio de hasta 30 ms. Dicho de otra manera, imagine que todo lo que envía se reordena o se duplica de manera impredecible dentro de una ventana de 30 ms.

Otro problema es que los transductores de ultrasonido son Q bastante altos. Toman unos pocos ciclos para ponerse en marcha y luego continúan sonando unos pocos ciclos después de que no haya más información. Tenga en cuenta que los datos nuevos y antiguos dentro del período de 30 ms también pueden interferir de forma constructiva o destructiva ciclo por ciclo. Esto, junto con el desorden de propagación hará que la velocidad de datos sea muy baja. Hay cosas como la codificación de Manchester, ya que la portadora puede aparecer y desaparecer debido a la interferencia si algo se emitió en los 30 ms anteriores.

Para resolver estos problemas, creamos nuestro propio esquema de codificación en nuestro sistema. Por lo que podemos decir, nadie había hecho esto antes. No estoy seguro, pero nuestro cliente puede haber presentado una patente sobre la técnica. Todos los datos están codificados en la diferencia de tiempo entre los bordes iniciales de las ráfagas cortas. Creo que enviamos alrededor de 8-10 ciclos a 40kHz por cada ráfaga. 10 ciclos son solo 250us, y tiene una longitud de 80-85 mm propagándose a través del aire. El receptor busca los bordes iniciales de estas ráfagas y registra su tiempo. Después de recibir una ráfaga, el receptor se apaga por un poco menos de 30 ms, ya que todo lo que se reciba en ese período solo será un eco. Los datos se codifican en el tiempo entre ráfagas sucesivas. En nuestro sistema, la diferencia horaria está en el rango de 30-50ms. Usamos una resolución de la cantidad de tiempo de curso de aproximadamente 2 ms debido a otras razones dentro de los receptores en los que no voy a entrar. Usando este método, podemos enviar uno de 9 caracteres entre dos ráfagas. Tenemos un carácter especial para el inicio del mensaje, y luego los valores 0-7. En otras palabras, enviamos 3 bits de información por ráfaga durante un mensaje. En nuestro sistema solo necesitamos enviar 10 bits de datos a la vez. En realidad, enviamos 6 caracteres por mensaje, el SOM y 5 caracteres de datos para un total de 15 bits. Utilizamos los 5 bits adicionales para una suma de comprobación CRC.

Nuestra cantidad de tiempo de aproximadamente 2 ms es más larga de lo que debe ser si se trata únicamente de los problemas de ultrasonido. El límite inferior proviene de la incertidumbre de recoger el borde anterior de una ráfaga en el receptor y los cambios en la longitud de la trayectoria debidos al movimiento. Probablemente podrías usar una cantidad de tiempo hasta 500 us si eres realmente cuidadoso, aunque no lo intentamos.

    
respondido por el Olin Lathrop
3

Puedo decirle que la transmisión de datos a través del sonido es posible, aunque es muy difícil lograr tasas de bits más altas o largas distancias debido al eco, las rutas múltiples y las atenuaciones. He creado un protocolo de transmisión para transmitir bits de información entre un altavoz de la PC y un teléfono inteligente, o entre 2 teléfonos inteligentes. He implementado sistemas de demodulación no coherente QFSK y 8fsk que utilizan frecuencias de 4/8 y un ancho de banda de 3 kHz (el espaciado de frecuencia varía de acuerdo con lo establecido). Debido al hecho de que los altavoces, los micrófonos y el aire introducen no linealidades en la amplitud de la onda portadora, no usé la modulación de amplitud o fase. Estoy trabajando en la región de baja frecuencia de ultrasonido entre 18 y 22 kHz. Desde un altavoz de PC (sistema de audio Creative T6300 5.1) he alcanzado 300 bps de bits de carga útil sin errores a 1 metro de distancia, detectando el sonido con varios tipos de micrófonos de teléfonos inteligentes. Estoy usando un esquema de corrección de errores BCH con 1/3 redundancia agregada (los códigos de bloque muestran su mayor ganancia de código cuando la redundancia está entre 1/2 a 1/3). No podía usar frecuencias más altas porque todos los teléfonos inteligentes con los que podía trabajar, solo admitían 48 kHz como frecuencia máxima de muestreo. No pude usar la región de frecuencia de 22-24 kHz porque los micrófonos de los teléfonos inteligentes tienen un filtro anti-aliasing que atenúa las frecuencias de más de 22 kHz. No todos los teléfonos inteligentes funcionaron. Encontré allí donde los micrófonos de los teléfonos inteligentes que solo estaban diseñados para grabar el espectro de la voz humana, mostraron una gran atenuación de la señal a más de 10 kHz (los componentes principales de la voz humana están en esta banda). Tuve que crear un algoritmo de calibración para distinguir entre los micrófonos de smartphones buenos y malos

    
respondido por el VMMF
1

El enfoque suena muy simple y probablemente se basa aproximadamente en la misma tecnología que se usaba en computadoras antiguas como Spectrums, etc., para almacenar datos en cintas de audio magnéticas, solo con una frecuencia mayor.

Probablemente es un binario de frecuencia modulada, con alguna codificación subyacente como Manchester Encoding , o 4B5B codificación. Al menos, así es como lo haría si fuera a hacerlo.

    
respondido por el Majenko

Lea otras preguntas en las etiquetas