Series
Series 37 Module Cảm Biến
  1. Series 37 Module Cảm Biến: Nguyên lý hoạt động và cách test với Arduino, ESP32
  2. 1Series 37 Module Cảm Biến – DS3231 RTC: TCXO ±2ppm, I2C, Alarm Ngắt SQW & Đồng Hồ Thực Với Backup Pin
  3. 2Series 37 Module Cảm Biến – SD Card Module SPI: FAT32, Ghi Log CSV Cảm Biến & Đọc Config File Không Hardcode
  4. 3Series 37 Module Cảm Biến – LCD 1602 I2C: PCF8574 Expander, LiquidCrystal_I2C, Cuộn Chữ & Ký Tự Tùy Chỉnh
  5. 4Series 37 Module Cảm Biến – 7-Segment 1 Chữ Số: Mã Segment 0x3F-0x7F, Common Anode vs Cathode & Đếm 0-9
  6. 5Series 37 Module Cảm Biến – OLED SSD1306 0.96\” I2C: Frame Buffer, Adafruit GFX & Hiển Thị Dữ Liệu Thực Tế
  7. 6Series 37 Module Cảm Biến – Nguyên Lý LM35 Analog: Đặc Tuyến 10mV/°C, Đọc ADC Chính Xác & Hiệu Chỉnh Nhiệt Độ
  8. 7Series 37 Module Cảm Biến – Nguyên Lý Knock Sensor KY-031: Piezoelectric Thuận, Va Đập → Điện Áp & Nhận Dạng Pattern
  9. 8Series 37 Module Cảm Biến – Nguyên Lý MPU-6050: IMU 6 Trục, MEMS Gia Tốc + Con Quay, Complementary Filter & Góc Nghiêng
  10. 9Series 37 Module Cảm Biến – Nguyên Lý Relay 5V SRD-05VDC: Cơ Điện Từ, Cách Ly Galvanic & Điều Khiển Thiết Bị 220V
  11. 10Series 37 Module Cảm Biến – Nguyên Lý Hall Effect Analog (49E/SS49E): Đo Cường Độ Từ Trường Tuyến Tính & ADC
  12. 11Series 37 Module Cảm Biến – Nguyên Lý Hall Effect KY-003: Hiệu Ứng Hall, IC Số Unipolar & Phát Hiện Nam Châm
  13. 12Series 37 Module Cảm Biến – Nguyên Lý Reed Switch: Tiếp Điểm Từ Trong Kính, Phát Hiện Cửa & Đo Tốc Độ Quay
  14. 13Series 37 Module Cảm Biến – Nguyên Lý Vibration Switch SW-18010P: Lò Xo Dẫn Điện, Phát Hiện Rung & Pattern Gõ
  15. 14Series 37 Module Cảm Biến – Nguyên Lý Tilt Switch SW-520D: Bi Kim Loại Dẫn Điện, Phát Hiện Nghiêng & Báo Động
  16. 15Series 37 Module Cảm Biến – Nguyên Lý Touch Sensor TTP223: Capacitive Self-Capacitance, Chế Độ Toggle & Latch
  17. 16Series 37 Module Cảm Biến – Nguyên Lý Rotary Encoder KY-040: Xung Quadrature, Đếm Hướng Xoay & Điều Khiển Menu
  18. 17Series 37 Module Cảm Biến – Nguyên Lý Joystick KY-023: Biến Trở 2 Trục, Dead Zone & Điều Khiển Robot / Servo
  19. 18Series 37 Module Cảm Biến – Nguyên Lý Sound Sensor: Microphone Electret, LM393 Comparator & Phát Hiện Tiếng Ồn
  20. 19Series 37 Module Cảm Biến – Nguyên Lý Passive Buzzer: PWM Điều Khiển Tần Số, Hàm tone() & Phát Nhạc Arduino ESP32
  21. 20Series 37 Module Cảm Biến – Nguyên Lý Active Buzzer: Oscillator Tích Hợp, Phân Biệt Active/Passive & Code Cảnh Báo
  22. 21Series 37 Module Cảm Biến – Nguyên Lý 7-Color LED Tự Đổi Màu: IC Tích Hợp, Tần Số Dao Động Nội & Ứng Dụng Trang Trí
  23. 22Series 37 Module Cảm Biến – Nguyên Lý RGB LED Module KY-016: Điốt 3 Màu, PWM Mix Màu 16 Triệu Sắc & Hiệu Ứng
  24. 23Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động IR Receiver VS1838B: Demodulate 38kHz, NEC Protocol & Điều Khiển Từ Xa
  25. 24Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động LDR Quang Trở: CdS Photoconductor, Voltage Divider & Điều Khiển Theo Ánh Sáng
  26. 25Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động Laser Module KY-008: Diode Laser 650nm, Cộng Hưởng Quang Học & An Toàn Laser
  27. 26Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động Flame Sensor: Phổ IR Lửa 760-1100nm, LM393 & Ứng Dụng Chữa Cháy
  28. 27Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động Line Tracking Sensor TCRT5000: Dò Đường IR, Khoảng Cách Tối Ưu & Robot Theo Vạch
  29. 28Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động IR Obstacle Sensor: Phản Xạ Hồng Ngoại, LM393 & Tránh Vật Cản Robot
  30. 29Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động PIR HC-SR501: Pyroelectric Infrared, Fresnel Lens & Phát Hiện Chuyển Động
  31. 30Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động HC-SR04: Sóng Siêu Âm 40kHz, Thời Gian Bay & Đo Khoảng Cách Chính Xác
  32. 31Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động MQ-2: Semiconductor SnO₂, Đường Cong Nhạy Khí & Đo Nồng Độ Gas
  33. 32Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động Rain Sensor FC-37: Phát Hiện Mưa, LM393 Comparator & Ứng Dụng Thực Tế
  34. 33Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động Soil Moisture Sensor: Điện Trở Đất, Hiệu Chỉnh & Tưới Cây Tự Động
  35. 34Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động BMP280: Cảm Biến Áp Suất & Nhiệt Độ Chính Xác Của Bosch
  36. 35Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động DS18B20: Cảm Biến Nhiệt Độ 1-Wire Chống Nước
  37. 36Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động DHT22 (AM2302): Độ Chính Xác Cao, Dải Đo Rộng
  38. 37Series 37 Module Cảm Biến – Nguyên Lý Hoạt Động DHT11: Cảm Biến Nhiệt Độ & Độ Ẩm Phổ Biến Nhất
Cảm biến

Series 37 Module Cảm Biến – Nguyên Lý Reed Switch: Tiếp Điểm Từ Trong Kính, Phát Hiện Cửa & Đo Tốc Độ Quay

Th7 2026
Series 37 Module Cảm Biến – Nguyên Lý Reed Switch: Tiếp Điểm Từ Trong Kính, Phát Hiện Cửa & Đo Tốc Độ Quay

Reed switch là công tắc cơ điện từ (magnetically operated switch) — không có điện, không có tín hiệu điều khiển, chỉ cần đưa nam châm lại gần là nó đóng mạch. Độ tin cậy rất cao vì tiếp điểm được niêm phong hoàn toàn trong ống kính, không bị oxy hóa.

Nguyên Lý Hoạt Động

1. Tiếp Điểm Từ Trong Ống Kính

Bên trong reed switch là 2 lá kim loại ferromagnetic mỏng (thép có độ thấm từ cao):

Reed Switch — Cắt dọc:

          ←─ Nam châm ─→
               ↓ Từ trường
┌──────────────────────────────────────┐ ← Ống kính (sealed)
│                                      │
│  ─────────────┐        ┌──────────── │ ← Lá tiếp điểm (blade)
│  Blade A      └──────  └──  Blade B  │   (Ở đây đang HỞ)
└──────────────────────────────────────┘
   Terminal 1                Terminal 2
   
Khi có từ trường đủ mạnh:

┌──────────────────────────────────────┐
│                                      │
│  ─────────────┐██████┌───────────── │ ← 2 lá hút nhau
│  Blade A      └──────┘  Blade B     │   (đang ĐÓNG)
└──────────────────────────────────────┘

Cơ chế từ tính:

  1. Nam châm tạo từ trường xuyên qua ống kính
  2. Từ trường từ hóa 2 lá thép → chúng trở thành nam châm tạm thời
  3. 2 lá từ hóa với cực trái chiều → hút nhau → tiếp xúc → mạch đóng
  4. Nam châm rời xa → từ trường yếu → lá đàn hồi tách ra → mạch hở

2. Loại Thường Mở (NO) và Thường Đóng (NC)

LoạiKhông có nam châmCó nam châm
NO (Normally Open)HỞ — không dẫn điệnĐÓNG — dẫn điện
NC (Normally Closed)ĐÓNG — dẫn điệnHỞ — không dẫn điện
SPDTCom-NC ĐÓNGCom-NO ĐÓNG

Phổ biến nhất trong kit 37 module: Loại NO — cần đưa nam châm lại gần để đóng mạch.

Ứng dụng:

  • Cảm biến cửa: reed switch gắn vào khung, nam châm gắn vào cánh → khi đóng = NO đóng = LOW
  • Đo RPM: gắn nam châm lên bánh quay → mỗi vòng = 1 xung
  • Float level sensor: phao có nam châm + reed switch cố định

3. Khoảng Cách Kích Hoạt

Phụ thuộc vào cường độ từ trường của nam châm:

  • Nam châm ferrite nhỏ (5mm): kích hoạt ở ~5-10mm
  • Nam châm neodymium: kích hoạt ở ~20-30mm
  • Reed switch làm việc qua vật liệu phi từ: nhựa, gỗ, kính (~5mm)

Thông Số Kỹ Thuật

Thông sốGiá trị
Điện áp tối đa100VDC / 140VAC (bare switch)
Dòng tối đa500mA (bare switch)
Công suất chuyển mạch10W
Tốc độ chuyển mạch0.1-2ms
Tuổi thọ10⁷ – 10⁸ thao tác
Điện trở tiếp điểm<100mΩ
Khí trong ốngNitrogen (chống oxy hóa)

Sơ Đồ Chân (Pinout)

Module Reed Switch (trong kit 37 module)

┌──────────────────────────────────┐
│   [Reed Switch]                  │
│   [Pull-up 10kΩ]                 │
│   [LED chỉ thị]                  │
└──────────────────────────────────┘
  GND   VCC   S
  (-)  (3.3-5V) (Signal OUT)
ChânKý hiệuMô tả
GNDMass
VCC+Nguồn 3.3V-5V
SSignalOutput — thay đổi khi nam châm đến/đi

Logic với pull-up (loại NO):

  • Không có nam châm → reed HỞ → pull-up kéo S = HIGH
  • Nam châm đến gần → reed ĐÓNG → kéo S = LOW (active LOW)

Kết Nối Phần Cứng

Module với ESP32 DevKit V1

ESP32 DevKit V1           Reed Switch Module
─────────────────────     ─────────────────
3V3  ─────────────────→  VCC
GND  ─────────────────→  GND
GPIO4 (Input) ─────────→  S

Gắn vật lý: Reed switch gắn vào khung cửa, nam châm gắn vào cánh cửa (cùng phía). Khoảng cách khi cửa đóng: < 10mm.

Module với Arduino Uno

Arduino Uno               Reed Switch Module
─────────────────────     ─────────────────
5V   ─────────────────→  VCC
GND  ─────────────────→  GND
Pin 2 (INT0) ─────────→  S

Code Arduino IDE

Code Phát Hiện Cửa Đóng/Mở Cơ Bản — Arduino Uno

/*
 * Reed Switch — Phát hiện cửa đóng / mở
 * Board: Arduino Uno
 * Kết nối: VCC→5V, GND→GND, S→Pin2
 *
 * Loại NO với pull-up:
 * - S = HIGH → không có nam châm = CỬA MỞ
 * - S = LOW  → có nam châm = CỬA ĐÓNG
 */

const int REED_PIN = 2;
const int LED_PIN  = 13;

void setup() {
  Serial.begin(9600);
  pinMode(REED_PIN, INPUT); // Module đã có pull-up
  pinMode(LED_PIN, OUTPUT);
  Serial.println("=== Reed Switch Door Sensor ===");
}

int lastState = -1;

void loop() {
  int reedVal = digitalRead(REED_PIN);

  // Chỉ in khi có thay đổi
  if (reedVal != lastState) {
    lastState = reedVal;

    if (reedVal == LOW) {
      // Nam châm gần → reed đóng → mạch kín → LOW
      Serial.println("CỬA ĐÓNG");
      digitalWrite(LED_PIN, HIGH); // LED sáng khi cửa đóng
    } else {
      // Không có nam châm → reed hở → HIGH
      Serial.println("CỬA MỞ!");
      digitalWrite(LED_PIN, LOW);
    }
  }

  delay(50); // Debounce nhỏ
}

Code Báo Động Cửa — Interrupt (Arduino Uno)

/*
 * Reed Switch — Báo động khi cửa mở (anti-theft)
 * Board: Arduino Uno
 * Kết nối: VCC→5V, GND→GND, S→Pin2, Buzzer→Pin9
 *
 * Cơ chế:
 * - Khi cửa đóng: S = LOW (nam châm gần)
 * - Khi cửa mở: S lên HIGH → RISING interrupt → báo động
 */

const int REED_PIN   = 2;
const int BUZZER_PIN = 9;
const int LED_PIN    = 13;

volatile bool doorOpened = false;
bool alarmActive = false;

// ISR — gọi khi cửa MỞ (RISING: LOW→HIGH)
void onDoorOpen() {
  doorOpened = true;
}

void setup() {
  Serial.begin(9600);
  pinMode(REED_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(BUZZER_PIN, LOW);

  // Trigger khi cửa mở (LOW→HIGH khi nam châm rời xa)
  attachInterrupt(digitalPinToInterrupt(REED_PIN), onDoorOpen, RISING);

  Serial.println("=== Door Alarm System ===");
  Serial.println("Đóng cửa lại để arm hệ thống...");

  // Chờ cửa đóng trước khi arm
  while (digitalRead(REED_PIN) == HIGH) {
    delay(100); // Đợi cửa đóng
  }
  Serial.println("Cửa đã đóng — Báo động BẬT (armed)");
  digitalWrite(LED_PIN, HIGH); // LED sáng = armed
}

void loop() {
  if (doorOpened && !alarmActive) {
    doorOpened = false;
    alarmActive = true;
    Serial.println("!!! CỬA MỞ — Báo động !!!");
  }

  // Buzzer khi alarm đang hoạt động
  if (alarmActive) {
    // Beep 3 lần rồi dừng 0.5 giây
    for (int i = 0; i < 3; i++) {
      digitalWrite(BUZZER_PIN, HIGH); delay(150);
      digitalWrite(BUZZER_PIN, LOW);  delay(100);
      digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Blink LED
    }
    delay(500);

    // Tắt alarm khi cửa đóng lại
    if (digitalRead(REED_PIN) == LOW) {
      alarmActive = false;
      digitalWrite(LED_PIN, HIGH);
      Serial.println("Cửa đóng — dừng báo động");
    }
  }
}

Code Đo RPM Bằng Reed Switch — Arduino Uno

/*
 * Reed Switch — Đo vòng/phút (RPM)
 * Gắn nam châm nhỏ vào bánh quay, reed switch cố định bên ngoài
 * Mỗi vòng = 1 xung (1 lần nam châm đi qua)
 * Board: Arduino Uno
 * Kết nối: VCC→5V, GND→GND, S→Pin2
 */

const int REED_PIN = 2;

volatile unsigned long pulseCount = 0;        // Số xung từ ISR
volatile unsigned long lastPulseTime = 0;     // Thời điểm xung cuối (ms)
const int MAGNETS_PER_REV = 1;               // Số nam châm trên bánh

void onMagnet() {
  unsigned long now = millis();
  if (now - lastPulseTime > 20) { // Debounce 20ms
    pulseCount++;
    lastPulseTime = now;
  }
}

void setup() {
  Serial.begin(9600);
  pinMode(REED_PIN, INPUT);
  attachInterrupt(digitalPinToInterrupt(REED_PIN), onMagnet, FALLING);
  Serial.println("=== RPM Meter ===");
  Serial.println("RPM | RPS (rounds/sec)");
}

void loop() {
  delay(1000); // Đo trong 1 giây

  // Đọc và reset counter (atomic)
  noInterrupts();
  unsigned long count = pulseCount;
  pulseCount = 0;
  interrupts();

  // Tính RPM: count xung trong 1s → count/MAGNETS_PER_REV vòng/s
  float rps = (float)count / MAGNETS_PER_REV;
  float rpm = rps * 60.0;

  Serial.print(rpm, 1);
  Serial.print(" RPM | ");
  Serial.print(rps, 2);
  Serial.println(" RPS");
}

Code ESP32 — Smart Door Alert WiFi

/*
 * Reed Switch — ESP32, phát hiện cửa mở + in Serial
 * (WiFi notification có thể thêm vào sau)
 * Board: ESP32 DevKit V1
 * Kết nối: VCC→3V3, GND→GND, S→GPIO4
 */

const int REED_PIN = 4;

volatile bool doorEvent = false;
volatile bool doorState = false;  // true = cửa mở

void IRAM_ATTR onReedChange() {
  doorState = (digitalRead(REED_PIN) == HIGH); // HIGH = cửa mở (NO + pull-up)
  doorEvent = true;
}

void setup() {
  Serial.begin(115200);
  pinMode(REED_PIN, INPUT);
  attachInterrupt(digitalPinToInterrupt(REED_PIN), onReedChange, CHANGE);

  // Đọc trạng thái ban đầu
  doorState = (digitalRead(REED_PIN) == HIGH);
  Serial.println("=== Smart Door Sensor ESP32 ===");
  Serial.println(doorState ? "Ban đầu: Cửa MỞ" : "Ban đầu: Cửa đóng");
}

unsigned long lastEventTime = 0;
int openCount = 0;

void loop() {
  if (doorEvent) {
    doorEvent = false;

    unsigned long now = millis();
    // Debounce 100ms
    if (now - lastEventTime > 100) {
      lastEventTime = now;

      if (doorState) {
        openCount++;
        Serial.print("CỬA MỞ! Lần thứ ");
        Serial.println(openCount);
        // Có thể gọi: sendMqttAlert() hoặc sendTelegramMessage() ở đây
      } else {
        Serial.println("Cửa đóng");
      }
    }
  }
}

Kết Quả Mong Đợi

=== Reed Switch Door Sensor ===
CỬA ĐÓNG
CỬA MỞ!
CỬA ĐÓNG
CỬA MỞ!

Ứng Dụng Thực Tế

Ứng dụngChi tiết
Cảm biến cửa nhàBáo động khi cửa/cửa sổ mở
Đo RPMGắn nam châm lên motor/bánh xe
Cảm biến mức nướcPhao với nam châm + reed switch ở nắp
Anti-theft laptopGắn ở nắp máy tính → báo khi mở
Đếm sản phẩmMỗi sản phẩm đi qua = 1 xung

Lưu Ý Khi Sử Dụng

1. Phân biệt NO và NC

Kiểm tra trước: đưa nam châm lại gần và đo điện trở hoặc đọc tín hiệu. Loại NO: không có nam châm → hở, có nam châm → thông. Logic output phụ thuộc loại và có pull-up hay không.

2. Bounce tồn tại mặc dù nhỏ

Reed switch ít bounce hơn cơ học nhưng không hoàn toàn không có. Debounce 20-50ms là an toàn cho hầu hết ứng dụng. Đo RPM cần debounce rất nhỏ (~5ms) để không bỏ sót xung.

3. Nam châm quá mạnh hoặc quá yếu đều sai

Quá yếu → không đóng được. Quá mạnh (neodymium lớn) → từ trường rò → đóng cả khi xa 5cm. Dùng nam châm ferrite nhỏ đi kèm module, test khoảng cách thực tế.

4. Vỏ kính dễ vỡ

Bare reed switch ống kính rất mỏng, dễ vỡ nếu bẻ hoặc tác lực cơ học. Module trong kit đã được bảo vệ bởi PCB. Nếu dùng bare switch → bọc trong heat shrink tube.

Bài tiếp theo: