Componentes · 13 min de leitura

Sensor de efeito Hall com Arduino: A3144 e 49E para ímãs e RPM

Sensor de efeito Hall com Arduino: sensores A3144 digital e KY-024 / 49E analógico, pull-up, polo e intensidade do campo, contagem de RPM, sensor de porta e Hall do ESP32 vs. chave reed.

Um sensor de efeito Hall é um pequeno chip semicondutor que detecta a presença, a polaridade e a intensidade de um ímã sem nenhuma parte móvel. Em projetos com Arduino, ele é usado para contar a RPM de um motor, medir a velocidade de uma bicicleta, saber se uma porta está aberta ou fechada ou ler a posição de um joystick. A capa flip que desliga a tela do seu celular, o sinal de velocidade da ventoinha de um computador e os sensores de velocidade das rodas dos carros funcionam com o efeito Hall. Nos kits hobby, você vai encontrar principalmente dois tipos: o digital A3144, que dá um sinal liga/desliga, e o analógico 49E (módulo KY-024), que fornece a intensidade do campo como uma tensão.

Neste guia, vamos explicar a física do efeito Hall em palavras simples e depois mostrar a diferença entre sensores digitais e analógicos, como ligá-los e por que eles precisam de um resistor de pull-up. Em seguida, vamos detectar um ímã com o A3144, medir qual polo está se aproximando e quantos gauss tem o campo com o 49E, e contar a RPM de um motor usando uma interrupção. Você também vai ver para que serve o sensor Hall integrado do ESP32 e por que as versões mais novas o removeram, um código MicroPython para o Raspberry Pi Pico e uma comparação entre o sensor Hall e a chave reed.

Pequeno ímã usado para acionar um sensor de efeito Hall
Um pequeno ímã de neodímio aciona um sensor Hall a alguns centímetros de distância. A face plana do ímã deve ficar voltada para a face impressa do sensor.

O que é o efeito Hall e como funciona um sensor Hall?

Em 1879, Edwin Hall descobriu que, quando um campo magnético é aplicado perpendicularmente a um condutor fino percorrido por uma corrente, surge uma pequena tensão entre as duas bordas do condutor. O motivo é que as cargas em movimento são empurradas para o lado dentro de um campo magnético (a força de Lorentz): os elétrons se acumulam em uma borda da placa, a outra borda fica com falta deles, e a diferença é medida como a tensão Hall. Essa tensão é proporcional à intensidade do campo, e seu sinal se inverte quando a direção do campo muda. O efeito é muito mais forte em semicondutores do que em metais, mas mesmo assim fica na faixa de microvolts a milivolts. É por isso que os chips de sensor Hall têm, além da placa Hall, um regulador, um amplificador e, nos modelos digitais, um Schmitt trigger e um transistor de saída.

A intensidade do campo magnético é medida em gauss (G) ou militesla (mT); 1 mT = 10 G. O campo magnético da Terra tem cerca de 0,25–0,65 G, então não afeta os sensores Hall. A superfície de um pequeno ímã de neodímio tem alguns milhares de gauss, e esse valor cai muito rápido com a distância: dobrando a distância, o campo cai para aproximadamente um oitavo. Por isso, a distância de detecção, dependendo do limiar do sensor e do tamanho do ímã, costuma ficar entre alguns milímetros e alguns centímetros.

Tipos de sensor Hall: A3144, KY-024 / 49E e outros

Os sensores Hall se dividem em três grupos principais de acordo com a saída. Nos tipos chave unipolar (unipolar switch), como o A3144, a saída vai para LOW somente quando um polo (o polo sul, no A3144) chega perto o suficiente, e volta para HIGH quando o ímã se afasta. Nos tipos com trava (latch), como o US1881, o polo sul coloca a saída em um estado, o polo norte no outro, e o último estado é mantido mesmo depois que o ímã vai embora; esse tipo é ideal para motores com ímãs N–S alternados ao redor. Nos tipos lineares, como o 49E, a saída não é uma chave, mas uma tensão analógica proporcional à intensidade do campo: sem ímã, fica na metade da tensão de alimentação, sobe quando um polo se aproxima e desce com o outro.

CaracterísticaA3144 (digital)49E / SS49E (analógico)US1881 (com trava)
Alimentação4,5–24 V2,7–6,5 V3,5–24 V
SaídaColetor aberto, LOW com o ímãAnalógica, VCC/2 com campo zeroDreno aberto, LOW no S, HIGH no N
Responde aSomente polo sul (S)Ambos, com sinalS liga, N desliga
Limiar / sensibilidadePonto de acionamento cerca de 70–350 GTipicamente 1,4 mV/G em 5 VTipicamente ±95 G
Precisa de pull-up?Sim (10 kΩ ou INPUT_PULLUP)NãoSim
Nome do móduloKY-003KY-024 (com DO via LM393), KY-035Raro como módulo
Pinos (face impressa voltada para você)VCC, GND, OUTVCC, GND, OUTVDD, GND, OUT

Ligação do sensor Hall no Arduino e o resistor de pull-up

A saída do A3144 é um transistor de coletor aberto: com um ímã presente, ele liga a saída ao GND e, sem ímã, não liga a saída a nada, deixando-a flutuando. Um pino flutuando lê valores HIGH e LOW aleatórios por causa do ruído. Por isso, a saída precisa ser puxada para o lado da alimentação por um resistor; isso se chama pull-up. No Arduino, o jeito mais fácil é ativar o resistor interno de 20–50 kΩ da placa com pinMode(pin, INPUT_PULLUP). Se o fio for longo, o ambiente tiver ruído ou você estiver contando um eixo girando rápido, um resistor externo de 10 kΩ entre a saída e a alimentação dá bordas mais limpas. O coletor aberto tem um efeito colateral útil: se você alimentar o sensor com 5 V e puxar a saída para 3,3 V, placas de 3,3 V como o ESP32 e o Pico também podem usá-lo com segurança.

LigaçãoArduino UnoESP32Raspberry Pi Pico
A3144 VCC5VVIN (5 V)VBUS (5 V)
A3144 OUTD2 + INPUT_PULLUP (ou 10 kΩ → 5V)GPIO 27 + INPUT_PULLUP (ou 10 kΩ → 3V3)GP15 + PULL_UP (ou 10 kΩ → 3V3)
49E VCC5V3V33V3
49E OUTA0GPIO 34GP26 (ADC0)
GND (ambos)GNDGNDGND
A faixa de alimentação oficial do A3144 é 4,5–24 V; alimentá-lo com 3,3 V muitas vezes parece funcionar, mas não é confiável. No ESP32 e no Pico, alimente o sensor com 5 V e ligue o pull-up da saída em 3,3 V. Cuidado com módulos prontos como o KY-003: eles têm um resistor e um LED que puxam a saída para o VCC. Se você alimentar o módulo com 5 V, a saída também sobe para perto de 5 V e pode danificar o pino de uma placa de 3,3 V; nesse caso, coloque um divisor de tensão na saída ou use o sensor sozinho.

Detectando um ímã com o A3144

  1. Com a face impressa do A3144 voltada para você, os pinos da esquerda para a direita são VCC, GND e OUT. Ligue VCC no 5V, GND no GND e OUT no D2.
  2. Carregue o código abaixo e abra o Monitor Serial em 9600 baud.
  3. Aproxime uma face do ímã da face impressa do sensor. Se o LED integrado da placa não acender, vire o ímã; o A3144 só responde ao polo sul.
  4. Anote as distâncias em que o LED acende e apaga; a diferença entre elas é a histerese interna do 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}

Diferente de uma chave reed ou de um botão, o A3144 não precisa de debounce. O Schmitt trigger dentro do sensor garante que o ponto de acionamento (BOP) fique pelo menos 20 G acima do ponto de liberação (BRP); mesmo que o ímã oscile no limite, a saída não fica pulando de um lado para o outro. Como não há contato móvel, as bordas da saída são limpas e ela pode ser acionada milhares de vezes por segundo. Lembre que a lógica é invertida: com INPUT_PULLUP, você lê LOW quando o ímã está presente e HIGH quando não está; é a mesma lógica de pull-up da ligação de botões.

Medindo polo e intensidade do campo com o KY-024 / 49E

O 49E é um sensor linear: alimentado com 5 V, sua saída fica em cerca de 2,5 V sem ímã e varia tipicamente 1,4 mV por gauss. Quando o polo sul se aproxima da face impressa, a tensão sobe; com o polo norte, ela cai. Assim, você mede não só se há um ímã, mas também qual polo está se aproximando e quão forte é o campo: B (G) = (Vsaída − Vzero) / 0,0014. No módulo KY-024, o pino AO é diretamente a saída do 49E; o pino DO é a saída digital do comparador LM393, que muda quando o campo passa do limiar ajustado no potenciômetro. O código abaixo mede o ponto zero na inicialização e depois mostra o campo em gauss e militesla e informa o 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}

O ADC de 10 bits do Uno divide 5 V em 1024 passos, então um passo vale cerca de 4,9 mV; com o 49E, isso significa uma resolução de aproximadamente 3,5 G. Como a marcação dos polos pode variar entre fabricantes, confira com uma bússola na primeira vez: a ponta da agulha que aponta para o norte se vira para o polo sul do ímã. O sensor satura em cerca de ±1000 G; se você quase encostar um ímã muito forte, o valor para de subir. O ponto zero pode variar alguns milivolts com a temperatura, então, para medições precisas, repita a zeragem logo antes de medir.

Medindo RPM e velocidade com um sensor Hall

Para medir a RPM de um motor, ventoinha ou roda, você cola um pequeno ímã no eixo ou no aro e fixa o A3144 onde o ímã passa na frente dele uma vez por volta. A cada passagem, a saída vai para LOW uma vez. Tentar capturar os pulsos com digitalRead() dentro do loop() faz perder pulsos em alta velocidade; o método certo é usar uma interrupção. O código abaixo mede o tempo entre dois pulsos com precisão de microssegundos e calcula a velocidade com RPM = 60.000.000 / (periodo_µs × numero_de_imas). Se nenhum pulso chegar por 2 segundos, o eixo é considerado parado. Explicamos em detalhes como as interrupções funcionam no guia de interrupções no 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}

O código usa um bloqueio de 2 ms, o que significa que, com um ímã, você pode medir até 30.000 RPM, mais do que suficiente para a maioria dos motores hobby. Se colocar dois ou quatro ímãs no eixo, você terá uma medição que se atualiza com mais frequência em baixa velocidade; basta mudar MAGNETS. Distribua os ímãs de forma equilibrada; peso de um lado só faz um eixo que gira rápido vibrar. O fio amarelo de uma ventoinha de computador é, na verdade, uma saída de coletor aberto de um sensor Hall interno e dá dois pulsos por volta; use o mesmo código com MAGNETS = 2 para ler a RPM de uma ventoinha. As contas de circunferência e km/h para um velocímetro de bicicleta estão no guia da chave reed; a fórmula é a mesma com um sensor Hall.

Sensor de porta e tampa com sensor Hall

Para um sensor de porta, coloque o ímã na folha móvel da porta e o A3144 no batente, de modo que, com a porta fechada, o polo sul do ímã fique voltado para a face impressa do sensor. Com a porta fechada, a saída fica em LOW; quando ela abre, vai para HIGH. Mesmo que o fio se rompa, o pull-up puxa o pino para HIGH e o sistema entende como “porta aberta”, então a falha fica do lado seguro. Aqui o sensor Hall tem duas vantagens: sem contato móvel, ele não se desgasta em portas que vibram ou em tampas que abrem e fecham muitas vezes por segundo, e ele detecta o ímã até através da parede de uma caixa vedada. A desvantagem é que ele consome energia o tempo todo: o A3144 consome cerca de 4–5 mA, o que esgotaria uma bateria de 2000 mAh em cerca de 18 dias só com o sensor. Para um sensor de porta que precisa funcionar com bateria por meses, uma chave reed, que não consome energia, é mais adequada.

O sensor Hall integrado do ESP32

O chip ESP32 original tem um pequeno sensor Hall interno, e nas versões 2.x do core do Arduino ESP32 você pode lê-lo com a função hallRead(). Mas esse sensor tem muito ruído e só mostra uma mudança clara quando um ímã forte quase encosta na blindagem metálica do módulo; além disso, ele usa os pinos GPIO 36 e GPIO 39 durante a medição, então, se houver algo ligado nesses pinos, os resultados ficam comprometidos. Chips mais novos, como o ESP32-S2, S3 e C3, não têm esse sensor, e como a Espressif removeu o suporte no ESP-IDF 5, hallRead() não existe mais no core do Arduino ESP32 3.x. O código abaixo compila nas duas versões: na 2.x, mostra o valor médio; na 3.x, mostra um aviso no lugar. Para um projeto sério, ligar um A3144 ou 49E externo ao ESP32 é sempre melhor; você encontra as características gerais da placa em o que é o 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}

Medindo RPM com o Raspberry Pi Pico (MicroPython)

No Pico, alimente o A3144 com 5 V pelo VBUS, ligue a saída no GP15 e ative o resistor de pull-up interno do pino; como esse resistor vai para 3,3 V, o pino nunca recebe 5 V. O código abaixo conta os pulsos com uma interrupção e lê e zera o contador a cada segundo. Desativar as interrupções por um instante enquanto o contador é lido evita que um pulso entre entre a leitura e a zeragem e se perca. Com um ímã, esse método tem resolução de 60 RPM; para um resultado mais preciso, você pode medir o tempo entre dois pulsos com time.ticks_us(), como no exemplo do 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 ou chave reed?

Os dois detectam um ímã, mas de formas completamente diferentes. A chave reed é uma chave mecânica em que duas lâminas metálicas dentro de um tubo de vidro se encostam quando um ímã se aproxima, e ela não consome nenhuma energia. O sensor Hall é um chip eletrônico sem partes móveis que precisa de alimentação. A regra curta: chave reed para um sensor que é acionado raramente e precisa funcionar com bateria por meses; sensor Hall para um eixo girando rápido, um ambiente com vibração ou qualquer tarefa que precise da informação do polo ou da intensidade do campo.

Chave reed de vidro
Chave reed: duas lâminas metálicas dentro de um tubo de vidro. Não consome energia, mas, por ser mecânica, tem velocidade e vida útil limitadas.
CaracterísticaSensor Hall (A3144 / 49E)Chave reed
FuncionamentoSemicondutor, sem partes móveisContato mecânico
AlimentaçãoNecessária (cerca de 4–6 mA)Não necessária
Polo e intensidadeA3144 só polo sul; 49E dá polo e intensidadeO polo não importa, só presente / ausente
VelocidadeAté dezenas de kHz, bordas limpasCentenas de Hz, com repique dos contatos
Vida útil e robustezNão se desgasta, aguenta vibraçãoMilhões de acionamentos, o vidro pode quebrar
Melhor usoRPM, velocidade, posição, detecção de poloSensores de porta e janela com bateria

Ideias de projetos com sensor Hall

  • Velocímetro de bicicleta: Coloque um ímã em um raio e um A3144 no garfo; mostre velocidade, distância e velocidade média em um display OLED de 0,96 polegada.
  • Tacômetro para motor e ventoinha: Meça a RPM de um motor CC ou de uma ventoinha de computador e acompanhe a velocidade real enquanto ajusta com PWM.
  • Anemômetro: Prenda um ímã no eixo de um rotor de conchas, calcule a velocidade do vento a partir da RPM e registre com um ESP32.
  • Medidor de vazão de água: Sensores de fluxo como o YF-S201 também têm um sensor Hall dentro; conte os pulsos para medir litros, detalhes no guia do sensor de fluxo de água.
  • Caixa secreta ou trava de gaveta: Um 49E escondido dentro da tampa só abre a trava quando um ímã é segurado exatamente no ponto certo.
  • Alarme de porta e tampa: Um alarme com A3144 que toca um buzzer ou envia uma notificação para o seu celular via ESP32 quando uma tampa é aberta.

Erros comuns e como resolvê-los

SintomaCausa provávelSolução
O pino lê HIGH e LOW aleatóriosFalta pull-up na saída do A3144Use INPUT_PULLUP ou coloque 10 kΩ entre a saída e o VCC
Nada acontece quando o ímã se aproximaPolo errado: o A3144 só responde ao polo sulVire o ímã e segure-o perpendicular à face impressa
O sensor fica instável no ESP32 ou no PicoO A3144 está alimentado com 3,3 VAlimente o sensor com 5 V e ligue o pull-up em 3,3 V
RPM baixa ou irregular em alta velocidadeOs pulsos são lidos no loop() e se perdemUse uma interrupção com attachInterrupt()
O 49E mostra um valor sem ímãO ponto zero não é 2,5 V ou variouMeça o ponto zero na inicialização e subtraia
hallRead() do ESP32 não compilaVocê está usando o core do Arduino ESP32 3.xUse um sensor Hall externo ou mude para o core 2.x
Se você está trabalhando com um ímã e não sabe qual face é o polo sul, rode primeiro o código do 49E e aproxime cada face do ímã do sensor, uma de cada vez: a face que dá gauss positivo é o polo sul. Marque essa face com uma caneta; isso vai poupar tempo em todo projeto com o A3144. Ao colar o ímã, alinhe não só o polo, mas também o centro dele com o meio da face impressa do sensor; um deslocamento de poucos milímetros pode reduzir pela metade a distância de acionamento.

O sensor Hall é a forma mais flexível de detectar um ímã sem contato, sem ruído e sem desgaste: o A3144 dá um sinal liga/desliga rápido e limpo, o 49E dá polo e intensidade do campo, e as interrupções garantem uma medição de RPM confiável. Se você lembrar do resistor de pull-up, do polo certo e do detalhe da alimentação nas placas de 3,3 V, ele funciona de primeira. No app BlueGrays, você encontra os projetos Leitura da chave reed e Sensor de porta com chave reed, junto com exemplos de botão e interrupção e os projetos de alarme de movimento com ESP32 e debounce no Pico, com esquemas do circuito e códigos passo a passo.

Perguntas frequentes

Como funciona um sensor de efeito Hall?

Um sensor Hall tem uma placa semicondutora fina percorrida por uma corrente. Quando um campo magnético atinge a placa perpendicularmente, as cargas são empurradas para uma borda e surge uma pequena tensão proporcional ao campo entre as duas bordas. Um amplificador dentro do sensor aumenta essa tensão; nos modelos digitais, um circuito de limiar a transforma em uma saída liga/desliga.

Por que o A3144 precisa de um resistor de pull-up?

A saída do A3144 é de coletor aberto: com um ímã presente, ela liga a saída ao GND e, sem ímã, não liga a nada. Um pino flutuando lê valores aleatórios por causa do ruído, então a saída precisa ser puxada para a alimentação por um resistor. No Arduino, INPUT_PULLUP é suficiente; com fios longos e altas velocidades, um resistor externo de 10 kΩ é melhor.

A qual polo o A3144 responde?

O A3144 é uma chave unipolar e só coloca a saída em LOW quando o polo sul chega perto o suficiente da face impressa. Se você aproximar o polo norte, nada acontece. Se não souber o polo do ímã, teste as duas faces ou confira com um sensor linear como o 49E.

Qual é a diferença entre o KY-024 e o KY-003?

O KY-003 é um módulo com um sensor digital A3144 e só informa se há ou não um ímã. O KY-024 tem um sensor linear 49E e um comparador LM393; o pino AO dá a intensidade do campo como valor analógico, e o pino DO dá um sinal digital baseado no limiar ajustado no potenciômetro.

A que distância um sensor Hall detecta um ímã?

A distância depende da força do ímã e do limiar do sensor. Um pequeno ímã de neodímio geralmente aciona um A3144 a 1–3 cm; com um ímã de ferrite fraco, isso cai para alguns milímetros. Como o campo magnético diminui muito rápido com a distância, a forma mais eficaz de aumentar o alcance é usar um ímã maior ou mais forte.

Dá para usar o sensor Hall integrado do ESP32?

O ESP32 original tem um sensor Hall integrado, e no core do Arduino ESP32 2.x você pode lê-lo com hallRead(). Mas ele tem muito ruído, só percebe um ímã forte e muito próximo e usa os pinos GPIO 36 e 39. Ele não existe no ESP32-S2, S3 e C3, e hallRead() foi removido do core do Arduino ESP32 3.x; use um sensor externo em projetos sérios.

Ver todos os projetos
Controle de LED com botão (momentâneo)
#9Iniciante

Controle de LED com botão (momentâneo)

É como uma campainha: a luz fica acesa enquanto você pressiona o botão e apaga quando você solta. O Arduino monitora o botão continuamente; enquanto ele está pressionado, o LED fica aceso e apaga assi

4.8(113)
229
Controle de LED com botão no ESP32 (momentâneo)
#104Iniciante

Controle de LED com botão no ESP32 (momentâneo)

O LED acende enquanto o botão está pressionado e apaga ao soltá-lo. Mostra como usar o pino de entrada digital e o resistor pull-up interno do ESP32. O modo INPUT_PULLUP dispensa um resistor externo.

4.6(36)
55
Leitura de uma chave reed
#37Iniciante

Leitura de uma chave reed

Você já teve curiosidade sobre a chave magnética dos alarmes de portas e janelas? Quando um ímã se aproxima do módulo de relé reed, a pequena chave interna fecha; o Arduino faz a leitura uma vez por s

4.4(21)
27
Sensor de porta com chave reed
#38Iniciante
Premium

Sensor de porta com chave reed

Saiba se a porta está aberta ou fechada só de olhar uma luz. Você fixa um pequeno ímã na porta e uma chave sensível ao ímã no batente; quando a porta está fechada, os dois ficam lado a lado e o LED ve

4.7(34)
44
Alarme de movimento com ESP32 (PIR + buzzer + LED + Telegram)
#145Avançado
Premium

Alarme de movimento com ESP32 (PIR + buzzer + LED + Telegram)

Um sistema de alarme de segurança inteligente que aciona o buzzer e o LED quando o sensor PIR detecta movimento e, ao mesmo tempo, envia uma notificação instantânea ao proprietário pelo Telegram. Inclui um intervalo de espera de 30 segundos para limitar a frequência dos alarmes repetidos; esse mecanismo não valida as detecções do PIR nem elimina disparos falsos. Pode ser usado na segurança de casas, no monitoramento de garagens, depósitos ou salas de trabalho.

0.0(0)
9
Raspberry Pi Pico: debounce de botão com IRQ ou consulta por software
#159Intermediário
Premium

Raspberry Pi Pico: debounce de botão com IRQ ou consulta por software

Você pressiona o botão uma vez e o código conta 3-4? Isso é oscilação dos contatos — os contatos metálicos oscilam por microssegundos! Compare 2 métodos de contagem lado a lado no Monitor Serial: consulta sem filtro (detecta as oscilações e conta a mais) e IRQ + debounce por software (contagem correta). Aprenda a física da oscilação dos contatos, debounce por software (ticks_diff() > 50ms), registro de interrupção com Pin.irq(), disparo IRQ_FALLING, rotinas ISR, global e…

0.0(0)
12
Detector de movimento com sensor de movimento
#24Iniciante
Premium

Detector de movimento com sensor de movimento

Um vigia simples que avisa quando alguém entra no cômodo. O sensor de movimento detecta o calor emitido pelo corpo humano, e o Arduino mantém o LED aceso enquanto há movimento e o apaga quando ele par

4.6(47)
67