B21 – Sử dụng cảm biến chuyển động (PIR Motion sensor)

Cảm biến chuyển động PIR phát hiện ánh sáng hồng ngoại của người khi đứng trước đầu thu. Sử dụng cảm biến PIR khá đơn giản. Ngoài hai chân cấp nguồn (5V và GND) thì chỉ có 1 lối ra. Bình thường lối ra có trạng thái 0, điện áp 0V. Khi có người đứng trước cảm biến, lối ra lên trạng thái 1, điện áp khoảng 3V. Thời gian chân ra có trạng thái lên cao tùy thuộc từng loại PIR, khoảng vài giây.

Tầm hoạt động của PIR lên đến 6m với góc mở hình nón khoảng 70 độ.  Nắp nhựa trắng chính là lăng kính hội tụ ánh sáng hồng ngoại vào cảm biến. Cảm biến PIR thế hệ mới có nút chỉnh độ nhạy và thời gian lên cao của lối ra.

Khi cấp nguồn, cảm biến PIR cần vài giây đến 1 phút để làm nóng và hoạt động. Trong khoảng thời gian này, cảm biến sẽ có thể báo sai trạng thái.

Phía sau cảm biến có một vị trí 3 chân được đánh dấu L/H. Nên kẹp hai đầu tại vị trí H để cảm biến có thể đọc liên tục.

  • Chương trình:
int ledPin = 13;                  // LED cảnh báo
 int inputPin = 8;               // chân lối vào cảm biến
 int pirState = LOW;        // giả sử ban đầu cảm biến
 int val = 0;                          // biến đọc trạng thái

void setup()

{
 pinMode(ledPin, OUTPUT);      // lối ra LED
 pinMode(inputPin, INPUT);     // lối vào cảm biến

Serial.begin(9600);                    // truyền về máy tính
 }

void loop(){
 val = digitalRead(inputPin);    // đọc cảm biến
 if (val == HIGH) {                           // nếu trạng thái cao
 digitalWrite(ledPin, HIGH);  // bật LED
 if (pirState == LOW) {
 // trạng thái trước đó của cảm biến là thấp
 Serial.println("Motion detected!");         // báo hiệu về máy tính

pirState = HIGH;                                              //lưu trạng thái
 }
 } else {
 digitalWrite(ledPin, LOW);      // tắt LED
 if (pirState == HIGH){
 // trạng thái trước đó là cao
 Serial.println("Motion ended!");             // báo hiệu

pirState = LOW;                                              //lưu trạng thái
 }
 }
 }

Leave a Reply

Your email address will not be published. Required fields are marked *