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

Dernière mise à jour : 11/07/2026

Présentation

Cette télécommande émet des ordres IR (infrarouges) standards à destination d'un téléviseur, d'un lecteur de DVD et d'une box Internet, par contact d'un doigt sur des touches sensitives. Elle a été développée pour une personne n'ayant plus de force manuelle pour presser les touches de télécommandes standards. Les 16 codes que peut transmettre cette télécommande peuvent être quelconques, grâce à une méthode d'auto-apprentissage. Les fréquences de porteuse IR supportées sont 33 kHz, 36 kHz, 38 kHz et 40 kHz.

   

Schéma

Le schéma repose sur un PIC 18F26K22.

telecommande_015

   

Le logiciel du PIC gère le clavier tactile (touches sensitives), le clavier standard (boutons-poussoirs), la création des commandes IR à partir d'un émulateur de terminal, et la réception des commandes IR (fonction auto-apprentissage). 

Fonctionnement général
Les ordres infrarouges de la télécommande peuvent être initiés par la pression de boutons-poussoirs classiques ou par contact de touches sensitives (tactiles) capacitives. Dans le premier cas, les 16 touches sont câblées selon une traditionnelle matrice de 4 rangées et 4 colonnes qui ne réclame que 8 fils de liaison (R0 à R3 et C0 à C3). Dans le second cas, un circuit spécialisé TTP229 est mis en oeuvre, le PIC dialogue avec lui par une liaison série I2C à 2 fils (horloge Clock/SCL et données Data/MISO).

Programmation des codes à envoyer
Le code attribué à chaque touche peut être défini de deux façons :
- par auto-apprentissage du code reçu par le récepteur IR de la télécommande (code envoyé par la télécommande à cloner)
- par envoi du code idoine sur le port série COM-UART (envoi depuis un simple émulateur de terminal)

Dans tous les cas, le code peut contenir au maximum 120 informations binaires (120 bits). Pour exemple comparatif, un code de télécommande répondant à la norme RC5 comporte 14 bits, la place ne devrait pas manquer !

Remarque importante : il faut en réalité enregistrer deux codes pour chaque touche, ces deux codes pouvant être identiques ou différents. Dans une même trame IR, on peut en effet trouver un bit d'information qui permet de savoir si des commandes transmises successivement le sont avec une touche maintenue pressée ou relâchée entre deux. Ce bit de "bascule" (toggle) change simplement d'état quand une touche est relachée puis pressée de nouveau et permet ainsi de détecter un appui continu. C'est précisément ce bit (toggle) qui permet au récepteur (TV, lecteur DVD) de savoir si une même touche est maintenue pressée (utile par exemple pour un réglage de volume).
 
Programmation des touches par auto-apprentissage
Dans ce mode de programmation, aucune saisie manuelle de code n'est nécessaire. Il suffit de placer la LED d'émission IR de la télécommande à cloner dans l'axe de la LED de réception IR de la télécommande 015 (la distance qui sépare les deux doit être comprise entre 1 mètre et 3 mètres pour assurer une bonne reconnaissance du code transmis par IR).

La procédure à suivre pour attribuer un code de télécommande à l'une des 16 touches SW1 à SW16 est la suivante :

- préciser la fréquence de la porteuse (33, 36, 38 ou 40 kHz) avec les cavaliers JP0 et JP1
- placer le système en mode Programmation en pressant le bouton-poussoir SW18/Mode, la LED Mode clignote alors lentement
- presser la touche de la télécommande 015 à laquelle attacher le code désiré (SW1 à SW16)
- envoyer l'ordre souhaité depuis la télécommande à cloner vers la LED de réception IR de la télécommande 015
- relâcher la touche de la télécommande à cloner, la LED Mode se met à clignoter rapidement.
- presser à nouveau la même touche de la télécommande à cloner

Si les codes (identiques ou différents) ont été correctement réceptionnés et enregistrés, la LED Mode s'arrête de clignoter.

   
Programmation des touches avec un émulateur de terminal
Dans ce mode de programmation, l'utilisateur doit saisir manuellement le code à faire émettre par la télécommande 015, par le biais d'un émulateur de terminal.

La procédure à suivre pour attribuer un code de télécommande à l'une des 16 touches SW1 à SW16 est la suivante :

- relier l'entrée Rx de la télécommande 015 à la sortie Tx du port COM de l'ordinateur sur lequel tourne l'émulateur de terminal (Nota 1)
- relier la sortie Tx de la télécommande 015 à l'entrée Rx du port COM de l'ordinateur sur lequel tourne l'émulateur de terminal (Nota 2)
- préciser la fréquence de la porteuse (33, 36, 38 ou 40 kHz) avec les cavaliers JP0 et JP1
- placer le système en mode Programmation en pressant le bouton-poussoir SW18/Mode, la LED Mode clignote alors lentement
- presser la touche de la télécommande 015 à laquelle attacher le code désiré (SW1 à SW16)
- envoyer le numéro de la touche à programmer (min 1, max 16).
- envoyer la valeur de la fréquence de la porteuse IR, en kHz (min 30, max 50)
- envoyer le nombre de bits constituant la trame de la commande à envoyer (min 1, max 120).
- envoyer l'ordre souhaité (1è trame) depuis l'émulateur de terminal (Nota 3), la LED Mode se met à clignoter rapidement.
- envoyer l'ordre souhaité (2è trame) depuis l'émulateur de terminal (Nota 3), la LED Mode s'arrête de clignoter.
- envoyer le code de sauvegarde en EEProm correspondant au numéro de la touche à programmer (min 1, max 16).

Si les trames ont été correctement réceptionnées, la télécommande 015 renvoie au terminal les trames qu'il a reçues.

Nota 1 - Port COM physique réel ou adaptateur USB-COM requis
Note 2 - Liaison facultative mais conseillée, requise uniquement pour confirmation visuelle du code réceptionné
Nota 3 - Les ordres souhaités (1è et 2è trames) doivent être transmis selon le protocole indiqué ci-après.

Protocole des commandes pour programmation avec émulateur de terminal
Paramètres du terminal : 19200,8,1 ;  [CR] = Retour à la ligne (Return).

La première commande à envoyer depuis le terminal est le numéro de la touche à programmer. La commande doit commencer par la lettre "K", être suivie du numéro de la touche (1, 2 ou 3 caractères) puis être terminée par un Retour Charriot (CR = Return) :

Kxxx[CR]

Important : le numéro de touche spécifié ici doit correspondre à la touche correspondante pressée au préalable. Si les deux numéros de touche (touche télécommande 015 et touche spécifiée dans le terminal) ne correspondent pas, les commandes suivantes seront rejetées.

La deuxième commande doit indiquer la fréquence de la porteuse IR. La commande doit commencer par la lettre "F", être suivie de la fréquence exprimée en kHz (par exemple 33 ou 40) puis être terminée par un Retour Charriot (CR = Return) :

Lxxx[CR]

La troisième commande doit indiquer la longueur de la commande. La commande doit commencer par la lettre "L", être suivie du nombre de bits de la trame, puis être terminée par un Retour Charriot (CR = Return) :

Lxxx[CR]

La quatrième commande doit indiquer le contenu de la 1è trame. La commande doit commencer par la lettre "A", être suivie de la valeur de chacun des bits (0 ou 1) de la 1è trame, puis être terminée par un Retour Charriot (CR = Return) :

Axxxxxxxxxxxxxx[CR]

La cinquième commande doit indiquer le contenu de la 2è trame. La commande doit commencer par la lettre "B", être suivie de la valeur de chacun des bits (0 ou 1) de la 2è trame, puis être terminée par un Retour Charriot (CR = Return) :

Bxxxxxxxxxxxxxx[CR]

La sixième commande permet de sauvegarder les valeurs précédente dans l'EEProm du PIC. La commande doit commencer par la lettre "S",  être suivie du numéro de la touche (1, 2 ou 3 caractères) puis être terminée par un Retour Charriot (CR = Return) :

Sxxx[CR]

   
L'exemple suivant s'applique à la touche 12, longueur de trame 14 bits (commande au protocole RC5) :

K12[CR]
F38[CR]
L14[CR]
A11000101110101[CR]
B11100101110101[CR]
S12[CR]

 
telecommande_015_term_001a

   
Stockage des codes en EEPROM
Les codes appris restent mémorisés dans l'EEPROM du PIC et persistent donc même après une coupure de l'alimentation.
L'organisation dans la plage mémoire est simple : on dispose avec le PIC choisi de 1024 octets et donc de 8192 bits. Comme on doit pouvoir sauvegarder 256 bits maximum par code de télécommande, on dispose de 32 plages de mémoire (8192 / 256), soit 32 code de télécommande.
En limitant la longueur maximale d'une commande à 127 bits, il est possible de doubler le nombre de commandes différentes.
   
Alimentation
L'alimentation requise par cette télécommande est de 3 V, le PIC est un 18LFxxxx. Aucun régulateur de tension n'a été prévu.

   

Circuit imprimé (PCB)

En cours de réalisation.

   

Logiciel du PIC

En cours de développement.
Télécommande 015 - 16F1826 - xx/xx/2026
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

 

Historique

xx/xx/2026
- Première mise à disposition.