Dernière mise à jour :
14/04/2024
Présentation
Cette
télécommande
permet d'activer à distance le mode d'enregistrement d'un caméscope,
selon le protocole LANC de Sony.
Le circuit est basé sur un microcontrôleur PIC d'entrée de gamme et peu
coûteux, le 16F1827. Deux versions ont été étudiées :
-
Schéma 013 : 6 commandes distinctes, PCB 58x38 mm avec composants majoritairement traversants
-
Schéma 013b : 2 commandes distinctes, PCB 44x21 mm avec composants montés en surface (CMS)
Le logiciel du PIC repose strictement sur les mêmes bases pour les deux versions.
Utilisations possibles
Une télécommande de
ce type permet de déporter les ordres d'activité d'un caméscope, tels
que démarrage ou arrêt de l'enregistrement. Si à la base on peut se
contenter de simples boutons-boussoirs éloignés de la caméra pour
rendre plus souple son exploitation (utile si la caméra est posée en
hauteur sur un trépied), on peut tout aussi bien envisager un mode
d'enregistrement automatique lors de la captation d'un son (dans un
cadre de vidéosurveillance, par exemple). Dans ce second cas, il
convient simplement d'ajouter un détecteur sonore et bien sûr d'adapter
le logiciel de la télécommande pour définir son mode d'action (par
exemple démarrer l'enregistrement lors de la détection d'un bruit et
arrêter l'enregistrement après 30 secondes d'absence de son).
Avertissement
La télécommande décrite ici convient pour des caméscopes dotés d'une
prise de
télécommande LANC. Elle n'est pas adaptée pour les camescopes les plus
récents dotés
d'une fonction de télécommande par bus USB ou Ethernet.
Important
: je n'ai pas testé cette télécommande sur un large panel de caméscopes
et ne peut bien sûr pas garantir qu'elle fonctionne avec tous.
Schéma
Quelques composants classiques ont été ajoutés au microcontrôleur, pour
compléter un schéma qui aurait été trop simple sans.
Les fonctions implémentées sont les suivantes :
- SW1
: Record On/Off (mode camera)
- SW2
: Record (mode Edit)
- SW3
: Play (mode Edit)
- SW4
: Pause (mode Edit)
- SW5
: Stop (mode Edit)
- SW6
: Display On/Off (modes Camera
et Edit)
Ces
fonctions peuvent bien entendu être modifiées pour répondre à d'autres
besoins (modification et recompilation du code logiciel requises).
Fonctionnement général
-
Préliminaires...
Cette
télécommande s'appuie sur le protole LANC de Sony, également
exploité sur des camescopes ou caméras d'autres fabricants. Dans le cas
qui nous concerne, nous exploitons une embase mini-jack stéréo 2,5 mm
présente sur le caméscope, qui permet à la fois le transport de données
numériques et l'alimentation d'un appareil externe pas trop gourmand.
Pour faire
bref, le protocole LANC (dans sa forme d'origine non étendue) prévoit
l'émission de trames régulières de données sur un seul fil qui peut faire
office d'émission et
de
réception (pas les deux à la fois). Pour permettre ce mode émission/réception sur un seul et
même fil, les équipements qu'on raccorde (ici un caméscope et une
télécommande) doivent tous deux disposer d'une interface de type
"transistor à collecteur ouvert" (ou "drain ouvert"). Au repos, les
transistors situés aux deux extrémités sont bloqués (ouverts) et la
ligne de donnée est portée à un état logique haut grâce à une
résistance de rappel (pullup).
Quand un des deux appareils (caméscope
ou télécommande) parle, il "court-circuite" ou "libère" la ligne de
données grâce à son transistor qu'il fait respectivement conduire
(qu'il sature) ou qu'il bloque (qu'il ouvre). Bien sûr, il ne faut pas
que l'autre appareil discute aussi à ce moment là, sinon c'est un sacré
chantier sur la ligne de données et rien ne fonctionne (notez que ce
cas de figure est sans danger - sans conséquence physique -
pour les matériels).
Dans notre cas, c'est le caméscope qui est le
maître et impose le rythme des échanges avec l'esclave (la
télécommande). Il envoie des trames de données à raison de 8 octets
toutes les 20 ms (pour une vidéo au format PAL, la période est plus
courte pour une vidéo au format NTSC).
Une des particularités
du protocole LANC réside dans l'instant où l'on doit placer les données
quand on veut envoyer un ordre au caméscope : il faut le faire lors de
la transmission des quatre premiers octets délivrés par le caméscope.
C'est en effet le seul moment où on peut s'adresser à lui, les quatre
octets suivants transportent les octets d'état du caméscope et il ne
faut pas y toucher. En
réalité, deux octets (sur les quatre prévus à l'origine) suffisent pour
transmettre un ordre au caméscope (par exemple $18 et $33 pour activer
l'enregistrement).
La tâche la plus délicate dans la
réalisation d'une télécommande compatible LANC réside dans le
positionnement temporel des données à inscrire sur la ligne de données,
pour être sûr que le caméscope les considère comme valide. Pour
commencer, il faut détecter le moment précis où arrive le premier octet
de la trame transmise par le caméscope, car c'est à ce moment précis
qu'il faut envoyer le premier octet lié à la commande qu'on veut
transmettre. Ensuite, il faut détecter le moment précis où arrive le
second octet de la trame, car c'est ici qu'il faut
envoyer le
second octet de la commande à transmettre.
Il n'est pas très
difficile de détecter l'arrivée du premier octet, car on le
trouve après une pause d'environ 10 ms sur la ligne de données
(pendant ces 10 ms de pause, aucune activité n'a lieu et la ligne reste
à l'état logique haut). Pour la détection du second octet, il suffit de
localiser le bit de start suivant la transmission du premier octet, qui
survient environ 1,25 ms plus tard.
Transmission des données
Une fois que le logiciel du PIC a déterminé avec précision
l'instant où
les données doivent être transmises au caméscope, il les délivre sur la
ligne RB1 configurée en sortie. Ces données aboutissent au transistor
Q1 qui est utilisé en configuration collecteur ouvert et met à
zéro la ligne
de données LANC quand il le faut, c'est à dire quand il faut
transmettre un bit à l'état logique haut (un état logique haut en
sortie du microcontrôleur se traduit bien par un niveau logique bas sur
la
ligne de données LANC).
Dans
la copie d'écran oscilloscope qui suit, la trace supérieure indique
l'emplacement temporel à utiliser pour l'envoi des deux octets de la
commande, tandis que la trace inférieure montre le résultat au niveau
de la ligne de donnée LANC.
Commandes manuelles ou "pilotées"
Les commandes sont
manuelles, puisqu'elles se font par pression sur des boutons-poussoirs.
Vous noterez toutefois qu'elles s'effectuent en logique négative, c'est
à dire avec état logique haut au repos et état logique bas au travail.
Il est donc très facile de remplacer n'importe lequel des
boutons-poussoirs par un transistor monté en interrupteur commandé
(montage en émetteur commun, fonctionnant dans ce cas précis en mode
bloqué ou saturé). Sachant cela, vous pouvez faire fonctionner la
télécommande automatiquement lors de la détection d'un événement
externe (bruit, franchissement d'une barrière, etc), moyennant bien sûr
l'ajout d'un circuit adapté à cet usage.
Alimentation
Point besoin d'alimentation externe, puisqu'on peut utiliser celle
fournie
par le caméscope. Pas belle, la vie ? La tension délivrée par le
caméscope sur la broche "Ring" de son jack 2,5 mm peut prendre une
valeur comprise entre +5V et +8V, selon l'appareil utilisé. Si une
tension de 5 V convient tout à fait à notre microcontrôleur, en
revanche une tension de 6 V ou plus lui serait fatale. On va donc
éviter que ce genre de désagrément puisse se produire, par simple ajout
d'une résistance et d'une diode zener (R101 et D101), ladite diode
limitant à environ 5,1 V la tension appliquée au PIC.
Prototypes
Premier prototype réalisé sur plaaque sans soudure, second sur circuit imprimé "au propre".
Prototype #1
Réalisé sur plaque sans soudure, le tout relié à un caméscope Sony
DCR-HC20E (PAL).
Après
bien des heures de déverminage (de débogage, si vous préférez), j'ai
enfin réussi à commander mon caméscope ! Je
dois avouer que sans mon oscilloscope numérique, j'aurais pû tourner en
rond pendant beaucoup plus longtemps. C'est grâce à lui en effet que
j'ai remarqué que
certaines commandes étaient placées non pas aux emplacements des deux
premiers octets, mais parfois au septième et huitième ! Bien sûr, il ne
s'agissait pas d'un problème de câble, seul le code logiciel du PIC (et
donc moi) était en cause.
J'ai
finalement pû démarrer l'enregistrement sur mon camescope et l'arrêter
à distance (c'est exactement ce que je voulais), même si
la pauvre vieille machine me rappelait gentiment qu'il
fallait que je nettoie la tête de lecture/enregistrement pour pouvoir
continuer d'enregistrer...
Prototype #2
Réalisé sur circuit imprimé. Testé avec le même caméscope, fonctionnement tout aussi OK.
A
noter la présence de deux condensateurs sur la face inférieure : un
"gros" de filtrage général 100 uF et un petit de découplage 100 nF.
Commandes testées
Il
existe de nombreuses commandes liées au protocole LANC, voici celles
que j'ai testées avec succès sur mon caméscope DCR-HC20E
(B0 et B1 correspondent aux deux octets envoyés au caméscope) :
Commande
|
B0 |
B1 |
ou |
Remarque |
RECORD START/STOP |
$18 |
$33 |
|
en mode CAMERA |
RECORD |
$18 |
$3A |
|
en mode EDIT/VTR |
PLAY |
$18 |
$34 |
|
en mode EDIT/VTR |
STOP |
$18 |
$30 |
|
en mode EDIT/VTR |
PAUSE |
$18 |
$32 |
|
bascule PLAY/PAUSE |
FAST FORWARD |
$18 |
$38 |
|
en mode EDIT/VTR |
REWIND |
$18 |
$36 |
|
en mode EDIT/VTR |
DISPLAY (ON SCREEN) |
$18 |
$B4 |
|
dans les deux modes |
ZOOM TELE |
$28 |
$35 |
|
en mode CAMERA, zoom lent |
ZOOM WIDE |
$28 |
$37 |
|
en mode CAMERA, zoom lent |
Remarque
: je n'ai pas implémenté de contrôle des données d'état retournées par
le caméscope et me suis contenté de regarder l'écran du caméscope pour
voir si cela fonctionnait ou non.
Circuits imprimés (PCB)
Réalisés en une seule couche plus une additionnelle, ce qui nous fera
deux couches, ma p'tite dame.
Le
PCB version 013b occupe deux fois moins de place que celui de la
version 013 (0,09 dm² contre 0,22 dm²), mais il faut être outillé pour
les composants "miniatures" et avoir de bons yeux (je pense en
particulier au transistor dont les broches sont vraiment minuscules).
Remarques concernant le PCB 013b :
- Pour la diode zener D101, j'ai prévu un emplacement à la fois pour CMS et traversant.
- Pour le transistor Q1, on peut utiliser au choix un BC817 (BJT) ou un BSS138 (FET), les brochages sont "compatibles".
Logiciel du PIC
Le logiciel a été compilé pour un PIC 16F1827, mais
un 16F1826 (je n'en avais plus) conviendrait également (avec recompilation).
Télécommande
013 - 16F1827 - 29/03/2024
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à
utiliser, merci de consulter la page
PIC - Sources.
Historique
14/04/2024
- Ajout photos prototype version 013, avec en face inférieure les deux condensateurs que j'avais oublié d'implanter sur le PCB.
- Ajout PCB version 013b, version miniaturisée de la version 013 avec 2 commandes au lieu de 6.
31/03/2024
- Première mise à disposition.