Dernière mise à jour :
15/02/2015
Présentation
Ce récepteur de télécommande permet de piloter à distance 1 à 10 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éclenchement
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". Une version similaire mais avec 16 sorties est proposée à la page
Télécommande 004b. Voir aussi les pages
Génération
d'un code RC5 pour simulation dans Proteus / Isis et
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 "IR Remote receiver 004" and "IR Remote receiver 004b" projects.
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 transition 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 format de la trame à décoder (RC5 ou RC6) dépend de la position du cavalier (jumper) JP1 :
-
si cavalier côté +Alim (RA5 = +5 V), décodage RC5
-
si cavalier côté masse (RA5 = 0 V), décodage RC6
La
lecture de la position du cavalier est assurée à l'initialisation
du programme, on ne peut pas changer en cours de fonctionnement. Je
ne saurais le certifier à 100%, mais il me semble 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
Remarque : d'autres touches pourraient être reconnues, ce n'est simplement pas prévu dans le logiciel.
Exemple N°1 - Activation sortie Out3
- Appuyer sur la touche 3 de la télécommande
- Appuyer sur la touche Play
Exemple N°2 - Désactivation sortie Out5
- Appuyer sur la touche 5 de la télécommande
- Appuyer sur la touche Stop
Etages de sortie
Les
sorties de ce récepteur de télécommande 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. Si vous avez besoin des 10 sorties, vous pouvez utiliser deux
ULN2803 (vous aurez du rab pour une éventuelle maintenance) ou ajouter
deux transistors discrets (2N2222 ou autres NPN d'usage général).
Prototype
Deux protos réalisés, un par moi et l'autre par Guillaume.
Mon 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.
Prototype de Guillaume
Lui aussi réalisé sur plaque d'expérimentation sans soudure.
Message de Guillaume (26/05/2013) :
Bonjour Rémy, un retour positif pour cette télécommande, elle fonctionne parfaitement. J'ai utilisé un capteur infrarouge different du SBX1620 et
récupé sur un vieux decodeur TNT. Celui utilisé n'a aucun marquage,
j'ai déduit le brochage en suivant les pistes du circuit imprimé
d'origine. Mise à part R1 dont j'ai ajusté la valeur à 100 ohms par
prudence car plusieurs schémas trouvés sur internet utilisant un capteur
de même architecture que le mien utilisait cette valeur, pas très
professionel, mais ça fonctionne très bien ainsi. Et je vous en
remercie. La télécommande utilisée est une philips/RC6, aucune autre
n'arrive à actionner une sortie correctement (télécommandes samsung,
yamaha et sony).Prototype de Frédéric H.
Message de Frédéric (15/02/2015) :
Bonjour
Rémy, je me suis mis en quête d’un montage de télécommande infrarouge
pour commander à distance un potentiomètre motorisé, et suis tombé sur
votre montage. Ne possédant pas le capteur IR SBX1620 de Sony,
j'ai essayé avec un Sharp GP1U58X récupéré sur une chaine
Philips HS. Après consultation du datasheet, j'ai pensé qu'il devait
être compatible et l'ai donc essayé. Cela fonctionne (mode RC6,
télécommande semblable à celle qu'on voit en dernier sur votre photo)!
Bon, j'aimerai gérer la pression de plus de touches car mon application
va plus loin que la commande du potentiomètre, mais ça c'est une autre
histoire...Merci Frédéric pour ce retour !
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 ou RC6, 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 (j'ai
gagné du temps en procédant ainsi, mais par la suite j'ai tout de même écrit le mien). Bref, la question n'est pas là. J'ai
terminé ce proto qui s'est révélé 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 ? Au jour de sa réalisation, je ne
vois pas l'utilité de ce bidule. Heureusement que vous, lecteurs, avez l'esprit plus vif.
Historique
15/02/2015
- Ajout commentaire de Frédéric H. qui a réalisé ce montage avec succès en utilisant un capteur Sharp GP1U58X.
26/05/2013
- Ajout photos prototype Guillaume, que je remercie pour ses retours.
30/05/2010
- Première mise à disposition.