Escudo Arduino UNO identificación de llamada telefónica (Caller ID)

 

Proyecto

 

          La idea es la construcción de un dispositivo que nos permita la identificación del número de teléfono de la llamada entrante por la linea fija de casa (Telefónica de España o cualquier otro operador) e integrarlo en un escudo para poder usarlo con Arduino (compatible con cualquiera de sus variantes, UNO, MEGA, etc...)

          Para ello lo primero es conocer la interfaz que utiliza Telefónica de España en sus lineas. Aqui os enlazo un manual con las características técnicas.

Características Técnicas de las Interfaces de TELEFONICA DE ESPAÑA, S.A.U.

          Baste saber que la información del llamante va modulada en frecuencia (FSK) entre el primer y segundo timbrazo y sigue el protocolo ETSI V.23. Para información mas detallada os enlazo el protocolo ETSI (en inglés)

Protocolo ETS 300 659-1

          Bien, ya sabemos como nos llega la información del llamante, ahora necesitamos un integrado que nos demodule esa señal y nos la convierta en algo que Arduino pueda entender. Para ello hemos seleccionado el integrado HT9032C de Holtek. Aqui su data sheet.

Holtek HT9032C

Esquema general del circuito HT9032C

          Con este circuito integrado y añadiendole unos pocos componentes obtenemos por un lado una detección de ring y por otro una transmisión serie a 1200bps con la información de la llamada entrante. Esta información contiene fecha, hora y numero del llamante que podemos transferir a nuestra Arduino bien por los puerto serie integrados o bien casi por cualquier pin a traves de SofwareSerial.

 

Usos y aplicaciones

 

          La aplicación práctica de este circuito está abierta a vuestra imaginación. Yo lo diseñé basicamente para el bloqueo de llamadas ocultas, léase, publicidad, a lo que después añadí una 'lista negra' de números una vez que dejaron de utilizar las llamadas ocultas. He de decir que gracias a ésto desde entonces puedo dormir la siesta con gran tranquilidad...

          Otras aplicaciones que se me ocurren son:

  • Derivación de llamadas a máquinas de fax que comparten linea sin molestos timbrazos (si es alguién sigue usando fax claro...)
  • Domótica. Dependiendo de la identidad llamante se activa/desactiva un dispositivo o se genera un proceso en Arduino.
  • Diseño de dispositivos para personas con problemas de visión u oido. Luz que se enciende al sonar el teléfono, display extragrande para mostrar el número, etc...
  • Datalogger para llevar un registro de llamadas recibidas.
  • Notificaciones en tu móvil de quien te ha llamado si estas ausente (con Arduino conectado a internet).
  • etc...

 

Componentes (Lote completo en eBay)

 

  1.           Placa prototipo Arduino UNO
  2.           (2x) Conector hembra RJ11
  3.           Conector hembra Arduino 6 Pines 11mm
  4.           (2x) Conector hembra Arduino 8 Pines 11mm
  5.           Conector hembra Arduino 10 Pines 11mm
  6.           Jumper
  7.           Conector macho 3 pines
  8.           Circuito integrado HT9032C
  9.           Zocalo DIP16
  10.           Cristal cuarzo 3,579545MHz
  11.           Puente rectificador 1kv 2A
  12.           (4x) Condensador cerámico 100nF 100v
  13.           (2x) Condensador cerámico 10nF 100v
  14.           (2x) Condensador cerámico 33pF
  15.           Resistencia 10 MegaOhmios 1/4w
  16.           Resistencia 470 KiloOhmios 1/4w
  17.           (2x) Resistencia 200 KiloOhmios 1/4w
  18.           (2x) Resistencia 20 KiloOhmios 1/4w
  19.           Resistencia 18 KiloOhmios 1/4w
  20.           Resistencia 15 KiloOhmios 1/4w

 

Montaje

 

Disposición de los componentes

Conexiones (cara de soldadura)

El resultado debe ser algo parecido a esto

          Revisa bien la conectividad con el multímetro. Es fácil que haya falsos contactos o soldaduras incompletas. Una vez estemos seguros, el escudo está terminado. Ahora vamos a probarlo.

 

Funcionamiento

 

          Conectamos el cable de la linea telefónica a RJ11(1) (el de los condensadores cerámicos) y el teléfono a RJ11(2). Con el jumper cerrado la linea pasa a la placa y al teléfono al mismo tiempo. Esto está pensado para interrumpir el paso hacia el teléfono en caso de que nos interese, por ejemplo con un relé controlado por Arduino y conectado a los dos pines del jumper.

          Hay que tener en cuenta que si el jumper está normalmente abierto y lo cierra Arduino tras analizar la identidad del llamante, el teléfono no recibira esta información pues ésta viaja sólo entre el primer y segundo timbrazo y no aparecerá en el display del teléfono aunque si sonará. Una posible solución sería silenciar el timbre del teléfono e imitarlo con nuestro Arduino a traves de un buzzer (altavoz) cuando nos interese. Incluso podríamos personalizar los tonos dependiendo de la identidad del llamante.

          La información del la llamada sale por los tres pines macho de la placa. Por el pin 1 (DOUTC) sale la señal serie a 1200bps con la informacion de fecha, hora e identidad del llamante. Este pin debemos conectarlo al RX del puerto serie de nuestro Arduino. Si no está disponible podemos usar SofwareSeial para desplazarlo a otro pin. Por el pin 3 (RDET) (Ring Detection) sale la información del timbre de la llamada. Ésta está invertida, es decir, HIGH (5V) -> no hay timbre, LOW (0V) -> timbre. Por el pin 2 (CDET) sale la información de la portadora, no es importante y podemos obviarla.

 

Contacto y resolución de problemas

callerid@ferduino.es