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.
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é.
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é.
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).
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 :
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.
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 pausereturnUne 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) :
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; 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 :
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
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
Aucun commentaire:
Enregistrer un commentaire