Dernière mise à jour : 30/05/2010
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 lecteur DVD ou TV.

Le système est équipé d'un récepteur infrarouge de type Sony SBX1620
contenant l'élement photosensible et la partie démodulation (filtrage),
directement raccordé à un microcontrôleur de type PIC 16F628A. Pour
éviter
(ou tout du moins fortement limiter) les risques de
déclanchement
intempestif 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, Next, Vol+ ou Prog+ (pour
mettre en route) ou sur la touche Stop, Prev, Vol- ou Prog- (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é. Si la deuxième
action (ordre de marche ou d'arrêt) n'a pas été
effectuée dans les trois secondes qui suivent la
sélection de voie, le système repasse en mode d'attente
et la led s'éteint après avoir clignoté pour
indiquer la "fin de transaction". 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
Un grand merci à Dany, qui a mis à disposition de tous un
ensemble de routines pour le traitement des données RC5 et RC6
sur son
site,
routines que j'ai utilisées dans le présent projet
(fichiers RC5_decoder.mpas et RC6_decoder.mpas).
A big thank to Dany,
that made
available on his
site some
routines for RC5 / RC6 frames decoding
(RC5_decoder.mpas and RC6_decoder.mpas files),
routines I used in my "telecommande 004" 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 (RB0 / 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éception 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. Je
n'en suis pas certain mais il me semble bien que toutes les
télécommandes des appareils Philips sont désormais en RC6.
Touches reconnues
Les touches de télécommandes (codes envoyés) reconnues sont les suivantes
En mode RC5
- pour sélection de la voie à activer ou à désactiver : touches 0 à 9
- pour mise en route : touches Play, Vol+, Prg+, Next, Avance rapide
- pour arrêt : touches Stop, Vol-, Prg-, Prev, Retour rapide
En mode RC6
- pour sélection de la voie à activer ou à désactiver : touches 0 à 9
- pour mise en route : touches Play, Next, Flèche Haut, Flèche Droite
- pour arrêt : touches Stop, Prev, Flèche Bas, Flèche Gauche
Exemple N°1 - Activation sortie Out3
- Appuyer sur touche 3 de la télécommande
- Appuyer sur la touche Play
Exemple N°2 - Désactivation sortie Out5
- Appuyer sur touche 5 de la télécommande
- Appuyer sur la touche Stop
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. Quelques exemples d'interfaces sont données à la page Interfaces logique 001,
mais dores et déjà je peux vous conseiller d'utiliser le circuit
ULN2803 qui contient 8 transistors si vous décidez de faire usage de
relais.
Prototype
Réalisé sur plaque sans soudure et testé avec plusieurs télécommandes.

Gros
plan sur le récepteur IR Sony SBX1620, avec son découplage d'alim local
(10 ohms + 10 uF). Je l'avais mis au début mais ne suis pas sûr qu'il
soit réellement nécessaire, je n'ai pas le schéma interne du composant.
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. La longueur des trames parasites
était plus longue que celle d'une trame RC5. 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 de non reconnaissance des trames pouvait venir d'une
précision insuffisante de la
fréquence d'horloge. J'ai donc configuré le PIC pour
qu'il fonctionne avec un quartz externe
de 4 MHz, mais cela n'a rien arrangé du tout. 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 s'est mis à fonctionner... pour les touches 0 à 9
mais pas pour le reste !
Sur les cinq
télécommandes testées, quatre émettaient
des
trames RC6 et la dernière (marque Brandt) émettait des
trames que je n'ai pas
identifiées (en tout cas pas reconnues par mon système).
J'ai passé un peu de temps pour relever les codes commandes émis par
les touches que je voulais utiliser, qui n'étaient pas les mêmes que
pour le code RC5 (en les affichant en binaire sur des leds reliées sur
les huit premières sorties, ça m'a permis de faire vite avant de faire
plus "pro" avec un afficheur LCD). 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 désormais exactement
ce que je voulais que
ça fasse.
Logiciel du PIC
Fichier compilé pour PIC (binaire *.hex) et codes sources complets
(mikroPascal Pro V3.2)
Télécommande 004 - 16F628A - (30/05/2010)
Si
vous souhaitez recevoir par la poste un PIC préprogrammé
et prêt à utiliser, merci de consulter la page PIC - Sources.
Circuit imprimé
Réalisé en simple face. N'inclue pas l'interface de sortie pour le pilotage d'équipements de puissance.

Typon aux formats PDF, EPS et Bitmap 600 dpi
Que faire de cet appareil ?
Vous
allez peut-être trouver ça drôle. Je tenais absolument à réaliser ce
circuit, qui mettait en oeuvre une technique que je n'avais pas
explorée avant. Réception de signaux infrarouge codés en RC5, et
décodage avec un microcontrôleur. Pour la partie décodage, et comme je
l'ai dit en début d'article, je ne me suis pas foulé puisque j'ai
réutilisé un code de décodage existant développé par Dany. J'aurais
bien pû le faire moi-même puisque j'ai compris comment était constitué
une trame RC5 et que je sais en générer. Mais il me semble que j'ai
gagné du temps en procédant ainsi. Bref, la question n'est pas là. J'ai
terminé ce proto qui se révèle fonctionnel. Très bien. Mais après, quel
usage en faire ? Allumer 10 lampes de chevets depuis son fauteuil ?
Piloter des volets roulants que je n'ai pas ? Plutôt bête, non ? Je ne
vois pas l'utilité de ce bidule pour le moment. J'ai posé la question à
ma femme. On ne sais jamais, elle a souvent des
idées que je n'aurais jamais eues. Mais elle aussi ne voyait aucune
application pratique et utile - chez nous tout du moins - à cette
télécommande. Ca me rassure... Alors pourquoi avoir eu tant envie de le
faire ? Par curiosité, sans doute. Peut-être aussi me suis-je dit que
la réception des ordres de télécommande pouvait servir à autre chose
qu'allumer ou éteindre des appareils électriques. Pourquoi par exemple
ne pas inventer un nouvel instrument de musique piloté par télécommande
? Je sais qu'on peut le faire, j'ai assez de pratique maintenant pour
savoir comment générer des sons ou des évenements MIDI. Pensez-vous
pouvoir m'aider sur ce coup ?