Capteur à effet Hall Arduino : A3144 et 49E, aimants et tr/min
Capteur à effet Hall Arduino : A3144 numérique et KY-024 / 49E analogique, pull-up, pôle et champ, mesure des tr/min, capteur de porte, Hall de l'ESP32 et ILS.
Un capteur à effet Hall est une petite puce à semi-conducteur qui détecte la présence, la polarité et la force d'un aimant sans aucune pièce mobile. Dans les projets Arduino, il sert à compter les tours d'un moteur, mesurer la vitesse d'un vélo, savoir si une porte est ouverte ou fermée ou lire la position d'un joystick. L'étui à rabat qui éteint l'écran de ton téléphone, le signal de vitesse d'un ventilateur de PC et les capteurs de vitesse de roue des voitures fonctionnent tous grâce à l'effet Hall. Dans les kits, tu rencontreras surtout deux types : l'A3144 numérique, qui donne un signal tout ou rien, et le 49E analogique (module KY-024), qui fournit l'intensité du champ sous forme de tension.
Dans ce guide, nous expliquerons simplement la physique de l'effet Hall, puis la différence entre capteurs numériques et analogiques, leur branchement et pourquoi il leur faut une résistance de pull-up. Ensuite, nous détecterons un aimant avec l'A3144, mesurerons avec le 49E quel pôle approche et combien de gauss vaut le champ, et compterons les tours d'un moteur grâce à une interruption. Tu verras aussi à quoi sert le capteur Hall intégré de l'ESP32 et pourquoi les versions récentes l'ont supprimé, du code MicroPython pour le Raspberry Pi Pico et une comparaison entre le capteur Hall et l'interrupteur ILS.

Qu'est-ce que l'effet Hall et comment fonctionne un capteur Hall ?
En 1879, Edwin Hall a découvert que lorsqu'un champ magnétique est appliqué perpendiculairement à un conducteur mince parcouru par un courant, une petite tension apparaît entre ses deux bords. La raison : les charges en mouvement sont déviées sur le côté dans un champ magnétique (force de Lorentz) ; les électrons s'accumulent sur un bord de la plaque, l'autre bord en manque, et la différence se mesure comme tension de Hall. Cette tension est proportionnelle à l'intensité du champ et change de signe quand le champ s'inverse. L'effet est bien plus marqué dans les semi-conducteurs que dans les métaux, mais il reste de l'ordre du microvolt au millivolt. C'est pourquoi une puce de capteur Hall contient, à côté de la plaque de Hall, un régulateur, un amplificateur et, dans les modèles numériques, une bascule de Schmitt et un transistor de sortie.
L'intensité du champ magnétique se mesure en gauss (G) ou en millitesla (mT) ; 1 mT = 10 G. Le champ magnétique terrestre ne vaut qu'environ 0,25–0,65 G, il n'influence donc pas les capteurs Hall. À la surface d'un petit aimant néodyme, on trouve quelques milliers de gauss, mais la valeur chute très vite avec la distance : en doublant la distance, le champ tombe à peu près au huitième. C'est pourquoi la distance de détection, selon le seuil du capteur et la taille de l'aimant, se situe en général entre quelques millimètres et quelques centimètres.
Types de capteurs Hall : A3144, KY-024 / 49E et autres
Selon leur sortie, les capteurs Hall se répartissent en trois groupes. Dans les types interrupteur unipolaire, comme l'A3144, la sortie passe à LOW seulement quand un pôle (le pôle sud pour l'A3144) s'approche assez, puis revient à HIGH quand l'aimant s'éloigne. Dans les types à verrouillage (latch), comme l'US1881, le pôle sud met la sortie dans un état, le pôle nord dans l'autre, et le dernier état est conservé même après le départ de l'aimant ; c'est idéal pour les moteurs entourés d'aimants N–S alternés. Dans les types linéaires, comme le 49E, la sortie n'est pas un interrupteur mais une tension analogique proportionnelle au champ : sans aimant elle vaut la moitié de l'alimentation, monte avec un pôle et descend avec l'autre.
| Caractéristique | A3144 (numérique) | 49E / SS49E (analogique) | US1881 (à verrouillage) |
|---|---|---|---|
| Alimentation | 4,5–24 V | 2,7–6,5 V | 3,5–24 V |
| Sortie | Collecteur ouvert, LOW face à l'aimant | Analogique, VCC/2 sans champ | Drain ouvert, LOW sur S, HIGH sur N |
| Pôle détecté | Sud (S) uniquement | Les deux, avec le signe | S active, N désactive |
| Seuil / sensibilité | Seuil d'activation d'environ 70–350 G | Typiquement 1,4 mV/G en 5 V | Typiquement ±95 G |
| Pull-up nécessaire ? | Oui (10 kΩ ou INPUT_PULLUP) | Non | Oui |
| Nom du module | KY-003 | KY-024 (avec DO par LM393), KY-035 | Rare en module |
| Pattes (face marquée vers toi) | VCC, GND, OUT | VCC, GND, OUT | VDD, GND, OUT |
Branchement du capteur Hall sur l'Arduino et résistance de pull-up
La sortie de l'A3144 est un transistor à collecteur ouvert : en présence d'un aimant, il relie la sortie au GND ; sans aimant, il ne la relie à rien et la laisse flottante. Une broche flottante lit des HIGH et des LOW au hasard à cause du bruit. Il faut donc tirer la sortie vers l'alimentation à travers une résistance : c'est le pull-up. Sur Arduino, le plus simple est d'activer la résistance interne de 20 à 50 kΩ avec pinMode(pin, INPUT_PULLUP). Si le câble est long, l'environnement bruité ou si tu comptes un arbre qui tourne vite, une résistance externe de 10 kΩ entre la sortie et l'alimentation donne des fronts plus nets. Le collecteur ouvert a un avantage pratique : si tu alimentes le capteur en 5 V et ramènes le pull-up à 3,3 V, les cartes 3,3 V comme l'ESP32 et la Pico peuvent aussi l'utiliser sans risque.
| Liaison | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| A3144 VCC | 5V | VIN (5 V) | VBUS (5 V) |
| A3144 OUT | D2 + INPUT_PULLUP (ou 10 kΩ → 5V) | GPIO 27 + INPUT_PULLUP (ou 10 kΩ → 3V3) | GP15 + PULL_UP (ou 10 kΩ → 3V3) |
| 49E VCC | 5V | 3V3 | 3V3 |
| 49E OUT | A0 | GPIO 34 | GP26 (ADC0) |
| GND (les deux) | GND | GND | GND |
Détecter un aimant avec l'A3144
- Face marquée de l'A3144 vers toi, les pattes de gauche à droite sont VCC, GND et OUT. Relie VCC au 5V, GND au GND et OUT à D2.
- Téléverse le code ci-dessous et ouvre le moniteur série à 9600 bauds.
- Approche une face de l'aimant de la face marquée du capteur. Si la LED intégrée de la carte ne s'allume pas, retourne l'aimant : l'A3144 ne réagit qu'au pôle sud.
- Note les distances auxquelles la LED s'allume et s'éteint ; l'écart entre les deux est l'hystérésis interne du capteur.
1const byte HALL_PIN = 2; // A3144 OUT
2const byte LED_PIN = 13; // dahili LED / onboard LED
3
4bool lastMagnet = false;
5
6void setup() {
7 pinMode(HALL_PIN, INPUT_PULLUP); // açık kolektör çıkış için pull-up / pull-up for the open-collector output
8 pinMode(LED_PIN, OUTPUT);
9 Serial.begin(9600);
10}
11
12void loop() {
13 bool magnet = digitalRead(HALL_PIN) == LOW; // mıknatıs varken LOW / LOW when a magnet is present
14 digitalWrite(LED_PIN, magnet ? HIGH : LOW);
15
16 if (magnet != lastMagnet) { // yalnız durum değişince yaz / print only on change
17 Serial.println(magnet ? F("Miknatis var / magnet detected") : F("Miknatis yok / no magnet"));
18 lastMagnet = magnet;
19 }
20}Contrairement à un ILS ou à un bouton, l'A3144 n'a pas besoin d'anti-rebond. La bascule de Schmitt interne garantit que le seuil d'activation (BOP) est au moins 20 G au-dessus du seuil de relâchement (BRP) ; même si l'aimant tremble à la limite, la sortie ne rebondit pas. Comme il n'y a aucun contact mobile, les fronts sont nets et il peut commuter des milliers de fois par seconde. N'oublie pas que la logique est inversée : avec INPUT_PULLUP, tu lis LOW quand l'aimant est là et HIGH sinon ; c'est la même logique de pull-up que pour le branchement d'un bouton.
Mesurer le pôle et l'intensité du champ avec le KY-024 / 49E
Le 49E est un capteur linéaire : alimenté en 5 V, sa sortie vaut environ 2,5 V sans aimant et varie typiquement de 1,4 mV par gauss. Quand le pôle sud approche de la face marquée, la tension monte ; avec le pôle nord, elle baisse. Tu peux ainsi mesurer non seulement la présence d'un aimant, mais aussi quel pôle approche et quelle est l'intensité du champ : B (G) = (Vsortie − Vzéro) / 0,0014. Sur le module KY-024, la broche AO est directement la sortie du 49E ; la broche DO est la sortie numérique du comparateur LM393, qui bascule quand le champ dépasse le seuil réglé au potentiomètre. Le code ci-dessous mesure le point zéro au démarrage, puis affiche le champ en gauss et en millitesla et indique le pôle.
1const byte HALL_PIN = A0; // 49E OUT ya da KY-024 AO / 49E OUT or KY-024 AO
2const float VCC = 5.0;
3const float SENSITIVITY = 0.0014; // 1,4 mV/G (5 V'ta tipik) / 1.4 mV/G (typical at 5 V)
4const float DEAD_BAND = 20.0; // bu değerin altını yok say (G) / ignore below this (G)
5
6float zeroVolt = 2.5;
7
8float readVolt() {
9 long sum = 0;
10 for (byte i = 0; i < 32; i++) sum += analogRead(HALL_PIN); // 32 ölçüm ortalaması / average of 32 readings
11 return sum / 32.0 * VCC / 1023.0;
12}
13
14void setup() {
15 Serial.begin(9600);
16 delay(200);
17 zeroVolt = readVolt(); // mıknatıs yokken sıfır noktası / zero point with no magnet nearby
18 Serial.print(F("Sifir / zero: "));
19 Serial.print(zeroVolt, 3);
20 Serial.println(F(" V"));
21}
22
23void loop() {
24 float gauss = (readVolt() - zeroVolt) / SENSITIVITY;
25 Serial.print(gauss, 0);
26 Serial.print(F(" G ("));
27 Serial.print(gauss / 10.0, 1); // 10 G = 1 mT
28 Serial.print(F(" mT) "));
29 if (gauss > DEAD_BAND) Serial.println(F("Guney kutbu / south pole"));
30 else if (gauss < -DEAD_BAND) Serial.println(F("Kuzey kutbu / north pole"));
31 else Serial.println(F("Alan yok / no field"));
32 delay(250);
33}L'ADC 10 bits de l'Uno découpe 5 V en 1024 pas, soit environ 4,9 mV par pas ; avec le 49E, cela donne une résolution d'environ 3,5 G. Comme le repérage des pôles peut varier selon le fabricant, vérifie-le avec une boussole au premier essai : l'extrémité de l'aiguille qui indique le nord se tourne vers le pôle sud de l'aimant. Le capteur sature vers ±1000 G ; si tu le touches presque avec un aimant très puissant, la valeur ne monte plus. Le point zéro peut dériver de quelques millivolts avec la température : pour une mesure précise, refais le zéro juste avant.
Mesurer la vitesse de rotation (tr/min) avec un capteur Hall
Pour mesurer la vitesse d'un moteur, d'un ventilateur ou d'une roue, colle un petit aimant sur l'arbre ou la jante et fixe l'A3144 là où l'aimant passe une fois par tour. À chaque passage, la sortie passe une fois à LOW. Vouloir capter les impulsions avec digitalRead() dans loop() en fait manquer à grande vitesse ; la bonne méthode est une interruption. Le code ci-dessous mesure le temps entre deux impulsions à la microseconde près et calcule la vitesse avec tr/min = 60 000 000 / (période_µs × nombre_d'aimants). Si aucune impulsion n'arrive pendant 2 secondes, l'arbre est considéré comme arrêté. Nous détaillons le fonctionnement des interruptions dans le guide des interruptions Arduino.
1const byte HALL_PIN = 2; // A3144 OUT, Uno'da kesme pini (INT0) / interrupt pin on the Uno (INT0)
2const byte MAGNETS = 1; // mildeki mıknatıs sayısı / magnets on the shaft
3const unsigned long MIN_GAP_US = 2000; // 2 ms'den sık darbeler gürültüdür / pulses closer than 2 ms are noise
4const unsigned long STOP_US = 2000000; // 2 sn darbe yoksa durdu / no pulse for 2 s means stopped
5
6volatile unsigned long lastPulse = 0;
7volatile unsigned long period = 0; // iki darbe arası süre (µs) / time between pulses (µs)
8
9void onPulse() {
10 unsigned long now = micros();
11 unsigned long gap = now - lastPulse;
12 if (gap > MIN_GAP_US) {
13 period = gap;
14 lastPulse = now;
15 }
16}
17
18void setup() {
19 pinMode(HALL_PIN, INPUT_PULLUP);
20 attachInterrupt(digitalPinToInterrupt(HALL_PIN), onPulse, FALLING); // mıknatıs gelince LOW'a iner / falls LOW when the magnet arrives
21 Serial.begin(9600);
22}
23
24void loop() {
25 noInterrupts(); // iki değişkeni birlikte oku / read both variables together
26 unsigned long p = period;
27 unsigned long last = lastPulse;
28 interrupts();
29
30 float rpm = 0;
31 if (p > 0 && micros() - last < STOP_US) {
32 rpm = 60000000.0 / ((float)p * MAGNETS);
33 }
34 Serial.print(F("RPM: "));
35 Serial.println(rpm, 0);
36 delay(500);
37}Le code utilise un temps de blocage de 2 ms : avec un seul aimant, tu peux mesurer jusqu'à 30 000 tr/min, largement assez pour la plupart des moteurs de loisir. Avec deux ou quatre aimants sur l'arbre, la mesure se met à jour plus souvent à basse vitesse ; il suffit de changer MAGNETS. Répartis les aimants de façon équilibrée, car un poids d'un seul côté fait vibrer un arbre rapide. Le fil jaune d'un ventilateur de PC est d'ailleurs une sortie à collecteur ouvert d'un capteur Hall interne et donne deux impulsions par tour ; avec MAGNETS = 2, le même code lit la vitesse du ventilateur. Le calcul de la circonférence et des km/h pour un compteur de vélo se trouve dans le guide de l'interrupteur ILS ; la formule est identique avec un capteur Hall.
Capteur de porte et de couvercle avec un capteur Hall
Pour un capteur de porte, place l'aimant sur l'ouvrant et l'A3144 sur le dormant, de sorte que, porte fermée, le pôle sud de l'aimant soit face à la face marquée du capteur. Porte fermée, la sortie est à LOW ; à l'ouverture, elle passe à HIGH. Même si le fil est coupé, le pull-up tire la broche à HIGH et le système y voit « porte ouverte » : une panne reste donc du côté sûr. Le capteur Hall a ici deux avantages : sans contact mobile, il ne s'use pas sur une porte qui vibre ni sur un couvercle qui s'ouvre et se ferme plusieurs fois par seconde, et il détecte l'aimant même à travers la paroi d'un boîtier étanche. Son inconvénient : il consomme en permanence. L'A3144 tire environ 4 à 5 mA, ce qui viderait à lui seul une batterie de 2000 mAh en 18 jours environ. Pour un capteur de porte qui doit tenir des mois sur piles, un ILS, qui ne consomme rien, convient mieux.
Le capteur Hall intégré de l'ESP32
La puce ESP32 d'origine contient un petit capteur Hall que l'on peut lire, dans les versions 2.x du cœur Arduino ESP32, avec la fonction hallRead(). Mais ce capteur est très bruité et ne montre un changement net que lorsqu'un aimant puissant touche presque le blindage métallique du module ; il utilise aussi GPIO 36 et GPIO 39 pendant la mesure, donc si quelque chose est branché sur ces broches, les résultats sont faussés. Les puces récentes comme l'ESP32-S2, S3 et C3 n'en ont pas, et comme Espressif a retiré sa prise en charge avec ESP-IDF 5, hallRead() n'existe plus dans le cœur Arduino ESP32 3.x. Le code ci-dessous compile avec les deux versions : en 2.x il affiche la valeur moyenne, en 3.x un avertissement à la place. Pour un vrai projet, mieux vaut toujours brancher un A3144 ou un 49E externe sur l'ESP32 ; les caractéristiques générales de la carte sont dans qu'est-ce que l'ESP32.
1// ESP32 dahili Hall sensörü (yalnız orijinal ESP32) / built-in Hall sensor (original ESP32 only)
2void setup() {
3 Serial.begin(115200);
4}
5
6void loop() {
7#if ESP_ARDUINO_VERSION_MAJOR < 3
8 long sum = 0;
9 for (int i = 0; i < 100; i++) {
10 sum += hallRead(); // GPIO 36 ve 39'u kullanır / uses GPIO 36 and 39
11 }
12 Serial.println(sum / 100); // gürültülü, ortalama al / noisy, so average it
13#else
14 Serial.println("hallRead() 3.x cekirdekte yok / not available in core 3.x");
15#endif
16 delay(200);
17}Mesurer les tours avec le Raspberry Pi Pico (MicroPython)
Sur la Pico, alimente l'A3144 en 5 V par VBUS, relie sa sortie à GP15 et active la résistance de pull-up interne de la broche ; comme elle est reliée au 3,3 V, la broche ne voit jamais 5 V. Le code ci-dessous compte les impulsions par interruption, puis lit et remet à zéro le compteur chaque seconde. Désactiver brièvement les interruptions pendant la lecture évite qu'une impulsion se glisse entre la lecture et la remise à zéro et soit perdue. Avec un aimant, la résolution de cette méthode est de 60 tr/min ; pour plus de finesse, mesure le temps entre deux impulsions avec time.ticks_us(), comme dans l'exemple Arduino.
1from machine import Pin, disable_irq, enable_irq
2import time
3
4hall = Pin(15, Pin.IN, Pin.PULL_UP) # A3144 OUT (sensör VBUS'tan 5 V ile) / A3144 OUT (sensor on 5 V from VBUS)
5MAGNETS = 1 # mildeki mıknatıs sayısı / magnets on the shaft
6count = 0
7last_us = 0
8
9def on_pulse(pin):
10 global count, last_us
11 now = time.ticks_us()
12 if time.ticks_diff(now, last_us) > 2000: # 2 ms gürültü filtresi / 2 ms noise filter
13 count += 1
14 last_us = now
15
16hall.irq(trigger=Pin.IRQ_FALLING, handler=on_pulse)
17
18while True:
19 time.sleep(1)
20 state = disable_irq() # sayacı güvenle oku / read the counter safely
21 pulses = count
22 count = 0
23 enable_irq(state)
24 print("RPM:", pulses * 60 // MAGNETS)Capteur Hall ou interrupteur ILS ?
Les deux détectent un aimant, mais de façon totalement différente. L'ILS est un interrupteur mécanique dont les deux lames métalliques, dans une ampoule de verre, se touchent à l'approche d'un aimant ; il ne consomme rien. Le capteur Hall est une puce électronique sans pièce mobile qui a besoin d'une alimentation. La règle simple : un ILS pour un capteur rarement sollicité qui doit tenir des mois sur piles ; un capteur Hall pour un arbre qui tourne vite, un environnement soumis aux vibrations ou tout besoin de connaître le pôle ou l'intensité du champ.

| Caractéristique | Capteur Hall (A3144 / 49E) | Interrupteur ILS |
|---|---|---|
| Fonctionnement | Semi-conducteur, aucune pièce mobile | Contact mécanique |
| Alimentation | Nécessaire (environ 4–6 mA) | Inutile |
| Pôle et intensité | A3144 sud uniquement ; 49E donne pôle et intensité | Le pôle importe peu, juste présent / absent |
| Vitesse | Jusqu'à plusieurs dizaines de kHz, fronts nets | Quelques centaines de Hz, rebonds du contact |
| Durée de vie et robustesse | Pas d'usure, résiste aux vibrations | Des millions de manœuvres, le verre peut casser |
| Meilleur usage | Tr/min, vitesse, position, détection du pôle | Capteurs de porte et fenêtre sur piles |
Idées de projets avec un capteur Hall
- Compteur de vélo : Un aimant sur un rayon et un A3144 sur la fourche ; affiche vitesse, distance et moyenne sur un écran OLED.
- Compte-tours de moteur et de ventilateur : Mesure la vitesse d'un moteur DC ou d'un ventilateur de PC et observe la vitesse réelle pendant que tu la règles en PWM.
- Anémomètre : Fixe un aimant sur l'axe d'un moulinet à coupelles, calcule la vitesse du vent à partir des tours et enregistre-la avec un ESP32.
- Débitmètre d'eau : Les capteurs de débit comme le YF-S201 contiennent aussi un capteur Hall ; en comptant les impulsions, tu mesures des litres, détails dans le guide du capteur de débit d'eau.
- Boîte secrète ou serrure de tiroir : Un 49E caché dans le couvercle n'ouvre la serrure que si un aimant est tenu exactement au bon endroit.
- Alarme de porte ou de couvercle : Une alarme à A3144 qui fait sonner un buzzer ou envoie une notification au téléphone via un ESP32 quand on ouvre un couvercle.
Erreurs fréquentes et solutions
| Symptôme | Cause probable | Solution |
|---|---|---|
| La broche lit HIGH et LOW au hasard | Pas de pull-up sur la sortie de l'A3144 | Utilise INPUT_PULLUP ou mets 10 kΩ entre la sortie et VCC |
| Rien ne se passe quand l'aimant approche | Mauvais pôle : l'A3144 ne réagit qu'au pôle sud | Retourne l'aimant et présente-le face à la face marquée |
| Capteur instable sur l'ESP32 ou la Pico | L'A3144 est alimenté en 3,3 V | Alimente le capteur en 5 V et relie le pull-up au 3,3 V |
| Tr/min trop bas ou irréguliers à grande vitesse | Les impulsions sont lues dans loop() et manquées | Utilise une interruption avec attachInterrupt() |
| Le 49E affiche une valeur sans aimant | Le point zéro n'est pas à 2,5 V ou a dérivé | Mesure le zéro au démarrage et soustrais-le |
| hallRead() ne compile pas sur l'ESP32 | Tu utilises le cœur Arduino ESP32 3.x | Prends un capteur Hall externe ou repasse au cœur 2.x |
Le capteur Hall est le moyen le plus souple de détecter un aimant sans contact, sans bruit et sans usure : l'A3144 te donne un signal tout ou rien rapide et propre, le 49E le pôle et l'intensité du champ, et les interruptions une mesure fiable des tours. Si tu n'oublies ni la résistance de pull-up, ni le bon pôle, ni le détail de l'alimentation sur les cartes 3,3 V, ça marche du premier coup. Dans l'application BlueGrays, tu trouveras les projets Lecture d'un ILS et Capteur de porte à ILS, ainsi que des exemples de boutons et d'interruptions, l'alarme de mouvement ESP32 et des projets d'anti-rebond sur Pico, avec schémas et code pas à pas.
Questions fréquentes
Comment fonctionne un capteur à effet Hall ?
Un capteur Hall contient une fine plaque semi-conductrice parcourue par un courant. Quand un champ magnétique la traverse perpendiculairement, les charges sont déviées vers un bord et une petite tension proportionnelle au champ apparaît entre les deux bords. Un amplificateur interne l'augmente ; dans les modèles numériques, un circuit à seuil la transforme en sortie tout ou rien.
Pourquoi l'A3144 a-t-il besoin d'une résistance de pull-up ?
La sortie de l'A3144 est à collecteur ouvert : avec un aimant, elle est reliée au GND ; sans aimant, à rien du tout. Une broche flottante lit des valeurs aléatoires à cause du bruit, il faut donc tirer la sortie vers l'alimentation par une résistance. Sur Arduino, INPUT_PULLUP suffit ; avec des câbles longs et des vitesses élevées, une résistance externe de 10 kΩ est préférable.
À quel pôle l'A3144 réagit-il ?
L'A3144 est un interrupteur unipolaire : il ne met sa sortie à LOW que lorsque le pôle sud s'approche assez de sa face marquée. Avec le pôle nord, il ne se passe rien. Si tu ne connais pas le pôle de ton aimant, essaie les deux faces ou vérifie avec un capteur linéaire comme le 49E.
Quelle est la différence entre le KY-024 et le KY-003 ?
Le KY-003 est un module à capteur numérique A3144 qui indique seulement s'il y a un aimant ou non. Le KY-024 porte un capteur linéaire 49E et un comparateur LM393 ; sa broche AO donne l'intensité du champ en analogique et sa broche DO un signal numérique selon un seuil réglé au potentiomètre.
À quelle distance un capteur Hall détecte-t-il un aimant ?
Cela dépend de la force de l'aimant et du seuil du capteur. Un petit aimant néodyme déclenche généralement un A3144 à 1–3 cm ; avec un aimant ferrite faible, on tombe à quelques millimètres. Comme le champ magnétique diminue très vite avec la distance, le moyen le plus efficace d'augmenter la portée est un aimant plus gros ou plus puissant.
Peut-on utiliser le capteur Hall intégré de l'ESP32 ?
L'ESP32 d'origine possède un capteur Hall intégré, lisible avec hallRead() dans le cœur Arduino ESP32 2.x. Mais il est très bruité, ne remarque qu'un aimant puissant très proche et utilise GPIO 36 et 39. Il n'existe pas sur l'ESP32-S2, S3 et C3, et hallRead() a été supprimé du cœur Arduino ESP32 3.x ; pour un vrai projet, utilise un capteur externe.
Projets à réaliser après cet article
Voir tous les projets
Allumer une LED avec un bouton-poussoir (Push)
Comme une sonnette : la lumière reste allumée tant que tu appuies et s'éteint quand tu relâches. L'Arduino surveille le bouton en permanence ; tant qu'il est enfoncé la LED est allumée, et dès que tu

ESP32 Contrôle de LED avec bouton poussoir (Push)
La LED s'allume lorsque le bouton est enfoncé et s'éteint lorsqu'il est relâché. Montre comment la broche d'entrée numérique de l'ESP32 et la résistance pull-up interne sont utilisées. Grâce au mode INPUT_PULLUP, aucune résistance externe n'est nécessaire.

Lecture d'un interrupteur reed
Tu t'es déjà demandé comment marche l'interrupteur magnétique des alarmes de portes et de fenêtres ? Quand un aimant approche du module à relais reed, le minuscule interrupteur à l'intérieur se ferme

Capteur de porte avec interrupteur reed
Sache si ta porte est ouverte ou fermée rien qu'en regardant une lumière. Tu fixes un petit aimant sur la porte et sur le cadre un interrupteur qui sent les aimants ; porte fermée, ils sont côte à côt

Système d'Alarme de Mouvement ESP32 (PIR + Buzzer + LED + Telegram)
Un système d'alarme de sécurité intelligent qui active le buzzer et la LED lorsque le capteur PIR détecte un mouvement, tout en envoyant une notification instantanée au propriétaire via Telegram. Il intègre un délai d'attente de 30 secondes pour limiter la fréquence des alarmes répétées ; ce mécanisme ne vérifie pas la validité des détections du capteur PIR et n'élimine pas les faux déclenchements. Idéal pour la sécurité domestique, la surveillance de garage, d'entrepôts ou de bureaux. Avec l'ES

Raspberry Pi Pico Bouton Debounce : IRQ vs Software Polling
Une pression, le code compte 3-4 ? C'est le contact bounce ! Compare 2 méthodes de comptage dans Serial : RAW polling (attrape bounce, compte faux) vs IRQ + software debounce (précis). Apprends physique du bounce, software debounce, Pin.irq() interrupt, IRQ_FALLING trigger, ISR handlers, sécurité des variables globales ISR.

Détecteur de mouvement avec capteur de mouvement
Un gardien tout simple qui te prévient quand quelqu'un entre dans la pièce. Le détecteur de mouvement repère la chaleur dégagée par le corps humain ; l'Arduino garde la LED allumée tant qu'il y a du m
Autres articles
Application BlueGrays
Réalise ce montage pas à pas sur ton téléphone
Schéma, code et liste des composants sur un seul écran. Plus de 200 projets Arduino, ESP32 et Pico à réaliser.
Scanne avec ton téléphone
Pointe l’appareil photo vers le code : la boutique d’applications de ton téléphone s’ouvre.
ou ouvre la boutique

