Dernière mise à jour :
30/10/2016
Présentation
Cette réalisation permet de piloter à distance entre un
et dix appareils différents,
à partir d'une télécommande à infrarouge
classique pour TV. Pour éviter
(ou tout du moins fortement limiter) les risques de
déclenchement
intempestifs des appareils pilotés par ce système, la
manipulation de la télécommande doit répondre
à un
impératif strict :
- Appui sur une des touches 0 à 9
de la télécommande pour sélectionner la sortie
à activer ou à désactiver;
-
Appui sur la touche Play, Volume + ou Programme + (pour
mettre en route) ou sur la touche Stop, Volume - ou Programme - (pour arrêter).
Lors
de l'appui sur une des touches 0 à 9, une led s'allume pour
signaler le
mode d'attente de commande marche ou arrêt. Cette led
s'éteind dès que
la commande marche ou arrêt est reçue, ou si un code non
autorisé est réceptionné. Voir aussi la page
relative à la
génération d'un code RC5 pour simulation dans Proteus / Isis et la page
Télécommande - IR - Codes RC5.
Remerciements
Je
tiens à remercier sincèrement Dany, qui a écrit le code logiciel de la
partie décodage RC5 et RC6. J'y serais sans doute parvenu, mais au terme d'un
temps certain, que j'ai pû économiser grâce à lui.
Thanks to Dany, author of RC5 / RC6 decoder software part I used in this project.Schéma
Le
schéma ne montre que la section permettant la réception des signaux
infrarouge et leur décodage. La partie commande de puissance devra être
adaptée selon le type des appareils à commander (ce point sera vu plus
loin).
Fonctionnement général
Le
logiciel tournant dans le PIC ne fait pas grand chose dans l'attente
d'arrivée des signaux infrarouge. Dès qu'une transistion survient
sur l'entrée signal (RC5_In), le
logiciel stocke tous les changements d'états qui suivent, et une fois
le silence revenu, décode les données. Si les données reçues sont
conformes à celles attendues, la sortie concernée est activée ou
desactivée. Si les données reçues correspondent à un code non utilisé,
la led de récepton de données clignote rapidement trois fois de suite.
Décodage RC5 / RC6
Le choix du type de code à décoder (RC5 ou RC6) dépend de la position du cavalier (jumper) JP1 :
- si cavalier côté +Alim (RA5 = +5 V), decodage RC5
- si cavalier côté masse (RA5 = 0 V), decodage RC6
La
lecture de la position du cavalier est faite lors de l'initialisation
du programme, on ne peut pas changer en cours de fonctionnement.
Etages de sortie
Les
sorties du récepteur viennent directement du PIC, il s'agit de
sorties TTL capables de travailler sous quelques mA. La commande
d'équipements de "forte" consommation pourra être
assurée au travers d'interfaces adéquates, tels que
relais ou triacs avec optos-triacs.
Prototype
Réalisé sur plaque sans soudure.
J'ai
passé pas mal de temps pour faire fonctionner ce montage, mais
maintenant ça y est ! Je suis resté bloqué un bon
moment pour une raison toute bête : j'ai utilisé plusieurs
télécommandes IR (pour TV, enregistreur DVD, platine K7,
ampli HIFI, lecteur CD) et rien ne semblait fonctionner malgré
la bonne réception des données au niveau du PIC (j'avais
inséré des lignes de code de débugage qui ont bien
confirmé la réception des trames). Mais rien à
faire, les données attendues n'étaient pas reconnues.
Pendant un moment, j'ai eu des doutes sur le récepteur IR
utilisé, un SBX1620-52 de Sony. Mais après un rapide tour
d'horizon sur le Net, tout ceux qui l'utilisaient en étaient
pleinement satisfait. Un phénomène étrange que
j'ai mis un bout de temps à m'expliquer, était la
réception de données même quand je n'activais
aucune touche des télécommandes qui me servaient pour les
tests. J'ai
observé les signaux en sortie du récepteur IR avec mon
oscilloscope
numérique et des trames sortaient bien du récepteur, de
façon régulière
et sans que je fasse rien. A côté de ce
phénomène bizarre, je retrouvais
bien les trames correspondant aux touches activées sur mes
télécommandes, les niveaux étaient bons et les
formes très propres. Ayant utilisé au début
l'oscillateur interne 4 MHz du PIC, j'ai pensé que le
problème pouvait venir d'une précision insuffisante de la
fréquence d'horloge. Je suis donc passé au quartz externe
de 4 MHz, sans que cela arrange quoi que ce soit. J'ai laissé
tombé car j'en avais marre, et ai repris le jouet le lendemain
soir, après avoir localisé pas mal de pages sur le Net
qui traitait du code RC6. Du coup j'ai eu un doute et j'ai aussi
implémenté le code de décodage des trames RC6. Et
là Bingo, mon système fonctionne ! Sur les cinq
télécommandes testées, quatre émettent des
trames RC6 et la dernière des trames que je n'ai pas
identifiées (en tout cas pas reconnues par mon système).
Quant au générateur de trames IR parasites, j'ai
trouvé le fautif peu de temps après. Il s'agissait de mon
PC portable posé
au-dessus de ma maquette (port IRDA) ! Une fois le PC éteint,
tout allait vraiment bien mieux ! Bref, je considère que c'est
désormais OK, puisque ça fait ce que je voulais que
ça fasse.
Logiciel du PIC
-
Circuit imprimé
Non réalisé.