Đèn ngủ tự bật khi có người (Arduino)
Miễn phíINO

Đèn ngủ tự bật khi có người (Arduino)

Tự làm đèn ngủ LED 5V tự bật khi có người đi qua trong bóng tối: Arduino Nano, cảm biến PIR, quang trở. Có mã nguồn miễn phí.

Tệp tải về

Giấy phép CC BY 4.0 — dùng miễn phí, ghi nguồn “OctaX.vn”. Demo bản thật yêu cầu tài khoản miễn phí để tải.

Muốn sửa theo ý mình?

Trợ lý OctaX sửa kích thước, nội dung, thương hiệu theo yêu cầu — ước tính ≈ 3 credit.

✦ Tuỳ biến bằng AI

Chỉ dùng nguồn 5V. Không tự đấu vào điện lưới 220V nếu không có chuyên môn.

Vật tư

  • Arduino Nano
  • Cảm biến chuyển động PIR HC-SR501
  • Quang trở + điện trở 10 kΩ
  • MOSFET IRLZ44N + điện trở 220 Ω, 100 kΩ
  • Dải LED 5V (≤ 1 m)
  • Nguồn 5V 2A

Các bước

  1. Nối cảm biến PIR HC-SR501: VCC → 5V, GND → GND, OUT → chân D2.
  2. Nối quang trở với điện trở 10 kΩ thành cầu chia áp vào chân A0.
  3. Nối dải LED 5V qua MOSFET kênh N mức logic (vd IRLZ44N): cực G → D9 qua điện trở 220 Ω, thêm điện trở 100 kΩ từ G xuống GND.
  4. Nạp mã nguồn, đo giá trị A0 lúc tắt đèn phòng rồi chỉnh NGUONG_TOI cho hợp.
  5. Cho vào hộp, đặt cảm biến hướng lối đi, cách sàn khoảng 30–50 cm.

Mã nguồn

// Đèn ngủ tự bật khi có người trong bóng tối — OctaX.vn (CC BY 4.0)
// Bo: Arduino Nano. PIR → D2, quang trở (cầu chia áp với 10 kΩ) → A0, MOSFET điều khiển dải LED → D9 (PWM).
const int PIN_PIR = 2;
const int PIN_LDR = A0;
const int PIN_LED = 9;
const int NGUONG_TOI = 600;              // A0 lớn hơn ngưỡng này coi là tối (đo thực tế rồi chỉnh)
const unsigned long GIU_SANG = 60000UL;  // giữ đèn sáng 60 giây sau lần cuối thấy người
const int DO_SANG = 140;                 // 0–255: đèn ngủ không cần sáng tối đa

unsigned long lanCuoiCoNguoi = 0;
int doSangHienTai = 0;

void setup() {
  pinMode(PIN_PIR, INPUT);
  pinMode(PIN_LED, OUTPUT);
}

void loop() {
  bool coNguoi = digitalRead(PIN_PIR) == HIGH;
  bool troiToi = analogRead(PIN_LDR) > NGUONG_TOI;

  // Chỉ "ghi nhận có người" khi trời tối, để ban ngày đèn không bật
  if (coNguoi && troiToi) lanCuoiCoNguoi = millis();

  int mucTieu = (lanCuoiCoNguoi && millis() - lanCuoiCoNguoi < GIU_SANG) ? DO_SANG : 0;

  // Sáng/tắt dần cho dịu mắt: mỗi vòng thay đổi 1 nấc
  if (doSangHienTai < mucTieu) doSangHienTai++;
  else if (doSangHienTai > mucTieu) doSangHienTai--;
  analogWrite(PIN_LED, doSangHienTai);
  delay(8);
}

Mẫu cùng nhóm

Trạm đo nhiệt độ – độ ẩm WiFi (ESP32)
Miễn phíINO

Trạm đo nhiệt độ – độ ẩm WiFi (ESP32)

Tự làm trạm đo nhiệt độ, độ ẩm bằng ESP32 và DHT22, xem số đo trên điện thoại qua WiFi. Hướng dẫn từng bước, mã nguồn miễn phí.

🛠️ DIY – Tự làm
Kệ sách gỗ treo tường 3 tầng
Miễn phíCSV

Kệ sách gỗ treo tường 3 tầng

Tự đóng kệ sách gỗ treo tường 3 tầng 800×600 mm: danh sách cắt ván, dụng cụ, từng bước lắp và treo chắc chắn. Tải CSV miễn phí.

🛠️ DIY – Tự làm