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 lăm 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à.
Ở mấy bài trước, anh em mình đã biết cách điều khiển động cơ servo rồi.
Giờ mình học một cái hay ho nữa, đó là cách biến cái remote ti vi thành remote để điều khiển đồ trong nhà.
Cái này giống như anh em mình có thể bật/tắt đèn, quạt từ xa mà không cần phải chạy tới tận nơi.
Thôi, không nói nhiều nữa, anh em mình bắt đầu thôi.
Bài 15: Giới thiệu về module hồng ngoại và ứng dụng điều khiển từ xa (làm remote)
1. Module Hồng Ngoại là gì?
Nói thẳng luôn, module hồng ngoại giống như cái "mắt thần" của ti vi vậy đó.
Nó sẽ nhìn và hiểu được những cái tín hiệu mà cái remote ti vi của anh em mình phát ra.
Cảm biến này có hai loại: mắt nhận (receiver) và mắt phát (transmitter).
- Cái mắt phát nằm trong cái remote, nó sẽ phát ra một tia sáng vô hình (tia hồng ngoại) mỗi khi anh em mình bấm nút.
- Cái mắt nhận nằm trong module hồng ngoại, nó sẽ nhận cái tia sáng vô hình đó và báo cho thằng Arduino biết là "Có tín hiệu rồi nha!".
Anh em mình muốn làm remote điều khiển, thì phải có cái mắt nhận.
2. Chuẩn bị "đồ nghề"
Để làm bài này, anh em mình cần có:
- Một bo Arduino Uno.
- Một cái breadboard.
- Một cái mắt nhận hồng ngoại (loại phổ biến là VS1838B).
- Một cái remote hồng ngoại bất kỳ.
- Một cái đèn LED và một điện trở 220 Ohm.
- Vài sợi dây nối.
3. Đấu dây (Mạch điện)
Nói thiệt, cái này quan trọng lắm, anh em nhìn hình rồi làm theo cho kỹ.
Mắt nhận hồng ngoại có ba chân:
- Chân ngoài cùng bên trái (OUT):
- Nối vào một chân digital bất kỳ trên Arduino, ví dụ chân số 11.
- Chân ở giữa (GND):
- Nối vào chân GND của Arduino.
- Chân ngoài cùng bên phải (VCC):
- Nối vào chân 5V của Arduino.
Ngoài ra, anh em mình nối thêm cái đèn LED vào chân số 13, giống như mấy bài trước, để mình thử nghiệm cho dễ.
4. Lập trình và giải thích
Để thằng Arduino nó hiểu được tín hiệu từ remote, anh em mình phải cài thêm cái "từ điển" cho nó.
Cái "từ điển" này trong lập trình gọi là thư viện (library).
Bước 1: Cài đặt thư viện.
- Anh em mở Arduino IDE, vào Sketch -\> Include Library -\> Manage Libraries...
- Gõ "IRremote" vào ô tìm kiếm, rồi tìm thư viện tên là "IRremote by Shirriff".
- Bấm "Install" để cài đặt.
Bước 2: Tìm mã nút bấm.
- Mỗi nút bấm trên remote có một cái mã số riêng.
- Anh em phải tìm ra cái mã đó thì mới lập trình được.
- Anh em copy đoạn code dưới đây vào, rồi nạp vào bo Arduino.
- Sau đó mở Serial Monitor lên (biểu tượng kính lúp), cầm remote, chĩa vào mắt nhận rồi bấm thử từng nút.
- Anh em sẽ thấy một dãy số hiện lên. Đó chính là mã của cái nút vừa bấm.
- Anh em mình ghi lại cái mã đó.
#include <IRremote.h>
const int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
Serial.println("San sang nhan tin hieu tu remote!");
}
void loop() {
if (irrecv.decode(&results)) {
Serial.print("Ma tin hieu: ");
Serial.println(results.value, HEX); // In ma so theo dang HEX
irrecv.resume(); // Tiep tuc nhan tin hieu
}
}
Bước 3: Viết chương trình điều khiển.
- Giờ anh em mình đã có cái mã số rồi, thì mình bắt đầu viết chương trình.
- Ví dụ, tui lấy mã nút "Nguồn" là "0xFD00FF".
- Tui sẽ lập trình cho nó bật/tắt đèn. Anh em mình sửa lại mã số cho phù hợp với remote của mình nha.
#include <IRremote.h>
const int RECV_PIN = 11; // Chan nhan tin hieu hong ngoai
const int LED_PIN = 13; // Chan den LED
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(LED_PIN, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
if (results.value == 0xFD00FF) { // Vi du day la ma so cua nut "Nguon"
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
Serial.println("Da bat/tat den!");
}
irrecv.resume();
}
}
Giải thích:
- "digitalWrite(LED_PIN, !digitalRead(LED_PIN));"
- Cái này hay nè, nó giống như một cái công tắc đảo chiều.
- "!digitalRead(LED_PIN)" có nghĩa là "Nếu đèn đang sáng thì tắt, nếu đang tắt thì bật".
Tổng kết
Tóm lại, bài này anh em mình đã biết cách sử dụng remote hồng ngoại để điều khiển thiết bị.
Cái này là bước quan trọng để làm mấy cái nhà thông minh mà không cần phải mua remote đắt tiền.
Nói nhiêu đó đủ rồi.
Hẹn anh em ở bài viết tiếp theo, mình sẽ học cách xài module RFID để làm khóa cửa thông minh!

Đă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.