Leçon 7/31-2 : détection du champ magnétique à l'aide d'un interrupteur reed | Kit SunFounder
Détecter un champ magnétique est l'une des façons les plus simples et les plus satisfaisantes de débuter avec les entrées numériques sur un Arduino. Dans ce projet, vous allez construire un détecteur de champ magnétique à l'aide d'un interrupteur à lames souples — un minuscule interrupteur encapsulé dans du verre qui ferme ses contacts chaque fois qu'un aimant s'en approche. Comme l'interrupteur à lames souples se comporte exactement comme un bouton-poussoir (il est soit ouvert, soit fermé), c'est une introduction parfaite à la fonction digitalRead(), et cela vous apprend aussi pourquoi une résistance de rappel à la masse est importante et comment la résistance de tirage interne de l'Arduino peut la remplacer entièrement.
Une fois que cela fonctionne, le même circuit devient le cœur de nombreuses réalisations concrètes. Voici quelques idées pratiques que vous pouvez essayer :
- Alarme de porte et de fenêtre — montez l'interrupteur à lames souples sur un cadre et un petit aimant sur la porte ; l'Arduino signale « ouvert » dès que l'aimant s'éloigne.
- Tachymètre sans contact — collez un aimant sur une roue en rotation et comptez les impulsions pour mesurer le régime en tr/min.
- Relevé de compteur d'eau ou de gaz — de nombreux compteurs de services publics disposent d'une sortie d'impulsions magnétiques qu'un interrupteur à lames souples peut capter et enregistrer.
- Capteur de capot d'ordinateur portable / de boîtier — détectez la fermeture d'un capot pour déclencher une mise en veille ou une LED d'état.
- Compteur de vitesse de vélo — un aimant sur le rayon et un interrupteur à lames souples sur la fourche vous donnent une impulsion par tour de roue.
- Détection d'effraction — cachez une paire aimant et interrupteur à lames souples à l'intérieur d'un boîtier pour savoir s'il a été ouvert.
Comment fonctionne un interrupteur à lames souples
Un interrupteur à lames souples est une petite capsule de verre contenant deux fines lames ferromagnétiques (dans la vidéo à 12:38). En présence d'un champ magnétique, les lames sont attirées l'une vers l'autre et se touchent, fermant le circuit. Retirez l'aimant et les lames s'écartent, ouvrant à nouveau le circuit. C'est tout le principe — c'est un interrupteur sans bouton mobile, sans usure due aux pressions des doigts, et sans besoin de contact physique avec l'objet que vous détectez.
Vous pouvez vérifier ce comportement avec un multimètre en mode continuité (dans la vidéo à 13:59) : sans aimant à proximité, le multimètre indique un circuit ouvert, et dès qu'un aimant s'approche, le buzzer retentit et le multimètre indique un circuit fermé. Comme l'interrupteur est électriquement identique à un bouton-poussoir, le code Arduino et le câblage sont les mêmes que pour toute autre entrée numérique.
Entrées numériques et résistances de tirage expliquées
L'Arduino lit une broche numérique comme étant soit HIGH, soit LOW. Sur une carte 5 V, tout ce qui dépasse environ 2,2 V est traité comme HIGH et tout ce qui est inférieur à environ 1,5 V comme LOW (dans la vidéo à 01:49). Le problème est qu'un interrupteur connecté directement entre une broche et 5 V laisse la broche flottante lorsque l'interrupteur est ouvert — elle n'est connectée à rien, elle capte donc du bruit et renvoie des valeurs aléatoires.
C'est pourquoi une résistance est utilisée. Deux montages fonctionnent tout aussi bien :
- Pull-down : une résistance de 10 kΩ entre la broche et la masse. La broche lit LOW lorsque l'interrupteur est ouvert et HIGH lorsque l'interrupteur relie la broche à 5 V.
- Pull-up : une résistance de 10 kΩ entre la broche et 5 V. La broche lit HIGH lorsque l'interrupteur est ouvert et LOW lorsque l'interrupteur relie la broche à la masse.
L'Arduino dispose également d'une résistance de pull-up interne qui peut être activée par logiciel avec INPUT_PULLUP (dans la vidéo à 19:52). Cela supprime complètement le besoin d'une résistance externe — la broche reste à HIGH au repos, et la fermeture de l'interrupteur vers la masse la fait passer à LOW. Le compromis est que la logique est inversée : appuyé (ou aimant présent) lit désormais 0 au lieu de 1.
Matériel et composants
- Arduino Uno (ou toute carte compatible)
- Module interrupteur reed ou interrupteur reed nu
- Résistance de 10 kΩ (nécessaire uniquement pour la version pull-down)
- Plaque de prototypage et fils de liaison
- Un petit aimant pour les tests
- Câble USB pour la programmation et l'alimentation
Guide de câblage
L'interrupteur reed se câble exactement comme un bouton-poussoir. Une patte de l'interrupteur reed va à 5 V, l'autre patte va à la broche 2 de l'Arduino et à une extrémité de la résistance de 10 kΩ. L'autre extrémité de la résistance va à la masse (dans la vidéo à 14:40). Il s'agit d'une configuration pull-down, donc la broche lit LOW en l'absence d'aimant et HIGH lorsqu'un aimant ferme l'interrupteur.
Sur la plaque de prototypage, placez l'interrupteur reed de sorte que ses deux pattes soient sur des rangées différentes, connectez la résistance depuis la même rangée qu'une patte vers le rail de masse, tirez un fil rouge de l'autre patte vers le rail 5 V, et un fil vert depuis la jonction de l'interrupteur reed et de la résistance vers la broche 2 (dans la vidéo à 15:53). Le noir va à la masse, le rouge va à 5 V, le vert va à la broche 2 — la même convention de couleurs utilisée dans tout le kit SunFounder.
Si vous préférez vous passer de la résistance, câblez une patte de l'interrupteur reed à la broche 2 et l'autre patte directement à la masse, puis activez INPUT_PULLUP dans le code comme décrit ci-dessous.
Explication du code
Le sketch est volontairement minuscule. Tout ce que vous voudrez modifier se trouve à deux endroits en haut du fichier.
int reedPin = 2;//the pin reed switch is connected to
void setup() {
Serial.begin(9600);
pinMode(reedPin, INPUT);
}
reedPin — changez ce numéro si vous avez câblé l'interrupteur reed sur une autre broche numérique. N'importe quelle broche numérique de l'Uno fonctionne ; la broche 2 est utilisée ici simplement parce qu'elle est pratique sur la plaque de prototypage.
Serial.begin(9600) — définit la vitesse du moniteur série. Si vous changez cette valeur, vous devez également changer le débit en bauds dans la fenêtre du moniteur série, sinon vous verrez des caractères parasites (dans la vidéo à 11:25).
pinMode(reedPin, INPUT) — configure la broche en entrée à haute impédance afin qu'elle puisse détecter la tension définie par l'interrupteur reed et la résistance. Si vous utilisez plutôt le pull-up interne, changez cette ligne en pinMode(reedPin, INPUT_PULLUP); et rappelez-vous que les lectures seront inversées.
La boucle lit simplement la broche et imprime le résultat :
void loop() {
Serial.println(digitalRead(reedPin));
delay(10);
}
digitalRead(reedPin) renvoie 1 lorsque la broche est HIGH et 0 lorsqu'elle est LOW. Comme la valeur est passée directement dans Serial.println(), aucune variable intermédiaire n'est nécessaire — la lecture est imprimée directement. Avec le câblage pull-down, 0 signifie « pas de champ magnétique » et 1 signifie « aimant détecté » (dans la vidéo à 18:31).
delay(10) contrôle la fréquence d'impression d'une lecture. Dix millisecondes est suffisamment rapide pour que vous voyiez la valeur changer à l'instant où un aimant s'approche. Si vous préférez un affichage plus calme, vous pouvez l'augmenter à 200 ms, mais notez que cela ralentit aussi la détection (dans la vidéo à 12:01).
Démonstration du projet en direct
Après avoir téléversé le sketch, ouvrez le moniteur série et réglez le débit en bauds sur 9600. Sans aimant à proximité, la fenêtre se remplit de zéros. Approchez un petit aimant de la capsule de verre et la sortie passe immédiatement à des uns ; éloignez l'aimant et elle revient à zéro (dans la vidéo à 17:04). La réponse est instantanée et fonctionne même lorsque l'aimant est maintenu à un ou deux centimètres de l'interrupteur.
Si vous avez plutôt construit la version pull-up, la logique est inversée : le moniteur affiche 1 au repos et 0 lorsque l'aimant est présent (dans la vidéo à 22:13). Dans les deux cas, vous disposez maintenant d'un détecteur de champ magnétique sans contact fiable qui ne coûte presque rien et peut être intégré à n'importe laquelle des idées de projet listées en haut de cet article.
La version à bouton-poussoir de cette même leçon de lecture numérique est traitée séparément dans Leçon 7/31 : Lecture numérique bouton-poussoir, détection de champ magnétique Kit SunFounder | Robojax.
Projets associés à cette vidéo
Chapitres
- [00:00] Introduction : deux exemples de lecture numérique
- [01:33] Signification de la lecture numérique et de HIGH/LOW
- [02:46] Fonctionnement d'un interrupteur à bouton-poussoir
- [03:25] Théorie des résistances de tirage (pull-up et pull-down)
- [05:18] Câblage du bouton-poussoir sur la plaque de prototypage
- [08:21] Ouverture et explication du sketch du bouton
- [10:55] Téléversement et test de l'exemple du bouton
- [12:38] Présentation de l'interrupteur reed et test au multimètre
- [14:40] Câblage de l'interrupteur reed sur la broche 2
- [16:46] Test de l'interrupteur reed avec un aimant
- [17:19] Explication du sketch de l'interrupteur reed
- [19:45] Utilisation de INPUT_PULLUP sans résistance externe
Images
/*
* Lesson 7/31-2: Digital read, working with reed switch
Download and resource page https://robojax.com/RJT590
watch video tutorial https://www.youtube.com/watch?v=yyJrqFKn-X4
* written/updated by Ahmad Shamshiri www.Robojax.com
* Dec 12, 2022
*
*/
int reedPin = 2;//the pin reed switch is connected to
void setup() {
Serial.begin(9600);
pinMode(reedPin, INPUT);
}
void loop() {
Serial.println(digitalRead(reedPin));
delay(10);
}
Common Course Links
Common Course Files
Ce dont vous pourriez avoir besoin
-
AmazonBuy reed switch from Amazonamzn.to
-
Amazon
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
eBayBuy reed switch from eBayebay.us
-
AliExpressBuy reed switch from AliExpresss.click.aliexpress.com
Ressources et références
-
DocumentationDocumentation pour le kit d'apprentissage IoT/Smart Car/en 3 en 1 de SunFounderdocs.sunfounder.com
-
Externe
Fichiers📁
Bibliothèques Arduino (zip)
-
Code source du kit d'apprentissage Smart Car 3-en-1 de SunFounder.
3in1-kit-main-v2.zip12.80 MB
Manuel de l'Utilisateur
-
Manuel d'assemblage de la voiture intelligente SunFounder 3-en-1 ArduinoCe document montre l'assemblage étape par étape de la voiture intelligente SunFounder 3-en-1 Arduino
SunFounder_car_assembly_manual.pdf1.20 MB