5V ပါဝါကိုသာ အသုံးပြုပါ။ ကျွမ်းကျင်မှု မရှိပါက 220V ဓာတ်အားလိုင်းနှင့် ကိုယ်တိုင် မဆက်သွယ်ပါနှင့်။
ပစ္စည်းများ
- Arduino Nano
- PIR လှုပ်ရှားမှု sensor HC-SR501
- Photoresistor + resistor 10 kΩ
- MOSFET IRLZ44N + resistor 220 Ω၊ 100 kΩ
- 5V LED ကြိုး (≤ 1 m)
- 5V 2A ပါဝါ
အဆင့်များ
- PIR sensor HC-SR501 ကို ဆက်ပါ- VCC → 5V၊ GND → GND၊ OUT → pin D2။
- Photoresistor ကို resistor 10 kΩ နှင့် voltage divider အဖြစ် ဆက်ပြီး pin A0 သို့ ချိတ်ပါ။
- 5V LED ကြိုးကို logic-level N-channel MOSFET (ဥပမာ IRLZ44N) မှတစ်ဆင့် ဆက်ပါ- G terminal → resistor 220 Ω မှတစ်ဆင့် D9၊ G မှ GND သို့ resistor 100 kΩ ထပ်ထည့်ပါ။
- Source code ကို upload လုပ်ပြီး အခန်းမီးပိတ်ထားချိန် A0 တန်ဖိုးကို တိုင်းကာ NGUONG_TOI ကို သင့်တော်အောင် ချိန်ညှိပါ။
- ဘူးထဲထည့်ပြီး sensor ကို လမ်းကြောင်းဘက်သို့ မျက်နှာမူကာ ကြမ်းပြင်မှ 30–50 cm ခန့် အမြင့်တွင် ထားပါ။
Source code
// Đè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);
}


