Electronique > Réalisations > Télécommandes > Télécommande 006b

Dernière mise à jour : 10/06/2012

Présentation

J'ai conçu et réalisé ce système pour piloter ma station de travail (Cubase / Protools) depuis ma petite cabine speak, à travers un câble audio symétrique standard. Le cahier des charges était le suivant :
La tension véhiculée vers la cabine (12 V) sert aussi pour l'ampli casque (alim 9 V) et le vumètre (alim 5 V) situés dans le boîtier de télécommande.
Comme la longueur de la liaison entre cabine et station de travail est assez conséquente (plus de 10 mètres) et parce qu'un des deux fils de modulation du câble symétrique est réservé à l'alimentation des circuits électroniques, il ne reste qu'un seul fil de libre pour le transport des ordres de commande. Exit donc l'idée d'utiliser une liaison symétrique en courant de type RS485 (comme pour le DMX). Avec une liaison RS232 standard, il est raisonnable de ne pas dépasser 10 mètres de câble à 19200 bauds, alors avec une liaison MIDI qui va deux fois plus vite.... J'avais pensé au départ utiliser un transport avec une porteuse HF d'environ 500 kHz modulée par les données MIDI, mais j'ai changé d'avis en cours de route (pour les curieux : ancien synoptique et ancien schéma). Mon choix s'est finalement porté sur une solution de télécommande avec deux parties, un émetteur (dans cabine) et un récepteur (vers station de travail) tous deux dotés d'un petit microcontrôleur PIC 16F628A. J'étais peu enclin au début à utiliser ce principe, mais j'ai craqué. Ca m'a donné l'occasion de travailler sur une double liaison série dans un seul et même PIC standard : 2400 bauds pour la liaison entre les deux modules, et 31250 bauds pour les commandes MIDI. 

Synoptique général

L'idée de départ est d'utiliser un même câble audio symétrique pour transporter l'alimentation continue (sur un premier fil) et les données à transmettre (sur un second fil). Sur le synoptique qui suit, on ne montre que deux liaisons sur les trois, celle du microphone n'est pas représentée. La liaison du haut correspond au retour audio (casque et vu), la liaison juste en dessous permet la livraison de l'alimentation (+12V) et des données de télécommande (Data).

telecommande_006b_syno

Alimentation
La tension d'alimentation de +12 V est véhiculée entre le fil "point chaud" (broche 2 de la XLR) et la masse (broche 1 de la XLR). Cette tension de +12 V est utilisée pour l'ampli casque, et une régulation +5 V locale est assurée sur place, dans le boîtier de télécommande, pour les circuits de commandes de transport et vumètre. Le circuit qui consomme le plus de courant est l'ampli casque, mais de façon relativement modeste tout de même (on s'en tient à quelques dizaines de mW dans les écouteurs). Ensuite vient le circuit vumètre, mais là encore de façon assez modeste puisqu'il dispose d'un affichage multiplexé. Tout ceci pour dire que la perte de tension induite dans le câble de modulation sera modéré et non gênante. Un bon découplage par condensateur à l'arrivée, suivi d'un régulateur de tension pour les circuits "sensibles", et hop ! on n'en parle (presque) plus.

Commandes de transport
Les commandes de transport se font via des commandes MIDI MMC. L'émetteur de télécommande envoie des ordres simple au récepteur, à une vitesse lente de 2400 bauds. A cette vitesse-là, pas de soucis avec mes 15 mètres de câble. Le récepteur "transforme" ensuite ces données simples par des commandes MIDI de type RT (Temps Réel) et MMC (MIDI Machine Control). Le principe est simple et ne demande au final que peu de matériel et de logiciel.

Schéma

Le schéma qui suit représente les deux parties émission (côté station de travail) et réception (côté cabine) de la télécommande. Pour les circuits ampli casque et vumètre, voir respectivement Ampli casque 008 et Vumètre 012c (c'est ceux que j'ai utilisés).

telecommande_006b

Tous les composants représentés sur ce schéma ne sont pas au même endroit physiquement. Vous allez bientôt comprendre pourquoi, si ce n'est pas déjà le cas.

Emetteur (côté cabine)
Un PIC 16F628A (circuit intégré U1) se voit confier la tâche de délivrer des commandes simples à partir de boutons poussoir. A chaque appui sur un bouton poussoir correspond un code unique, matérialisé par un octet unique (8 bits). Ces octets sont transmis vers le récepteur à une vitesse lente de 2400 bauds. Il peut sembler surprenant d'adopter un quartz de 8 MHz pour l'envoi de données aussi peu véloce. La raison est simple, je réalise de plus en plus de montages à base de PIC et ces derniers sont le plus souvent cadencés à partir d'un quartz de 8 MHz. Parfois c'est du luxe mais j'assume. Les huits boutons poussoir sont répartis sur les ports A et B du PIC. Une résistance de rappel à l'état bas (pulldown) est ajoutée sur chaque ligne de commande. Ces résistances auraient pu être supprimées côté port B, en utilisant le pullup interne. Mais comme j'avais l'intention d'utiliser un réseau de résistances, je me suis laissé entraîner par la simplicité. Vous n'êtes pas obligés de suivre mes bêtises. Le circuit intégré U3/SN74244 sert d'interface entre le PIC et la ligne de transmission. Ce circuit, qui est un driver de ligne, est capable de délivrer de bonnes dizaines de mA et ne se plaint pas trop d'une charge capacitive élevée, surtout sous un débit de transmission modéré. Il est normalement plus robuste que la sortie d'un PIC. Enfin je l'espère, je vous raconterai. La moitié seulement de ce circuit est utilisée, l'entrée de validation de l'autre moitiée (broche 19) est reliée à la masse. La LED D1 connectée sur la broche RA4 de U1 s'allume brièvement quand on appuie sur un des boutons de commande.

Récepteur
C'est le machin qu'au départ je ne voulais pas faire comme ça. On dit qu'il n'y a que les imbéciles qui ne changent jamais d'avis. Vous pensez bien, ce n'est pas tombé dans l'oreille d'un sourd. Les données transmises à faible vitesse par le premier PIC atterrissent sur le transistor Q1, qui assure une sorte d'interface de protection. En tout cas, je me suis dit que ça pouvait jouer ce rôle. Les données de commande qui arrivent sur la base de ce transistor en ressortent sur l'émetteur car le coquin est câblé en collecteur commun, que les intimes appellent aussi montage suiveur. Le condensateur C3 absorbe les petits pics de tensions qui apparaissent des fois, mais ne suffirait pas pour une descente directe de foudre. Les données ainsi récupérées, amputées de quelques centaines de mV, arrivent sur la broche RA1 du PIC U2, qui est configurée en entrée et qui sert de "récepteur RS232". Le logiciel du PIC U2 travail en interne avec deux UART (un UART est un module pour envoi et réception de données sous forme série) :
- un UART logiciel qui réceptionne les commandes simplifiées venant du premier PIC U1 et qui arrivent à la vitesse de 2400 bauds sur la broche RA1/AN1;
- un UART matériel mis à profil pour générer les données MIDI à la vitesse de 31250 bauds, qui sortent sur la broche RB2/TX.
Ici, aucun soucis pour faire travailler les deux car ils ne fonctionnent pas en même temps. L'UART matériel n'est requis qu'à la réception des données de commande. De toute façon, l'UART logiciel ne travaille pas en "tâche de fond" et il est de type "bloquant". Ce qui signifie que le programme reste en attente de réception de commande et ne fait rien d'autre en attendant. Les choses sérieuses ne se produisent qu'une fois un octet de commande reçu. A vrai dire, je le savais avant de commencer. La LED D1 s'allume en cas d'erreur détectée lors de la réception de données. Ca, je l'ai su après.

Accusé de réception des ordres
J'ai pensé ajouter un accusé de réception des commandes, avec émission de sonorités bien différentes pour chaque commande principale (REC, STOP, START). Et comme j'y ai pensé, j'en ai profité pour le faire. La sortie RB7 du PIC U2 délivre des petites notes de musique sur réception des commandes, pour confirmer que les top départ lancés depuis la cabine sont bien arrivés au récepteur. L'insertion de ces petits sons se fait par injection sur les fils de ligne audio qui ramène la modulation dans la cabine. Il ne s'agit pas d'accusés d'action, puisque je ne vérifie pas si le logiciel d'enregistrement à bien réagi. Mais c'est toujours mieux que rien. Je (re)précise que ces accusés sonores ne sont utiles que quand je suis seul et que je joue en même temps le rôle de technicien son et d'interprète. Quand j'enregistre quelqu'un d'autre, ce retour sonore est totalement inutile.

Alimentation
Un transformateur d'alimentation 230 V / 9 V délivre une tension de 9 Vac. Vous y croyez, vous ? C'est pourtant vrai, à condition bien sûr qu'on le branche et dans le bon sens. Les 9 Vac (ac = alternatif) arrivent sur un pont de diodes constitué de D2 à D5 et sont filtrés par le condensateur C6 de 470 uF. La tension continue obtenue en ce point est de l'ordre de 12 Vdc (dc = continu). C'est cette tension (non régulée) qui est véhiculée dans la ligne "point chaud" du câble de liaison principal. Un régulateur intégré de type LM7805 est utilisé pour chacun des deux PIC. U4 pour le PIC de l'émetteur et U5 pour le PIC du récepteur. Un troisième régulateur de même type est utilisé pour le vumètre, qui conserve son autonomie. L'ampli casque se connecte directement sur la ligne +12 V, il n'a pas droit à un régulateur mais dispose tout de même d'une bonne cellule de découplage locale car la ligne d'alim est tout de même bien longue. Oh, un détail. Comme je n'avais plus de transfo de secondaire 9 V en stock, j'en ai pris un de 12 V. La tension redressée et filtrée est plus proche de 18 V que de 12 V mais ça ne me pose pas de problème. D'une part parce que la consommation des circuits émetteur et récepteur est faible et que les régulateurs de tension intégrés 7805 n'ont pas trop de puissance à dissiper, et d'autre part parce que mon ampli casque peut survivre à un tel débordement.

Prototype

Réalisé en deux étapes : premières vérifications avec ma platine EasyPic7 (débugage), puis proto installable.

telecommande_006b_proto_001a

Proto 001 - Vérifications générales / débugage (tests Tx et Rx séparés)
Pour les tests de ces deux parties de la télécommande, j'ai utilisé mon logiciel ComTools associé à une interface matérielle USB/RS232 et configuré en 2400 bauds / 8 bits Data / 1 bit Stop (sans aucun contrôle de flux).
Test partie émetteur (Tx) - J'ai relié la sortie RB2/TX du PIC "U1" au convertisseur RS232 présent sur la carte EasyPic7 (via cavalier et microswitch adéquats). J'ai ainsi pu établir une liaison RS232 standard entre le circuit à tester et mon PC sur lequel tournait ComTools. La petite platine sans soudure qu'on voit sur la photo n'était là que pour la LED câblée sur la broche RA4 du PIC et qui clignote rapidement dès qu'on appui sur un des boutons de commande. J'ai pu vérifier avec cette installation rapide que les données envoyées étaient correctes.
Test partie récepteur (Rx) - J'ai procédé de même pour la partie réception, à savoir câblage de la sortie du convertisseur RS232 présent sur la platine EasyPic7 vers l'entrée idoine du PIC "U2". Seulement problème, on a le choix entre 8 broches possibles pour les liaisons RS232 "hard", mais le routage vers la broche RA1 n'est pas prévu. Qu'importe, le temps des tests, j'ai routé les commandes non pas vers RA1 mais vers RB5. Tout fonctionne comme prévu.

Proto 002 - Réalisation des platines et tests complets (Tx + Rx)
Me reste à faire les tests complets qui ne seront possibles qu'une fois tous les circuits réalisés et installés. C'est en cours de construction, sur des petites plaques d'expérimentation à pastilles. Pour l'instant j'ai fini la partie émission dans le boîtier cabine, avec le vumètre et l'ampli casque.

telecommande_006b_proto_002a telecommande_006b_proto_002b telecommande_006b_proto_002c telecommande_006b_proto_002d

Pour le circuit vumètre, j'ai imprimé un gabarit, histoire de faire au plus droit possible. Un petit coup de pointe de fer à souder pour marquer l'emplacement du foret, et hop.

telecommande_006b_proto_002e telecommande_006b_proto_002f telecommande_006b_proto_002g telecommande_006b_proto_002h

Mais le plastique, vous savez ce que c'est... Et comme je n'ai pas retrouvé de potentiomètre stéréo dans mon chantier, j'en ai installé deux simples pour le volume casque. Oui, je sais... Bon eh bien c'est l'heure de la mise sous tension. Un petit 9 V limité à 100 mA pour commencer, le vumètre s'initialise correctement, l'ampli casque ne ronfle pas et fonctionne même bien, et le PIC tourne comme lors des premiers tests. Ah si, un tout petit soucis : un des deux potentiomètres de volume casque crachote un tout petit peu. Je sais ce qu'il faut faire dans tel cas de figure (j'ai le choix entre trois options : tout jeter et recommencer à zéro, changer le potentiomètre ou le nettoyer). Maintenant, réalisation et mise en boîte du récepteur.

telecommande_006b_proto_002i telecommande_006b_proto_002j telecommande_006b_proto_002k

A l'initialisation, le récepteur délivre bien ses signaux MIDI "test" (Note On / Off brève) et la petite LED câblée sur la broche RA4 clignote comme attendu. Cool, on peut continuer les tests sérieusement et installer le tout à l'endroit prévu. Télécommande dans la cabine :

telecommande_006b_proto_002n telecommande_006b_proto_002m

Alors, tout fonctionne ?
Maintenant oui ;-)
Il m'a fallu régler deux petits ennuis :
J'ai effectué quelques relevés à l'oscilloscope des données transmises. On retrouve en bout de chaîne (côté récepteur) un signal de commande dont l'amplitude est plus proche de 4 V que de 5 V et voisin de 3,5 V après le transistor d'entrée Q1 (sur son émetteur). C'est encore amplement suffisant pour une interprétation correcte des niveaux haut et bas en logique TTL.

Tests avec Cubase
Ca fonctionne aussi, après avoir placé Cubase en mode "Esclave MMC" (Transport / options de synchronisation, ID device à la valeur 0).

telecommande_006b_proto_002l

J'ai du apporter une petite modification au logiciel de la télécommande côté récepteur. Pour lancer l'enregistrement, je devais appuyer sur le bouton REC puis sur le bouton START de ma télécommande pour (1) activer et (2) démarrer l'enregistrement. Comme je voulais que ces deux opérations (1) et (2) se fassent avec appui sur un seul bouton, j'ai créé une nouvelle commande où j'ai regroupé les deux actions. Mon bouton REC principal envoi désormais à la suite les messages MIDI REC et START. Avantage de faire soi-même, on sait où modifier et en l'occurence ici c'est super simple à faire. J'ai toutefois conservé les deux commandes séparées. Côté routages audio depuis et vers cabine, pas de difficulté majeure... mais un grand besoin de feuilleter quelques pages du manuel utilisateur. C'est la première fois en effet que j'utilise vraiment la fonction de Control Room de Cubase, avec tout ce que cela implique...
Un détail mineur : en câblant la sortie MIDI Out de ma télécommande sur l'entrée MIDI In de mon interface audio (RME FireFace 800), je me suis d'un seul coup souvenu que je n'avais qu'une seule entrée MIDI. Bref, achat vite fait d'un merger MIDI pour continuer d'utiliser mon clavier maître (Roland D50) en même temps que la télécommande.

Logiciel du PIC

Les fichiers code source (Mikropascal V5.30), assembleur (*.asm) et binaire compilé (*.hex) des deux parties émetteur et récepteur sont disponibles dans l'archive dont le lien suit. 
Télécommande 006b - PIC 16F628A - 10/06/2012
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

Non réalisé.

Historique

10/06/2012
- Première mise à disposition.