Sensor Efek Hall Arduino: A3144 dan 49E untuk Mendeteksi Magnet dan Mengukur RPM
Sensor efek Hall dengan Arduino: sensor digital A3144 dan analog KY-024 / 49E, pull-up, kutub dan kuat medan, menghitung RPM, sensor pintu, Hall bawaan ESP32 vs reed.
Sensor efek Hall adalah chip semikonduktor kecil yang mendeteksi keberadaan, kutub, dan kekuatan magnet tanpa bagian yang bergerak. Di proyek Arduino, sensor ini dipakai untuk menghitung RPM motor, mengukur kecepatan sepeda, mengetahui apakah pintu terbuka atau tertutup, atau membaca posisi joystick. Sarung flip yang mematikan layar ponselmu, sinyal kecepatan kipas pendingin komputer, dan sensor kecepatan roda di mobil semuanya bekerja dengan efek Hall. Di kit hobi, biasanya kamu akan bertemu dua jenis: A3144 digital yang memberi sinyal nyala/mati, dan 49E analog (modul KY-024) yang mengeluarkan kuat medan sebagai tegangan.
Di panduan ini kita akan menjelaskan fisika efek Hall dengan bahasa sederhana, lalu menunjukkan perbedaan sensor digital dan analog, cara menyambungkannya, dan kenapa sensor ini butuh resistor pull-up. Setelah itu kita akan mendeteksi magnet dengan A3144, mengukur kutub mana yang mendekat dan berapa gauss kuat medannya dengan 49E, lalu menghitung RPM motor memakai interrupt. Kamu juga akan menemukan apa gunanya sensor Hall bawaan ESP32 dan kenapa versi barunya menghapusnya, kode MicroPython untuk Raspberry Pi Pico, serta perbandingan sensor Hall dengan reed switch.

Apa itu efek Hall dan bagaimana sensor Hall bekerja?
Pada tahun 1879, Edwin Hall menemukan bahwa ketika medan magnet diberikan tegak lurus pada konduktor tipis yang dialiri arus, muncul tegangan kecil di antara kedua tepi konduktor itu. Penyebabnya, muatan yang bergerak di dalam medan magnet terdorong ke samping (gaya Lorentz): elektron menumpuk di satu tepi pelat, tepi lainnya kekurangan elektron, dan selisihnya diukur sebagai tegangan Hall. Tegangan ini sebanding dengan kuat medan, dan tandanya berbalik ketika arah medan berubah. Efeknya jauh lebih kuat di semikonduktor daripada di logam, tapi tetap hanya di kisaran mikrovolt sampai milivolt. Karena itu, di dalam chip sensor Hall ada regulator dan penguat di samping pelat Hall, dan pada model digital juga ada Schmitt trigger serta transistor output.
Kuat medan magnet diukur dalam gauss (G) atau militesla (mT); 1 mT = 10 G. Medan magnet Bumi sekitar 0,25–0,65 G, jadi tidak memengaruhi sensor Hall. Permukaan magnet neodimium kecil punya beberapa ribu gauss, dan nilai ini turun sangat cepat seiring jarak: jika jaraknya dua kali lipat, medannya turun kira-kira menjadi seperdelapan. Karena itu, jarak deteksi biasanya antara beberapa milimeter sampai beberapa sentimeter, tergantung ambang sensor dan ukuran magnet.
Jenis sensor Hall: A3144, KY-024 / 49E, dan lainnya
Berdasarkan output-nya, sensor Hall terbagi menjadi tiga kelompok utama. Pada jenis sakelar unipolar (unipolar switch) seperti A3144, output menjadi LOW hanya ketika satu kutub (kutub selatan pada A3144) cukup dekat, lalu kembali HIGH ketika magnet menjauh. Pada jenis latch (penahan) seperti US1881, kutub selatan memindahkan output ke satu keadaan, kutub utara ke keadaan lainnya, dan keadaan terakhir tetap tersimpan meski magnetnya sudah pergi; jenis ini ideal untuk motor yang dikelilingi magnet N–S bergantian. Pada jenis linear seperti 49E, output-nya bukan sakelar, melainkan tegangan analog yang sebanding dengan kuat medan: tanpa magnet nilainya setengah tegangan catu daya, naik ketika satu kutub mendekat, dan turun dengan kutub yang lain.
| Fitur | A3144 (digital) | 49E / SS49E (analog) | US1881 (latch) |
|---|---|---|---|
| Catu daya | 4,5–24 V | 2,7–6,5 V | 3,5–24 V |
| Output | Open collector, LOW di dekat magnet | Analog, VCC/2 tanpa medan | Open drain, LOW di S, HIGH di N |
| Bereaksi terhadap | Hanya kutub selatan (S) | Keduanya, dengan tanda | S menyalakan, N mematikan |
| Ambang / sensitivitas | Titik operasi sekitar 70–350 G | Umumnya 1,4 mV/G pada 5 V | Umumnya ±95 G |
| Perlu pull-up? | Ya (10 kΩ atau INPUT_PULLUP) | Tidak | Ya |
| Nama modul | KY-003 | KY-024 (dengan DO lewat LM393), KY-035 | Jarang ada dalam bentuk modul |
| Pin (sisi bertulisan menghadapmu) | VCC, GND, OUT | VCC, GND, OUT | VDD, GND, OUT |
Pengkabelan sensor Hall ke Arduino dan resistor pull-up
Output A3144 adalah transistor open collector: ketika ada magnet, output terhubung ke GND, dan ketika tidak ada magnet, output tidak terhubung ke mana pun sehingga mengambang. Pin yang mengambang membaca nilai HIGH dan LOW acak karena derau. Jadi output harus ditarik ke sisi catu daya lewat resistor; ini disebut pull-up. Di Arduino, cara termudah adalah menyalakan resistor internal 20–50 kΩ milik board dengan pinMode(pin, INPUT_PULLUP). Kalau kabelnya panjang, lingkungannya berderau, atau kamu menghitung poros yang berputar cepat, resistor eksternal 10 kΩ di antara output dan catu daya memberi tepi sinyal yang lebih bersih. Open collector punya efek samping yang berguna: kalau sensor diberi daya 5 V dan output-nya di-pull-up ke 3,3 V, board 3,3 V seperti ESP32 dan Pico juga bisa memakainya dengan aman.
| Koneksi | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| VCC A3144 | 5V | VIN (5 V) | VBUS (5 V) |
| OUT A3144 | D2 + INPUT_PULLUP (atau 10 kΩ → 5V) | GPIO 27 + INPUT_PULLUP (atau 10 kΩ → 3V3) | GP15 + PULL_UP (atau 10 kΩ → 3V3) |
| VCC 49E | 5V | 3V3 | 3V3 |
| OUT 49E | A0 | GPIO 34 | GP26 (ADC0) |
| GND (keduanya) | GND | GND | GND |
Mendeteksi magnet dengan A3144
- Dengan sisi A3144 yang bertulisan menghadapmu, pin dari kiri ke kanan adalah VCC, GND, dan OUT. Sambungkan VCC ke 5V, GND ke GND, dan OUT ke D2.
- Upload kode di bawah dan buka Serial Monitor pada 9600 baud.
- Dekatkan salah satu sisi magnet ke sisi sensor yang bertulisan. Kalau LED bawaan board tidak menyala, balik magnetnya; A3144 hanya bereaksi terhadap kutub selatan.
- Catat jarak ketika LED menyala dan ketika LED padam; selisih keduanya adalah histeresis bawaan sensor.
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}Tidak seperti reed switch atau tombol, A3144 tidak butuh debounce. Schmitt trigger di dalam sensor memastikan titik operasi (BOP) setidaknya 20 G di atas titik lepas (BRP); meski magnet bergoyang di batas itu, output tidak memantul bolak-balik. Karena tidak ada kontak yang bergerak, tepi output-nya bersih dan sensor bisa terpicu ribuan kali per detik. Ingat bahwa logikanya terbalik: dengan INPUT_PULLUP kamu membaca LOW ketika ada magnet dan HIGH ketika tidak ada; logika pull-up-nya sama seperti pada pengkabelan tombol.
Mengukur kutub dan kuat medan dengan KY-024 / 49E
49E adalah sensor linear: dengan catu daya 5 V, output-nya sekitar 2,5 V tanpa magnet dan umumnya berubah 1,4 mV per gauss. Ketika kutub selatan mendekati sisi yang bertulisan, tegangannya naik; dengan kutub utara, tegangannya turun. Dengan begitu kamu bisa mengukur bukan hanya ada atau tidaknya magnet, tapi juga kutub mana yang mendekat dan seberapa kuat medannya: B (G) = (Vout − Vzero) / 0,0014. Pada modul KY-024, pin AO adalah output 49E secara langsung; pin DO adalah output digital komparator LM393, yang berubah ketika medan melewati ambang yang kamu atur dengan potensiometer. Kode di bawah mengukur titik nol ketika mulai, lalu mencetak kuat medan dalam gauss dan militesla serta memberi tahu kutubnya.
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}ADC 10-bit di Uno membagi 5 V menjadi 1024 langkah, jadi satu langkah sekitar 4,9 mV; dengan 49E, artinya resolusinya kira-kira 3,5 G. Karena penandaan kutub bisa berbeda antarprodusen, cek dengan kompas pada percobaan pertamamu: ujung jarum kompas yang menunjuk ke utara akan berbelok ke arah kutub selatan magnet. Sensor jenuh di sekitar ±1000 G; kalau kamu hampir menempelkan magnet yang sangat kuat, nilainya berhenti naik. Titik nol bisa bergeser beberapa milivolt karena suhu, jadi untuk pengukuran yang presisi, ulangi penentuan titik nol tepat sebelum mengukur.
Mengukur RPM dan kecepatan dengan sensor Hall
Untuk mengukur RPM motor, kipas, atau roda, tempelkan magnet kecil di poros atau pelek, lalu pasang A3144 di tempat magnet lewat di depannya sekali per putaran. Setiap kali magnet lewat, output menjadi LOW sekali. Mencoba menangkap pulsa dengan digitalRead() di dalam loop() akan melewatkan pulsa pada kecepatan tinggi; cara yang benar adalah memakai interrupt. Kode di bawah mengukur waktu antara dua pulsa dengan ketelitian mikrodetik dan menghitung kecepatan dengan RPM = 60.000.000 / (periode_µs × jumlah_magnet). Kalau tidak ada pulsa selama 2 detik, poros dianggap berhenti. Cara kerja interrupt kami jelaskan secara rinci di panduan interrupt 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}Kode ini memakai jeda kunci (lockout) 2 ms, artinya dengan satu magnet kamu bisa mengukur sampai 30.000 RPM, lebih dari cukup untuk sebagian besar motor hobi. Kalau kamu memasang dua atau empat magnet di poros, pengukuran di kecepatan rendah jadi lebih sering diperbarui; cukup ubah MAGNETS. Pasang magnet secara merata; beban di satu sisi membuat poros yang berputar cepat bergetar. Kabel kuning kipas komputer sebenarnya adalah output open collector dari sensor Hall di dalamnya dan memberi dua pulsa per putaran; pakai kode yang sama dengan MAGNETS = 2 untuk membaca RPM kipas. Hitungan keliling roda dan km/jam untuk speedometer sepeda ada di panduan reed switch; rumusnya sama dengan sensor Hall.
Sensor pintu dan tutup dengan sensor Hall
Untuk sensor pintu, pasang magnet di daun pintu yang bergerak dan A3144 di kusen, sehingga ketika pintu tertutup, kutub selatan magnet menghadap sisi sensor yang bertulisan. Ketika pintu tertutup, output-nya LOW; ketika terbuka, output menjadi HIGH. Meskipun kabelnya putus, pull-up menarik pin ke HIGH dan sistem membacanya sebagai “pintu terbuka”, jadi kerusakan tetap berada di sisi aman. Sensor Hall punya dua keunggulan di sini: tanpa kontak yang bergerak, sensor ini tidak aus di pintu yang bergetar atau tutup yang dibuka-tutup berkali-kali per detik, dan tetap bisa mendeteksi magnet bahkan menembus dinding kotak tertutup rapat. Kekurangannya, sensor ini memakai daya terus-menerus: A3144 menarik sekitar 4–5 mA, yang akan menghabiskan baterai 2000 mAh dalam sekitar 18 hari hanya untuk sensornya. Untuk sensor pintu yang harus berjalan dengan baterai selama berbulan-bulan, reed switch yang tidak memakai daya lebih cocok.
Sensor Hall bawaan ESP32
Chip ESP32 orisinal berisi sensor Hall kecil, dan di core Arduino ESP32 versi 2.x kamu bisa membacanya dengan fungsi hallRead(). Tapi sensor ini sangat berderau dan hanya menunjukkan perubahan jelas ketika magnet yang kuat hampir menempel di pelindung logam modul; sensor ini juga memakai GPIO 36 dan GPIO 39 selama mengukur, jadi kalau ada hal lain yang tersambung ke pin itu, hasilnya rusak. Chip yang lebih baru seperti ESP32-S2, S3, dan C3 sama sekali tidak memilikinya, dan karena Espressif menghapus dukungannya di ESP-IDF 5, hallRead() sudah tidak ada lagi di core Arduino ESP32 3.x. Kode di bawah bisa dikompilasi di kedua versi: di 2.x mencetak nilai rata-rata, di 3.x menampilkan peringatan sebagai gantinya. Untuk proyek serius, menyambungkan A3144 atau 49E eksternal ke ESP32 selalu lebih baik; fitur umum board ini ada di Apa Itu 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}Mengukur RPM dengan Raspberry Pi Pico (MicroPython)
Di Pico, beri daya A3144 dengan 5 V dari VBUS, sambungkan output-nya ke GP15, dan nyalakan resistor pull-up internal pin itu; karena resistor ini terhubung ke 3,3 V, pin tidak pernah menerima 5 V. Kode di bawah menghitung pulsa dengan interrupt, lalu membaca dan me-reset penghitung setiap detik. Mematikan interrupt sebentar selama membaca penghitung mencegah pulsa menyelip di antara pembacaan dan reset lalu hilang. Dengan satu magnet, cara ini punya resolusi 60 RPM; untuk hasil yang lebih halus, kamu bisa mengukur waktu antara dua pulsa dengan time.ticks_us(), seperti pada contoh 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)Sensor Hall atau reed switch?
Keduanya mendeteksi magnet, tapi dengan cara yang sama sekali berbeda. Reed switch adalah sakelar mekanis: dua bilah logam di dalam tabung kaca saling bersentuhan ketika magnet mendekat, dan sakelar ini sama sekali tidak memakai daya. Sensor Hall adalah chip elektronik tanpa bagian bergerak yang butuh catu daya. Aturan singkatnya: reed switch untuk sensor yang jarang terpicu dan harus berjalan dengan baterai selama berbulan-bulan; sensor Hall untuk poros yang berputar cepat, lingkungan yang bergetar, atau pekerjaan apa pun yang butuh informasi kutub atau kuat medan.

| Fitur | Sensor Hall (A3144 / 49E) | Reed switch |
|---|---|---|
| Cara kerja | Semikonduktor, tanpa bagian bergerak | Kontak mekanis |
| Catu daya | Wajib (sekitar 4–6 mA) | Tidak perlu |
| Kutub dan kekuatan | A3144 hanya selatan; 49E memberi kutub dan kekuatan | Kutub tidak berpengaruh, hanya ada / tidak ada |
| Kecepatan | Sampai puluhan kHz, tepi bersih | Ratusan Hz, pantulan kontak |
| Umur dan ketahanan | Tidak aus, tahan getaran | Jutaan kali operasi, kaca bisa pecah |
| Paling cocok untuk | RPM, kecepatan, posisi, deteksi kutub | Sensor pintu dan jendela bertenaga baterai |
Ide proyek dengan sensor Hall
- Speedometer sepeda: Pasang magnet di jari-jari roda dan A3144 di garpu; tampilkan kecepatan, jarak, dan kecepatan rata-rata di layar OLED.
- Takometer motor dan kipas: Ukur RPM motor DC atau kipas komputer dan pantau kecepatan sebenarnya sambil kamu mengaturnya dengan PWM.
- Anemometer: Pasang magnet di poros rotor mangkuk, hitung kecepatan angin dari RPM, lalu catat dengan ESP32.
- Pengukur aliran air: Sensor aliran seperti YF-S201 juga punya sensor Hall di dalamnya; hitung pulsanya untuk mengukur liter, detailnya ada di panduan sensor aliran air YF-S201.
- Kotak rahasia atau kunci laci: 49E yang disembunyikan di dalam tutup hanya membuka kunci ketika magnet ditempelkan tepat di titik yang benar.
- Alarm pintu dan tutup: Alarm dengan A3144 yang membunyikan buzzer atau mengirim notifikasi ke ponselmu lewat ESP32 ketika tutup dibuka.
Kesalahan umum dan cara memperbaikinya
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Pin membaca HIGH dan LOW acak | Output A3144 tanpa pull-up | Pakai INPUT_PULLUP atau pasang 10 kΩ di antara output dan VCC |
| Tidak terjadi apa-apa ketika magnet mendekat | Kutubnya salah: A3144 hanya bereaksi terhadap kutub selatan | Balik magnetnya dan pegang tegak lurus terhadap sisi yang bertulisan |
| Sensor tidak stabil di ESP32 atau Pico | A3144 berjalan dengan 3,3 V | Beri daya sensor dari 5 V dan sambungkan pull-up ke 3,3 V |
| RPM rendah atau kacau pada kecepatan tinggi | Pulsa dibaca di loop() dan terlewat | Pakai interrupt dengan attachInterrupt() |
| 49E menunjukkan nilai tanpa magnet | Titik nolnya bukan 2,5 V atau sudah bergeser | Ukur titik nol ketika mulai dan kurangkan |
| hallRead() ESP32 tidak bisa dikompilasi | Kamu memakai core Arduino ESP32 3.x | Pakai sensor Hall eksternal atau pindah ke core 2.x |
Sensor Hall adalah cara paling fleksibel untuk mendeteksi magnet tanpa kontak, tanpa bunyi, dan tanpa aus: A3144 memberimu sinyal nyala/mati yang cepat dan bersih, 49E memberimu kutub dan kuat medan, dan interrupt memberimu pengukuran RPM yang andal. Selama kamu ingat resistor pull-up, kutub yang benar, dan detail catu daya di board 3,3 V, sensor ini langsung bekerja pada percobaan pertama. Di aplikasi BlueGrays, kamu akan menemukan proyek “Membaca Sakelar Reed” dan “Sensor Pintu dengan Sakelar Reed”, bersama contoh tombol dan interrupt, proyek alarm gerakan ESP32 dan debounce Pico, lengkap dengan skema rangkaian dan kode langkah demi langkah.
Pertanyaan umum
Bagaimana cara kerja sensor efek Hall?
Sensor Hall berisi pelat semikonduktor tipis yang dialiri arus. Ketika medan magnet mengenai pelat itu secara tegak lurus, muatan terdorong ke satu tepi dan muncul tegangan kecil yang sebanding dengan medan di antara kedua tepi. Penguat di dalam sensor memperbesar tegangan ini; pada model digital, rangkaian ambang mengubahnya menjadi output nyala/mati.
Kenapa A3144 butuh resistor pull-up?
Output A3144 adalah open collector: ketika ada magnet, output terhubung ke GND, dan tanpa magnet output tidak terhubung ke mana pun. Pin yang mengambang membaca nilai acak karena derau, jadi output harus ditarik ke catu daya lewat resistor. Di Arduino, INPUT_PULLUP sudah cukup; untuk kabel panjang dan kecepatan tinggi, resistor eksternal 10 kΩ lebih baik.
A3144 bereaksi terhadap kutub yang mana?
A3144 adalah sakelar unipolar dan hanya menarik output-nya ke LOW ketika kutub selatan cukup dekat dengan sisinya yang bertulisan. Kalau kamu mendekatkan kutub utara, tidak terjadi apa-apa. Kalau tidak tahu kutub magnetnya, coba kedua sisinya atau cek dengan sensor linear seperti 49E.
Apa bedanya KY-024 dan KY-003?
KY-003 adalah modul dengan sensor digital A3144 dan hanya memberi tahu ada atau tidaknya magnet. KY-024 membawa sensor linear 49E dan komparator LM393; pin AO-nya memberi kuat medan sebagai nilai analog, dan pin DO-nya memberi sinyal digital berdasarkan ambang yang kamu atur dengan potensiometer.
Dari jarak berapa sensor Hall bisa mendeteksi magnet?
Jaraknya tergantung kekuatan magnet dan ambang sensor. Magnet neodimium kecil biasanya memicu A3144 dari jarak 1–3 cm; dengan magnet ferit yang lemah, jaraknya turun menjadi beberapa milimeter. Karena medan magnet melemah sangat cepat seiring jarak, cara paling efektif untuk menambah jangkauan adalah memakai magnet yang lebih besar atau lebih kuat.
Apakah sensor Hall bawaan ESP32 bisa dipakai?
ESP32 orisinal punya sensor Hall bawaan, dan di core Arduino ESP32 2.x kamu bisa membacanya dengan hallRead(). Tapi sensor ini sangat berderau, hanya mendeteksi magnet kuat yang sangat dekat, dan memakai GPIO 36 dan 39. Sensor ini tidak ada di ESP32-S2, S3, dan C3, dan hallRead() sudah dihapus dari core Arduino ESP32 3.x; pakai sensor eksternal untuk proyek serius.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
Kendali LED dengan Tombol Tekan (Tekan)
Persis seperti bel pintu: lampu tetap menyala selama kamu menekan, dan mati ketika kamu melepasnya. Arduino terus mendengarkan tombol; selama ditekan LED menyala, dan begitu jarimu terangkat LED mati.

Kendali LED dengan Tombol Tekan ESP32 (Tekan)
LED menyala ketika tombol ditekan dan mati ketika dilepas. Menunjukkan cara memakai pin input digital ESP32 dan resistor pull-up internalnya. Mode INPUT_PULLUP membuat resistor eksternal tidak diperlukan.

Membaca Sakelar Reed
Pernah penasaran dengan sakelar magnet di dalam alarm pintu dan jendela? Ketika magnet didekatkan ke modul relay reed, sakelar mungil di dalamnya menutup; Arduino membacanya sekali per detik dan mence

Sensor Pintu dengan Sakelar Reed
Ketahui apakah pintumu terbuka atau tertutup hanya dengan melihat lampu. Kamu menempelkan magnet kecil di pintu dan sakelar peka magnet di kusennya; ketika pintu tertutup keduanya bersebelahan dan LED

Sistem Alarm Gerakan ESP32 (PIR + Buzzer + LED + Telegram)
Sistem alarm keamanan pintar yang menyalakan buzzer dan LED ketika sensor PIR mendeteksi gerakan, sekaligus mengirim notifikasi instan ke pemilik lewat Telegram. Cooldown 30 detik membatasi seberapa sering alarm berulang; mekanisme ini tidak memvalidasi deteksi PIR atau menghilangkan pemicu palsu. Cocok untuk rumah, garasi, gudang, atau ruang kerja. Dengan ESP32-CAM bisa ditambahkan notifikasi berfoto; dengan ESP32 DevKit V1 klasik, notifikasinya berupa teks.

Debounce Tombol Raspberry Pi Pico: IRQ vs Polling Perangkat Lunak
Tekan tombol sekali, kode menghitung 3-4? Itu pantulan kontak: kontak logam bergetar beberapa mikrodetik! Bandingkan 2 metode di Serial: polling MENTAH (ikut menghitung pantulan) vs IRQ + debounce perangkat lunak (akurat). Pelajari pantulan kontak, debounce perangkat lunak (ticks_diff() > 50ms), interrupt Pin.irq(), pemicu IRQ_FALLING, handler ISR, serta global + keamanan ISR. LED berbalik lewat IRQ, dan Serial menampilkan kedua penghitung.

Pendeteksi Gerakan dengan Sensor Gerak
Penjaga sederhana yang memberi tahu ketika ada orang masuk ke ruangan. Sensor gerak menangkap panas yang dipancarkan tubuh manusia, dan Arduino menjaga LED tetap menyala selama ada gerakan lalu memati
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

