DTMF: la tecnología retro siempre verde

[ad_1]

Este artículo examina cómo la tecnología DTMF ha evolucionado a lo largo de los años y aún puede ser útil.

DTMF
(Fuente: https://en.wikipedia.org)

En los días de las comunicaciones telefónicas analógicas, el tipo de cable más común utilizado era el par trenzado sin blindaje (UTP). Dado que no había blindaje físico para bloquear la interferencia, la cantidad de interferencia era un poco alta. Sin embargo, no era demasiado alto y era lo suficientemente bueno para transmitir el habla. Pero a medida que pasaban los días y aumentaba la cantidad de personas que usaban teléfonos, también aumentó la necesidad de un operador telefónico automatizado. En enero de 1958, G. Goertzel publicó un artículo titulado "Un algoritmo para la evaluación de series trigonométricas finitas" en el Mensual matemático estadounidense. Esto se convirtió en la base de la señalización DTMF (frecuencia múltiple de tono dual). Nos permitió codificar valores numéricos como superposiciones de dos ondas sinusoidales coprimarias de una manera que las hizo resistentes al ruido.

El 18 de noviembre de 1963, Bell Systems introdujo teléfonos con botones en lugar de diales giratorios. DTMF asigna un tono específico a cada tecla presionada en el dispositivo telefónico. Al marcar un número, cada tecla presionada daba una señal de audio estándar. La centralita podría decodificar estas señales como DTMF para saber qué número ingresó el usuario.

Binario se definió por 'encendido' y 'apagado' o '1' y '0'. La tecnología DTMF funcionaba haciendo que el teléfono generara tonos en frecuencias específicas y reproduciéndolos a través de la línea telefónica cuando se presionaba una tecla en el teclado. Podría tratarse como un dispositivo para cambiar hasta ocho dispositivos. Los dispositivos en el otro extremo de la línea telefónica escucharon los sonidos específicos y los decodificaron en comandos.

El algoritmo de Goertzel es un método de procesamiento de señales digitales (DSP) para evaluar rápidamente cualquier término de transformada discreta de Fourier (DFT). Esto es beneficioso en algunas situaciones del mundo real, como detectar los tonos DTMF emitidos por las teclas del teclado de un teléfono analógico clásico. Con este enfoque, los datos espectrales se pueden extraer de una señal de entrada de forma rápida y eficiente. Esencialmente, los filtros IIR de dos polos se utilizan para calcular de manera eficiente los valores de DFT. Como resultado, es una estructura recursiva que siempre procesa una muestra entrante a la vez, a diferencia de la DFT (o FFT), que primero debe tener un bloque de datos para comenzar a procesar.

Ahora dividamos esto en varios pasos simples.

Una señal DTMF consta de dos ondas sinusoidales, una elegida de uno de los cuatro tonos de baja frecuencia y otra elegida de uno de los cuatro tonos de alta frecuencia, donde asignamos cada número a una tupla de sus frecuencias principales, como se muestra en la Tabla. La tabla muestra cómo los dígitos se pueden convertir en rangos de frecuencia, cuyos límites superior e inferior se dan.

señal DTMF
dígitos Limite superior Límite inferior
1 1209 697
2 1336 697
3 1477 697
4 1209 770
5 1336 770
6 1477 770
7 1209 852
8 1336 852
9 1477 852
* 1209 941
0 1336 941
# 1477 941

Por ejemplo, presionar la tecla "1" en el teclado de un teléfono produce una señal que consiste en una onda sinusoidal a 697 Hz más una a 1209 Hz. Para jugar con DTMF y su codificación y decodificación, escribimos una biblioteca. La biblioteca tiene las funciones codificador_dtmf() para convertir el número de entrada al audio DTMF correspondiente, y decodificar_dtmf() para descifrar lo mismo.

Bien, ahora intentemos codificar un número como 76589410. Simplemente escribimos el comando:

tone_2=codificador_dtmf('76589410')
IPython.display. Audio (Ton_2, Tasa=Fs)

En el comando anterior, convertimos cada dígito en señales de audio DTMF tomando ondas sinusoidales con las frecuencias requeridas.

Por conveniencia, la Fig. 1 muestra la representación gráfica de tales señales de audio con la frecuencia de muestreo Fs = 24000 Hz.

Fig. 1: Diagrama de las señales de audio
Fig. 1: Diagrama de las señales de audio

Está claro del diagrama que cada número es una superposición de dos ondas sinusoidales diferentes en dos frecuencias diferentes.

Ahora codifiquemos una serie de números y caracteres especiales desde 1498 * 0:

tone_1=codificador_dtmf('1498*0')
IPython.display. Audio (Ton_1, Tasa=Fs)

El comando anterior también muestra las representaciones de audio de las frecuencias a una velocidad ajustable. Podemos ver su tamaño y trazarlo en forma gráfica como se muestra en la figura 2.

Fig. 2: Frecuencias de tono con velocidad ajustable
Fig. 2: Frecuencias de tono con velocidad ajustable

De manera similar, también podemos decodificar las frecuencias DTMF en los dígitos requeridos como antes, usando un algoritmo simple, donde tratamos de desglosar los números de acuerdo con los rangos de frecuencia que representan. Comprobamos los límites superior e inferior de las frecuencias convirtiéndolos en matrices NumPy. Por ejemplo, para decodificar "1498" obtenemos una frecuencia entre 697 Hz y 1209 Hz, por lo que sabemos que el primer dígito es un uno. El siguiente es entre 770 Hz a 1209 Hz y así sucesivamente.

Por lo tanto, ejecutamos el código de decodificación en el dtmf_decode() Función llamando a las funciones dadas a continuación:

imprimir (decode_dtmf (tono_2)) # funciona ¡¡perfecto!!
[‘7’, ‘6’, ‘5’, ‘8’, ‘9’, ‘4’, ‘1’, ‘0’]
imprimir (decodificar_dtmf (tono_1))
[‘1’, ‘4’, ‘9’, ‘8’, ‘*’, ‘0’]

Ahora podemos ver cómo sonido_1 Y tono_2, que era una onda sinusoidal superpuesta de frecuencia '2' se convierten a la secuencia original con un error mínimo.

3 muestra el gráfico de energía de la transformación de frecuencia DTMF.

Fig. 3: Transformación de frecuencia DTMF
Fig. 3: Transformación de frecuencia DTMF

DTMF todavía se usa hoy. Cuando marcamos un número de servicio al cliente, a menudo nos recibe la respuesta automática "Para inglés, presione 1, para hindi, presione 2", etc. Sin DTMF, este menú de selección habría sido un desafío para las llamadas de voz. El botón que el usuario toca para una selección en particular se codifica como DTMF y luego se decodifica en el extremo del receptor para obtener la selección del usuario.

Sin embargo, usar DTMF no fue tan fácil como parece. Era vulnerable a un ataque llamado "phreaking". Este ataque usó un actor malintencionado para enviar señales DTMF no autorizadas mediante la conexión de hardware personalizado a las líneas telefónicas. En algunas regiones de los Estados Unidos, es ilegal enchufar cualquier cosa en la línea telefónica por la misma razón.

Se pueden construir muchas aplicaciones y sistemas usando los conceptos discutidos en este artículo. ¡Así que esta tecnología retro es un favorito perenne!


Anisha Ghosh es un entusiasta del código abierto y colaborador de comunidades y repositorios de código abierto. Está interesada en varios proyectos de desarrollo.

Aditya Mitra es investigador de ciberseguridad y disfruta aprendiendo sobre las vulnerabilidades de los diferentes tipos de redes. Sus áreas de interés son IoT, redes y ciberseguridad. Tiene un interés especial en las tecnologías retro.

Este artículo se publicó por primera vez en la edición de octubre de 2022 de la revista Open Source For You.

[ad_2]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir