Electronique > Théorie > Télécommandes > IR > Protocole et codes RC5

Dernière mise à jour : 21/01/2019

Présentation

La présente page résume les différents codes Philips RC5 et RC5 étendu utilisés dans les systèmes de télécommandes infrarouge pour équipements audiovisuels.

recepteur_ir_rc5_001z

Les autres types de codage Sony, Hitachi, Nec, Pionner et JVC ne sont pas abordés. Je me suis un peu intéressé aux codes RC5 car je tenais à fabriquer un système de mise en route d'appareils distinct à l'aide d'une télécommande standard pour TV (Télécommande 004). J'avoue m'être un peu emmêlé les pinceaux  au début, les informations que j'avais trouvées n'étaient pas toutes forcement cohérentes (certains codes étaient exprimés sous forme décimale et d'autres l'étaient sous forme hexadécimale). Une fois le minimum acquis, j'ai écrit un peu de code permettant de simuler des trames RC5 dans Proteus avec le générateur EasyHDL intégré, et de visualiser les trames RC5 et RC6 sur un afficheur LCD.

Codes RC5

Le présent article décrit le contenu d'une trame RC5 au niveau logique (bande de base), il n'aborde pas la question de la modulation bi-phase (codage Manchester) du faisceau infrarouge (à 36 KHz ou autre fréquence).

Vue générale de la trame
Pour un niveau logique bas (0 V) on a une modulation du faisceau IR pendant une durée de 889 us, suivi d'une absence de modulation (repos) pendant un même laps de temps. Pour un niveau logique haut (+5 V par exemple) on a une absence de rayonnement IR pendant une durée de 889 us, suivi d'une modulation du faisceau pendant ce même laps de temps.

rc5_modul_36khz_001brc5_modul_36khz_001c
Echelle 36 kHz volontairement non respectéeEchelle 36 kHz respectée

Remarque : dans le premier dessin qui précède, le signal 36 kHz est "hors échelle" uniquement pour montrer sa forme globale. 

La modulation à 36 kHz du faisceau IR correspond simplement à un hachage du faisceau à la vitesse de 36 kHz. 
Si fréquence = 36 kHz, alors période (du signal 36 kHz) = 1 /36000 = 27,778 us
Une durée de 889 us correspond à 32 périodes du signal de fréquence 36 kHz (et de période 27,778 us) :
32 périodes (du signal 36 kHz) = 32 x 27,778 = 888,8 us (valeur arrondie à 889 us)

En regardant une trame IR "de loin" (sans zoom sur les bits) on peut voir une suite de trains d'impulsions, dont l'espacement entre activité et repos dépend de la valeur des bits transmis.

rc5_modul_36khz_001a
Trame avec adresse = $05 et commande = $35

Et si on regarde une trame démodulée (où l'on a récupéré les bits transmis et où la porteuse 36 kHz a été supprimée) on peut voir quelque chose qui ressemble aux copies d'écran suivantes.

rc5_demodul_36khz_001a  rc5_demodul_36khz_001b  
Codes émis par une télécommande Philips pour lecteur CD 723

La trame RC5 est composée de 14 bits :
- 2 bits de start toujours positionnés à 1 (un seul bit Start pour le code RC5 étendu)
- 1 bit de "bascule" (toggle) qui change d'état quand une touche est relachée puis pressée de nouveau (détection appui continu)
- 5 bits pour le numéro d'adresse système
- 6 bits pour le numéro de commande (7 bits pour le code RC5 étendu)

Bits de Start (bits #1 et #2)
Ces bits qui sont toujours à 1 sont aussi appelés bits de calibration AGC (Auto Gain Control, Contrôle automatique du gain). Ils permettent au récepteur d'ajuster le gain de l'étage de réception IR en fonction du niveau de lumière infrarouge reçue. Tous les récepteurs n'ont pas un tel réglage automatique de gain.

Bit de bascule / Toggle (bit #3)
Ce bit indique au récepteur si deux codes reçus identiques ont été obtenus en appuyant deux fois de suite sur la même touche de la télécommande, ou s'ils ont été obtenus en laissant la touche enfoncée. Cette astuce permet par exemple de différencier deux commandes successives "1" d'une commande "11". Ce bit change à chaque fois que l'on relache une touche et qu'on appuie sur la même ou sur une autre. Si on laisse le doigt appuyé sur une touche, ce bit conserve le même état.

Numéro d'adresse système (bits #4 à #8)
Ces cinq bits permettent d'identifier le type d'équipement qui devra agir. Le bit de poids fort (MSB) est le quatrième bit et le bit de poids faible (LSB) est le huitième bit. Selon le numéro d'adresse système, un même numéro de commande (derniers bits de la trame) pourra avoir plusieurs significations différentes. Un numéro d'adresse système égal à zéro signifie que la trame de données est destinée à un téléviseur et non à un magnétoscope ou enregistreur de DVD. La liste qui suit indique la correspondance entre numéro d'adresse système (exprimée en notation décimale et hexadécimale) et type d'appareil concerné.

Numéro adresse système
Type d'équipement
Remarques
0 ($00)
1 ($01)
2 ($02)
3 ($03)
4 ($04)
5 ($05)
6 ($06)
7 ($07)
8 ($08)
9 ($09)
10 ($0A)
11 ($0B)
12 ($0C)
13 ($0D)
14 ($0E)
15 ($0F)
16 ($10)
17 ($11)
18 ($12)
19 ($13)
20 ($14)
21 ($15)
22 ($16)
23 ($17)
24 ($18)
25 ($19)
26 ($1A)
27 ($1B)
28 ($1C)
29 ($1D)
30 ($1E)
31 ($1F)
TV SET 1
TV SET 2
VIDEOTEXT / TELETEXT
EXPANSION FOR TV 1 AND 2
LASER VIDEO PLAYER
VIDEO RECORDER 1 (VCR 1)
VIDEO RECORDER 2 (VCR 2)
RESERVED / EXPERIMENT
SAT 1
VCR 1/2 EXT or CAMERA
SAT 2
RESERVED
CD VIDEO / VCD
RESERVED / CAMCORDER
CD PHOTO
RESERVED
AUDIO PREAMPLIFIER 1
RECEIVER / TUNER
TAPE / CASSETE RECORDER
AUDIO PREAMPLIFIER 2
CD PLAYER
AUDIO RACK / PHONO
AUDIO SAT RECEIVER
DCC RECORDER
RESERVED
RESERVED
WRITABLE CD / CDR
RESERVED
RESERVED
RESERVED / LIGHTING 1
RESERVED / LIGHTING 2
RESERVED / PHONE
ensemble de commandes N°1 pour TV (TV1)
ensemble de commandes N°2 pour TV ( TV2)
Video-texte / Télé-texte
Extension pour TV1 et TV2 ou Vidéo Disque
Lecteur disques vidéo laser
Enregistreur vidéo #1
Enregistreur vidéo #2
Réservé / Expérimental
Récepteur satellite #1
Extension pour enregistreur vidéo VCR1 et VCR2 ou Appareil photo
Récepteur satellite #2
Réservé
CD Vidéo
Réservé ou Caméscope
CD Photos
Réservé
Préampli audio #1
Récepteur / tuner (radio)
Lecteur / enregistreur de K7 audio
Préampli audio #2
Lecteur CD
Rack audio ou Platine disque (combi)
Récepteur satellite audio
Enregistreur à K7 DCC (peut-être aussi DAT et MD)
Réservé
Réservé
Enregistreur de CD
Réservé
Réservé
Réservé ou Lumière 1
Réservé ou Lumière 2
Réservé ou Téléphone

Numéro de commande (bits #9 à #14)
Les six derniers bits décrivent le type de commande à traiter, telle que lecture (play) ou arrêt (stop) d'un CD audio, changement de chaîne TV (N°1, N°5 par exemple), augmentation ou diminution du volume, etc. La liste ci-après résume les commandes disponibles, les valeurs numériques sont exprimées en notation décimale et hexadécimal (il est possible que certaines ne soient pas documentées).

Numéro de commande
Action
Remarques
0-9 ($00-$09)
10 ($0A)
11 ($0B)
12 ($0C)
13 ($0D)
14 ($0E)
15 ($0F)
16 ($10)
17 ($11)
18 ($12)
19 ($13)
20 ($14)
21 ($15)
22 ($16)
23 ($17)
24 ($18)
25 ($19)
26 ($1A)
27 ($1B)
28 ($1C)
29 ($1D)
30 ($1E)
31 ($1F)
32 ($20)
33 ($21)
34 ($22)
35 ($23)
37 ($25)
39 ($27)
40 ($28)
48 ($30)
50 ($32)
52 ($34)
53 ($35)
54 ($36)
55 ($37)
63 ($3F)
71 ($47)
77 ($4D)
78 ($4E)
80 ($50)
81 ($51)
82 ($52)
83 ($53)
84 ($54)
85 ($55)
86 ($56)
87 ($57)
88 ($58)
89 ($59)
90 ($5A)
91 ($5B)
92 ($5C)
93 ($5D)
94 ($5E)
95 ($5F)
96 ($60)
97 ($61)
98 ($62)
99 ($63)
100 ($64)
101 ($65)
102 ($66)
103 ($67)
118 ($76)
119 ($77)
123 ($7B)
124 ($7C)
NUMERIC KEYS 0 - 9
-/--
TV / VCR1/2 / CD / DCC
STANDBY
MUTE
PRESETS TV / VCR1/2
INFO
VOLUME +
VOLUME -
BRIGHTNESS +
BRIGHTNESS -
COLOR SATURATION +
COLOR SATURATION -
BASS +
BASS -
TREBLE +
TREBLE -
BALANCE RIGHT
BALANCE LEFT
CD SHUFFLE / DCC REPEAT
VCR TIMER / CD REPEAT
VCR REC MODE / TUNER SEARCH +
VCR FAST REV / TUNER SEARCH -
PROGRAM + (NEXT)
PROGRAM - (PREVIOUS)
TV P<P / VCR SLOW REV / CD INDEX +
TV 1/2 / VCR AUDIO MODE / AMP SPK A / CD INDEX -
STEREO / MONO
VCR OTR / AMP SPK B
SLOW FORWARD
PAUSE
FAST REVERSE / REWIND
FAST FORWARD
PLAY
STOP
RECORD
SYSTEM SELECT
DIM LOCAL DISPLAY
LINEAR FUNCTION (+)
LINEAR FUNCTION (-)
STEP UP
STEP DOWN
MENU ON
MENU OFF
DISPLAY A/V SYS STATUS
STEP LEFT
STEP RIGHT
ACKNOWLEDGE
PIP ON/OFF
PIP SHIFT
PIP MAIN SWAP
STROBE ON/OFF
MULTI STROBE
MAIN FROZEN
3/9 MULTI SCAN
PIP SELECT
MOSAIC MULTI PIP
PICTURE DNR
MAIN STORED
PIP STROBE
RECALL MAIN PICTURE
PIP FREEZE
PIP STEP UP
PIP STEP DOWN
SUB MODE
OPTIONS SUB MODE
CONNECT
DISCONNECT
Pavé numérique 0-9
-/--
C/P - C/P Select - Time
Standby
Silencieux (si TV)
Presets
Infos
Volume +
Volume -
Lumière +
Lumière -
Saturation couleurs +
Saturation couleurs -
Graves +
Graves -
Aigus +
Aigus -
Balance Droite
Balance Gauche
CD lecture aléatoire / DCC Répétition
Programmation Magnétoscope / CD répétition
Mode Enr. Magnétoscope / Tuner recherche +
Retour rapide magnétoscope / Tuner recherche -
Programme + (Suivant)
Programme - (Précédent)
-
-
-
-
-
Pause
Retour rapide
Avance rapide
Lecture
Arrêt
Enregistrement
Sélection système
Ajustement luminosité localisé (1)
Fonction linaire +
Fonction linéaire -
Un cran au-dessus
Un cran au-dessous
Menu Marche
Menu Arrêt
Affichage statut système A/V
Un cran à gauche
Un cran à droite
Acquittement (validation)
Image dans image Marche / arrêt
Image dans image Décallage
Image dans image Inversion
Sonde Marche / arrêt
Sonde multiple
Gel image principale
Multi Scan
Image dans image Sélection
Image dans image Mosaïque
Réduction de bruit image
Enregistrement (stockage) image principale
Image dans image Sonde
Rappel image principale
Image dans image Gel
Image dans image Un cran au-dessus
Image dans image Un cran au-dessous
Sous-mode
Options Sous-mode
Connexion
Déconnexion

(1) : sur les écrans récents, la fonction DIM LOCAL DISPLAY permet d'ajuster localement le niveau de rétroéclairage (lui-même divisé en plusieurs dizaines de zones indépendantes) pour augmenter le contraste global de l'image.

Les valeurs de commande supérieures à 63 ($3F en hexa) ne peuvent être exploitées qu'avec le code RC5 étendu (voir ci-après).

Codes RC5 étendu (RC5X)

D'un point de vue modulation, une trame RC5 étendue (RC5X) est identique à une trame RC5. La différence concerne la façon dont sont exploités les bits transmis, toujours au nombre de 14 par trame. Dans une trame RC5 étendue, nous avons :
- 1 bit de start toujours positionné à 1 (deux bits Start pour le code RC5 normal)
- 1 bit de "bascule" (toggle) qui change d'état quand une touche est relachée puis pressée de nouveau (détection appui continu)
- 5 bits pour le numéro d'adresse
- 7 bits pour le numéro de commande (6 bits pour le code RC5 normal)
Comme on peut le constater, un des deux bits de start a été "transféré" dans la zone "commande" pour en doubler le nombre de valeur possibles. Avec 6 bits (code RC5) le nombre de commandes différentes ne peut dépasser 64. Avec 7 bits (code RC5 étendu) le nombre de commandes différentes atteint 128.

Protocole RC6

Le protocole RC6 diffère légèrement du protocole RC5 et en partage les grandes lignes. Les codes d'adresse "Système" et "Commande" listés dans les tableaux qui précèdent semblent être les mêmes en RC6 et en RC5 (mais je n'ai trouvé aucun document officiel l'attestant) même si pour le RC6 le codage de ces deux paramètres se fait sur 8 bits. A noter qu'il existe plusieurs types de codes RC6 (RC6 et RC6A) mais que le plus répendu serait celui qui comporte deux bits Start, trois bits Champ (Field), un bit Toggle long, 8 bits pour l'adresse (system) et 8 bits pour le code Commande. La durée de transmission d'un bit est de 889 us, la durée totale d'une trame est d'environ 23 ms, avec un interval de répétition de 83 ms. Plus de détails...