Hướng dẫn chế bộ đếm người ra vào bằng đèn Laser sử dụng board Arduino
Bạn đã từng quên tắt đèn khi không có ai ở trong phòng, điều này gây ra phiền toái khi hóa đơn tiền điện ngày một tăng. Vậy giải pháp là ở đâu?
Trong chuyên đề tự học Arduino, Arduino KIT giới thiệu với các bạn một dự án bộ đếm người ra vào bằng đèn Laser sử dụng Arduino, sẽ giúp bạn giải quyết vấn đề này khi không có ai trong phòng tự động tắt, nó cũng có thể được sử dụng cho đèn của phòng tắm, nhà vệ sinh, nhà bếp…
Để hiểu hơn về cấu tạo và cách hoạt động của tất cả Cảm biến có trong dự án .Các bạn có thể tìm đọc bài viết về Khóa học Arduino miễn phí dành cho người mới nhập môn.
Module phát tia laser
Module phát tia laser là một loại linh kiện điện tử được sử dụng để tạo ra tia sáng laser. Nó thường được sử dụng trong các ứng dụng như đo khoảng cách, cân bằng, định vị, và xác định vị trí.
Module phát tia laser thường có hai chân: một chân dùng để kết nối với nguồn điện và chân còn lại dùng để kết nối với mạch điều khiển. Khi được kết nối với nguồn điện và mạch điều khiển, module phát tia laser sẽ tạo ra một tia sáng chói rọi.
Tùy thuộc vào mục đích sử dụng, module phát tia laser có thể được cấu hình để phát ra tia laser với độ sáng và tần số khác nhau. Nó cũng có thể được kết hợp với các cảm biến khác để tạo ra các ứng dụng đo khoảng cách hoặc định vị vị trí chính xác.
Đọc thêm: Bài 9: Cảm biến ánh sáng (Quang trở) cách chia điện áp trong môi trường Arduino
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 |
Cảm biến ánh sáng | 2 | 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 |
LCD16X2 | 1 | Mua ngay |
Board I2C LCD16X2 | 1 | Mua ngay |
Diode laser | 2 | Mua ngay |
Bread Board (Bo test) | 1 | Mua ngay |
Nguồn 12V/2A DC | 1 | Mua ngay |
Code
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F, 16, 2); #define in 11 #define out 12 #define relay 13 int count=0; void IN() { count++; lcd.clear(); lcd.print("Person In Room:"); lcd.setCursor(0,1); lcd.print(count); delay(1000); } void OUT() { count--; lcd.clear(); lcd.print("Person In Room:"); lcd.setCursor(0,1); lcd.print(count); delay(1000); } void setup() { lcd.begin(); lcd.print("Visitor Counter"); 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(in)) IN(); if(digitalRead(out)) OUT(); if(count<=0) { lcd.clear(); digitalWrite(relay, LOW); lcd.clear(); lcd.print("Nobody In Room"); lcd.setCursor(0,1); lcd.print("Light Is Off"); delay(200); } else digitalWrite(relay, HIGH); }
Cảm biến kia săp xếp như thế nào ah b. 1 cái vị trí người ra 1 cái vị trí người vào?
Có 2 vấn đề mình chưa thấy xử lý:
1: Trường hợp người đứng trong cảm biến quá thời gian delay thì số người sẽ bị tự động dc cộng thêm.
2: Trờng hợp người chạm cảm biến xong quay lại mạch vẫn nhận là thêm người.