Electronique > Réalisations > Télécommandes > Télécommande 004

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.

telecommande_004_001a telecommande_004_pcb_3d_a

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).

electronique_telecommande_004

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 :
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
En mode RC6
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.

telecommande_004_001a telecommande_004_001b recepteur_ir_rc5_001z

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.

telecommande_004_001c telecommande_004_001d

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.

telecommande_004_proto_gjlf_001a telecommande_004_proto_gjlf_001b

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.

telecommande_004_pcb_composants

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.