Lire un capteur avec Arduino
Programmation - 4ème
Lire un capteur avec Arduino
Objectifs
- Comprendre le rôle d'un capteur et son branchement à une carte Arduino.
- Écrire un programme simple pour lire la valeur numérique d'un capteur.
- Afficher et interpréter les données lues dans le moniteur série de l'IDE Arduino.
Introduction
Imaginez créer une station météo qui mesure la température de la salle, ou un système qui allume automatiquement la lumière quand il fait sombre. Ces objets intelligents commencent tous par une même étape : lire la valeur d'un capteur. Aujourd'hui, nous allons apprendre à faire parler ces capteurs avec une carte Arduino.
Comment un programme informatique peut-il capter et interpréter une information physique du monde réel, comme la lumière ou la température, à l'aide d'un microcontrôleur ?
Les capteurs et l'Arduino : faire le lien entre le physique et le numérique
Un capteur est un composant électronique qui transforme une grandeur physique (comme la lumière, la température, la distance, le son) en un signal électrique compréhensible par l'Arduino. Par exemple, une photorésistance (LDR) voit sa résistance électrique varier en fonction de la luminosité : plus il fait clair, plus sa résistance est faible. L'Arduino, elle, est un microcontrôleur : c'est le cerveau du projet. Elle ne comprend pas directement les variations de résistance. C'est pourquoi nous utilisons une entrée analogique. Les entrées analogiques (broches A0 à A5 sur un Arduino Uno) sont capables de lire une tension variable (généralement entre 0V et 5V) et de la convertir en un nombre. C'est la clé ! Le programme va transformer une mesure physique (ex: luminosité) en une tension, puis en une valeur numérique que l'on pourra traiter. Pour lire un capteur simple comme une photorésistance, on utilise un montage appelé 'pont diviseur de tension'. On branche le capteur en série avec une résistance fixe entre le +5V et la masse (GND). La broche commune entre les deux composants est connectée à une entrée analogique (ex: A0). La tension à ce point varie avec la résistance du capteur, et c'est cette tension que l'Arduino va lire.
Points clés
- Un capteur convertit une information physique (lumière, température...) en signal électrique.
- L'Arduino lit ce signal via ses entrées analogiques (broches A0 à A5).
- Une entrée analogique convertit une tension (0-5V) en une valeur numérique (0-1023).
- Le montage standard pour un capteur résistif est le pont diviseur de tension.
Le programme : lire, afficher, comprendre
La programmation se fait dans l'IDE Arduino. Un programme (ou 'sketch') a toujours deux fonctions principales : setup() qui s'exécute une fois au démarrage, et loop() qui se répète indéfiniment. Pour lire un capteur, on suit trois étapes dans le code. Premièrement, dans la fonction setup(), on initialise la communication série avec la commande `Serial.begin(9600);`. Cela ouvre un canal de communication entre la carte et l'ordinateur pour afficher les résultats dans le 'Moniteur Série'. Deuxièmement, dans la fonction loop(), on utilise la fonction `analogRead(pin)` où 'pin' est le numéro de l'entrée analogique (ex: A0). Cette fonction retourne un entier compris entre 0 (pour 0V) et 1023 (pour 5V). C'est la valeur brute du capteur. Troisièmement, on veut voir cette valeur. Pour cela, on utilise `Serial.println(valeur);` pour l'envoyer sur le moniteur série et la faire apparaître à l'écran. Il est crucial d'interpréter cette valeur. Par exemple, si on couvre une photorésistance, la valeur lue va augmenter (car la tension au point de mesure augmente). En observant les valeurs dans différentes conditions (pleine lumière, obscurité), on peut définir des seuils pour déclencher des actions plus tard, comme allumer une LED si la valeur dépasse 800.
Points clés
- La fonction `analogRead(pin)` retourne une valeur entière entre 0 et 1023.
- Le Moniteur Série (initialisé par `Serial.begin()`) est essentiel pour visualiser et déboguer les lectures.
- Il faut observer et interpréter les valeurs lues pour les relier à la grandeur physique mesurée.
Applications pratiques et montage type
Prenons l'exemple concret d'un capteur de lumière (LDR). Le montage : une patte de la LDR est connectée au +5V de l'Arduino. L'autre patte est connectée à la fois à la broche A0 ET à une résistance fixe de 10 kΩ (kilo-ohms). L'autre extrémité de cette résistance de 10 kΩ est connectée à la masse (GND). C'est le pont diviseur. Le code correspondant est simple : dans le `loop()`, on écrit `int valeurLumiere = analogRead(A0);` pour stocker la lecture dans une variable, puis `Serial.println(valeurLumiere);`. En ouvrant le Moniteur Série (icône en haut à droite de l'IDE), on voit défiler les valeurs. En dirigeant une lampe de poche vers le capteur, la valeur chute. En le couvrant avec la main, la valeur monte. Autre application : un capteur de température TMP36. Son branchement est différent : il a trois pattes (alimentation, sortie, masse). Sa broche de sortie, qui délivre directement une tension proportionnelle à la température, se connecte à A0. La valeur lue devra alors être convertie en degrés Celsius par une petite formule dans le code, montrant l'étape suivante après la simple lecture brute.
Points clés
- Montage pratique : LDR + résistance de 10 kΩ en pont diviseur sur l'entrée A0.
- Le code minimal comprend `analogRead()` et `Serial.println()`.
- Le Moniteur Série permet de vérifier instantanément l'effet d'une action sur le capteur.
À retenir
Lire un capteur avec Arduino implique de brancher physiquement le capteur sur une entrée analogique, souvent via un montage en pont diviseur pour les capteurs résistifs. Le programme utilise la fonction `analogRead()` pour acquérir une valeur numérique entre 0 et 1023, proportionnelle à la tension mesurée. L'affichage de cette valeur dans le Moniteur Série grâce à `Serial.println()` est indispensable pour interpréter les données et comprendre le comportement du capteur.
- Un capteur se branche généralement sur une entrée analogique (A0-A5).
- La fonction `analogRead()` retourne une valeur entre 0 et 1023.
- On utilise `Serial.begin()` et `Serial.println()` pour afficher et observer les valeurs lues.
