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. s que por que no utilizar audio para comunicarnos con pinguino, y esto lo podemos hacer gracias al decodificador de tonos M!""#$. 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 TOO! " !AL#DA! $ada tono en el est ndar DTMF identifica un numero de % a & , los s mbolos ' ( y las letras A,B,$,D teniendo )* caracteres en total, as que las salidas binarias identificaran un tono o car cter en particular. La si+uiente tabla muestra las salidas correspondientes a cada tono , car cter. TONO CARACTER Q1 Q2 Q3 Q4 No Valio ! ! ! ! 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 " 0 1 0 1 # 0 1 1 0 7 0 1 1 1 8 1 0 0 0 $ 1 0 0 1 0 1 0 1 0 % 1 0 1 1 & 1 1 0 0 A 1 1 0 1 ' 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 si+uiente transici n di+ital cunado se env a un tono valido. o hay tono StD en ba-o. Tono valido StD pasa a alto. .inali/a tono StD pasa a ba-o. Es terminal se utili/a para indicar que se +enero un nuevo tono o incluso el mismo tono otra ve/, as que cada ve/ que re+istremos esta transici n en el terminal StD procedemos a capturar el dato binario Q10Q4 con nuestra tar-eta pin+uino. TOO! DT1. Los tonos DTMF 2Dual0tone multi0 frequency si+nalin+3, es un est ndar el cual asi+na 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 +eneramos un tono para este, por lo tanto podemos emplear un tel fono para el envi de comandos a pin+uino. La +ran 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 ten+amos conectado a pin+uino y enviar tonos desde el que reali/amos la llamada. La forma de codificaci n DTMF esta conformada por dos tonos uno de frecuencias ba-as y otro de frecuencias altas para +enerar una se al compuesta. Esto se reali/a para que el circuito decodificador pueda separar con filtros pasa banda cada una de las frecuencias ba-as y altas que constituyen el tono. 4n se al DTMF con una duraci n de 4%ms debe ser considerado a v lid a. La duraci n de la se al no 1 http566m icropin+uino. blo+spot.com $O14#$A$# $O A4D#O 7or5 8ulio .abio De La $ru/ 9 , http566micropin+uino.blo+spot.com DECODIFICADOR DE TONOS MT8870 PINGUINO debe ser menor de :;ms. 4na se al DTMF v lida separada por una pausa de tiempo de al menos 4%ms debe ser detectada como dos s mbolos distintos. La si+uiente tabla muestra las frecuencias empleadas para +enerar los tonos. () 120$ 133# 1477 1#33 #$7 ) : ; A 770 4 < * B 8"2 = > & $ $41 % ' ( D MONTA*E El circuito empleado es el que su+iere el fabricante del inte+rado en su +u a , aqu empleamos unos l+, para la visuali/aci n de las salidas Q10Q4 pero estos pueden ser omitidos. El -l./ es de audio donde conectamos un terminal a tierra y el otro a cualquiera de las salidas de audio si el -l./ que tenemos es est reo como que se ilustra en el monta-e. PROGRAMAS 0 PINGUINO 7ara la prueba de estos pro+ramas procedemos a conectar nuestro circuito ya sea al tel fono a al computador. !i se hace la cone?i n al computador podemos descar+ar los tonos desde el si+uiente enlace http566@@@.dialabc.com6sound6+ene rate6 !e pueden reproducir con cualquier reproductor de audio. $OTAOLADO 4 LED $on este pro+rama controlaremos el tiempo de encendido y apa+ado de un led, en la 1i/.2a 3 se muestra el esquema de monta-e. 7ara este e-emplo no utili/aremos la se al StD3 2 http566m icropin+uino. blo+spot.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 7#$)>.4<<% int B4,B;,B:,B%,DatoC int AetardoC void setup23D pin1ode2%,O4T74T3C pin1ode2)),#74T3C pin1ode2):,#74T3C pin1ode2:),#74T3C pin1ode2::,#74T3C E DECODIFICADOR DE TONOS MT8870 PINGUINO En el e-emplo capturamos el valor binario de las salidas del decodificador y las +uardamos en las variables Q44 Q34 Q2 y Q1, lue+o procedemos a convertir este dato de 4 bits en su equivalente decimal y lo +uardamos en la variable Dato. La variable R+ta2o multiplica el dato por 100 para hacer visible el encendido y apa+ado del led. !E$4E$#A LED! $on este pro+rama enviaremos comandos con el decodificador de tonos para hacer diferentes secuencias en los leds. 3 http566m icropin+uino. blo+spot.com void loop23D B4Fdi+italAead2))3C B;Fdi+italAead2):3C B:Fdi+italAead2:)3C B)Fdi+italAead2::3C DatoFB4'>GB;'4GB:':GB)')C AetardoFDato')%%C di+italHrite2%,I#9I3C delay2Aetardo3C di+italHrite2%,LOH3C delay2Aetardo3C E Figura 3 Montaje MT8870 Pinguino. Figura Montaje MT8870 Pinguino Control !e Led". Codigo2 Encendido Led (define 7#$)>.4<<% int B4,B;,B:,B%,DatoC int iC void setup23D for2iF%CiJ4CiGG3D pin1ode2i,O4T74T3C E pin1ode2)),#74T3C pin1ode2):,#74T3C pin1ode2:),#74T3C pin1ode2::,#74T3C E DECODIFICADOR DE TONOS MT8870 PINGUINO 7ara mas comandos podemos utili/ar la sentencia de control ,5i67t ya que en la variable Dato obtendremos los valores decimales de % a )*, en otras palabras tendremos hasta )* opciones diferentes y combinando esta aplicaci n con funciones tendr amos diferentes secuencias de iluminaci n en los leds . PROGRAMAS 0 PROCESSING 4tili/ando la capacidad de 7rocessin+ para +raficar y reproducir audio en la elaboraci n de un pro+rama que envi tonos a este sistema con pin+uino. 7ara la reali/aci n de este pro+rama debemos tener en cuenta5 9uardar los archivos de audio en la carpeta data de nuestro pro+rama. Los archivos de audio se pueden descar+ar del si+uiente enlace http566@@@.dialabc.com6sou nd6+enerate6 Tener pro+ramada la tar-eta pin+uino con al+unos de los e-emplos anteriores. El pro+rama propuesto +enera los tonos presionando las teclas del % , &, las teclas a,b,c,d y las teclas / y ? para el tono del ' y (. La librer a a utili/ar sera la librer a 8i9i8 que es la librer a de audio que incluye processin+ por defecto. 7ara este e-emplo los archivos de audio son cortos en duraci n y por lo tanto declararemos las variables que vamos a utili/ar para car+ar el audio y los sonidos de efectos, utili/ando la definici n Audio!ample. En este e-emplo no hay c di+o dentro de la funci n dra@, para la detecci n de una tecla presionada se emplea la funci n :+;P2+,,+23 que se e-ecuta cada ve/ 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 ,to- y sirve para parar los recursos del sistema utili/ados por la librer a minin en la reproducci n de audio. 4 http566m icropin+uino. blo+spot.com void loop23D B4Fdi+italAead2))3C B;Fdi+italAead2):3C B:Fdi+italAead2:)3C B)Fdi+italAead2::3C DatoFB4'>GB;'4GB:':GB)')C if2DatoK=3D 7OATBF%C delay2)%%%3C 7OATBF:<<C delay2)%%%3C EelseD 7OATBF;C delay2)%%%3C 7OATBF)%C delay2)%%%3C E E s@icht2Dato3D case %5 7OATB F )C delay2)%%%3C 7OATB F %C delay2)%%%3C breaLC case )5 7OATB F )<C delay2)%%%3C 7OATB F %C delay2)%%%3C breaLC case :5 7OATB F ;C delay2)%%%3C 7OATB F ):C delay2)%%%3C breaLC case ;5 7OATB F <C delay2)%%%3C 7OATB F )%C delay2)%%%3C breaLC default5 7OATB F %C E E Codigo3 En#$o co%ando" (define 7#$)>.4<<% int B4,B;,B:,B%,DatoC int iC void setup23D for2iF%CiJ4CiGG3D pin1ode2i,O4T74T3C E pin1ode2)),#74T3C pin1ode2):,#74T3C pin1ode2:),#74T3C pin1ode2::,#74T3C E void loop23D B4Fdi+italAead2))3C B;Fdi+italAead2):3C B:Fdi+italAead2:)3C B)Fdi+italAead2::3C DatoFB4'>GB;'4GB:':GB)')C DECODIFICADOR DE TONOS MT8870 PINGUINO 5 http566m icropin+uino. blo+spot.com Codigo Progra%a En Proce""ing. 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 asTonoum; AudioSample asTonoA; AudioSample asTono!; AudioSample asTono"; AudioSample asTono#; $inim audio; %oid setup&'( audio ) ne* $inim&t+is'; asTono0 ) audio.loadSample&,tono0.*a%,'; asTono1 ) audio.loadSample&,tono1.*a%,'; asTono2 ) audio.loadSample&,tono2.*a%,'; asTono3 ) audio.loadSample&,tono3.*a%,'; asTono4 ) audio.loadSample&,tono4.*a%,'; asTono5 ) audio.loadSample&,tono5.*a%,'; asTono6 ) audio.loadSample&,tono6.*a%,'; asTono7 ) audio.loadSample&,tono7.*a%,'; asTono8 ) audio.loadSample&,tono8.*a%,'; asTono9 ) audio.loadSample&,tono9.*a%,'; asTonoAst ) audio.loadSample&,tonoAst.*a%,'; asTonoum ) audio.loadSample&,tonoum.*a%,'; asTonoA ) audio.loadSample&,tonoA.*a%,'; asTono! ) audio.loadSample&,tono!.*a%,'; asTono" ) audio.loadSample&,tono".*a%,'; asTono# ) audio.loadSample&,tono#.*a%,'; - %oid dra*&'( - %oid .e/0ressed&' ( if &.e/ )) 101 ' asTono0.tri22er&'; if &.e/ )) 111 ' asTono1.tri22er&'; if &.e/ )) 121 ' asTono2.tri22er&'; if &.e/ )) 131 ' asTono3.tri22er&'; DECODIFICADOR DE TONOS MT8870 PINGUINO 6 http566m icropin+uino. blo+spot.com if &.e/ )) 141 ' asTono4.tri22er&'; if &.e/ )) 151 ' asTono5.tri22er&'; if &.e/ )) 161 ' asTono6.tri22er&'; if &.e/ )) 171 ' asTono7.tri22er&'; if &.e/ )) 181 ' asTono8.tri22er&'; if &.e/ )) 191 ' asTono9.tri22er&'; if &.e/ )) 1a1 ' asTonoA.tri22er&'; if &.e/ )) 131 ' asTono!.tri22er&'; if &.e/ )) 141 ' asTono".tri22er&'; if &.e/ )) 1d1 ' asTono#.tri22er&'; if &.e/ )) 151 ' asTonoum.tri22er&'; if &.e/ )) 161 ' asTonoAst.tri22er&'; - %oid stop&'( asTono0.4lose&'; asTono1.4lose&'; asTono2.4lose&'; asTono3.4lose&'; asTono4.4lose&'; asTono5.4lose&'; asTono6.4lose&'; asTono7.4lose&'; asTono8.4lose&'; asTono9.4lose&'; asTonoA.4lose&'; asTono!.4lose&'; asTono".4lose&'; asTono#.4lose&'; asTonoAst.4lose&'; asTonoum.4lose&'; audio.stop&'; super.stop&'; -