mt8870v00

6
DECODIFICADOR DE TONOS MT8870 P INGUIN O Muchas veces se nos puede dificultar la comunicación entre nuestras aplicaciones realizadas en el computador y pinguino, sobre si somos principiantes en el tema y no queremos lidiar con el puerto USB o el serial asíncrono. Así que por que no utilizar audio para comunicarnos con pinguino, y esto lo podemos hacer gracias al decodificador de tonos MT8870. EL DECODIFICADOR MT8870 El MT8870 es un decodificador de tonos DTMF el cual da una salida de 4 bits por cada tono recibido, adem s á cuenta con un terminal de estado que hace se coloca en alto cuando recibe un tono valido. Las salidas binarias se enumeran de Q1 a Q4 y el terminal de estado de tono valido se denomina como StD. TABLA DE TONOS Y SALIDAS Cada tono en el est ndar á DTMF identifica un numero de 0 a 9 , los s mbolos * # y las letras A,B,C,D í teniendo 16 caracteres en total, así que las salidas binarias identificaran un tono o car cter en particular. á La siguiente tabla muestra las salidas correspondientes a cada tono – car cter. á TONO CARACTER Q1 Q2 Q3 Q4 No Valido Z Z Z Z 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 0 1 0 1 0 * 1 0 1 1 # 1 1 0 0 A 1 1 0 1 B 1 1 1 0 C 1 1 1 1 D 0 0 0 0 En la tabla no aparece el terminal StD, este terminal tiene la siguiente transici n digital cunado se env a un ó í tono valido. No hay tono StD en bajo. Tono valido StD pasa a alto. Finaliza tono StD pasa a bajo. Es terminal se utiliza para indicar que se genero un nuevo tono o incluso el mismo tono otra vez, así que cada vez que registremos esta transici n en el ó terminal StD procedemos a capturar el dato binario Q1-Q4 con nuestra tarjeta pinguino. TONOS DTMF Los tonos DTMF (Dual-tone multi- frequency signaling), es un est ndar á el cual asigna un tono o sonido en particular para cada numero y s mbolo í empleado en teclado de un tel fono é , de manera que cuando marcamos un numero tambi n é generamos un tono para este, por lo tanto podemos emplear un tel fono é para el envi de comandos a ó pinguino. La gran mayor a de í tel fonos celulares da soporte a este é est ndar de tonos, as que tambi n á í é podemos emplearlo incluso llamar al tel fono que tengamos conectado a é pinguino y enviar tonos desde el que realizamos la llamada. La forma de codificaci n ó DTMF esta conformada por dos tonos uno de frecuencias bajas y otro de frecuencias altas para generar una se al compuesta. ñ Esto se realiza para que el circuito decodificador pueda separar con filtros pasa banda cada una de las frecuencias bajas y altas que constituyen el tono. Un se al ñ DTMF con una duraci n de ó 40ms debe ser considerado a v lid á a. La duraci n de la se al no ó ñ 1 http://m icropinguino. blogspot.com COMUNICACI N Ó CON AUDIO Por: Julio Fabio De La Cruz G – http://micropinguino.blogspot.com

Upload: ivanovich3000

Post on 23-Nov-2015

10 views

Category:

Documents


0 download

TRANSCRIPT

  • DECODIFICADOR DE TONOS MT8870 PINGUINO

    Muchas veces se nos puede dificultar la comunicacin entre nuestras aplicaciones realizadas en el computador y pinguino, sobre si somos principiantes en el tema y no queremos lidiar con el puerto USB o el serial asncrono. As que por que no utilizar audio para comunicarnos con pinguino, y esto lo podemos hacer gracias al decodificador de tonos MT8870.

    EL DECODIFICADOR MT8870

    El MT8870 es un decodificador de tonos DTMF el cual da una salida de 4

    bits por cada tono recibido, adem s cuenta con un terminal de estado que

    hace se coloca en alto cuando recibe

    un tono valido.

    Las salidas binarias se enumeran de

    Q1 a Q4 y el terminal de estado de tono valido se denomina como StD.

    TABLA DE TONOS Y SALIDAS

    Cada tono en el est ndar DTMF identifica un numero de 0 a 9 , los s mbolos * # y las letras A,B,C,D teniendo 16 caracteres en total, as que las salidas binarias identificaran

    un tono o car cter en particular.La siguiente tabla muestra las salidas correspondientes a cada tono car cter.

    TONOCARACTER

    Q1 Q2 Q3 Q4

    No Valido Z Z Z Z

    1 0 0 0 1

    2 0 0 1 0

    3 0 0 1 1

    4 0 1 0 0

    5 0 1 0 1

    6 0 1 1 0

    7 0 1 1 1

    8 1 0 0 0

    9 1 0 0 1

    0 1 0 1 0

    * 1 0 1 1

    # 1 1 0 0

    A 1 1 0 1

    B 1 1 1 0

    C 1 1 1 1

    D 0 0 0 0

    En la tabla no aparece el terminal StD, este terminal tiene la siguiente

    transici n digital cunado se env a un tono valido.

    No hay tono StD en bajo.

    Tono valido StD pasa a alto.

    Finaliza tono StD pasa a bajo.

    Es terminal se utiliza para indicar que

    se genero un nuevo tono o incluso el

    mismo tono otra vez, as que cada vez que registremos esta transici n en el terminal StD procedemos a capturar el dato binario Q1-Q4 con nuestra tarjeta pinguino.

    TONOS DTMF

    Los tonos DTMF (Dual-tone multi-frequency signaling), es un est ndar el cual asigna un tono o sonido en

    particular para cada numero y

    s mbolo empleado en teclado de un tel fono , de manera que cuando marcamos un numero tambi n generamos un tono para este, por lo

    tanto podemos emplear un tel fono para el envi de comandos a pinguino. La gran mayor a de tel fonos celulares da soporte a este est ndar de tonos, as que tambi n podemos emplearlo incluso llamar al

    tel fono que tengamos conectado a pinguino y enviar tonos desde el que

    realizamos la llamada.

    La forma de codificaci n DTMF esta conformada por dos tonos uno de

    frecuencias bajas y otro de

    frecuencias altas para generar una

    se al compuesta. Esto se realiza para que el circuito decodificador

    pueda separar con filtros pasa banda

    cada una de las frecuencias bajas y

    altas que constituyen el tono.

    Un se al DTMF con una duraci n de 40ms debe ser considerado

    a v lid a. La duraci n de la se al no

    1 http://m icropinguino. blogspot.com

    COMUNICACI NCON AUDIOPor: Julio Fabio De La Cruz G http://micropinguino.blogspot.com

  • DECODIFICADOR DE TONOS MT8870 PINGUINO

    debe ser menor de 23ms.

    Una se al DTMF v lida separada por una pausa de tiempo de al menos

    40ms debe ser detectada como dos

    s mbolos distintos. La siguiente tabla muestra las

    frecuencias empleadas para generar

    los tonos.

    Hz 1209 1336 1477 1633

    697 1 2 3 A

    770 4 5 6 B

    852 7 8 9 C

    941 0 * # D

    MONTAJE

    El circuito empleado es el que sugiere

    el fabricante del integrado en su gu a , aqu empleamos unos leds para la visualizaci n de las salidas Q1-Q4 pero estos pueden ser omitidos. El

    plug es de audio donde conectamos un terminal a tierra y el otro a

    cualquiera de las salidas de audio si

    el plug que tenemos es est reo como que se ilustra en el montaje.

    PROGRAMAS PINGUINO

    Para la prueba de estos programas

    procedemos a conectar nuestro

    circuito ya sea al tel fono a al computador.

    Si se hace la conexi n al computador podemos descargar los tonos desde

    el siguiente enlace

    http://www.dialabc.com/sound/gene

    rate/

    Se pueden reproducir con cualquier

    reproductor de audio.

    CONTROLANDO UN LED

    Con este programa controlaremos el

    tiempo de encendido y apagado de

    un led, en la figura 3 se muestra el esquema de montaje. Para este

    ejemplo no utilizaremos la se al StD.

    2 http://m icropinguino. blogspot.com

    Para identificar el cable que va a tierra en el plug de audio procedemos a medir continuidad entre la primer divisin del plug y terminal donde soldaremos nuestro cable preferiblemente de color negra para identificacin. En la figura 2 se indica la conexiones.

    Figura 1 Montaje MT8870.

    Figura 2 Conexin Plug.

    Codigo1 Encendido Led

    #define PIC18F4550

    int Q4,Q3,Q2,Q0,Dato;

    int Retardo;

    void setup(){

    pinMode(0,OUTPUT);

    pinMode(11,INPUT);

    pinMode(12,INPUT);

    pinMode(21,INPUT);

    pinMode(22,INPUT);

    }

  • DECODIFICADOR DE TONOS MT8870 PINGUINO

    En el ejemplo capturamos el valor

    binario de las salidas del

    decodificador y las guardamos en las

    variables Q4, Q3, Q2 y Q1, luego procedemos a convertir este dato de

    4 bits en su equivalente decimal y lo

    guardamos en la variable Dato. La variable Retardo multiplica el dato por 100 para hacer visible el encendido y apagado del led.

    SECUENCIA LEDS

    Con este programa enviaremos

    comandos con el decodificador de

    tonos para hacer diferentes

    secuencias en los leds.

    3 http://m icropinguino. blogspot.com

    void loop(){

    Q4=digitalRead(11);

    Q3=digitalRead(12);

    Q2=digitalRead(21);

    Q1=digitalRead(22);

    Dato=Q4*8+Q3*4+Q2*2+Q1*1;

    Retardo=Dato*100;

    digitalWrite(0,HIGH);

    delay(Retardo);

    digitalWrite(0,LOW);

    delay(Retardo);

    }

    Figura 3 Montaje MT8870 Pinguino.

    Figura 4 Montaje MT8870 Pinguino Control De Leds.

    Codigo2 Encendido Led

    #define PIC18F4550

    int Q4,Q3,Q2,Q0,Dato;

    int i;

    void setup(){

    for(i=0;i

  • DECODIFICADOR DE TONOS MT8870 PINGUINO

    Para mas comandos podemos utilizar

    la sentencia de control swicht ya que en la variable Dato obtendremos los

    valores decimales de 0 a 16, en otras

    palabras tendremos hasta 16

    opciones diferentes y combinando

    esta aplicaci n con funciones tendr amos diferentes secuencias de iluminaci n en los leds .

    PROGRAMAS PROCESSING

    Utilizando la capacidad de Processing

    para graficar y reproducir audio en la

    elaboraci n de un programa que envi tonos a este sistema con pinguino.

    Para la realizaci n de este programa debemos tener en cuenta:

    Guardar los archivos de audio en la carpeta data de nuestro

    programa.

    Los archivos de audio se pueden descargar del

    siguiente enlace

    http://www.dialabc.com/sou

    nd/generate/

    Tener programada la tarjeta pinguino con algunos de los

    ejemplos anteriores.

    El programa propuesto genera los

    tonos presionando las teclas del 0 9,

    las teclas a,b,c,d y las teclas z y x

    para el tono del * y #.

    La librer a a utilizar sera la librer a minim que es la librer a de audio que incluye processing por defecto. Para

    este ejemplo los archivos de audio

    son cortos en duraci n y por lo tanto declararemos las variables que vamos

    a utilizar para cargar el audio y los

    sonidos de efectos, utilizando la

    definici n AudioSample.En este ejemplo no hay c digo dentro de la funci n draw, para la detecci n de una tecla presionada se emplea la

    funci n keyPressed() que se ejecuta cada vez que se presiona una tecla

    cualquiera, dentro de esta funciones

    declaramos varios condicionales para

    detectar cual tecla fue presionada y

    reproducir el archivo de audio

    correspondiente al tono deseado para

    esa tecla.

    La ultima funci n empleada se llama stop y sirve para parar los recursos del sistema utilizados por la librer a minin en la reproducci n de audio.

    4 http://m icropinguino. blogspot.com

    void loop(){

    Q4=digitalRead(11);

    Q3=digitalRead(12);

    Q2=digitalRead(21);

    Q1=digitalRead(22);

    Dato=Q4*8+Q3*4+Q2*2+Q1*1;

    if(Dato>7){

    PORTB=0;

    delay(1000);

    PORTB=255;

    delay(1000);

    }else{

    PORTB=3;

    delay(1000);

    PORTB=10;

    delay(1000);

    }

    }

    swicht(Dato){

    case 0:

    PORTB = 1;

    delay(1000);

    PORTB = 0;

    delay(1000);

    break;

    case 1:

    PORTB = 15;

    delay(1000);

    PORTB = 0;

    delay(1000);

    break;

    case 2:

    PORTB = 3;

    delay(1000);

    PORTB = 12;

    delay(1000);

    break;

    case 3:

    PORTB = 5;

    delay(1000);

    PORTB = 10;

    delay(1000);

    break;

    default:

    PORTB = 0;

    }

    }

    Codigo3 Envo comandos

    #define PIC18F4550

    int Q4,Q3,Q2,Q0,Dato;

    int i;

    void setup(){

    for(i=0;i

  • DECODIFICADOR DE TONOS MT8870 PINGUINO

    5 http://m icropinguino. blogspot.com

    Codigo4 Programa En Processing.

    import ddf.minim.*;AudioSample asTono0;AudioSample asTono1;AudioSample asTono2;AudioSample asTono3;AudioSample asTono4;AudioSample asTono5;AudioSample asTono6;AudioSample asTono7;AudioSample asTono8;AudioSample asTono9;AudioSample asTonoAst;AudioSample asTonoNum;AudioSample asTonoA;AudioSample asTonoB;AudioSample asTonoC;AudioSample asTonoD;Minim audio;void setup(){ audio = new Minim(this); asTono0 = audio.loadSample("tono0.wav"); asTono1 = audio.loadSample("tono1.wav"); asTono2 = audio.loadSample("tono2.wav"); asTono3 = audio.loadSample("tono3.wav"); asTono4 = audio.loadSample("tono4.wav"); asTono5 = audio.loadSample("tono5.wav"); asTono6 = audio.loadSample("tono6.wav"); asTono7 = audio.loadSample("tono7.wav"); asTono8 = audio.loadSample("tono8.wav"); asTono9 = audio.loadSample("tono9.wav"); asTonoAst = audio.loadSample("tonoAst.wav"); asTonoNum = audio.loadSample("tonoNum.wav"); asTonoA = audio.loadSample("tonoA.wav"); asTonoB = audio.loadSample("tonoB.wav"); asTonoC = audio.loadSample("tonoC.wav"); asTonoD = audio.loadSample("tonoD.wav");}void draw(){}void keyPressed() { if (key == '0' ) asTono0.trigger(); if (key == '1' ) asTono1.trigger(); if (key == '2' ) asTono2.trigger(); if (key == '3' ) asTono3.trigger();

  • DECODIFICADOR DE TONOS MT8870 PINGUINO

    6 http://m icropinguino. blogspot.com

    if (key == '4' ) asTono4.trigger(); if (key == '5' ) asTono5.trigger(); if (key == '6' ) asTono6.trigger(); if (key == '7' ) asTono7.trigger(); if (key == '8' ) asTono8.trigger(); if (key == '9' ) asTono9.trigger(); if (key == 'a' ) asTonoA.trigger(); if (key == 'b' ) asTonoB.trigger(); if (key == 'c' ) asTonoC.trigger(); if (key == 'd' ) asTonoD.trigger(); if (key == 'z' ) asTonoNum.trigger(); if (key == 'x' ) asTonoAst.trigger();}void stop(){ asTono0.close(); asTono1.close(); asTono2.close(); asTono3.close(); asTono4.close(); asTono5.close(); asTono6.close(); asTono7.close(); asTono8.close(); asTono9.close(); asTonoA.close(); asTonoB.close(); asTonoC.close(); asTonoD.close(); asTonoAst.close(); asTonoNum.close(); audio.stop(); super.stop();}

    EL DECODIFICADOR MT8870MONTAJEPROGRAMAS PINGUINOPROGRAMAS PROCESSING