Décodeur DTMF 6 canaux avec réponse en CW
Article mis en ligne le 11 mars 2012

par Jean-Michel

Dans le cadre d’un futur projet de relais APRS, je me suis penché sur la réalisation d’une commande à distance par tonalités DTMF.

Comme cahier des charges, je me suis fixé
 gérer jusqu’à 6 relais
 protéger les commandes par un mot de passe
 le décodeur doit pourvoir répondre en CW
 être capable d’envoyer son indicatif en CW
 la quasi totalité des paramètres doivent pouvoir être changés à distance
 utiliser un micro-contrôleur PICAXE

Comment ça marche ?

Le décodeur attends en bouclant à l’infini. Dès qu’une tonalité arrive, le micro-contrôleur la stocke et attends de nouveau jusqu’à la prochaine tonalité.
Lorsque que la tonalité qui vient d’arriver correspond à *, il considère que la séquence est finie et va chercher à la traiter.
La séquence sera d’abord vérifiée, et si elle est cohérente l’action demandé sera effectuée et la lettre K sera envoyée en CW. S’il y a un problème, un code numérique sera renvoyé en CW indiquant la nature de problème.

Comment ça s’utilise ?

En regardant ce qui se fait un peu à côté, j’ai opté pour la solution qui consiste à commencer une séquence avec un # et la finir avec *.
Une commande ressemble donc à #123425* où 1234 est le mot de passe, 2 est la commande et 5 le numéro de relais.

Ouvrir un relais : commande 1
syntaxe : #pppp1x* où
 pppp est le mot de passe
 1 est le chiffre qui correspond à "ouvrir le relais"
 x est le numéro du relais, de 1 à 6, 9 signifie tous les relais à la fois

Ouvrir un relais : commande 2
syntaxe : #pppp2x* où
 pppp est le mot de passe
 2 est le chiffre qui correspond à "fermer le relais"
 x est le numéro du relais, de 1 à 6, 9 signifie tous les relais à la fois

Obtenir une information : commande 3
syntaxe : #pppp3x* où
 pppp est le mot de passe
 3 est le chiffre qui correspond à "obtenir une information"
 x est le numéro de l’information demandée (1=indicatif ; 2=message utilisateur)

Régler un paramètre : commande 4
syntaxe : #pppp4x* où
 pppp est le mot de passe
 4 est le chiffre qui correspond à "positionner un paramètre"
 x est un numéro qui correspond à une action particulière sur les paramètres (2=désactiver le mot de passe, 3=activer le mot de passe, 4=désactiver la réponse en CW ; 5=activer la réponse en CW ; 8=appliquer les modifications ; 9 reboot du micro-contrôleur).

Il existe un cas particulier lorsque que x=1, là on peut changer les octets de la mémoire un à un pour changer l’indicatif, le message utilisateur, la vitesse CW ou même les temporisations. Dans ce cas la syntaxe est #pppp41aaavvv* où
 pppp est le mot de passe
 4 est le chiffre qui correspond à "positionner un paramètre"
 1 est un numéro qui veut dire écrirure direct dans la mémoire
 aaaa est l’adresse en décimal où il faut écrire, toujours sur 3 caractères
 vvvv est la valeur en décimal à écrire, toujours sur 3 caractères

Les fichiers

Voici les liens de téléchargement les schémas KiCAD.

KiCAD_DTMF_decoder
KiCAD_relay_card

NB : Les typons ne son pas optimaux, électriquement ils sont bons et fonctionnent tels quels mais l’implantation su régulateur 7812 et des transistors est à revoir.

Ci-dessous la documentation en anglais, notamment le mapping mémoire.

technical_doc

Et le plus important, le programme :

code PICAXE18M2
décodeur DTMF recto
carte relais recto
décodeur DTMF verso
carte relais verso
Le tout monté dans un boîtier

73’s
Jean-Michel F4CQG