Componentes · 13 min de lectura

Sensor de efecto Hall con Arduino: A3144 y 49E, imanes y RPM

Sensor Hall con Arduino: A3144 digital y KY-024 / 49E analógico, pull-up, polo e intensidad del campo, medir RPM, sensor de puerta, Hall del ESP32 y reed.

Un sensor de efecto Hall es un pequeño chip semiconductor que detecta la presencia, la polaridad y la fuerza de un imán sin ninguna pieza móvil. En los proyectos con Arduino se usa para contar las RPM de un motor, medir la velocidad de una bici, saber si una puerta está abierta o cerrada o leer la posición de un joystick. La funda con tapa que apaga la pantalla del móvil, la señal de velocidad de un ventilador de ordenador y los sensores de velocidad de las ruedas de los coches funcionan con el efecto Hall. En los kits sueles encontrar dos tipos: el A3144 digital, que da una señal de encendido y apagado, y el 49E analógico (módulo KY-024), que entrega la intensidad del campo como una tensión.

En esta guía explicaremos con palabras sencillas la física del efecto Hall y veremos la diferencia entre los sensores digitales y analógicos, cómo se conectan y por qué necesitan una resistencia pull-up. Después detectaremos un imán con el A3144, mediremos con el 49E qué polo se acerca y cuántos gauss tiene el campo, y contaremos las RPM de un motor con una interrupción. También verás para qué sirve el sensor Hall interno del ESP32 y por qué se eliminó en las versiones nuevas, código MicroPython para la Raspberry Pi Pico y una comparación del sensor Hall con el interruptor reed.

Imán pequeño para activar un sensor de efecto Hall
Un pequeño imán de neodimio activa un sensor Hall desde pocos centímetros. La cara plana del imán debe mirar hacia la cara impresa del sensor.

¿Qué es el efecto Hall y cómo funciona un sensor Hall?

En 1879 Edwin Hall descubrió que, al aplicar un campo magnético perpendicular a un conductor fino por el que pasa corriente, aparece una pequeña tensión entre sus dos bordes. La razón es que las cargas en movimiento son empujadas hacia un lado dentro del campo magnético (fuerza de Lorentz): los electrones se acumulan en un borde de la lámina, al otro le faltan y la diferencia se mide como tensión Hall. Esta tensión es proporcional a la intensidad del campo y cambia de signo cuando el campo cambia de sentido. En los semiconductores el efecto es mucho más fuerte que en los metales, pero sigue siendo de microvoltios a milivoltios. Por eso los chips sensores Hall incluyen, junto a la lámina Hall, un regulador, un amplificador y, en los modelos digitales, un disparador Schmitt y un transistor de salida.

La intensidad del campo magnético se mide en gauss (G) o en militeslas (mT); 1 mT = 10 G. El campo magnético de la Tierra es de unos 0,25–0,65 G, así que no afecta a los sensores Hall. En la superficie de un pequeño imán de neodimio hay unos miles de gauss, y el valor cae muy deprisa con la distancia: al doblar la distancia, el campo baja más o menos a la octava parte. Por eso la distancia de detección, según el umbral del sensor y el tamaño del imán, suele estar entre unos milímetros y unos pocos centímetros.

Tipos de sensor Hall: A3144, KY-024 / 49E y otros

Por su salida, los sensores Hall se dividen en tres grupos. En los tipos interruptor unipolar, como el A3144, la salida pasa a LOW solo cuando un polo (el sur en el A3144) se acerca lo suficiente y vuelve a HIGH cuando el imán se aleja. En los tipos de enclavamiento (latch), como el US1881, el polo sur pone la salida en un estado y el norte en el otro, y el último estado se mantiene aunque el imán se vaya; es ideal para motores con imanes N–S alternados alrededor. En los tipos lineales, como el 49E, la salida no es un interruptor sino una tensión analógica proporcional al campo: sin imán está en la mitad de la alimentación, sube cuando se acerca un polo y baja con el otro.

CaracterísticaA3144 (digital)49E / SS49E (analógico)US1881 (enclavamiento)
Alimentación4,5–24 V2,7–6,5 V3,5–24 V
SalidaColector abierto, LOW con imánAnalógica, VCC/2 sin campoDrenador abierto, LOW con S, HIGH con N
Polo al que respondeSolo sur (S)Ambos, con signoS activa, N desactiva
Umbral / sensibilidadPunto de activación de unos 70–350 GTípica 1,4 mV/G a 5 VTípico ±95 G
¿Necesita pull-up?Sí (10 kΩ o INPUT_PULLUP)NoSí
Nombre del móduloKY-003KY-024 (con DO por LM393), KY-035Raro como módulo
Patas (cara impresa hacia ti)VCC, GND, OUTVCC, GND, OUTVDD, GND, OUT

Conexión del sensor Hall a Arduino y la resistencia pull-up

La salida del A3144 es un transistor de colector abierto: con imán conecta la salida a GND y sin imán no la conecta a nada, la deja al aire. Un pin al aire lee HIGH y LOW al azar por el ruido. Por eso hay que tirar de la salida hacia la alimentación con una resistencia; a esto se le llama pull-up. En Arduino lo más fácil es activar la resistencia interna de 20–50 kΩ con pinMode(pin, INPUT_PULLUP). Si el cable es largo, el entorno tiene ruido o cuentas un eje que gira rápido, una resistencia externa de 10 kΩ entre la salida y la alimentación da flancos más limpios. El colector abierto tiene una ventaja extra: si alimentas el sensor a 5 V y llevas el pull-up a 3,3 V, las placas de 3,3 V como el ESP32 y la Pico también pueden usarlo con seguridad.

ConexiónArduino UnoESP32Raspberry Pi Pico
A3144 VCC5VVIN (5 V)VBUS (5 V)
A3144 OUTD2 + INPUT_PULLUP (o 10 kΩ → 5V)GPIO 27 + INPUT_PULLUP (o 10 kΩ → 3V3)GP15 + PULL_UP (o 10 kΩ → 3V3)
49E VCC5V3V33V3
49E OUTA0GPIO 34GP26 (ADC0)
GND (ambos)GNDGNDGND
El rango oficial de alimentación del A3144 es de 4,5–24 V; alimentarlo a 3,3 V muchas veces parece funcionar, pero no es fiable. En el ESP32 y la Pico alimenta el sensor a 5 V y conecta el pull-up de la salida a 3,3 V. Cuidado con los módulos ya montados como el KY-003: llevan una resistencia y un LED que tiran de la salida hacia VCC. Si alimentas el módulo a 5 V, su salida también sube hacia 5 V y puede dañar el pin de una placa de 3,3 V; en ese caso pon un divisor de tensión en la salida o usa el sensor suelto.

Detectar un imán con el A3144

  1. Con la cara impresa del A3144 hacia ti, las patas de izquierda a derecha son VCC, GND y OUT. Conecta VCC a 5V, GND a GND y OUT a D2.
  2. Carga el código de abajo y abre el Monitor Serie a 9600 baudios.
  3. Acerca una cara del imán a la cara impresa del sensor. Si el LED integrado de la placa no se enciende, da la vuelta al imán; el A3144 solo responde al polo sur.
  4. Anota las distancias a las que el LED se enciende y se apaga; la diferencia entre ambas es la histéresis interna del sensor.
C++ (Arduino IDE)
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}

A diferencia de un reed o un pulsador, el A3144 no necesita antirrebote. El disparador Schmitt interno hace que el punto de activación (BOP) quede al menos 20 G por encima del de desactivación (BRP); aunque el imán tiemble en el límite, la salida no salta de un lado a otro. Como no hay contacto móvil, los flancos de salida son limpios y puede activarse miles de veces por segundo. Recuerda que la lógica está invertida: con INPUT_PULLUP lees LOW cuando hay imán y HIGH cuando no; es la misma lógica pull-up que en la conexión de un pulsador.

Medir el polo y la intensidad del campo con el KY-024 / 49E

El 49E es un sensor lineal: alimentado a 5 V, su salida está en unos 2,5 V sin imán y suele cambiar 1,4 mV por cada gauss. Cuando el polo sur se acerca a la cara impresa la tensión sube, y con el polo norte baja. Así puedes medir no solo si hay un imán, sino también qué polo se acerca y qué intensidad tiene el campo: B (G) = (Vsalida − Vcero) / 0,0014. En el módulo KY-024 el pin AO es directamente la salida del 49E; el pin DO es la salida digital del comparador LM393, que cambia cuando el campo supera el umbral que ajustas con el potenciómetro. El código de abajo mide el punto cero al arrancar y luego muestra el campo en gauss y militeslas e indica el polo.

C++ (Arduino IDE)
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}

El ADC de 10 bits del Uno divide 5 V en 1024 pasos, así que cada paso son unos 4,9 mV; con el 49E eso supone una resolución de unos 3,5 G. Como la forma de nombrar los polos puede variar según el fabricante, compruébalo con una brújula la primera vez: el extremo de la aguja que señala al norte se gira hacia el polo sur del imán. El sensor se satura en torno a ±1000 G; si casi lo tocas con un imán muy potente, el valor deja de subir. El punto cero puede desplazarse unos milivoltios con la temperatura, así que en medidas precisas repite la puesta a cero justo antes de medir.

Medir RPM y velocidad con un sensor Hall

Para medir las RPM de un motor, un ventilador o una rueda, pegas un pequeño imán en el eje o la llanta y fijas el A3144 donde el imán pase por delante una vez por vuelta. En cada paso la salida se pone a LOW una vez. Intentar captar los pulsos con digitalRead() dentro de loop() hace perder pulsos a alta velocidad; lo correcto es usar una interrupción. El código de abajo mide el tiempo entre dos pulsos con precisión de microsegundos y calcula la velocidad con RPM = 60 000 000 / (periodo_µs × número_de_imanes). Si no llega ningún pulso en 2 segundos, se considera que el eje está parado. Explicamos cómo funcionan las interrupciones en la guía de interrupciones en Arduino.

C++ (Arduino IDE)
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}

El código usa un bloqueo de 2 ms, lo que significa que con un imán puedes medir hasta 30 000 RPM, más que suficiente para la mayoría de los motores de aficionado. Si pones dos o cuatro imanes en el eje, la medida se actualiza más a menudo a baja velocidad; solo cambia MAGNETS. Reparte los imanes de forma equilibrada: el peso a un solo lado hace vibrar un eje que gira rápido. El cable amarillo de un ventilador de ordenador es en realidad una salida de colector abierto de un sensor Hall interno y da dos pulsos por vuelta; con MAGNETS = 2 el mismo código lee las RPM del ventilador. El cálculo de la circunferencia y de los km/h para un velocímetro de bici está en la guía del interruptor reed; la fórmula es la misma con un sensor Hall.

Sensor de puerta y tapa con un sensor Hall

Para un sensor de puerta, pon el imán en la hoja móvil y el A3144 en el marco, de forma que con la puerta cerrada el polo sur del imán mire a la cara impresa del sensor. Con la puerta cerrada la salida está a LOW y al abrirse pasa a HIGH. Aunque se rompa el cable, el pull-up lleva el pin a HIGH y el sistema lo interpreta como «puerta abierta», así que el fallo queda del lado seguro. Aquí el sensor Hall tiene dos ventajas: sin contacto móvil no se desgasta en puertas que vibran ni en tapas que se abren y cierran muchas veces por segundo, y detecta el imán incluso a través de la pared de una caja estanca. El inconveniente es que consume siempre: el A3144 gasta unos 4–5 mA, lo que agotaría una batería de 2000 mAh en unos 18 días solo con el sensor. Para un sensor de puerta que deba funcionar meses con pilas, encaja mejor un reed, que no consume nada.

El sensor Hall integrado del ESP32

El chip ESP32 original lleva dentro un pequeño sensor Hall que, en las versiones 2.x del núcleo Arduino ESP32, se lee con la función hallRead(). Pero este sensor tiene mucho ruido y solo muestra un cambio claro cuando un imán potente casi toca el blindaje metálico del módulo; además usa GPIO 36 y GPIO 39 al medir, así que si tienes algo conectado a esos pines los resultados se estropean. Los chips nuevos como el ESP32-S2, S3 y C3 no lo tienen, y como Espressif retiró el soporte en ESP-IDF 5, hallRead() ya no existe en el núcleo Arduino ESP32 3.x. El código de abajo compila en ambas versiones: en 2.x muestra el valor medio y en 3.x un aviso en su lugar. Para un proyecto serio siempre es mejor conectar al ESP32 un A3144 o un 49E externo; las características generales de la placa están en qué es el ESP32.

C++ (Arduino IDE)
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}

Medir RPM con la Raspberry Pi Pico (MicroPython)

En la Pico alimenta el A3144 a 5 V desde VBUS, conecta su salida a GP15 y activa el pull-up interno del pin; como esta resistencia va a 3,3 V, el pin nunca recibe 5 V. El código de abajo cuenta los pulsos con una interrupción y cada segundo lee y pone a cero el contador. Desactivar un instante las interrupciones al leer el contador evita que un pulso se cuele entre la lectura y la puesta a cero y se pierda. Con un imán, este método tiene una resolución de 60 RPM; para un resultado más fino puedes medir el tiempo entre dos pulsos con time.ticks_us(), como en el ejemplo de Arduino.

MicroPython
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)

¿Sensor Hall o interruptor reed?

Ambos detectan un imán, pero de formas totalmente distintas. El reed es un interruptor mecánico en el que dos láminas metálicas dentro de un tubo de vidrio se tocan cuando se acerca un imán, y no consume nada. El sensor Hall es un chip electrónico sin piezas móviles que necesita alimentación. La regla rápida: reed para un sensor que se activa pocas veces y debe funcionar meses con pilas; sensor Hall para un eje que gira rápido, un entorno con vibraciones o cualquier trabajo que necesite saber el polo o la intensidad del campo.

Interruptor reed de vidrio
Interruptor reed: dos láminas metálicas dentro de un tubo de vidrio. No consume, pero al ser mecánico su velocidad y su vida útil son limitadas.
CaracterísticaSensor Hall (A3144 / 49E)Interruptor reed
FuncionamientoSemiconductor, sin piezas móvilesContacto mecánico
AlimentaciónNecesaria (unos 4–6 mA)No necesaria
Polo e intensidadA3144 solo sur; 49E da polo e intensidadEl polo da igual, solo hay / no hay
VelocidadHasta decenas de kHz, flancos limpiosCientos de Hz, con rebote del contacto
Vida y robustezNo se desgasta, aguanta vibracionesMillones de maniobras, el vidrio puede romperse
Mejor usoRPM, velocidad, posición, detección del poloSensores de puerta y ventana con pilas

Ideas de proyectos con un sensor Hall

  • Velocímetro para bici: Pon un imán en un radio y un A3144 en la horquilla; muestra velocidad, distancia y media en una pantalla OLED.
  • Tacómetro de motor y ventilador: Mide las RPM de un motor DC o de un ventilador de ordenador y vigila la velocidad real mientras la regulas con PWM.
  • Anemómetro: Coloca un imán en el eje de un rotor de cazoletas, calcula la velocidad del viento a partir de las RPM y regístrala con un ESP32.
  • Caudalímetro de agua: Los sensores de caudal como el YF-S201 también llevan un sensor Hall dentro; contando pulsos mides litros, más detalles en la guía del sensor de caudal de agua.
  • Caja secreta o cerradura de cajón: Un 49E escondido en la tapa abre la cerradura solo cuando el imán se acerca justo en el punto correcto.
  • Alarma de puerta o tapa: Una alarma con A3144 que hace sonar un zumbador o avisa al móvil mediante un ESP32 al abrirse una tapa.

Errores frecuentes y cómo solucionarlos

SíntomaCausa probableSolución
El pin lee HIGH y LOW al azarFalta el pull-up en la salida del A3144Usa INPUT_PULLUP o pon 10 kΩ entre la salida y VCC
No pasa nada al acercar el imánPolo equivocado: el A3144 solo responde al polo surDa la vuelta al imán y ponlo de frente a la cara impresa
El sensor es inestable en el ESP32 o la PicoEl A3144 está alimentado a 3,3 VAliméntalo a 5 V y conecta el pull-up a 3,3 V
RPM bajas o irregulares a alta velocidadLos pulsos se leen en loop() y se pierdenUsa una interrupción con attachInterrupt()
El 49E marca un valor sin imánEl punto cero no es 2,5 V o se ha desplazadoMide el punto cero al arrancar y réstalo
hallRead() no compila en el ESP32Usas el núcleo Arduino ESP32 3.xUsa un sensor Hall externo o cambia al núcleo 2.x
Si tienes un imán y no sabes qué cara es el polo sur, ejecuta primero el código del 49E y acerca al sensor una cara y luego la otra: la que da gauss positivos es el polo sur. Márcala con un rotulador; te ahorrará tiempo en todos tus proyectos con el A3144. Al pegar el imán, alinea no solo el polo sino también su centro con el centro de la cara impresa del sensor; un desplazamiento de pocos milímetros puede reducir a la mitad la distancia de activación.

El sensor Hall es la forma más flexible de detectar un imán sin contacto, sin ruido y sin desgaste: el A3144 te da una señal de encendido y apagado rápida y limpia, el 49E el polo y la intensidad del campo, y con interrupciones obtienes una medida de RPM fiable. Si no olvidas la resistencia pull-up, el polo correcto y el detalle de la alimentación en las placas de 3,3 V, funciona a la primera. En la app BlueGrays encontrarás los proyectos Lectura de reed y Sensor de puerta con reed, junto con ejemplos de pulsadores e interrupciones, la alarma de movimiento con ESP32 y proyectos de antirrebote con Pico, con esquemas y código paso a paso.

Preguntas frecuentes

¿Cómo funciona un sensor de efecto Hall?

Dentro del sensor Hall hay una fina lámina semiconductora por la que pasa corriente. Cuando un campo magnético incide en perpendicular, las cargas se desplazan hacia un borde y entre los dos bordes aparece una pequeña tensión proporcional al campo. Un amplificador interno la aumenta y, en los modelos digitales, un circuito de umbral la convierte en una salida de encendido y apagado.

¿Por qué el A3144 necesita una resistencia pull-up?

La salida del A3144 es de colector abierto: con imán la conecta a GND y sin imán no la conecta a nada. Un pin al aire lee valores aleatorios por el ruido, así que hay que llevar la salida a la alimentación con una resistencia. En Arduino basta con INPUT_PULLUP; con cables largos y altas velocidades es mejor una externa de 10 kΩ.

¿A qué polo responde el A3144?

El A3144 es un interruptor unipolar y solo pone su salida a LOW cuando el polo sur se acerca lo suficiente a su cara impresa. Si acercas el polo norte, no pasa nada. Si no sabes el polo del imán, prueba las dos caras o compruébalo con un sensor lineal como el 49E.

¿Qué diferencia hay entre el KY-024 y el KY-003?

El KY-003 es un módulo con el sensor digital A3144 y solo indica si hay imán o no. El KY-024 lleva un sensor lineal 49E y un comparador LM393; su pin AO da la intensidad del campo como valor analógico y su pin DO una señal digital según el umbral que ajustas con el potenciómetro.

¿A qué distancia detecta un imán un sensor Hall?

Depende de la fuerza del imán y del umbral del sensor. Un pequeño imán de neodimio suele activar un A3144 desde 1–3 cm; con un imán de ferrita débil la distancia baja a unos milímetros. Como el campo magnético disminuye muy deprisa con la distancia, la forma más eficaz de aumentar el alcance es usar un imán más grande o más potente.

¿Se puede usar el sensor Hall integrado del ESP32?

El ESP32 original tiene un sensor Hall interno que, en el núcleo Arduino ESP32 2.x, se lee con hallRead(). Pero tiene mucho ruido, solo nota un imán fuerte muy cercano y usa GPIO 36 y 39. No existe en el ESP32-S2, S3 ni C3, y hallRead() se eliminó del núcleo Arduino ESP32 3.x; para proyectos serios usa un sensor externo.

Ver todos los proyectos
Encender un LED con pulsador (Push)
#9Principiante

Encender un LED con pulsador (Push)

Como un timbre: la luz se enciende mientras pulsas y se apaga cuando sueltas. El Arduino escucha el botón todo el rato; mientras está pulsado enciende el LED, y en cuanto levantas el dedo lo apaga. Co

4.8(113)
229
Control de LED con pulsador en ESP32 (Push)
#104Principiante

Control de LED con pulsador en ESP32 (Push)

El LED se enciende cuando se pulsa el botón y se apaga cuando se suelta. Muestra cómo se utiliza el pin de entrada digital del ESP32 y la resistencia pull-up interna. Gracias al modo INPUT_PULLUP, no se necesita ninguna resistencia externa.

4.6(36)
55
Lectura de un interruptor reed
#37Principiante

Lectura de un interruptor reed

¿Alguna vez te has preguntado cómo funciona el interruptor magnético de las alarmas de puertas y ventanas? Cuando un imán se acerca al módulo de relé reed, el diminuto interruptor de dentro se cierra;

4.4(21)
27
Sensor de puerta con interruptor reed
#38Principiante
Premium

Sensor de puerta con interruptor reed

Sabe si tu puerta está abierta o cerrada con solo mirar una luz. Pones un pequeño imán en la puerta y en el marco un interruptor que nota los imanes; con la puerta cerrada quedan juntos y se enciende

4.7(34)
44
Sistema de Alarma de Movimiento ESP32 (PIR + Buzzer + LED + Telegram)
#145Avanzado
Premium

Sistema de Alarma de Movimiento ESP32 (PIR + Buzzer + LED + Telegram)

Un sistema inteligente de alarma de seguridad que activa el buzzer y el LED cuando el sensor PIR detecta movimiento, y envía simultáneamente una notificación instantánea al propietario vía Telegram. Cuenta con un tiempo de espera de 30 segundos para limitar la frecuencia de las alarmas repetidas; este mecanismo no comprueba la validez de las detecciones del sensor PIR ni elimina las falsas detecciones. Ideal para seguridad del hogar, vigilancia de garajes, almacenes o salas de trabajo. Con ESP32

0.0(0)
9
Raspberry Pi Pico Botón Debounce: IRQ vs Software Polling
#159Intermedio
Premium

Raspberry Pi Pico Botón Debounce: IRQ vs Software Polling

¿Una pulsación y el código cuenta 3-4? ¡Es contact bounce! Compara 2 métodos de conteo en Serial: polling RAW (captura bounce, cuenta mal) vs IRQ + software debounce (preciso). Aprende física del bounce, software debounce, Pin.irq() interrupt, IRQ_FALLING trigger, ISR handlers, seguridad de variables globales en ISR.

0.0(0)
12
Detector de movimiento con sensor de movimiento
#24Principiante
Premium

Detector de movimiento con sensor de movimiento

Un vigilante sencillo que te avisa cuando alguien entra en la habitación. El sensor de movimiento capta el calor que desprende el cuerpo humano, y el Arduino mantiene el LED encendido mientras hay mov

4.6(47)
67