Une télécommande 2 canaux à rolling-code

Ce récepteur à auto-apprentissage, basé sur le système de codage Keeloq de Microchip, est réalisé grâce à un microcontrôleur programmé spécialement pour cette application. Il dispose de deux sorties sur relais, qui peuvent fonctionner en mode monostable ou à impulsions.


Nous vous avons déjà proposé plusieurs récepteurs pour radiocommande, basés sur le système rolling-code de la société Microchip. Nous continuons à creuser le même filon, en décrivant, dans cet article, un dispositif à deux canaux indépendants, capable de mémoriser les codes de 10 transmetteurs différents, basés sur le circuit HCS301.
Les sorties se font toutes deux sur relais et chacune peut fonctionner soit en mode impulsion, soit en mode monostable.
Chaque sortie répond à la commande à distance correspondant à un transmetteur, dont le code a préalablement été mémorisé durant la phase d’apprentissage.
Le circuit est très simple et est basé sur un microcontrôleur Microchip PIC16C54, programmé selon l’organigramme de la figure 10.
Le microcontrôleur est couplé à une petite mémoire à accès série I2C-bus, dans laquelle sont inscrits les codes appris par voie radio.
Ces codes, sont ceux dictés par l’algorithme Keeloq et produits par l’encodeur HCS301, pour lequel a été étudiée cette radiocommande.
Le récepteur se présente comme une petite platine très compacte, sur laquelle se trouve placé le microcontrôleur, la mémoire I2C-bus, le module hybride récepteur Aurel et les deux relais.
Le système est adapté pour toutes les applications demandant une sécurité absolue dans l’activation des commandes.

Etude du schéma
Mais, voyons de quoi il s’agit. Pour mieux comprendre le schéma électrique, il est plus simple de le décomposer en quatre parties : Le récepteur radio, l’unité de traitement, l’étage de sortie, l’alimentation.

Le récepteur radio
Le récepteur radio est concentré sur le module hybride BCNBK de la société Aurel. C’est un récepteur à super-réaction complet, accordé sur 433,92 MHz et conforme à la norme CE ETS 300220 (émissions parasites réduites sur l’antenne), pourvu d’un démodulateur AM on/off et d’un comparateur.
Chaque fois que l’émetteur de poche (la télécommande - voir figure 3) est activé dans la zone de couverture (environ 50 mètres), l’onde radio rejoint l’antenne reliée à la broche 3 du module hybride U2. Sur la broche 14 sort un signal digital constituant le code transmis.

L’unité de traitement
Les impulsions concernées sont “traitées” par l’unité de traitement du microcontrôleur U4.
Pour comprendre par faitement le fonctionnement de la radiocommande et voir ce qui se passe lorsqu’elle fonctionne en mode normal, il faut avant tout revoir les bases du rolling-code de Microchip et donc la procédure d’autoapprentissage des codes.
Le décodeur HCS301 est caractérisé par le fait que son décodage est variable, en fait, à chaque émission, le code émis par l’encodeur change.
Naturellement, le décodeur situé sur le récepteur est en mesure de reconnaître de tels changements.
Par rapport au classique RX/TX à codage fixe, pouvant être réalisé avec le MM53200, le rolling-code est certainement plus sûr car, chaque signal envoyé, n’a pas un code univoque (déterminé par le positionnement de dip-switchs) mais change à chaque transmission. C’est la raison pour laquelle il n’est, théoriquement, pas possible de le reproduire.
L’encodeur Microchip est une sorte de microcontrôleur qui génère, à chaque activation, une trame de 66 bits, dans laquelle les 28 premiers forment le code fixe, les 32 suivants, le code variable et les 6 derniers, transmettent les informations pour la synchronisation avec le récepteur.
Cette structure est imposée par un algorithme appelé Keeloq, que nous allons expliquer brièvement.
A chaque transmission, en fait à chaque fois que l’on appuie sur un bouton de la télécommande, l’encodeur produit son code digital, donc l’ensemble des trois groupes de données.
Parmi ceux-ci, le premier est fixe et caractéristique. Il consiste en 28 bits programmables de l’extérieur en mode sériel, par l’intermédiaire d’une broche approprié. Le second groupe, est constitué de 32 bits, qui sont différents à chaque transmission, de sorte que chaque fois qu’un signal est envoyé, la combinaison change.
Le changement se déroule suivant un algorithme précis, non linéaire, déterminé par l’unité d’élaboration interne, sur la base du premier code fixe, en plus de la clef cr yptée écrite en mémoire.
Cette dernière, composée de 64 bits, est unique, dans le sens que chaque “chip” (circuit intégré) produit par le fabricant a son propre code.
Pour garantir cela, en phase de production, un “manufacturer-code” (code de fabrication) est implanté dans le chip, lui aussi à 64 bits, écrit définitivement dans chaque circuit intégré et prévu pour permettre 264 (2 puissance 64) combinaisons possibles à la clef cryptée.
Cela permet de produire des circuits intégrés “semi-custom” (semi-personnalisés), donc différentes parties d’encodeurs à vendre ensuite à différents producteurs de radiocommandes, sans courir le risque que les dispositifs d’un client émettent des codes habilités à commander les récepteurs commercialisés par un autre.
En outre, précisons que “l’encryption key” (clef de cryptage) n’est pas programmée de l’extérieur, mais est élaborée par la logique interne au HCS301 en tenant compte du code sériel de base (les 28 bits écrits par l’utilisateur OEM en phase de programmation) et du code de fabrication.
Par l’intermédiaire des codes précédents, commence la génération, donc l’écriture en mémoire, dans l’EEPROM réservée à cet usage.
Cette clef est celle qui détermine l’algorithme de variation des 32 bits “hopping” de la trame de données émise à chaque transmission.

L’algorithme Keeloq
Un rôle déterminant est assuré par le compteur de synchronisation, dont l’état réside en EEPROM.
C’est en fait l’élément qui permet de resynchroniser le transmetteur et le récepteur, si le premier était activé plusieurs fois en dehors du champ dans lequel le récepteur peut capter le signal.
Si cet élément n’existait pas, le synchronisme serait perdu et le système ne fonctionnerait plus.
Pour comprendre comment le système est synchronisé, il faut penser que, comme une partie du code émis par le TX varie continuellement, il faut que le décodeur connaisse la loi de variation des 32 bits. En fait, le décodeur doit savoir ce qu’il doit attendre de l’encodeur à chaque transmission.
Mais si le transmetteur est activé plusieurs fois, sans que le récepteur ne puisse recevoir son signal, à la première transmission, l’encodeur se bloque.
Pour le débloquer, il conviendrait de recourir à une resynchronisation manuelle, mais le HCS301, permet aussi un mode de resynchronisation automatique.
En fait, après avoir effectué la capture initiale, la logique interne admet une tolérance de 16 tentatives. Il est donc possible de synchroniser le décodeur avec l’encodeur même si celui-ci a transmis jusqu’à 16 fois sans que le récepteur n’ait capté son signal.
Cela est possible car le programme du décodeur utilise un algorithme analogue à celui du codeur et peut synthétiser tout seul les pas admis en tolérance.
Lorsqu’il reçoit un signal, il va contrôler si la valeur finale est une de celle rentrant dans la marge des 16 tentatives.
En pratique, après quelques transmissions à vide, à la reprise de la liaison (lorsque l’on se rapproche du circuit de réception), le décodeur va lire le résultat reçu. Ainsi, s’il ne coïncide pas avec le pas suivant le dernier identifié, il effectue une comparaison avec les 16 possibilités admises.
Dans le cas où il trouve que la donnée correspond à l’une d’elles, il remet en place la routine, de façon qu’au prochain signal il reparte sur la valeur suivante.
Le second système de resynchronisation automatique, implémenté dans le décodeur, lui permet de se remettre en phase avec l’encodeur lorsque ce dernier a été activé plus de 16 fois en dehors du champ de couverture de la liaison radio.
Il suffit pour cela d’effectuer deux transmissions.
En fait, il faut que l’unité RX reçoive deux fois consécutives le signal TX pour permettre la remise en phase des deux dispositifs.
Le protocole Keeloq Microchip prévoit qu’après deux réceptions consécutives du même encodeur, parmi ceux ayant fait l’objet d’un apprentissage, le dispositif de décodage procède à sa resynchronisation avec le codeur.

Auto-apprentissage des codes
Initialement, il est nécessaire d’accoupler un TX au RX, par l’intermédiaire d’une procédure d’auto-apprentissage, durant laquelle le décodeur mémorise le code de base et les 6 bits d’information faisant partie de la trame de 66 bits (32 rolling, 28 fixes, 6 d’informations) de manière à reconnaître exclusivement les radiocommandes ayant les mêmes paramètres et dont l’algorithme de variation de la partie rolling-code peut être reconnu.
L’auto-apprentissage est donc une phase très importante pour la compréhension du fonctionnement du récepteur bi-canal.
En fait, vous devez savoir que le microcontrôleur présent dans le circuit est en mesure de mémoriser le numéro de série de 10 transmetteurs (TX).
Pour donner un exemple, si l’on force l’apprentissage (en agissant sur le cavalier J1) et si sur le TX on appuie sur le second des deux boutons, le récepteur mémorise les informations de base et distinctives de la trame des données.
La partie concernant le canal actif (dans ce cas, le 2) est momentanément omise.
Une fois qu’un transmetteur est mémorisé, si on l’active, le relais RL1 ou RL2 est également activé, en fonction du bouton appuyé.
Ceci, parce que le microcontrôleur U4 utilise un programme qui sait distinguer parmi les 6 derniers bits, le code relatif au canal activé (en admettant que le numéro de série et la clef de cryptage extraits d’une trame de données reçue soient admissibles).
On peut ainsi programmer jusqu’à 10 transmetteurs. Chacun de ceux-ci peut commander simultanément les relais de sortie. Ainsi, les codes appris ne concernent pas exclusivement un bouton d’un TX, mais les deux.
Si vous avez encore des doutes, vous pourrez les dissiper lorsque nous expliquerons comment on fait, en pratique, pour programmer le dispositif.

Le fonctionnement du microcontrôleur
A présent, voyons l’analyse du fonctionnement du microcontrôleur (voir figure 10).
L’état de la broche 1 est lu à la mise en service, donc au début du programme de gestion implémenté dans le microcontrôleur PIC16C54-RC.
Si le résultat est zéro, le microcontrôleur entre dans la routine d’effacement de la mémoire et allume la LED rouge LD3.
Si après environ 8 secondes, le microcontrôleur trouve le cavalier J1 encore fermé, il procède à l’effacement effectif de tous les codes disponibles dans la mémoire série.
En fermant J1 durant un bref instant, la routine d’autoapprentissage des codes est activée.
Lorsque le microcontrôleur décode un TX compatible (doté d’un encodeur HCS301, avec un code de fabrication identique), il fait clignoter la LED rouge LD3 et mémorise le code concerné dans la mémoire U3.
Si nous voulons lui faire apprendre un nouveau transmetteur (rappelons que l’on peut en mémoriser 10), il faut éteindre le circuit, le rallumer, fermer un instant le cavalier J1 et transmettre le signal radio.
Tous les codes appris, sont mémorisés dans l’EEPROM externe, une 93LC46 reliée au microcontrôleur par une ligne I2C-bus.
Si au lieu de cela, on alimente le récepteur avec le cavalier J1 ouvert, la routine de fonctionnement normal démarre.
Chaque fois qu’un code démodulé par le récepteur hybride U2 parvient au microcontrôleur, il le compare avec ceux résidents en EEPROM. Il peut ensuite avoir deux actions différentes : Si le code est égal à un de ceux appris précédemment, il déchiffre les informations sur le bouton appuyé et commande la sortie concernée.
Donc, si, sur le TX, le bouton poussoir relatif au canal 1 a été appuyé, le microcontrôleur positionne au niveau haut la sortie RB0 (broche 6) polarisant ainsi T1 qui fait coller le relais RL1.
Si c’est le poussoir relatif au canal 2 qui a été actionné, il se passe la même chose, mais avec la ligne RB1 (broche 7), faisant conduire T2 et coller le relais RL2.
Si au lieu de cela, le code décrypté ne coïncide avec aucun des codes mémorisés dans U3, le microcontrôleur retourne à sa situation initiale et attend l’arrivée d’un nouveau signal et rien ne change dans l’état des sorties, sauf le fait que la LED LD3 clignote chaque fois qu’est reçue une trame de données au format compatible HCS300.

Figure 1: Schéma synoptique de la radiocommande 2 canaux à rolling-code.

Figure 2 : Schéma électrique de la radiocommande 2 canaux à rolling-code.

Figure 3 : L’unité de transmission (la télécommande) est composée d’un petit émetteur réalisé en CMS et enfermé dans un coffret plastique en forme de porte-clefs. Le système est bi-canal et fonctionne avec une pile de 12 volts miniature. Il dispose d’un oscillateur SAW très stable accordé sur 433,92 MHz, modulé par les impulsions que l’encodeur Microchip HCS301 produit à chaque fois que l’on agit sur l’un des deux poussoirs.

Figure 4: Schéma d’implantation des composants de la radiocommande 2 canaux à rolling-code.

Figure 5 : Notre récepteur est réalisé avec deux circuits intégrés seulement : un microcontrôleur PIC16C54 contenant toute la logique de commande et une petite mémoire à accès sériel.

Figure 6 : Dessin du circuit imprimé à l’échelle 1.

Liste des composants
R1 = 10 kΩ
R2 = 10 kΩ
R3 = 10 kΩ
R4 = 10 kΩ
R5 = 10 kΩ
R6 = 1 kΩ
R7 = 10 kΩ
R8 = 47 kΩ
R9 = 1 kΩ
R10 = 10 kΩ
R11 = 47 kΩ
R12 = 10 kΩ
R13 = 1 kΩ
C1 = 100 nF multicouche
C2 = 220 μF 16 V électrolytique
C3 = 220 μF 25 V électrolytique
C4 = 10 pF céramique
D1 = Diode 1N4007
D2 = Diode 1N4007
D3 = Diode 1N4007
LD1 = Diode LED jaune
LD2 = Diode LED jaune
LD3 = Diode LED rouge
U1 = Régulateur 7805
U2 = Module Aurel BC-NBK
U3 = Intégré 93LC46
U4 = μcontrôleur 16C54-RC préprogrammé (MF307)
DS1 = Dip-switch 2 inters
J1 = Cavalier pour ci
T1 = Transistor NPN BC547
T2 = Transistor NPN BC547
RL1 = Relais 12 V 1 RT
RL2 = Relais 12 V 1 RT

Divers :
1 Support 2 x 4 broches
1 Support 2 x 9 broches
4 Borniers 2 pôles
1 Circuit imprimé réf. S307


Figure 7 : Le module récepteur BCNBK de la société Aurel est un récepteur à super-réaction complet, accordé sur 433,92 MHz. Il est conforme à la norme européenne CE ETS 300220.
1 = +5 volts
2 = Masse
3 = Antenne
7 = Masse
11 = Masse
13 = Point test
14 = Sortie
15 = +5 volts


L’étage de sortie du récepteur de radiocommande
Il faut également préciser que les sorties de la radiocommande peuvent fonctionner individuellement, soit en mode impulsionnel, soit en bistable en fonction de la position des dip-switchs de DS1.
Le premier concerne le canal 1 (RL1) et le second le canal 2 (RL2). Pour les deux, ouverts (off) signifie un fonctionnement bistable et fermés (on) un fonctionnement à impulsions.
La position des micro-interrupeurs de DS1 peut être changée que le circuit soit en fonctionnement ou à l’arrêt. En effet, chaque changement de mode effectué, même après la mise en service, est tout de même pris en considération.
Notez aussi que l’activation des relais est mise en évidence par l’allumage de la LED orange qui lui est affectée, LD1 pour RL1 et LD2 pour RL2.
Les contacts, aussi bien ceux normalement fermés que ceux normalement ouverts sont disponibles sur le bornier de sortie et peuvent être utilisés pour commander toutes sortes de charges.
Les seules limitations se situent dans le courant qui ne doit pas dépasser 1 ampère et dans la tension de travail qui, pour les relais choisis, ne doit pas être supérieure à 250 volts alternatifs.

L’alimentation
Tout le circuit est alimenté en 12 volts sous 100 milliampères, appliqués aux points “Val”, avec le positif sur l’anode de la diode de protection D3 (qui évite les dégâts en cas d’inversion de polarité).
Les relais fonctionnent directement avec la tension disponible en aval de la diode D3. En ce qui concerne l’alimentation du module hybride BC-NBK et de la logique, elle est confiée au régulateur intégré U1, un 7805 en version TO-220, qui délivre 5 volts bien stabilisés.

Figure 8 : L’algorithme de décodage

Le microcontrôleur utilisé dans le récepteur pour radiocommande proposé dans cet article est un PIC16C54 spécialement programmé pour lire et déchiffrer les trames de données au format HCS301 extraites de la sortie du démodulateur de la section HF.
Notre programme utilise un algorithme de décodage parmi les trois disponibles et proposé par Microchip aux fabricants de systèmes rolling-code.
Nous parlons du très connu “Normal Decoder” (MCDEC) qui génère les clefs de décodage (Decryption key) en utilisant le numéro de série reçu de l’encodeur du transmetteur durant la procédure d’auto-apprentissage du code de base.
En outre, dans le “Normal Decoder”, le code de fabrication (manufacturercode) n’est pas extrait de la trame reçue, mais est simplement lu par la mémoire de programme.
Nonobstant cette simplification de l’algorithme, notre dispositif peut compter sur plusieurs millions de combinaisons possibles, en maintenant toujours la caractéristique des “Keeloq” de non-répétabilité de la trame.
En pratique, chaque pression d’un des deux boutons poussoirs du transmetteur provoque l’envoi d’une trame de données différentes de la précédente.
L’unique condition à respecter est que le TX et le RX doivent êtres basés sur un “chip” ayant un code de fabrication (manufacturer-code) identique.
Par la force des choses, le TX et le RX doivent donc être acquis chez le même revendeur !

Réalisation pratique
Voyons maintenant les conseils concernant le montage de l’unité de réception.
Il faut tout d’abord réaliser ou se procurer le circuit imprimé qui doit se faire par photogravure en utilisant le dessin à l’échelle 1 donné en figure 6.
Le circuit imprimé gravé et percé est prêt à recevoir les composants que nous vous conseillons d’insérer et de souder en partant des plus bas pour terminer par les plus haut.
Commencez donc par les résistances et par les diodes, ensuite, passez à la mise en place des supports des circuits intégrés, qu’il convient de placer comme cela est indiqué sur le schéma d’implantation de la figure 4, afin d’avoir le sens de mise en place au moment de l’insertion des circuits intégrés.
Montez le dip-switchs DS1 à deux micro-interrupteurs, en faisant attention que le premier (1) corresponde à la broche 8 et le second à la broche 9 de U4.
Ensuite, pour J1, vous pouvez utiliser soit un mini-interrupteur fil soit un cavalier pour circuit imprimé.
Poursuivez par la mise en place du régulateur U1, dont la partie métallique doit être placée vers l’extérieur de la platine.
Mettez ensuite en place le module hybride BC-NBK, qui ne peut se placer que dans le bon sens.
Les petits relais (modèle miniature, ITT-MZ ou similaire) ne peuvent également que se placer dans le bon sens.
Terminez l’opération en soudant les borniers à vis pour circuit imprimé au pas de 5 mm en correspondance des pastilles réservées à l’alimentation, sans oublier celles relatives aux contacts des sorties OUT1 et OUT2.
Le circuit est prêt après avoir inséré les deux circuits intégrés dans leur support respectif, en faisant attention de faire coïncider leur repère de positionnement avec celui du support (voir figure 4).
Le microcontrôleur est disponible préprogrammé (MF307).
Pour faire fonctionner cette radiocommande 2 canaux à rolling-code, il faut une alimentation continue d’une valeur comprise entre 12 et 15 volts et pouvant fournir un courant d’au moins 100 milliampères. Un petit bloc multi-sorties que l’on peut acquérir dans une grande surface fera parfaitement l’affaire.

Figure 9 : Le circuit proposé dans ces pages, est basé sur le microcontrôleur Microchip PIC16C54-RC qui s’occupe de gérer jusqu’à 10 transmetteurs bi-canal basés sur le codage doté de l’algorithme “Keeloq” et donc réalisés avec un encodeur de la famille HCS300.

Le récepteur se présente sous la forme d’une petite platine très compacte sur laquelle se trouvent installés le microcontrôleur, la mémoire I2C-bus, le module hybride de réception et les deux relais. Le système est adapté pour toutes les applications qui requièrent une haute sécurité dans l’activation des commandes.

Figure 10 : Organigramme du déroulement du programme MF207 inséré dans le microcontrôleur.
Dans cet encadré, nous reproduisons le déroulement du programme simplifié des différentes actions que doit effectuer le microcontrôleur.
Il est intéressant de noter la procédure de programmation qui est activée en fermant le cavalier J1.
En pratique, il convient d’alimenter la platine, de fermer un instant J1, appuyer et maintenir appuyé un des deux boutons poussoirs du transmetteur jusqu’à ce que la LED LD3 commence à clignoter.
A ce moment, on peut relâcher le bouton poussoir, le “Serial number” (code de série) du transmetteur a correctement été appris.


Figure 11 : Le coeur de la radiocommande.
Vue sur le PIC16C54-RC, le dip-switch commandant l’état des relais et le cavalier J1.


Figure 12 : Brochage du PIC16C54-RC.

Initialisation de la radiocommande
La radiocommande opérationnelle, nous devons procéder à la phase d’auto-apprentissage de manière à permettre au récepteur de reconnaître les transmetteurs habilités.
Bien entendu, la première chose à faire est de se procurer une ou plusieurs télécommandes sur la base du code HCS301 du type TX-MINIRR/2 par exemple. Ces télécommandes sont à deux boutons et sont prêtes à être utilisées.
Les paramétrages nécessaires sont “on-board”, c’est-à-dire sur la carte et sont sélectionnés par l’intermédiaire du cavalier J1, qui cumule plusieurs fonctions, dont celle de remise à zéro de la mémoire et celle de validation de l’auto-apprentissage. Si nous voulons effacer le contenu de l’EEPROM (U3), il faut mettre en place le cavalier et mettre la radiocommande sous tension.
Contrôler que la LED rouge LD3 s’allume et attendez au moins 8 secondes. Passé ce délai, la LED doit s’éteindre et la mémoire est effacée.
A ce moment, il faut couper l’alimentation du circuit.
Après la procédure d’effacement de la mémoire, on peut poursuivre par l’autoapprentissage.
Pour cela, il faut remettre le circuit sous tension, fermer un instant le cavalier J1 (moins de 8 secondes) et vérifier que la LED rouge effectue un bref clignotement.
A ce point, il faut placer un transmetteur de ceux qui doivent êtres utilisés par la suite à proximité du récepteur et appuyer sur un de ses deux poussoirs.
Dès que le code est parvenu au récepteur, il est mémorisé, la LED rouge clignote rapidement, tant que le bouton poussoir du transmetteur reste appuyé.
Le récepteur est prêt à fonctionner et il suffit de transmettre une seconde fois avec le transmetteur venant d’être mémorisé, pour voir coller le relais du récepteur, relatif au bouton poussoir appuyé.
Vérifiez qu’après l’apprentissage d’un transmetteur bi-canal avec un encodeur HCS301, les deux canaux soient actifs immédiatement. En effet, le code appris par le récepteur suite à l’appui sur l’un des deux boutons du transmetteur est également valide pour l’autre bouton poussoir.
Nous rappelons que la procédure décrite ci-dessus peut se répéter pour l’auto-apprentissage de 10 transmetteurs au maximum.

0 commentaires:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...