Đếm số người ra vào phòng sử dụng cảm biến hồng ngoại Arduino

Đếm số người ra vào phòng sử dụng cảm biến hồng ngoại Arduino

Nội dung bài viết hôm nay mình sẽ hướng dẫn cho các bạn một dự án đếm số người ra vào phòng và bật tắt thiết bị sử dụng cảm biến hồng ngoại Arduino. Đây là một dự án rất thú vị cho những người có sở thích và sinh viên để vui chơi cũng như học tập.

Hệ thống sẽ đếm số người hiển thị lên LCD  khi cảm biến phát hiện người đi vào phòng và đèn sẽ bật lên.Khi người ra khỏi phòng đèn sẽ tắt.

Để hiểu hơn về cấu tạo và cách hoạt động của Cảm Biến Vật Cản Hồng Ngoại các bạn có thể tìm đọc bài viết về Arduino miễn phí dành cho người mới nhập môn.

Cảm biến vật cản hồng ngoại

Cảm biến vật cản hồng ngoại (Infrared Obstacle Sensor) là một loại cảm biến sử dụng công nghệ hồng ngoại để phát hiện và đo khoảng cách vật cản. Cảm biến này sử dụng tia hồng ngoại để phát ra một tín hiệu và đo thời gian mà tín hiệu này trở lại sau khi va chạm với vật cản, từ đó tính toán khoảng cách giữa cảm biến và vật cản.

Cảm biến phát hiện vật cản thường được sử dụng trong các ứng dụng như robot tự động hóa, xe tự lái, hệ thống giám sát khoảng cách, và hệ thống an ninh tự động. Nó có thể hoạt động ở mức năng suất cao, đồng thời cũng đảm bảo tính an toàn trong các ứng dụng tự động.

Cấu tạo của module cảm biến hồng ngoại Arduino

  • Chân VCC: là chân cấp nguồn cho module, thường được nối với nguồn 5V DC.
  • Chân GND: là chân đất, được nối với chân đất của nguồn.
  • Chân OUT: là chân dữ liệu, sẽ đưa ra tín hiệu khi có sự phát hiện của đối tượng.

Nguyên lý hoạt động của cảm biến vật cản hồng ngoại

Cảm biến vật cản hồng ngoại hoạt động dựa trên nguyên lý thu phát sóng hồng ngoại. Khi cảm biến nhận được tín hiệu từ một nguồn phát sóng hồng ngoại, nó sẽ phản hồi lại tín hiệu đó và đo lường thời gian phản hồi của sóng để xác định khoảng cách từ cảm biến đến vật thể.

Cụ thể, cảm biến sử dụng một bộ phát sóng hồng ngoại để phát ra tín hiệu sóng hồng ngoại. Khi sóng hồng ngoại va chạm với vật thể, nó sẽ bị phản xạ trở lại và được nhận bởi một bộ thu sóng hồng ngoại trên cảm biến. Cảm biến sau đó sử dụng độ trễ thời gian giữa tín hiệu phát và tín hiệu nhận để tính toán khoảng cách từ cảm biến đến vật thể.

Sơ đồ đấu nối

Các linh kiện cần thiết cho dự án

Tên linh kiện Số lượng Shopee
Arduino Uno R3 1 Mua ngay
Cáp nạp 1 Mua ngay
Bread Board (Bo Test) 1 Mua ngay
Relay 5V 1 kênh 1 Mua ngay
Dây cắm (Đực – Cái) 1 Mua ngay
Dây cắm (Đực – Đực) 1 Mua ngay
Cảm biến vật cản hồng ngoại 2 Mua ngay
LCD16X2 1 Mua ngay
Board I2C LCD16X2 1 Mua ngay
LED 5V/5MM 1 Mua ngay
Nguồn DC 12V/2A  1 Mua ngay

Code

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
#define in 14
#define out 17
#define relay 3
int count=0;
void IN()
{
    count++;
    lcd.clear();
    lcd.print("SO NGUOI:");
    lcd.setCursor(0,1);
    lcd.print(count);
    delay(1000);
}
void OUT()
{
  count--;
    lcd.clear();
    lcd.print("SO NGUOI:");
    lcd.setCursor(0,1);
    lcd.print(count);
    delay(1000);
}
void setup()
{
  lcd.begin();
  lcd.backlight();
  Serial.begin(9600);
  lcd.setCursor(0,2);
  lcd.print(" HELLO ");
  delay(2000);
  pinMode(in, INPUT);
  pinMode(out, INPUT);
  pinMode(relay, OUTPUT);
  lcd.clear();
  lcd.print("Person In Room:");
  lcd.setCursor(0,1);
  lcd.print(count);
  
}
void loop()
{  
   if(!digitalRead(out))
    IN();
   if(!digitalRead(in))
    OUT();
  Serial.print(count);
  Serial.println("");
  
  if(count<=0)
  {
    lcd.clear();
    digitalWrite(relay, LOW);
    lcd.clear();
    lcd.print("KO CO NGUOI:");
    lcd.setCursor(0,1);
    lcd.print("Den Tat");
    delay(200);
  }
  else
    digitalWrite(relay, HIGH);
}

Giải thích code cảm biến hồng ngoại Arduino

Đoạn code trên được sử dụng để điều khiển một hệ thống đếm số lượng người có mặt trong một phòng và điều khiển đèn trong phòng.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
#define in 14
#define out 17
#define relay 3

Ở phần khai báo, ta sử dụng thư viện Wire.hLiquidCrystal_I2C.h để giao tiếp với màn hình LCD thông qua giao thức I2C. Cụ thể, chúng ta khởi tạo đối tượng lcd với địa chỉ I2C là 0x3F, số kí tự trên mỗi dòng là 16 và số dòng là 2. Đồng thời, chúng ta định nghĩa các chân của Arduino được sử dụng, bao gồm chân IN (chân số 14), chân OUT (chân số 17) và chân điều khiển relay (chân số 3).

void setup()
{
  lcd.begin();
  lcd.backlight();
  Serial.begin(9600);
  lcd.setCursor(0,2);
  lcd.print(" HELLO ");
  delay(2000);
  pinMode(in, INPUT);
  pinMode(out, INPUT);
  pinMode(relay, OUTPUT);
  lcd.clear();
  lcd.print("Person In Room:");
  lcd.setCursor(0,1);
  lcd.print(count);

hàm setup(), chúng ta khởi tạo LCD, bật đèn nền, mở kết nối Serial và in ra thông báo “HELLO” trên LCD. Sau đó, chúng ta đặt chân IN, chân OUT và chân relay là INPUT và OUTPUT tương ứng. Tiếp theo, chúng ta hiển thị thông tin về số lượng người trong phòng trên LCD và cho giá trị của biến count bằng 0.

void loop()
{  
   if(!digitalRead(out))
    IN();
   if(!digitalRead(in))
    OUT();
  Serial.print(count);
  Serial.println("");
  
  if(count<=0)
  {
    lcd.clear();
    digitalWrite(relay, LOW);
    lcd.clear();
    lcd.print("KO CO NGUOI:");
    lcd.setCursor(0,1);
    lcd.print("Den Tat");
    delay(200);
  }
  else
    digitalWrite(relay, HIGH);
}

hàm loop(), chúng ta kiểm tra trạng thái của chân OUT và chân IN. Nếu chân OUT được kích hoạt, chúng ta tăng biến count lên 1 và hiển thị thông tin số lượng người trên LCD thông qua hàm IN(). Nếu chân IN được kích hoạt, chúng ta giảm biến count đi 1 và hiển thị thông tin số lượng người trên LCD thông qua hàm OUT(). Sau đó, chúng ta in giá trị hiện tại của biến count ra Serial Monitor.

Nếu biến count có giá trị nhỏ hơn hoặc bằng 0, chúng ta tắt đèn trong phòng bằng cách đặt chân relay xuống mức thấp và hiển thị thông báo “KO CO NGUOI: Den Tat” trên LCD. Ngược lại, nếu biến count có giá trị lớn hơn 0, chúng ta bật đèn trong phòng bằng cách đặt chân relay lên mức cao.

Thư viện

  • Các bạn có thể tải code tìm địa chỉ bus ở đây. Tải ngay.
  • Thư viện LiquidCrystal_I2C.h: Tải ngay.

Lời kết

Qua bài viết ngày hôm nay, mình đã giới thiệu cho các bạn về cách đếm số người ra vào phòng sử dụng cảm biến hồng ngoại Arduino. Phương pháp này giúp cho việc quản lý và kiểm soát lượng người trong phòng trở nên dễ dàng hơn, đồng thời đảm bảo an toàn và tiết kiệm năng lượng. Với sự hỗ trợ của các công nghệ hiện đại như cảm biến vật cản hồng ngoại và Arduino, việc triển khai và thực hiện dự án trở nên đơn giản và tiện lợi hơn bao giờ hết.

Bài viết liên quan

Subscribe
Notify of
guest

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Phong

sao nó bị lỗi hiện -39 người ấy

Cường huỳnh

Xin chào add code của add chia sẻ rất ngắn ngọn dể hiểu,rất hay.nhưng khi chạy thử thì bị tình trạng là nếu cả hai cảm biến đều bị vật cản che trong một khoảng tg khi cảm biến không bị che nữa thì giá trị biến count trả về là ngẫu nhiên.nên bị lỗi khi thì count ++,khi thì–;add có cách nào khắc phục code hết lỗi không cảm ơn đã đọc comment