Les autres capteurs¶
Rappel du diagramme¶

Capteurs de luminosité¶
L'Auriga est équipé de deux capteurs de luminosité. Ces capteurs sont des photorésistances. Ils sont utilisés pour détecter la luminosité ambiante.
La valeur renvoyée par le capteur est proportionnelle à la luminosité ambiante. Plus la luminosité est forte, plus la valeur renvoyée est élevée.
Ils sont branchés sur les entrées analogiques A3 et A2.
Question : Quelle est la valeur renvoyée par le capteur lorsque la luminosité est au minimum? Quelle est la valeur renvoyée par le capteur lorsque la luminosité est à son maximum?
Réponse
Étant une valeur analogique 10-bit, les valeurs oscilleront entre 0 (minimum) et 1023 (maximum)
Exemple de code¶
Voici un code simple qui permet de lire les valeurs renvoyées par les capteurs de luminosité.
Cas d'utilisation¶
- Panneau solaire qui suit le soleil
- Robot qui traque la lumière
Capteur sonore¶
L'Auriga est équipé d'un capteur sonore. Ce capteur est un microphone. Il est branché sur l'entrée analogique A1.
Il ne faut pas confondre le capteur sonore avec le buzzer. Le buzzer est un émetteur sonore. Le capteur sonore est un récepteur sonore. Il n'est pas aussi sensible qu'un microphone, mais il peut quand même détecter des sons.
Exemple de code¶
Voici un code simple qui permet de lire la valeur renvoyée par le capteur sonore.
Tapez des mains près du capteur sonore. Vous verrez que la valeur renvoyée par le capteur augmente.
Pour mieux apprécier les valeurs retournées, vous pouvez utiliser le traceur série de l'IDE Arduino.
Cas d'utilisation¶
- Robot qui s'active au son
- Alarme
Capteur de température¶
L'Auriga est équipé d'un capteur de température (NCP18XH103F03RB). Ce capteur est une thermistance. Il est branché sur l'entrée analogique A0.
Ainsi, la valeur renvoyée par le capteur est une valeur résistive. Il faudra donc convertir cette valeur en température.
Exemple de code¶
Niveau de la batterie¶
La plupart des robots du labo sont alimentés par un bloc de piles rechargeables NiMH 7.2V (6 cellules, 3600 mAh). Comme cette tension dépasse ce que l'entrée analogique peut mesurer directement, il faut passer par un diviseur de tension avant de la lire sur une broche analogique.
Le montage utilisé est le même que celui vu au cours sur l'initiation au mBot Ranger : le diviseur de tension est branché sur l'entrée analogique A4, avec R1 = 100 kΩ et R2 = 51 kΩ.
Rappel : calcul de la tension de sortie d'un diviseur de tension
Pour un diviseur de tension formé de R1 (entre l'entrée et le point milieu) et R2 (entre le point milieu et la masse), la tension mesurée au point milieu (Vout, celle que lit analogRead) se calcule ainsi à partir de la tension d'entrée (Vin) :
Ici, c'est l'inverse qu'on veut : on connaît Vout (calculée à partir de la valeur lue par analogRead) et on cherche à retrouver Vin, soit la tension réelle de la batterie. Il suffit d'isoler Vin dans la formule :
C'est exactement ce que fait la ligne voltage = raw * (VREF / 1023.0) * ((R1 + R2) / R2); dans le code plus bas : raw * (VREF / 1023.0) calcule Vout, puis la multiplication par (R1 + R2) / R2 retrouve Vin.
Une fois la tension réelle retrouvée, on peut la convertir en pourcentage de charge à l'aide d'un mappage linéaire entre une tension "vide" et une tension "pleine".
Question : Pourquoi ne peut-on pas brancher directement le bloc de piles sur une entrée analogique de l'Arduino?
Réponse
L'entrée analogique de l'Arduino Mega (utilisé par l'Auriga) ne peut mesurer qu'une tension entre 0V et 5V (VREF). Une tension de 7.2V (ou plus, en pleine charge) endommagerait la broche. Le diviseur de tension permet de ramener la tension dans une plage sécuritaire.
Exemple de code¶
Batterie au lithium 7.4V
Certains robots sont plutôt équipés d'une batterie au lithium 7.4V (facilement reconnaissable à sa forme rectangulaire) plutôt que du bloc NiMH 7.2V. Cette batterie est composée de 2 cellules Li-ion/LiPo (3.7V nominal chacune).
Le montage (broche A4, R1, R2) reste le même, mais il faut adapter les tensions de référence dans le code, car les cellules au lithium n'ont pas la même plage de tension que le NiMH :
Contrairement au NiMH, une cellule au lithium déchargée sous ~3.0V peut être endommagée de façon permanente. Il vaut donc mieux garder une marge de sécurité et fixer TENSION_VIDE un peu plus haut (autour de 3.2V/cellule) plutôt que de viser la limite absolue.
Cas d'utilisation¶
- Afficher un avertissement lorsque la batterie est faible
- Arrêter le robot avant une décharge complète, ce qui peut endommager les piles NiMH ou les cellules au lithium
- Afficher le niveau de charge sur un écran ou l'anneau de DEL
Avertisseur sonore¶
L'Auriga est équipé d'un buzzer. Il est branché sur la broche D45.
Il existe la classe MeBuzzer.h pour interagir avec le buzzer. Toutefois, elle n'est pas optimale puisqu'elle utilise des appels à delay, ce qui fait en sorte que le code devient bloquant.
Pour contourner ce problème, nous pouvons procéder en manipulant directement le buzzer.
Voici un exemple :
Exemple de code simple¶
Exercices¶
- Programmer le robot pour qu'il avance vers la source lumineuse la plus forte et avec les propriétés suivantes :
- Lorsqu'il détecte une collision, un son retentit pendant 1 seconde, la lumière s'affiche en rouge et il s'arrête.
- Si l'on claque des mains, il recule pendant 0.5 seconde
- Afficher le niveau de charge de la batterie à l'aide de l'anneau de DEL (
MeRGBLed) :- Le nombre de DEL allumées doit être proportionnel au niveau de charge (sur les 12 DEL de l'anneau)
- Les DEL allumées doivent être vertes si le niveau est à 75% ou plus
- Les DEL allumées doivent être jaunes si le niveau est entre 50% et 75%
- Les DEL allumées doivent être rouges si le niveau est sous 50%