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 ?
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é .
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 .
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:
Dtmf (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