Tác giả: Thợ điện vô duyên - Phạm minh liêm
Hé lô anh em, Vô Duyên lại lên đây!
Bữa nay anh em mình lại tỉ tê chuyện nghề ha.
Anh em muốn tui viết bài thứ mười một trong chuyên mục "Vô Duyên - Hỏi Đáp Về Smart Home" với chủ đề "Tự học vi điều khiển" đúng không?
Vụ này thì tui khoái nè, vì nó là cái "cần câu cơm" của tui mà.
Ở bài trước, anh em mình đã biết cách "nhìn" và "nghe" rồi.
Giờ mình học thêm cái nữa, là cách "cảm nhận" có cái gì ở gần, hay là có rung động hay không.
Cái này giống như anh em mình gắn thêm cái "giác quan" thứ sáu, thứ bảy cho thằng Arduino vậy đó.
Thôi, không nói nhiều nữa, anh em mình bắt đầu thôi.
Bài 11: Sử dụng các loại cảm biến khác (cảm biến tiệm cận, cảm biến rung)
1. Cảm biến tiệm cận
- Nói thẳng luôn, cảm biến tiệm cận giống như một thằng bảo vệ.
- Nó sẽ báo cho anh em mình biết là có ai hay vật gì đó vừa đi ngang qua mặt nó hay chưa.
- Loại thông dụng nhất cho anh em mình tự học là cảm biến hồng ngoại (IR).
Hoạt động:
- Cảm biến này có một cặp mắt, một mắt phát ra tia hồng ngoại, và một mắt khác chờ để nhận tia đó.
- Nếu có một vật cản đi ngang qua, tia hồng ngoại sẽ bị phản xạ lại và con mắt kia sẽ nhận được.
- Lúc đó, nó sẽ báo cho thằng Arduino biết.
Ứng dụng thực tế:
- Anh em mình có thể dùng nó để làm mấy cái cửa tự động, hoặc làm cái chuông báo động khi có người đi ngang qua.
Chuẩn bị "đồ nghề":
- Một bo Arduino Uno.
- Một cái breadboard.
- Một cái cảm biến hồng ngoại (IR).
- Một cái đèn LED và một điện trở 220 Ohm.
- Vài sợi dây nối.
Sơ đồ đấu dây:
- Nối chân VCC của cảm biến vào chân 5V của Arduino.
- Nối chân GND của cảm biến vào chân GND của Arduino.
- Nối chân OUT của cảm biến vào chân số 7 của Arduino.
- Nối đèn LED vào chân số 13.
Lập trình và giải thích:
- Nếu có vật cản, chân OUT sẽ ở mức LOW.
- Nếu không có vật cản, chân OUT sẽ ở mức HIGH.
// Khai báo chân cho cảm biến tiệm cận và đèn LED
const int camBienTiemCan = 7;
const int denLed = 13;
void setup() {
pinMode(camBienTiemCan, INPUT);
pinMode(denLed, OUTPUT);
}
void loop() {
// Đọc trạng thái từ cảm biến
int trangThai = digitalRead(camBienTiemCan);
// Nếu có vật cản (trạng thái LOW), bật đèn
if (trangThai == LOW) {
digitalWrite(denLed, HIGH);
} else {
// Ngược lại, không có vật cản, tắt đèn
digitalWrite(denLed, LOW);
}
}
2. Cảm biến rung
- Nói thẳng luôn, cảm biến rung giống như một thằng "nhạy cảm".
- Chỉ cần có một chút rung động, một chút va chạm, nó sẽ báo ngay cho anh em mình biết.
Hoạt động:
- Bên trong cảm biến này có một cái lò xo nhỏ.
- Chỉ cần có rung động, cái lò xo đó sẽ chạm vào hai cực, làm cho mạch điện đóng lại, và tín hiệu được gửi đi.
Ứng dụng thực tế:
- Anh em mình có thể dùng nó để làm hệ thống chống trộm cho két sắt, hoặc làm một cái chuông báo động gắn ở cửa.
- Chỉ cần có ai đó cố tình phá hoại, nó sẽ báo động ngay.
Chuẩn bị "đồ nghề":
- Một bo Arduino Uno.
- Một cái breadboard.
- Một cái cảm biến rung.
- Một cái đèn LED và một điện trở 220 Ohm.
- Vài sợi dây nối.
Sơ đồ đấu dây:
- Nối chân VCC của cảm biến vào chân 5V của Arduino.
- Nối chân GND của cảm biến vào chân GND của Arduino.
- Nối chân SIG của cảm biến vào chân số 7 của Arduino.
- Nối đèn LED vào chân số 13.
Lập trình và giải thích:
- Nếu có rung động, chân SIG sẽ ở mức HIGH.
- Nếu không có rung động, chân SIG sẽ ở mức LOW.
// Khai báo chân cho cảm biến rung và đèn LED
const int camBienRung = 7;
const int denLed = 13;
void setup() {
pinMode(camBienRung, INPUT);
pinMode(denLed, OUTPUT);
}
void loop() {
// Đọc trạng thái từ cảm biến rung
int trangThai = digitalRead(camBienRung);
// Nếu có rung động (trạng thái HIGH), bật đèn
if (trangThai == HIGH) {
digitalWrite(denLed, HIGH);
delay(500); // Đợi 0.5 giây để đèn sáng
digitalWrite(denLed, LOW); // Tắt đèn để báo hiệu xong
}
}
3. Tổng kết
Tóm lại, bài này anh em mình đã biết cách làm cho thằng Arduino nó "nhìn" được vật ở gần và "cảm nhận" được rung động.
Cái này rất quan trọng, nó sẽ giúp anh em mình làm mấy cái mạch tự động và hệ thống báo trộm đơn giản, mở ra nhiều ứng dụng thực tế trong lĩnh vực smart home.
Nói nhiêu đó đủ rồi.
Hẹn anh em ở bài viết tiếp theo, mình sẽ học cách điều khiển động cơ servo trong các dự án tự động hóa\!

Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.