Hall Sensörü Arduino: A3144 ve 49E ile Mıknatıs ve Devir Ölçme
Hall sensörü Arduino: A3144 dijital ve KY-024 / 49E analog sensör, pull-up, kutup ve alan ölçümü, RPM sayma, kapı sensörü, ESP32 dahili Hall ve reed farkı.
Hall sensörü, bir mıknatısın varlığını, kutbunu ve gücünü hiçbir hareketli parça kullanmadan algılayan küçük bir yarı iletken yongadır. Arduino projelerinde bir motorun devrini saymak, bisiklet hızını ölçmek, bir kapının açık mı kapalı mı olduğunu anlamak ya da bir joystick'in konumunu okumak için kullanılır. Telefonundaki kapaklı kılıfın ekranı kapatması, bilgisayar soğutucu fanının devir sinyali ve otomobillerdeki tekerlek hız sensörleri hep Hall etkisiyle çalışır. Hobi kitlerinde en sık iki türüyle karşılaşırsın: aç–kapa sinyali veren dijital A3144 ve alan şiddetini gerilim olarak veren analog 49E (KY-024 modülü).
Bu rehberde Hall etkisinin fiziğini sade bir dille anlatacak, dijital ve analog sensörlerin farkını, bağlantılarını ve neden pull-up direnci gerektiğini göstereceğiz. Ardından A3144 ile mıknatıs algılayacak, 49E ile hangi kutbun yaklaştığını ve alanın kaç gauss olduğunu ölçecek, kesme (interrupt) kullanarak bir motorun devrini (RPM) sayacağız. ESP32'nin dahili Hall sensörünün ne işe yaradığını ve neden yeni sürümlerde kaldırıldığını, Raspberry Pi Pico ile MicroPython kodunu ve Hall sensörü reed röle ile karşılaştırmayı da bulacaksın.

Hall etkisi nedir, Hall sensörü nasıl çalışır?
1879'da Edwin Hall, içinden akım geçen ince bir iletkene dik bir manyetik alan uygulandığında, iletkenin iki kenarı arasında küçük bir gerilim oluştuğunu keşfetti. Sebebi, hareket eden yüklerin manyetik alan içinde yana doğru itilmesidir (Lorentz kuvveti): elektronlar levhanın bir kenarında birikir, diğer kenarı eksik kalır ve aradaki fark Hall gerilimi olarak ölçülür. Bu gerilim alan şiddetiyle doğru orantılıdır, alanın yönü değişince işareti de değişir. Yarı iletkenlerde etki metallerden çok daha belirgindir, ama yine de mikrovolt–milivolt seviyesindedir. Bu yüzden Hall sensörü yongalarının içinde Hall levhasının yanında bir regülatör, bir yükselteç ve dijital modellerde bir Schmitt tetikleyici ile çıkış transistörü bulunur.
Manyetik alan şiddeti gauss (G) ya da militesla (mT) ile ölçülür; 1 mT = 10 G'dir. Dünyanın manyetik alanı yaklaşık 0,25–0,65 G kadardır, bu yüzden Hall sensörlerini etkilemez. Küçük bir neodimyum mıknatısın yüzeyinde birkaç bin gauss vardır ve bu değer mesafeyle çok hızlı düşer: mesafe iki katına çıkınca alan kabaca sekizde birine iner. Bu yüzden algılama mesafesi, sensörün eşiğine ve mıknatısın boyuna bağlı olarak genellikle birkaç milimetre ile birkaç santimetre arasındadır.
Hall sensörü çeşitleri: A3144, KY-024 / 49E ve diğerleri
Hall sensörleri çıkışlarına göre üç ana gruba ayrılır. Tek kutuplu anahtar (unipolar switch) tiplerde, örneğin A3144'te, çıkış yalnızca bir kutup (A3144'te güney kutbu) yeterince yaklaşınca LOW olur, mıknatıs uzaklaşınca yeniden HIGH'a döner. Kilitlemeli (latch) tiplerde, örneğin US1881'de, güney kutbu çıkışı bir duruma, kuzey kutbu diğer duruma geçirir ve mıknatıs gitse bile son durum korunur; bu tip, çevresine sırayla N–S mıknatıs dizilmiş motorlar için idealdir. Doğrusal (linear) tiplerde, örneğin 49E'de, çıkış bir anahtar değil, alan şiddetiyle orantılı bir analog gerilimdir: mıknatıs yokken besleme geriliminin yarısını verir, bir kutup yaklaşınca yükselir, diğer kutupta düşer.
| Özellik | A3144 (dijital) | 49E / SS49E (analog) | US1881 (kilitlemeli) |
|---|---|---|---|
| Besleme | 4,5–24 V | 2,7–6,5 V | 3,5–24 V |
| Çıkış | Açık kolektör, mıknatısta LOW | Analog, sıfır alanda VCC/2 | Açık drain, S'de LOW, N'de HIGH |
| Tepki verdiği kutup | Yalnız güney (S) | İkisi de, işaretiyle birlikte | S açar, N kapatır |
| Eşik / hassasiyet | Açılma eşiği yaklaşık 70–350 G | 5 V'ta tipik 1,4 mV/G | Tipik ±95 G |
| Pull-up gerekir mi? | Evet (10 kΩ ya da INPUT_PULLUP) | Hayır | Evet |
| Modül adı | KY-003 | KY-024 (LM393 ile DO da var), KY-035 | Modül olarak nadir |
| Bacaklar (yazılı yüz sana bakarken) | VCC, GND, OUT | VCC, GND, OUT | VDD, GND, OUT |
Hall sensörü Arduino bağlantısı ve pull-up direnci
A3144'ün çıkışı bir açık kolektör transistördür: mıknatıs varken çıkışı GND'ye bağlar, mıknatıs yokken ise çıkışı hiçbir yere bağlamaz, yani boşta bırakır. Boştaki bir pin gürültüden rastgele HIGH ve LOW okur. Bu yüzden çıkışın bir dirençle besleme tarafına çekilmesi gerekir; buna pull-up denir. Arduino'da en kolay yol pinMode(pin, INPUT_PULLUP) ile kartın içindeki 20–50 kΩ'luk direnci açmaktır. Kablo uzunsa, ortam gürültülüyse ya da hızlı dönen bir mili sayıyorsan çıkış ile besleme arasına harici 10 kΩ koymak daha temiz kenarlar verir. Açık kolektörün güzel bir yan etkisi vardır: sensörü 5 V ile besleyip çıkışı 3,3 V'a çekersen, ESP32 ve Pico gibi 3,3 V kartlar da güvenle kullanabilir.
| Bağlantı | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| A3144 VCC | 5V | VIN (5 V) | VBUS (5 V) |
| A3144 OUT | D2 + INPUT_PULLUP (ya da 10 kΩ → 5V) | GPIO 27 + INPUT_PULLUP (ya da 10 kΩ → 3V3) | GP15 + PULL_UP (ya da 10 kΩ → 3V3) |
| 49E VCC | 5V | 3V3 | 3V3 |
| 49E OUT | A0 | GPIO 34 | GP26 (ADC0) |
| GND (ikisi için) | GND | GND | GND |
A3144 ile mıknatıs algılama
- A3144'ün yazılı yüzü sana bakarken bacakları soldan sağa VCC, GND ve OUT'tur. VCC'yi 5V'a, GND'yi GND'ye, OUT'u D2'ye bağla.
- Aşağıdaki kodu yükle ve Seri Monitör'ü 9600 baud hızında aç.
- Mıknatısın bir yüzünü sensörün yazılı yüzüne yaklaştır. Kartın dahili LED'i yanmazsa mıknatısı ters çevir; A3144 yalnızca güney kutbuna tepki verir.
- LED'in yandığı ve söndüğü mesafeleri not et; ikisi arasındaki fark sensörün dahili histerezisidir.
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}Reed röle ya da butonun aksine A3144'te debounce gerekmez. Sensörün içindeki Schmitt tetikleyici, açılma eşiğinin (BOP) kapanma eşiğinden (BRP) en az 20 G kadar yüksek olmasını sağlar; mıknatıs sınırda titrese bile çıkış bir o yana bir bu yana sıçramaz. Hareketli bir kontak olmadığı için çıkış kenarları da temizdir ve saniyede binlerce kez tetiklenebilir. Mantığın ters olduğunu unutma: INPUT_PULLUP kullandığında mıknatıs varken LOW, yokken HIGH okursun; bu, buton bağlantısındaki pull-up mantığının aynısıdır.
KY-024 / 49E ile kutup ve alan şiddeti ölçmek
49E doğrusal bir sensördür: 5 V ile beslendiğinde mıknatıs yokken çıkışı yaklaşık 2,5 V'tur ve her gauss için tipik olarak 1,4 mV değişir. Güney kutbu yazılı yüze yaklaştığında gerilim yükselir, kuzey kutbunda düşer. Bu sayede yalnızca mıknatısın varlığını değil, hangi kutbun yaklaştığını ve alanın ne kadar güçlü olduğunu da ölçebilirsin: B (G) = (Vçıkış − Vsıfır) / 0,0014. KY-024 modülünde AO pini doğrudan 49E'nin çıkışıdır; DO pini ise LM393 karşılaştırıcının, potansiyometreyle ayarladığın eşiği geçince değişen dijital çıkışıdır. Aşağıdaki kod açılışta sıfır noktasını ölçer, sonra alanı gauss ve militesla olarak yazar ve kutbu söyler.
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}Uno'nun 10 bitlik ADC'si 5 V'u 1024 adıma böler, yani bir adım yaklaşık 4,9 mV'tur; bu da 49E ile yaklaşık 3,5 G'lik bir çözünürlük demektir. Kutup etiketleri üreticiden üreticiye değişebildiği için ilk denemede bir pusula ile kontrol et: pusulanın kuzeyi gösteren ucu mıknatısın güney kutbuna yönelir. Sensör yaklaşık ±1000 G'te doyuma ulaşır; çok güçlü bir mıknatısı neredeyse dokundurursan değer artık yükselmez. Sıfır noktası sıcaklıkla birkaç milivolt kayabileceği için hassas ölçümlerde ölçümden hemen önce sıfırlamayı tekrarla.
Hall sensörü ile devir ve hız ölçme (RPM)
Bir motorun, fanın ya da tekerleğin devrini ölçmek için mile ya da janta küçük bir mıknatıs yapıştırır, A3144'ü mıknatısın her turda önünden geçeceği yere sabitlersin. Her geçişte çıkış bir kez LOW olur. Darbeleri loop() içinde digitalRead() ile yakalamaya çalışmak hızlı dönüşlerde darbe kaçırır; doğru yöntem bir kesme kullanmaktır. Aşağıdaki kod iki darbe arasındaki süreyi mikrosaniye hassasiyetinde ölçer ve devri RPM = 60.000.000 / (süre_µs × mıknatıs_sayısı) formülüyle hesaplar. 2 saniye boyunca darbe gelmezse mil durmuş kabul edilir. Kesmelerin nasıl çalıştığını Arduino interrupt yazısında ayrıntılı anlattık.
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}Kod 2 ms'lik bir kilit süresi kullanır; bu, tek mıknatısla en fazla 30.000 RPM ölçebileceğin anlamına gelir ve çoğu hobi motoru için fazlasıyla yeterlidir. Mile iki ya da dört mıknatıs koyarsan düşük hızlarda daha sık güncellenen bir ölçüm alırsın, yalnızca MAGNETS değerini değiştirmen yeterli. Mıknatısları dengeli yerleştir; tek taraflı ağırlık hızlı dönen bir milde titreşim yapar. Bilgisayar fanlarının sarı kablosu da aslında içerideki bir Hall sensöründen gelen açık kolektör çıkıştır ve tur başına iki darbe verir; aynı kodu MAGNETS = 2 ile kullanarak bir fanın devrini okuyabilirsin. Bisiklet hız göstergesi için gereken çevre ve km/sa hesabını reed röle yazısında bulabilirsin; formül Hall sensörüyle de aynıdır.
Hall sensörü ile kapı ve kapak sensörü
Kapı sensörü için mıknatısı kapının hareketli kanadına, A3144'ü kasaya, kapı kapalıyken mıknatısın güney kutbu sensörün yazılı yüzüne bakacak şekilde yerleştir. Kapı kapalıyken çıkış LOW, açılınca HIGH olur; kablo kopsa bile pull-up pini HIGH'a çeker ve sistem bunu "kapı açık" olarak görür, yani arıza güvenli tarafta kalır. Hall sensörünün burada iki avantajı vardır: hareketli kontağı olmadığı için titreşimli kapılarda ve saniyede birçok kez açılıp kapanan kapaklarda yıpranmaz, ve sızdırmaz bir kutunun içinden bile mıknatısı algılar. Dezavantajı ise sürekli enerji harcamasıdır: A3144 yaklaşık 4–5 mA çeker, bu da 2000 mAh'lik bir pili yalnız sensör için yaklaşık 18 günde bitirir. Pille aylarca çalışacak bir kapı sensörü için bu yüzden enerji harcamayan bir reed röle daha uygundur.
ESP32'nin dahili Hall sensörü
Orijinal ESP32 yongasının içinde küçük bir Hall sensörü vardır ve Arduino ESP32 çekirdeğinin 2.x sürümlerinde hallRead() fonksiyonuyla okunabilir. Ancak bu sensör çok gürültülüdür ve yalnızca güçlü bir mıknatıs modülün metal kapağına neredeyse değdiğinde belirgin bir değişim gösterir; ölçüm sırasında GPIO 36 ve GPIO 39 pinlerini de kullanır, bu yüzden bu pinlere başka bir şey bağlıysan sonuçlar bozulur. ESP32-S2, S3 ve C3 gibi yeni yongalarda bu sensör hiç yoktur ve Espressif, ESP-IDF 5 ile birlikte desteği kaldırdığı için Arduino ESP32 3.x çekirdeğinde hallRead() artık bulunmaz. Aşağıdaki kod iki sürümde de derlenir: 2.x'te ortalama değeri yazar, 3.x'te bunun yerine bir uyarı gösterir. Ciddi bir proje için ESP32'ye harici bir A3144 ya da 49E bağlamak her zaman daha iyidir; kartın genel özelliklerini ESP32 nedir yazısında bulabilirsin.
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}Raspberry Pi Pico ile devir ölçme (MicroPython)
Pico'da A3144'ü VBUS'tan 5 V ile besle, çıkışını GP15'e bağla ve pinin dahili pull-up direncini aç; bu direnç 3,3 V'a bağlı olduğu için pine hiçbir zaman 5 V gelmez. Aşağıdaki kod darbeleri bir kesmeyle sayar ve her saniye sayacı okuyup sıfırlar. Sayacı okurken kesmeleri kısa süreliğine kapatmak, okuma ile sıfırlama arasına bir darbenin girip kaybolmasını önler. Bu yöntemin çözünürlüğü tek mıknatısla 60 RPM'dir; daha hassas bir sonuç için Arduino örneğindeki gibi iki darbe arasındaki süreyi time.ticks_us() ile ölçebilirsin.
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)Hall sensörü mü reed röle mi?
İkisi de mıknatısı algılar, ama yöntemleri tamamen farklıdır. Reed röle, cam bir tüpün içindeki iki metal dilin mıknatısla birbirine değmesiyle çalışan mekanik bir anahtardır ve hiç enerji harcamaz. Hall sensörü ise beslemeye ihtiyaç duyan, hareketli parçası olmayan elektronik bir yongadır. Kısa kural şöyledir: seyrek tetiklenen, pille aylarca çalışacak bir sensör için reed röle; hızlı dönen bir mil, titreşimli bir ortam, kutup bilgisi ya da alan şiddeti gereken her iş için Hall sensörü.

| Özellik | Hall sensörü (A3144 / 49E) | Reed röle |
|---|---|---|
| Çalışma şekli | Yarı iletken, hareketli parça yok | Mekanik kontak |
| Besleme | Gerekir (yaklaşık 4–6 mA) | Gerekmez |
| Kutup ve şiddet | A3144 yalnız güney; 49E kutup ve şiddet verir | Kutup fark etmez, yalnız var / yok |
| Hız | Onlarca kHz'e kadar, temiz kenar | Yüzlerce Hz, kontak sıçraması var |
| Ömür ve dayanıklılık | Aşınmaz, titreşime dayanıklı | Milyonlarca anahtarlama, cam kırılabilir |
| En iyi kullanım | RPM, hız, konum, kutup algılama | Pilli kapı ve pencere sensörleri |
Hall sensörü ile proje fikirleri
- Bisiklet kilometre saati: Jant teline bir mıknatıs, çatala bir A3144 koy; hızı, mesafeyi ve ortalama hızı bir OLED ekranda göster.
- Motor ve fan devir ölçer: Bir DC motorun ya da bilgisayar fanının devrini ölç, PWM ile hız ayarı yaparken gerçek devri izle.
- Rüzgâr ölçer (anemometre): Fincanlı bir pervanenin miline mıknatıs tak, devirden rüzgâr hızını hesapla ve ESP32 ile kaydet.
- Su akış sayacı: YF-S201 gibi akış sensörlerinin içinde de bir Hall sensörü vardır; darbeleri sayarak litreyi ölçebilirsin, ayrıntılar su akış sensörü yazısında.
- Gizli kasa ya da çekmece kilidi: Kapağın içine gizlenmiş bir 49E, yalnızca doğru noktaya tutulan mıknatısla kilidi açsın.
- Kapı ve kapak alarmı: A3144 ile kapak açılınca buzzer çalan ya da ESP32 ile telefona bildirim gönderen bir alarm.
Sık yapılan hatalar ve çözümleri
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Pin rastgele HIGH ve LOW okuyor | A3144 çıkışında pull-up yok | INPUT_PULLUP kullan ya da çıkış ile VCC arasına 10 kΩ koy |
| Mıknatıs yaklaşınca hiçbir şey olmuyor | Yanlış kutup: A3144 yalnız güney kutbuna tepki verir | Mıknatısı ters çevir ve yazılı yüze dik tut |
| Sensör ESP32 ya da Pico'da kararsız | A3144 3,3 V ile besleniyor | Sensörü 5 V ile besle, pull-up'ı 3,3 V'a bağla |
| Yüksek devirde RPM düşük ya da düzensiz | Darbeler loop() içinde okunuyor ve kaçıyor | attachInterrupt() ile kesme kullan |
| 49E mıknatıs yokken de değer gösteriyor | Sıfır noktası 2,5 V'tan farklı ya da kaymış | Açılışta sıfır noktasını ölç ve ondan çıkar |
| ESP32 hallRead() derlenmiyor | Arduino ESP32 3.x çekirdeği kullanılıyor | Harici Hall sensörü kullan ya da 2.x çekirdeğe geç |
Hall sensörü, mıknatısı temassız, sessiz ve aşınmadan algılamanın en esnek yoludur: A3144 ile hızlı ve temiz bir aç–kapa sinyali, 49E ile kutup ve alan şiddeti, kesmelerle de güvenilir bir devir ölçümü elde edersin. Pull-up direncini, doğru kutbu ve 3,3 V kartlarda besleme ayrıntısını unutmazsan ilk denemede çalışır. BlueGrays uygulamasında Reed Röle Değer Okuma ve Reed Röle Kapı Sensörü projelerini, buton ve kesme örnekleriyle birlikte ESP32 hareket alarmı ve Pico debounce projelerini adım adım devre şemaları ve kodlarıyla bulabilirsin.
Sıkça sorulan sorular
Hall sensörü nasıl çalışır?
Hall sensörünün içinde akım geçen ince bir yarı iletken levha vardır. Levhaya dik bir manyetik alan geldiğinde yükler bir kenara itilir ve iki kenar arasında alanla orantılı küçük bir gerilim oluşur. Sensörün içindeki yükselteç bu gerilimi büyütür; dijital modellerde bir eşik devresi bunu aç–kapa çıkışına çevirir.
A3144 neden pull-up direnci ister?
A3144'ün çıkışı açık kolektördür: mıknatıs varken çıkışı GND'ye bağlar, yokken hiçbir yere bağlamaz. Boşta kalan pin gürültüden rastgele değerler okuduğu için çıkışın bir dirençle beslemeye çekilmesi gerekir. Arduino'da INPUT_PULLUP yeterlidir; uzun kablo ve yüksek devirde harici 10 kΩ daha iyidir.
A3144 hangi kutba tepki verir?
A3144 tek kutuplu bir anahtardır ve yalnızca güney kutbu yazılı yüzüne yeterince yaklaştığında çıkışı LOW yapar. Kuzey kutbunu yaklaştırırsan hiçbir şey olmaz. Mıknatısın kutbunu bilmiyorsan iki yüzünü de dene ya da 49E gibi doğrusal bir sensörle kontrol et.
KY-024 ile KY-003 arasındaki fark nedir?
KY-003, dijital A3144 sensörlü bir modüldür ve yalnızca mıknatıs var ya da yok bilgisini verir. KY-024 ise doğrusal 49E sensörü ve bir LM393 karşılaştırıcı taşır; AO pininden alan şiddetini analog olarak, DO pininden de potansiyometreyle ayarlanan eşiğe göre dijital sinyal verir.
Hall sensörü kaç cm mesafeden algılar?
Mesafe mıknatısın gücüne ve sensörün eşiğine bağlıdır. Küçük bir neodimyum mıknatıs A3144'ü genellikle 1–3 cm'den tetikler; zayıf bir ferrit mıknatısla bu mesafe birkaç milimetreye iner. Manyetik alan mesafeyle çok hızlı azaldığı için mesafeyi artırmanın en etkili yolu daha büyük ya da daha güçlü bir mıknatıs kullanmaktır.
ESP32'nin dahili Hall sensörü kullanılabilir mi?
Orijinal ESP32'de bir dahili Hall sensörü vardır ve Arduino ESP32 2.x çekirdeğinde hallRead() ile okunabilir. Ancak çok gürültülüdür, yalnızca çok yakın ve güçlü bir mıknatısı fark eder ve GPIO 36 ile 39'u kullanır. ESP32-S2, S3 ve C3'te bulunmaz, Arduino ESP32 3.x çekirdeğinde de hallRead() kaldırılmıştır; ciddi projelerde harici bir sensör kullan.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
Buton İle Led Yakma (Push)
Kapı zili gibi: bastığın sürece ışık yanar, bırakınca söner. Arduino butonu sürekli dinler; butona basılıyken LED'i yakar, elini çektiğin an söndürür. Kartın dışarıdan gelen bir dokunuşu nasıl hissett

ESP32 Buton ile LED Kontrol (Push)
Butona basılı tutulduğunda LED yanar, bırakıldığında söner. ESP32'nin dijital input pin'i ve dahili pull-up direncinin nasıl kullanıldığını gösterir. INPUT_PULLUP modu sayesinde harici direnç gerekmez.

Reed Röle Değer Okuma
Kapı ve pencere alarmlarındaki mıknatıslı anahtarı hiç merak ettin mi? Reed röle modülüne bir mıknatıs yaklaşınca içindeki minik anahtar kapanır; Arduino bunu saniyede bir okuyup bilgisayar ekranına 0

Reed Röle Kapı Sensörü
Kapın açık mı kapalı mı, bir ışığa bakarak anla. Kapıya küçük bir mıknatıs, kasaya da mıknatısı hisseden bir anahtar takarsın; kapı kapalıyken ikisi yan yana durur ve yeşil LED yanar, kapı açılıp mıkn

ESP32 Hareket Alarm Sistemi (PIR + Buzzer + LED + Telegram)
PIR sensörü hareket algıladığında buzzer ve LED'i aktif eden, aynı anda Telegram üzerinden sahibine anlık bildirim gönderen akıllı bir güvenlik alarm sistemidir. Tekrarlayan alarmların sıklığını sınırlamak için 30 saniyelik cooldown (bekleme süresi) mekanizması vardır; bu mekanizma PIR sensörünün yanlış algılamalarını doğrulamaz veya ortadan kaldırmaz. Ev güvenliği, garaj izleme, depo veya çalışma odası gibi alanlarda kullanılabilir. Telegram entegrasyonu sayesinde nerede olursanız olun anında h

Raspberry Pi Pico Buton Debounce Karşılaştırma: IRQ vs Software Polling
Butona bir kere bastığında kod 3-4 kere saydırdıysa nedeni contact bounce — buton metal kontakları temas anında mikrosaniyelerde defalarca aç-kapa yapar! Bu projede aynı butonu 2 farklı yöntemle sayıp Serial'da yan yana karşılaştırıyoruz: RAW polling (bounce'u yakalar, hatalı sayar) vs IRQ + software debounce (doğru sayar). Öğrenme: contact bounce fiziği (metal titreşim), software debounce (ticks_diff() > 50ms), Pin.irq() interrupt kaydı, IRQ_FALLING trigger tipi,

Hareket Sensörü İle Hareket Algılayıcı
Biri odaya girdiğinde haber veren basit bir bekçi. Hareket sensörü insan vücudunun yaydığı ısıyı fark eder; Arduino hareket olduğu sürece LED'i yakar, hareket bitince söndürür. Kapı önünde kendiliğind
Diğer yazılar
BlueGrays uygulaması
Bu devreyi telefonunda adım adım kur
Devre şeması, kod ve parça listesi tek ekranda. 200'den fazla Arduino, ESP32 ve Pico projesi seni bekliyor.
Telefonunla tara
Kamerayı koda tut; telefonunun uygulama mağazası açılır.
ya da mağazada aç

