Caller ID Fundamentals

Traduit de l'article de Richard Newman ( ricardo@netcom.com ), Circuit CELLAR INK #69 Avril 1996

english version

Alors que les services d'identification de l'appelant deviennent populaires, on peut vouloir savoir comment rendre ces données accessibles aux ordinateurs.

Cette introduction décrit comment l'information est transmise, formatée et décodée.

 Le service de présentation du numéro tel qu'il est fourni par les compagnies de téléphone a été décrit comme l'application qui permettra de petites applications Windows à la maison et au bureau.

Alors que les boîtes Caller ID sont disponibles à près de 20 $ (aux Etats-Unis) chez les principaux distributeurs, il n'existe pas de telles interfaces Caller ID bon marché pour les PC.

La plupart des implémentations sont multi-lignes ou ajoutent des fonctions de sauvegarde qui augmentent le prix de manière significative.

Dans cet article, je présente un décodeur de l'appelant simple, pas cher, et opérationnel.

Vous pouvez connectez le fil du téléphone d'un coté et prendre l'autre pour recevoir les données séries juste comme si elles provenaient d'un modem.

Puisque les données sont délivrées en série, vous pouvez les utilisez avec le programme d'un modem standard fonctionnant en décodeur hexadécimal ou avec un programme particulier qui décode les données à partir des champs formatés uniformément.

Pour ce projet, j'utilise le MC145447P de Motorola (Calling line identification CID circuit with ring detector and colorburst crystal)

Ce circuit est bon marché ($2.60) et intègre une détection de sonnerie. Vous n'avez pas besoin de circuit externe pour déterminer si un appel arrive. Hélas en France les prix pratiqués sont tout autres: environ une centaine de Francs à l'unité.

Schéma de l'interface

LES BASES

Les données d'identification de l'appelant sont transmises depuis votre central téléphonique à votre téléphone immédiatement après la première sonnerie. Pendant ce temps la ligne téléphonique est 'on hook' et il n'y a pas de flux continu de données.

Les données sont transmises sur la ligne haute-impédance qui est juste chargée en AC par la sonnette du téléphone.

Puisque la compagnie de téléphone s'attend à voir un état de haute impédance sur la ligne, l'interface du récepteur CallerID doit récupérer le signal audio AC de la ligne téléphonique sans la charger.

DETAILS DU CIRCUIT

Le circuit Motorola MC145447 a une partie analogique qui s'interface à la ligne téléphonique par l'intermédiaire de 2 condensateurs de 47F / 200 V non polarisés en série avec 2 résistances de 10 kOhms .

L'entrée du circuit est différentielle. Pour cette raison il s'attends à décoder toute tension différentielle (AC) vue sur la ligne.

Les données transmises sont au format Bell 202, similaire au format utilisé par les vieux modems 1200 bauds avec 8 bits de données , pas de contrôle de parité et un bit de stop.

Le transfert est asynchrone, sériel et binaire.

Un 0 logique (space) est envoyé à 2200 Hz, tandis qu'un 1 logique (mark) est à 1200 Hz. [Fréquences aux Etats-Unis]

Cf. freqcli.htm pour la correspondance avec les fréquences utilisées en Europe.

Vous pouvez voire qu'il n'y a rien de spécial ou de propriétaire en ce qui concerne les données. Elles vous arrivent exactement comme votre PC les enverrait à son port série.

Si vous utilisez un DSP pour décoder le signal CID, l'amplitude typique dans le pire des cas du signal transmis est de -13,5 dBm depuis le central. L'acheminement (les fils qui parcourt la ville et finissent chez vous) introduit une autre atténuation de -20 dB.

Cette interférence signifie que le démodulateur du récepteur CID doit être capable de décoder un signal au pire de -34,5 dBm. J'ai choisi le circuit de Motorola parce qu'il satisfait à cette spécification.

Si vous regardez le schéma vous voyez que la ligne téléphonique arrive d'un coté du circuit récepteur CID et que les données sortent de l'autre coté avec un format inversé.

Si vous prenez cette donnée inversée et que vous la branchez sur un MAX232 cela inverse la donnée et la convertie au format RS232. A ce point vous pouvez brancher votre PC.

Quand les données CID sont décodées, elles sont présentées au PC dans un format presque lisible: vous pouvez voir le nom de l'appelant, le numéro de téléphone, l'heure et la date, avec quelques données en surcharge.

Puisque nous ne faisons pas une boîte autonome, mais une qui se connecte à un PC, j'ai éliminé l'économie d'énergie et la détection de sonnerie. Vous pouvez alimenter le projet avec un adaptateur secteur.

SIGNAUX DE SONNERIE 

Le récepteur CID est obligé de rester actif tout le temps parce que RDI1 et RDI2 sont maintenus à l'état bas et *RT est à l'état haut. Un circuit Reset standard fait de C3 et R5 fait que *PWRUP passe à l'état bas lorsque le circuit est mis sous tension.

Dans ce mode 'toujours actif' les données sortant de la patte DOC s'attendent à décoder tout signal sur la ligne téléphonique, incluant les tensions de sonnerie et occasionnellement les signaux DTMF pendant la composition des numéros sortant. Cette donnée apparaît comme du bruit.

Le circuit fait sortir un autre signal sur la patte *CDO qui est à 1 uniquement lorsque des données valides sont reçues. Le logiciel de votre système ignore tous les caractères reçues lorsque *CDO est à 0

Tant que *CDO est à 1, le logiciel enregistre tous les caractères reçus dans une file d'attente. Cette technique assure que la queue contiendra toujours des données exploitables.

J'ai trouvé nécessaire d'appliquer une résistance pull-up de 10kW pour que le MAX232 puisse recevoir les données correctement.

Quand vous recevez le message Caller ID, il peut dépasser 80 caractères et dans un des deux formats standardisés appelés fixe et variable.

 LE FORMAT VARIABLE 

Le format variable est un long paquet de données divisé en sous-paquets.

Les deux premiers caractères reçus dans les données commence par un 80 hexa. Le caractère suivant est le nombre de caractères total à transmettre.

Le sous paquets qui suit commence avec un caractère qui indique le type de sous-paquet (nom, numéro, date, heure, service) et le nombre total de caractères dans le sous-paquet.

Les sous-paquets types incluent:

0x01 : date et heure en format DDDDTTTT

0x02 : numéro appelant

0x07 : Nom de l'appelant

0x04 : Numéro Privé (confidentiel)

Le tableau 1 indique un exemple de paquet.

Votre logiciel doit détecter le caractère 0x80 et doit être capable d'accepter n'importe quel sous paquet après.

Il y a aucune garantie que les sous paquets arrivent dans un certain ordre.

Il y a d'autres types de sous paquets qui peuvent indiquer que le numéro est privé, 'Out of Range' ou Bloqué.

Typiquement, même si un sous paquet signifie privé ou bloqué, un numéro de paquet est aussi envoyé avec un caractère ASCII "P" ou "B" dans le premier caractère du champ du numéro. Le programme ne doit pas s'attendre à recevoir que des chiffres dans le champs du numéro.

Exemple de trame caller id

 Note: Toutes les informations données ici ont été vérifiées comme étant similaires au protocole utilisé par France Télécom. L'affichage du nom n'est pas encore disponible.


Retour à la page sur le Caller Id


Retour à la Page d'accueil

1 septembre, 2012 .

Email : matthieu.benoit@free.fr