Principe de base pour réaliser une télécommande RF

La télécommande fonctionnant par onde radio possède l'avantage certain par rapport à la télécommande infrarouge d'avoir une plus longue portée dans toutes les directions et de ne pas pouvoir être gênée par un quelconque obstacle sur son chemin entre le récepteur. Elle possède néanmoins le désavantage d'être plus difficile à mettre en œuvre. L'utilisation de fréquence radio est quelque chose de nettement plus complexe que d'allumer et d'éteindre une led. Il faut en effet émettre à une certaine fréquence et capter cette certaine fréquence toute en éliminant toutes les autres ondes existante comme la radio, la télévision, les talkie-Walkie et … Les bandes de fréquences sont réservées à certaines applications, par exemple la radio qui travail aux alentours de 100MHz, le Bluetooth qui est à 2.4GHz, ... Les amateurs ont quant à eux le droit d'utiliser certaines fréquences, parmis elle, on retrouve la fréquence de 868Mhz.
Pour simplifier la réalisation de la télécommande, nous avons décidé d'essayer pour vous un émetteur et un récepteur de chez Télécontrolli qui exploitent la nouvelle bande européenne de 868.350mhz. Ces deux composants on été choisis en se basant de un sur leur disponibilité et leur prix, vous pouvez les acheter facilement chez gotronic pour un prix de 7.95€ pièce (ref: rr13-868 et rt8-868). Deuxièmement pour leur capacité et leur facilité de mise en œuvre.
rt8-868rr13-868

Le débit maximal de données peut monter jusqu'à 4800bauds. Cela semble peu, mais tout est relatif, il est évident que celui qui voudrait streamer de la vidéo via ce système n'y arriverait pas, tandis que celui qui veut contrôler à distance un processus, n'aura pas de mal à s'en servir. Précisons quand même que le récepteur ne donnera à sa sortie qu'un signal logique tout ou rien, donc n'essayé pas de faire passer de l'audio, ça marchera pas.

Montage

Le montage est très simple à faire, il faudra faire attention que si l'émetteur peut-être alimenté d'une tension entre 4 et 13 volt, le récepteur devra être alimenté entre 4 et 5.5 volt. Il faut aussi placer une antenne, mais rien d'affolant, un simple fil droit d'une longueur d'une petite vingtaine de centimètre suffit.

Niveau dimension, les deux modules sont inférieurs à 35x12mm ce qui leur permet de tenir dans de petit boîtier (non métallique) sans difficulté.
emet
Du coté de l'émetteur nous pouvons lui imposer une tension entre VDD et la masse allant de 4 à 13 volts. Au niveau de l'entrée de la modulation broche 2, nous placerons une résistance de Pull Down de 1kohms (résistance entre la broche et la masse).
recept
Du coté du récepteur, nous l'alimenterons en 5V et nous placerons à la sortie une résistance de charge de 4.7kohms entre la sortie et la masse.

Envoie d'une modulation

Ces deux modules permettent d'envoyer et recevoir une modulation, c'est-à-dire que l'on ne peut pas émettre un signal continu pendant une longue durée.
Nous devons donc envoyer un signal modulé d'une fréquence minimal de 50 Hz, donc que la période état haut/état bas doit durer maximum 20ms. Le récepteur redonnera alors une copie du signal envoyé, comme ceci :
schemamod

Transmission de données

Nous pouvons alors facilement transmettre des données, il nous suffit pour ça d'utiliser un simple protocole. Pour ceux qui connaissent l'UART (rs232), nous pouvons très bien brancher la sortie UART TX d'un microcontrôleur sur l'émetteur à condition d'inverser l'état logique (que le niveau repos soit à 0 et pas à 1). Au niveau du récepteur, il faudra de nouveau placer un inverseur et la carte recevra ainsi le message. Pour une vitesse de communication ne dépassant pas 4800Bauds. Il vous suffit de vous reportez aux articles à ce sujet sur ce même site.
Nous allons ici établir un autre protocole, très simple. il s'agit d'une modulation du duty cycle, c'est à dire une modulation en modifiant la largeur du signal sans changer sa fréquence. Ce protocole a été utiliser aussi dans le cadre de la réalisation de l'émetteur récepteur infrarouge aussi présent sur ce site.
signal
L'émission du signal commence par l'envoie d'un « 1 » pendant un peu plus de 1280µs, cet envoie permet de signaler au récepteur qu'il va commencer à envoyer des bits… Le récepteur attend alors que le signal passe à l'état bas… La durée de 1280µs a été choisie à l'œil, vraiment et uniquement parce que c'était joli ;)… Il est éventuellement possible d'optimiser ce temps (sans dépasser les 4800Bauds).

Une fois le premier signal fini, on commence directement à envoyer le premier bit, l'émetteur arrête de transmettre pendant 640µs, le récepteur reçoit alors 0. Une fois les 640µs passées, soit l'émetteur, si le bit à envoyer est 1, recommence à réémettre pendant 640µs, si le bit est 0, l'émetteur continue à ne rien envoyer pendant 640µs… Une fois ce temps écoulé, l'émetteur envoie de nouveau que ce soit pour 1 ou 0 un signal haut pendant 640µs afin de prévenir le récepteur que le bit est envoyé et qu'on va passer au suivant (sauf si on est au huitième bit, dans ce cas c'est juste pour prévenir de la fin d'émission)… Et on recommence avec le bit suivant.

Du coté de l'émetteur nous aurons un code de ce genre (assembleur pic) :
bsf PORTB, sortiecall pause1280 ; envoie rien pendant 1280 call pause640; un peu plus de 1280µsbcf PORTB, sortieboucletx btfsc cle, 7 goto send1call pause1280 ; envoie rien pendant 1280goto endtxsend1call pause640; envoie rien pendant 640 cad qu'on envoie un 1bsf PORTB, sortie; met à 1 la sortie (sortie est un define sur PORTB)call pause640; envoie pendant 640µsendtx rlf cle, 1 bsf PORTB, sortie; call pause640; envoie pendant 640µsbcf PORTB, sortiedecfsz boucle, 1goto boucletx; boucle pour envoyer les 8 bitsgoto mainpause1280 ; pause de 1280µsec exactementmovlw h'FF';movwf compteur;call pause;returnpause640 ; pause de 640 µsec exactementmovlw h'7C';movwf compteur;call pause;returnpause    ; crée une pause de 5µsnopnopdecfsz compteur,Fgoto pausereturn
La variable « cle » contient les 8 bits à envoyer, « sortie » est une constante donnant la broche du PORTB branchée sur l'entrée modulation de l'émetteur. « compteur » une variable temporaire pour faire les pauses.

Du coté du récepteur le code ressemblera plutôt à ceci, en admettant que la sortie du module est branchée sur la pin 0 du PORTB configurée bien évidemment en entrée :
mainbtfss PORTB, 0 ; on attend le changement d'état du port Bgoto rxgoto main;on regarde s'il s'agit bien du signal de depart :rx movlw h'08';movwf boucle; le compteur qui va faire la boucle pour qu'on reçoive 8 bitcall pause1280; une pause de 1280µsbtfsc PORTB, 0; si le signal est déjà repassé a 0 c'est que c'est le mauvais,goto main; mauvais signal!!!bouclerx btfss PORTB, 0;goto bouclerx; attendre que le signal repasse a 0call pause640; attend 640µsecrlf cle, 1;btfss PORTB, 0; le signal est repassé a 1 après la pause de 640µsecgoto rx1;bcf cle,0; le signal est toujours a 0;rxendcall pause820; btfsc PORTB, 0; le signal doit être a 1, sinon le signal est perdugoto main; signal incorrect!!!decfsz boucle, 1; boucle jusqu'a 8 bit reçugoto bouclerxgoto analyse; les 8 bits sont réçu correctement, on va les analyser pour savoir ce qui faut faurerx1bsf cle, 0; 1 à été reçu, on met le bit a l'état hautgoto rxend;
Une fois les 8 bits envoyées on sort sur une procédure appelée « analyse » qui permettra de traiter l'information.

Schéma proposé par le constructeur :

Le constructeur propose dans son datasheet un autre montage, à base d'un composant non programmable… Suivant vos préférences, sachez quand même que le prix de ce composant est fort proche du prix d'un petit microcontrôleur
constru

Aucun commentaire:

Enregistrer un commentaire