Elektor Electronics 2018 03 04
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
tâche respective ; cela permet aux<br />
croquis de rester très simples.<br />
Figure 3. Ma raquette de badminton va enfin servir à quelque chose !<br />
Croquis de l’émetteur<br />
L’émetteur utilise la bibliothèque NewPing<br />
pour piloter le capteur ultrasonique. Cette<br />
bibliothèque se charge du « sale boulot »<br />
et retourne une distance en centimètres.<br />
Après avoir créé un objet sonar, il sufft<br />
d’appeler ping_cm. Dans ce croquis, la<br />
fonction est appelée huit fois d’afflée<br />
à intervalle de 100 ms et la moyenne<br />
des mesures est calculée. La valeur<br />
obtenue est stockée dans un tampon<br />
avec l’horodatage et le code spécial<br />
(identificateur de l’émetteur).<br />
La bibliothèque VirtualWire se charge<br />
d’envoyer les données au module<br />
émetteur FSK à 433 MHz, relié à la<br />
broche 12 de l’Arduino. Après avoir<br />
configuré la bibliothèque, l’envoi de<br />
données se fait tout simplement en<br />
appelant vw_send puis en attendant la<br />
fin de la transmission avec vw_wait_tx.<br />
La procédure décrite ci-dessus est<br />
répétée chaque seconde.<br />
LISTE DES<br />
COMPOSANTS<br />
avec chaque mesure du niveau d’eau. À<br />
chaque détection d’un signal, le récepteur<br />
tente d’extraire le mot de code pour le<br />
comparer à une valeur connue. Si les<br />
deux correspondent, le niveau d’eau reçu<br />
est affché sur son LCD (fig. 2).<br />
Comme il n’y a pas de fil entre l’émetteur<br />
et le récepteur, ce dernier n’a aucun moyen<br />
de savoir si l’émetteur cesse d’émettre, par<br />
ex. à cause d’une panne d’alimentation.<br />
Pour contourner ce problème, un<br />
horodatage ou timestamp (comptant les<br />
secondes de 0 à 59) est inclus dans le<br />
message transmis ; sa valeur est visible<br />
à la droite de l’afficheur. Si la valeur<br />
n’évolue pas, c’est probablement parce<br />
que la transmission a cessé de fonctionner.<br />
La LED reliée à la broche 13 de l’Arduino<br />
cessera alors de clignoter.<br />
Alimenté en 5 V et avec les antennes<br />
que j’ai utilisées, l’émetteur possède<br />
une portée atteignant 400 m sans effort.<br />
Pour accroître la portée, la broche V CC<br />
du module émetteur pourra être reliée<br />
à une tension de 12 V : la plupart de ces<br />
émetteurs FSK acceptent de 4 à 12 V.<br />
Quelques mots sur le logiciel<br />
Le logiciel de ce projet comprend deux<br />
croquis Arduino, un pour l’émetteur et<br />
l’autre pour le récepteur. Tous deux<br />
utilisent abondamment des bibliothèques<br />
à sources ouvertes pour accomplir leur<br />
Croquis du récepteur<br />
Côté récepteur, ce n’est pas plus<br />
compliqué. On utilise toujours la<br />
bibliothèque VirtualWire, mais en mode<br />
réception. La bibliothèque est configurée<br />
pour écouter un module récepteur relié<br />
à la broche 2 de l’Arduino. La fonction<br />
vw_rx_start doit être appelée pour<br />
mettre la bibliothèque et le module en<br />
mode d’écoute. Une fois dans ce mode,<br />
un appel à vw_get_message se chargera<br />
du reste. Lorsque des données sont<br />
disponibles, elles sont lues et copiées<br />
dans le tampon de réception ; en<br />
l’absence de données, rien ne se passe.<br />
Chaque message reçu est vérifié :<br />
1. Possède-t-il le bon nombre<br />
d’octets ?<br />
2. Contient-il le mot de code décrit<br />
plus haut ?<br />
3. La valeur est-elle supérieure ou<br />
égale à zéro ?<br />
Si toutes ces conditions sont vraies, la<br />
valeur est affchée sur le LCD. L’horodatage<br />
du message est aussi extrait et affché.<br />
Maintenant standard dans le monde<br />
Arduino, la bibliothèque LiquidCrystal<br />
gère le LCD. La LED s’illuminera lorsque<br />
l’affcheur est mis à jour : vous pourrez<br />
repérer les mises à jour de loin.<br />
86 mars/avril <strong>2018</strong> www.elektormagazine.fr