Arduino UNO como Sniffer Telefónico

Iniciado por ANTRAX, Diciembre 29, 2013, 05:44:13 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Diciembre 29, 2013, 05:44:13 PM Ultima modificación: Noviembre 11, 2014, 06:19:45 PM por ANTRAX
El circuito receptor DTMF para monitorear los tonos que se transmiten por la línea telefónica es el siguiente:


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

La conexión de los pines de salida del HT9170B/D a la placa Arduino UNO es la siguiente:

HT9170B/D --> Arduino UNO
D0(Pin 11) --> Arduino UNO (Pin 2)
D1(Pin 12) --> Arduino UNO (Pin 3)
D2(Pin 13) --> Arduino UNO (Pin 4)
D3(Pin 14) --> Arduino UNO (Pin 5)
DV(Pin 15) --> Arduino UNO (Pin 6)

El terminal con la etiqueta "Tone" se conecta directamente a un terminal de la línea telefónica y el otro terminal de la línea telefónica se conecta a GND.

La alimentación para este circuito se obtiene directamente de la placa Arduino UNO. Existe en dicha placa un terminal que provee 5V.


El circuito para conectar una tarjeta Micro SD a la placa Arduino UNO es el siguiente:


Los pines 10, 11, 12 y 13 corresponden a los pines de la placa Arduino UNO.
La alimentación para este circuito se obtiene directamente de la placa Arduino UNO. Existe en dicha placa un terminal que provee 3.3V.
Este circuito lo construí sobre un adaptador Micro SD a SD como se puede observar en la siguiente imagen.


Con ambos circuitos armados procedemos a interconectar las tres placas como se observa en la siguiente imagen.


Habiendo interconectado exitosamente las tres placas procedemos a escribir el programa cuya función será leer el estado de las 5 entradas (Pin 2 a Pin 6) y almacenar el valor obtenido a un archivo de texto en la tarjeta Micro SD.

Antes de continuar la lectura recomiendo ver la Tabla de Códigos DTMF


Código: c
#include <SD.h>

File myFile;
byte digit;

void setup()
{
    pinMode(2, INPUT); //D0
    pinMode(3, INPUT); //D1
    pinMode(4, INPUT); //D2
    pinMode(5, INPUT); //D3
    pinMode(6, INPUT); //DV
    pinMode(10, OUTPUT); //SD Card SS
   
    if (!SD.begin(10))
    {
        return;
    }
}

void loop()
{
    while(digitalRead(6) == LOW)
    {
        ;
    }
   
    digit = 0;
   
    if (digitalRead(2) == HIGH)
    {
        digit = digit + 1;
    }
    if (digitalRead(3) == HIGH)
    {
        digit = digit + 2;
    }
    if (digitalRead(4) == HIGH)
    {
        digit = digit + 4;
    }
    if (digitalRead(5) == HIGH)
    {
        digit = digit + 8;
    }
   
    myFile = SD.open("log.txt", FILE_WRITE);
   
    if(myFile)
    {
        myFile.print(digit);
        myFile.print("-");
        myFile.close();
    }
   
    while(digitalRead(6) == HIGH)
    {
        ;
    }
}


Lógicamente es perfectible y cada uno puede adaptarlo a sus necesidades particulares.

Autor: Hardrive9000