Download - MT8870v00
-
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