I. Introduction▲
Vous allez utiliser la bibliothèque 'CapacitiveSensor' (Capteur Capacitif) de Paul Badger pour ce projet. Cette bibliothèque vous permettra de mesurer la capacitance de votre corps.
La capacitance est la mesure de la quantité de charge électrique que quelque chose peut stocker. La bibliothèque vérifie deux broches de votre Arduino (l'une sert d'émetteur, l'autre de récepteur), et mesure le temps nécessaire pour que ces deux broches soient dans le même état. Ces broches seront connectées à un objet métallique, par exemple une feuille d'aluminium. Lorsque vous vous approcherez de cet objet, votre corps absorbera une certaine quantité de charge, provoquant l'augmentation du temps nécessaire aux deux broches pour parvenir au même état.
Préparation de la bibliothèque
La version la plus récente de la bibliothèque 'CapacitiveSensor' est ici : http://playground.arduino.cc/Main/CapacitiveSensor. Téléchargez le fichier sur votre ordinateur et décompressez-le.
Ouvrez le répertoire contenant les croquis Arduino (par défaut, il devrait se trouver dans votre répertoire « Documents »). Dans ce dossier, créez, et s'il n'existe pas déjà, un nouveau répertoire appelé « libraries ». Déposez dans ce répertoire, le dossier « CapacitiveSensor » que vous avez décompressé et redémarrez le logiciel Arduino.
Cliquez sur le menu « Files>Examples » dans le logiciel Arduino, et vous remarquerez la nouvelle entrée « CapacitiveSensor ». En effet, la bibliothèque que vous venez d'importer contient un exemple de projet. Ouvrez l'exemple de croquis 'CapacitiveSensorSketch' et compilez-le. Si aucune erreur ne survient pendant la compilation, alors vous saurez que l'installation de la bibliothèque est réussie.
Pour plus d'informations sur les bibliothèques, visitez https://www.arduino.cc/en/Reference/Libraries.
II. Ingrédients▲
Résistance 220 Ω |
Résistance 1 MΩ |
LED |
Feuille métallique |
x1 |
x1 |
x1 |
x1 |
III. Construire le circuit▲
- Connecter une LED, l'anode à la borne 12 de Arduino, et la cathode à la masse via une résistance de 220 Ω comme illustré sur les Fig.1 et Fig.2.
- Connecter les bornes numériques 2 et 4 à votre platine d'expérimentation. Connecter ces deux bornes avec une résistance de 1 MΩ . Sur la même colonne que celle où est connectée la borne 2, insérer un long fil (au moins 8-10 cm) dont l'une des extrémités sera libre et sortira de votre platine d'expérimentation. Cela constituera votre capteur de contact.
Dans ce projet, il n'y a pas besoin de fournir 5 V à votre platine de test. Le courant nécessaire au fonctionnement du capteur est directement fourni par la borne numérique 4 de Arduino.
Comme pour les autres projets utilisant des LED, diffuser la lumière rendra tout cela beaucoup plus attrayant. Des balles de ping-pong, de petits abat-jours faits de papier ou de plastique, ou quoi que ce soit que vous avez à portée de main fera l'affaire. |
IV. Le programme▲
- Déclaration de la bibliothèque CapacitiveSensor
Au début du programme, importez la bibliothèque CapacitiveSensor. Cette déclaration s'effectue de la même façon que pour une bibliothèque Arduino native comme la bibliothèque Servo des projets précédents.
#include
<CapacitiveSensor.h>
CapacitiveSensor capteurCapa =
CapacitiveSensor(4
,2
);
- Configuration du seuil de déclenchement
Créez une variable pour définir le seuil de sensibilité qui déclenchera l'allumage de lampe. Vous modifierez cette valeur après avoir testé la plage de fonctionnement du capteur. Enfin, définissez la broche sur laquelle la LED est connectée.
int
seuilDeclenchement =
1000
;
const
int
brocheLED =
12
;
Dans la fonction setup() (=configuration), ouvrez une connexion série à 9600 bps. Vous l'utiliserez pour afficher les valeurs mesurées par le capteur. Déclarez aussi la brocheLED comme OUTPUT (=sortie).
2.
3.
4.
void
setup() {
Serial.begin(9600
);
pinMode(brocheLED, OUTPUT);
}
- Détection d'un contact
Dans la fonction loop() (=boucle), créez une variable de type long qui stockera la mesure faite par le capteur. La bibliothèque renvoie la valeur mesurée en utilisant la commande appelée capacitiveSensor() qui prend un argument donnant le nombre d'échantillons que vous souhaitez lire pour effectuer et lisser la mesure. Si vous utilisez seulement quelques échantillons, il est possible que vous constatiez de nombreuses variations dans les mesures du capteur. Si vous prenez trop d'échantillons, vous introduirez, malgré vous, une latence sensible dans votre programme puisque la fonction lira les valeurs aux bornes du capteur de très nombreuses fois avant de renvoyer la valeur de la mesure. 30 échantillons semblent être une bonne valeur pour commencer. Affichez la valeur mesurée par le capteur et retournée par la fonction dans le moniteur série.
2.
3.
4.
void
loop() {
long
mesureCapteur =
capteurCapa.capacitiveSensor(30
);
Serial.print("Mesure : "
);
Serial.println(mesureCapteur);
- Contrôle de la lampe
Avec une instruction if()…else (=si()…sinon), vérifiez si la mesure faite par le capteur est supérieure à la limite définie pour le seuil de détection. Si oui, allumez la LED. Sinon, éteignez-la.
2.
3.
4.
5.
6.
if
(mesureCapteur >
seuilDeclenchement) {
digitalWrite(brocheLED, HIGH);
}
else
{
digitalWrite(brocheLED, LOW);
}
Enfin, insérez une courte pause avec l'instruction delay() (=retarder) avant de clore la fonction loop().
delay(10
);
}
V. Utilisez le montage▲
Après avoir programmé Arduino, vous voudrez trouver quelles sont les valeurs retournées par le capteur quand il est touché. Ouvrez le moniteur série et notez la valeur donnée par le capteur lorsque vous ne le touchez pas. Appuyez doucement sur la partie du fil laissée libre et dépassant de votre platine d'expérimentation, ou bien si vous avez procédé à la modification du montage, sur la feuille d'aluminium. Le nombre affiché dans le moniteur série devrait augmenter. Essayez d'appuyer plus fermement et voyez comment évolue la mesure.
Une fois que vous avez une idée de la plage des valeurs qui peuvent être retournées par le capteur, retournez au croquis et modifiez la variable seuilDeclenchement, qui définit le seuil de déclenchement de l'allumage de la LED, en lui donnant une valeur plus grande que celle renvoyée par le capteur quand il n'est pas touché, mais aussi plus petite que celle renvoyée quand vous le touchez. Rechargez le croquis avec la nouvelle valeur dans Arduino. La lumière devrait s'allumer de manière fiable quand vous touchez votre capteur (le fil libre, ou bien la feuille métallique), et s'éteindre quand vous ne touchez plus le capteur. Si la lampe ne s'allume pas lorsque vous touchez le capteur, essayez de baisser encore un peu la valeur du seuil de déclenchement.
Vous avez probablement remarqué que les mesures du capteur dépendent de la manière dont vous le touchez et en particulier de la taille de la surface de votre doigt touchant le capteur. Pouvez-vous utiliser cette caractéristique pour créer d'autres interactions avec la LED ? Et si vous utilisiez plusieurs capteurs pour augmenter ou réduire l'intensité de la lumière produite par la LED ? Et si vous placiez une résistance d'une valeur différente entre les broches 2 et 4, cela modifiera la sensibilité du capteur. Est-ce que cela pourrait être utile pour votre interface ? Vous pourriez essayer de détecter la proximité de votre main sans contact, essayer de détecter un simple effleurement, ou bien à l'inverse, faire en sorte que vous deviez plaquer la paume de votre main contre le capteur pour déclencher l'allumage… |
Les bibliothèques tierce-parties comme la CapacitiveSensor de Paul Badger sont des outils utiles pour étendre les capacités d'Arduino. Une fois installées, elles se comportent de la même manière que les bibliothèques fournies avec le logiciel de base.
VI. Note de la rédaction▲
Ce tutoriel est une traduction du livret d'accompagnement du kit de démarrage Arduino. Le kit comprend une sélection de composants électroniques les plus courants et les plus utiles, accompagnée d'un livre de 15 projets. Depuis les bases de l'électronique, jusqu'à des projets plus complexes et intéressants, le kit vous aidera à contrôler notre monde physique avec des capteurs et des actionneurs.