Un Sniffer DTMF

Pour afficher les codes envoyés sur la ligne 600 Ohms .

A quoi ça sert ?

      Touts appareils reliés à une ligne téléphonique filaire, que se soit le vieux téléphone à clavier de la maison, l'alarme reliée à un transmetteur GSM, la télésurveillance du bâtiment et de l'ascenseur ou le Vigigard de la mamie, utilisent des codes DTMF (Dual Tone Multi Frequency) pour "chiffrer" les numéros appelés. Ce sont deux fréquences combinées et émises simultanément qui correspondent à chaque touche du clavier : de 0 à 9 et également le dièse (#) et l'étoile (*) . A part une oreille experte et entraînée, je met au défit qui que ce soit d'attribuer une valeur par reconnaissance de ces sons superposés ... et pourtant, il peut être utile de savoir quelle sont les numéros composés, surtout si c'est un appareil qui les compose .

      La petite boîte ci-dessous, permet d'espionner ces fréquences, et de les afficher sous forme numérique sur un afficheur a cristaux liquides 4 lignes 16 caractères, pour les visualiser et en apprécier la conformité par rapport à ce que l'on attend . On peut en faire un usage moins délicat en l'utilisant comme espion sur une ligne téléphonique car il est possible d'enregistrer tout ce qui est composé sur cette ligne  !  Une liaison série RS232 (9600, 8,1,N) peut rediriger les chiffres capturés vers un terminal ou un PC pour un stockage et traitement des données .

      Pour alimenter le sniffer, on a trois possibilités : Sur piles, avec 6 de type AA 1,5 volt ( c'est une bonne option pour la portabilité sur des chantiers où il n'y a pas toujours une source d'énergie. Sur batteries rechargeables dans le même logement que les piles, en lieu et place de celles-ci ( un jumper, lorsqu'il est enfiché, permet la recharge des accus). Et sur secteur, via un bloc secteur qui nous sort 9 Volts DC pour la recharge des batteries et l'alimentation de l'électronique.

      Un interrupteur miniature à trois positions permet de choisir entre l'arrêt, la marche avec rétro éclairage de l'afficheur, ou normalement pour économiser les accus et accroitre la longévité de la décharge. Un boîtier avec couvercle transparent, accueille et protège  tout ce qu'il y a sur ce circuit .

A quoi ça ressemble ?

Dtmf

 

 

Comment ça marche ?

      Commençons la visite du schéma par la partie en haut à gauche. Le 9 volts DC arrive sur le connecteur a vis X2-1 et X2-2 et passe par la diode anti-retour D3 (1N4004 ) pour aller sur le plot commun de l'interrupteur. Les piles ou les batteries sont raccordée sur le bornier X2-3 et X2-4 pour aller également sur le commun du même interrupteur, en passant par une diode D4 qui envoie le courant d'alimentation vers l'électronique et qui le stop en cas de remontée vers les accus. Si accus il y a, le cavalier JP1 doit être enfiché pour permettre au courant de venir les recharger en passant par le résistance de limitation R13.

      L'interrupteur 3 positions aiguille l'alimentation vers le régulateur seulement, ou le régulateur et les diodes leds de rétro-éclairage de l'écran . La Diode D1 (1N4004) assure l'exclusivité du choix . Un régulateur intégré abaisse et stabilise la tension à 5 volts . Les condensateurs C10 et C13 limites les transitoires et oscillations résiduelles engendrées par le fonctionnement du 7805. Des capas de stabilisation (0,1µF) sont  le plus près possible des bornes d'alim VSS et VCC de chaque circuit intégré .

Dtmf sch

      La paire 600 Ohms arrive sur le connecteur J1, puis est séparée en impédance, pour ne pas perturber la ligne, et isolation par le condensateur C1 (0,1µF/250v car les signaux de sonnerie d'appel sont à plus de 90 volts alternatif ) et la résistance R13 pour en adapter la tension à une valeur acceptable par le circuit intégré CM8870CP . Ce dernier reçoit une double fréquence, la compare à des références étalons générées par un PLL (boucle à verrouillage de phase ) et diviseur piloté par un oscillateur à quartz Q2 (3,58 MHz  ) , et de cette comparaison sont attribués des mots de quatre bits en parallèle, validés par une impulsion de strobe lors de la présence effective et stabilisée de ce demi octet ...

      Ce mot est présenté ensuite à un PIC 16F88 qui va reprendre deux fonctions essentielles pour la suite : la transformation en caractères ASCII, pour les envoyer d'une part à l'afficheur et de l'autre en transmission série vers le driver RS232 (Max232), dont le rôle se limite, dans ce cas là, a reprendre les signaux série 5volts issus du PIC (RB7) et à les mettre au standard RS232 (+/- 12 volts) par charge / décharge, et mise en série des condensateurs de 1µF (C3,4,5,6). La liaison est disponible sur une DSub 9 broches . 

      Un écran LCD rétro éclairé à 4 lignes de 16 caractères affiche les chiffres composés sur la ligne . On lui envoie 4 bits sur ses entrées D3 à D7, une information RS qui lui dit si c'est une instruction ou un caractère et une validation E lorsque le mot présenté est acceptable . Une résistance ajustable R4 (10K) règle le contraste des caractères et une autre fixe R5 (89 Ohm), pour limiter le courant dans les leds du rétro éclairage .

      

La réalisation:

      Tous les composants sont montés en "traversant" sur un circuit imprimé double face.  Le nombre des straps devenant trop nombreux, je me suis risqué a essayer les circuits deux couches : J'en ai réalisé le tracé avec une version 4 d' Eagle Cadsoft et c'est un industriel qui a fabriqué le CI ... Rien de particulier si ce n'est un connecteur d'extension (JP2) que j'ai inclus au cas où je souhaiterais y ajouter quelque chose du genre composeur automatique de numéros prés enregistrés ( mais je n'en ai pas eu l'utilité ). Quand je réalise mes circuits simple face, je "repastille" les trous de manière à avoir de la surface pour y déposer la soudure ; là, j'ai laissé les perçages à 0,8 car c'est des trous métallisés à manchon traversant pour assurer la liaison entre les deux faces . Les fichiers pour le tracé sont dans le zip plus bas . 

Dtmf cmp

Dtmf bot

Dtmf top

 

La liste des composants:

Part     Value                      

C1       0,1µF/250 
C2       0.1µF     
C3       1µF         
C4       1µF            
C5       1µF                                    
C6       1µF                                
C7       22pF                                  
C8       22pF                                
C10      0.1µF                              
C11      0.1µF                                
C12      0.1µF                                
C13      0.22µF                             

D1       1N4004                
D3       1N4004                   
D4       1N4004                                

IC1      PIC16F84AP         
IC2      MAX232            
IC3      7805              

LCD1     LCD_4X16            MC1604BW_SYL lcd_4x16_backlight       

Q1       4MHz               
Q2       3.58MHz            
R2       100k              
R3       330k               
R4       10K                TRIM     pot                     
R5       89                 
R7       1K                 
R10      100K             
R13      1K/1W             
S1       switch                   
U$2      CM8870CP           CM8870CP           DIL18        california-micro-devices 

X1         con-subd  

X2        AK300/4 

Un coup d'oeil sur le programme :

      Le programme est développé sous Flowcode en version 4 . Une boucle principale et deux onglets de sous-programme. La boucle principale démarre par un setup qui initialise le LCD avec une bibliothèque appelée pour cette fonction avec une page de présentation et copyright. Puis on tourne sur une boucle infinie qui ne sort de sa léthargie par une interruption, en flanc montant, sur le port RB0, ce qui appelle la macro nommée 'Affichage '.

      Dans cette macro, un compteur s'incrémente en fonction du nombre de caractères reçus, et effectue une tabulation du curseur pour la 'mise en page', suivant le type d'afficheur utilisé. Le caractère est écrit à la bonne place, après l'appel de la macro "Data_Receive" qui va capturer le port A,  le convertir en ASCII, l'afficher à la bonne place et le transmettre également sur le port série via RB7 ...

      Puis on retourne dans la boucle principale pour attendre un nouvel événement ...

 

Et tout ce dont on a besoin pour la réalisation, dans le fichier Zip:

DtmfDtmf (83.22 Ko)

 

      Un outil bien utile lorsque l'on a à faire de la mise en service de systèmes d'alarme, de télésurveillances, d'appels de numéros en grand nombre, ou de télémarketing pour justifier des appels envoyés ... . 

 

Ajouter un commentaire