Trong bài viết này chúng ta sẽ học cách phát hiện chuyển động trong phòng, bằng cách sử sụng Cảm biến chuyển động PIR và Đầu vào digital của Arduino. Ta sẽ nối một mạch bằng breadboard và dùng code Arduino đơn giản để điều khiển một đèn LED. Phần mềm mô phỏng Tinkercad Circuits cũng được sử dụng để giúp bạn bắt kịp với nội dung và trợ giúp quá trình thực hành lắp mạch.
Trong chuỗi bài viết về Arduino trên Tinkercad, bạn có thể đã học được cách Đọc tín hiệu nút bấm với Đầu vào Digital của Arduino. Hôm nay, chúng ta sẽ dùng kiến thức đó trong bài viết này. Mặc dù cảm biến chuyển động dường như có vẻ khá phức tạp trong mạch chuyên dụng, tuy nhiên nó cũng được cấu hình để gửi tín hiệu HIGH hoặc LOW – giống như một nút bấm thông thường.
PIR là viết tắt của Passive InfraRed. Thuật ngữ này mô tả công nghệ mà linh kiện sử dụng – đó chính là phát hiện thụ động các mức ánh sáng hồng ngoại (khác với camera hồng ngoại: phát ra ánh sáng hồng ngoại để ghi lại tín hiệu phản xạ). Vòm trắng là một thấu kính giúp mở rộng trường nhìn của máy dò hồng ngoại. Cảm biến này mặc định ghi nhận tín hiệu LOW. Khi đọc lượng ánh sáng hồng ngoại xung quanh đi vào, cảm biến kích hoạt tín hiệu HIGH trong một khoảng thời gian nhất định (khi mức độ ánh sáng thay đổi) để báo có sự chuyển động. RIP có thể cho bạn biết liệu có chuyển động trong tầm nhìn hay không, nhưng sẽ không thể phát hiện được khoảng cách bao xa. Vì vậy, nếu cần, bạn có thể cân nhắc một loại cảm biến tương tự là Máy đo khoảng cách siêu âm.
Để thực hành xây dựng mạch thực tế, ta sẽ cần sử dụng:
- 1 Arduino Uno
- 1 cáp USB
- 1 breadboard và dây
- 1 đèn LED
- 1 điện trở bất kỳ giá trị từ 100-1K Ohm
- 1 cảm biến chuyển động PIR
Tham khảo thêm: Sản phẩm Cảm Biến Vật Cản Hồng Ngoại
Bước 1: Xây dựng mạch
Bạn hãy xem mạch mẫu bên dưới bằng cách nhấp Start Simulation và nhấp vào Cảm biến chuyển động. Thao tác này sẽ kích hoạt mở ra một khu vực được đánh dấu ở phía trước cảm biến, với một “đối tượng” hình tròn bên trong. Nhấp và kéo vòng tròn “đối tượng” phía trước cảm biến để mô phỏng sự chuyển động. Đèn LED sẽ bật trong một thời gian ngắn khi phát hiện chuyển động.
Mạch mẫu Cảm biến chuyển động PIR với Arduino trong Tinkercad Circuits
Đầu tiên, ta xác định vị trí các linh kiện: cảm biến chuyển động PIR, đèn LED, điện trở và dây kết nối với Arduino.
Kéo Arduino Uno và breadboard từ bảng components vào bảng làm việc.
Kết nối đường ray nguồn (+) và đường ray đất (-) của bảng mạch tương ứng với Arduino 5V và chân đất (GND) (nhấp chuột để tạo dây).
Mở rộng đường ray nguồn và đường ray đất ở mép đối diện của bảng mạch bằng cách tạo một dây màu đỏ giữa hai thanh nguồn và một dây màu đen giữa hai thanh đất.
Cắm đèn LED vào hai hàng breadboard khác nhau để cực âm (chân ngắn hơn) kết nối với một chân của điện trở (giá trị bất kỳ từ 100-1K Ohms). Điện trở có thể lắp theo một trong hai hướng vì điện trở không phân cực (khác với đèn LED, cần phải được nối theo một chiều nhất định để có thể hoạt động).
Nối chân điện trở còn lại với đất.
Nối dây cực dương của đèn LED (chân dài hơn) vào chân 13 của Arduino.
Kéo Cảm biến chuyển động PIR từ bảng components vào bảng mạch, đặt sao cho các chân của nó cắm vào ba hàng khác nhau.
Nhấp chuột để tạo dây nối chân ngoài cùng bên phải với nguồn điện.
Nối chân giữa với đất.
Cuối cùng, tạo một dây nối chân ngoài cùng bên trái với chân A0 của Arduino.
Bước 2: Lập trình bằng các khối code
Nhấp vào nút “Code” để mở trình chỉnh sửa.
Nhấp vào danh mục Variables và tạo một biến mới gọi là sensorState.
Kéo ra một khối “set“.
Chúng ta sẽ lưu trữ trạng thái của cảm biến chuyển động PIR vào biến sensorState. Nhấp vào danh mục Input Block, kéo khối “read digital pin” ra và đặt vào khối “set”, sau từ “to”.
Vì cảm biến của chúng ta được kết nối với Arduino ở chân 2, hãy thay đổi giá trị từ menu của khối “read digital pin” thành “2“. Bây giờ, các khối của bạn sẽ là “set sensor State to read digital pin 2” nghĩa là lưu trữ tín hiệu digital của chân cảm biến vào sensorState.
Nhấp vào danh mục Control và kéo ra một khối “if then“.
Ta cấu hình để khối này thực hiện chức năng đánh giá xem liệu sensorState phải đang ở trạng thái HIGH hay không (bằng cách sử dụng khối So sánh toán học). Kéo khối So sánh toán học vào câu lệnh if.
Kết quả cuối cùng ta mong muốn là đèn LED sẽ sáng nếu cảm biến được kích hoạt, ngược lại, đèn LED sẽ tắt. Trong danh mục Output Block, tìm khối “set built-in LED to HIGH“. Hãy thử đặt thêm hai khối này vào câu lệnh if (sao cho đèn LED chỉ sáng lên khi cảm biến được kích hoạt). Khối “set built-in LED” nên có giá trị là HIGH khi trạng thái cảm biến là HIGH, và ngược lại.
Bước 3: Giải thích code Cảm biến chuyển động PIR
Khi trình chỉnh sửa code mở, nhấp vào menu bên trái và chọn “Block + Text” để hiển thị code Arduino được tạo bởi các khối code này.
Trước setup(), ta tạo một biến để lưu trữ trạng thái hiện tại của cảm biến. Nó được khai báo bằng int vì là số nguyên (mặc dù rằng chúng ta sẽ chỉ sử dụng các giá trị là 0 và 1, tương ứng LOW và HIGH).
Bên trong setup(), các chân được cấu hình bằng pinMode(). Chân 2 được cấu hình như một INPUT, để chúng ta có thể xem trạng thái điện của cảm biến. Chân 13 được cấu hình làm OUTPUT để điều khiển đèn LED. Để có thể truyền ra thông điệp tín hiệu, ta mở một kênh giao tiếp với hàm Serial.begin() có đối số là tốc độ truyền (tốc độ giao tiếp), trong trường hợp này là 9600 bit mỗi giây.
Sau 2 dấu gạch chéo // là một nhận xét, để ghi chú cho dễ hiểu khi chương trình Arduino chạy. Trong vòng lặp chính, hàm digitalRead(); sẽ kiểm tra trạng thái của chân 2 (sẽ là 5V – CAO, hoặc nối đất -THẤP) và lưu trữ trạng thái đó trong biến sensorState đã tạo ở trên.
Bên dưới hai hàng chú thích nữa là câu lệnh if để kiểm tra xem liệu sensorState có phải là HIGH hay không (“==” là một toán tử so sánh , khác với “=” là một toán tử gán ). Nếu đúng, đèn LED tích hợp được đặt thành HIGH (bật). Nếu sai, code chứa bên trong else { sẽ được thực hiện: khiến đèn LED đặt thành LOW (tắt). Câu lệnh if có thể tồn tại một mình, hoặc đi kèm với nhiều câu lệnh else khác.
Bước 4: Thiết lập cảm biến chuyển động PIR
Nếu đang thực hành xây dựng mạch Arduino thật, bạn sẽ cần thiết lập Cảm biến chuyển động PIR của mình một chút.
Xác định vị trí 3 header trên bảng mạch. Chúng sẽ hướng về tâm của một cạnh và được gắn nhãn GND, OUT và +5v (hoặc giá trị khác tương tự).
Cắm đầu nối có dây đi kèm vào ba chân, với dây màu đen được nối với GND.
Kiểm tra kỹ đầu nối đã được lắp chắc chắn hay chưa.
Ngoài ra, bạn cũng có thể kết nối ba dây mẫu riêng lẻ, từ đực sang cái, với các chân.
Bước 5: Thực hành xây dựng mạch Arduino
Để lập trình Arduino Uno, bạn cần cài đặt phần mềm Arduino Uno và mở nó lên.
Nối dây mạch Arduino Uno bằng cách cắm các linh kiện và dây, sao cho khớp với các kết nối ở mạch mẫu trên Tinkercad Circuit. .
Sao chép code từ cửa sổ code Tinkercad Circuits và dán vào một bản thảo trống trong phần mềm (hoặc nhấp tải xuống và mở file bằng Arduino). Bạn cũng có thể tìm thấy ví dụ này ở mục Tệp -> Ví dụ -> 02.Digital -> Nút.
Cắm cáp USB, chọn bo mạch và cổng trong menu Tools của phần mềm.
Cuối cùng, tải code và xem đèn LED của bạn sáng có lên khi ta di chuyển vào vùng cảm biến không nhé.
Bước 6: Điều chỉnh cảm biến chuyển động PIR
Một số cảm biến chuyển động PIR đi kèm với hai biến trở có thể điều chỉnh để thay đổi độ nhạy và thời lượng của tín hiệu kích hoạt. Cảm biến chuyển động PIR trong bài viết này không có những điều chỉnh này.
Do đó, bạn có thể tuỳ ý sử dụng tua vít nhỏ để điều chỉnh độ nhạy và số thời lượng trên mặt bảng mạch của cảm biến chuyển động PIR.
Nguồn: instructables.com
Lượt dịch: Fuvitech.vn