Archivos para junio, 2013

Hace aproximadamente un mes compartí con ustedes la primera versión de este sniffer utilizando como base de desarrollo la placa Arduino UNO. Si bien es completamente funcional, el diseño no es reducido y podría dificultar la instalación en ciertos lugares estratégicos, como en el interior de las cajas de interconexión instaladas por las empresas proveedoras del servicio de telefonía.

Changelog:
* Arduino Pro Mini (3.3V – 8Mhz) como base de desarrollo.
* Modificaciones en el circuito Receptor DTMF.
* Modificaciones en la conexión del Adaptador SD.
* Modificaciones en el código fuente del programa.

El circuito receptor DTMF para monitorear los tonos que se transmiten por la línea telefónica es el siguiente:

HT9170B/D Datasheet

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

HT9170B/D –> Arduino Pro Mini
D0(Pin 11) –> Arduino Pro Mini (Pin 2)
D1(Pin 12) –> Arduino Pro Mini (Pin 3)
D2(Pin 13) –> Arduino Pro Mini (Pin 4)
D3(Pin 14) –> Arduino Pro Mini (Pin 5)
DV(Pin 15) –> Arduino Pro Mini (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 Pro Mini. Existe en dicha placa un terminal (VCC) que provee 3.3V.

Ver Receptor DTMF

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

Este circuito lo construí sobre un adaptador Micro SD a SD. Como puede observarse, ahora la conexión es directa.

Los pines 10, 11, 12 y 13 corresponden a los pines de la placa Arduino Pro Mini.
La alimentación para este circuito se obtiene directamente de la placa Arduino Pro Mini. Existe en dicha placa un terminal (VCC) que provee 3.3V.

Con ambos circuitos armados procedemos a interconectar las tres placas e instalarlas en una caja señuelo como se observa en la siguiente imagen.

Ver Arduino Pro Mini + Receptor DTMF + Adaptador SD

Si bien en la imagen las placas y conexiones se encuentran libres, las mismas ser fijadas debidamente empleando un pegamento no abrasivo, precintos, cinta bifaz, etc.

La alimentación para el conjunto la proporciona una batería Ultrafire TR18650 Li-ion 3.7V 4900mAh. El terminal positivo se conecta al terminal RAW de la placa Arduino Pro Mini y el terminal negativo se conecta a GND. Recomiendo imperiosamente la instalación de un interruptor SPST en la línea de alimentación.

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.

#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)
	{
		switch(digit)
		{
			case 10:
				myFile.print("0");
				break;
				
			case 11:
				myFile.print("*");
				break;
				
			case 12:
				myFile.print("#");
				break;
				
			default:
				myFile.print(digit);
		}
		
		myFile.print("-");
		myFile.close();
	}
	
	while(digitalRead(6) == HIGH)
	{
		;
	}
}

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