Vous êtes ici : Accueil > Technique > Décodeur DTMF 6 canaux avec réponse en CW
Publié : 11 mars 2012

Décodeur DTMF 6 canaux avec réponse en CW

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