Thợ điện vô duyên học điện: Tự học vi điều khiển Bài 15

Vô Duyên - Hỏi Đáp Về Smart Home: Bài 15 module hồng ngoại và lập trình Arduino để biến remote TV thành điều khiển thiết bị trong nhà thông minh.

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!

Nếu cần tư vấn về tư vấn thiết kế, lắp đặt thi công hay bảo trì sửa chữa các thiết bị và hệ thống smart home, cứ liên hệ tui qua số điện thoại 0902633999 (có Zalo và WhatsApp) để được giải đáp nhé!

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

[facebook]

MKRdezign

{facebook#https://facebook.com/smarthomeminhliem} {twitter#http://twitter.com} {google-plus#http://google.com} {pinterest#http://pinterest.com} {youtube#https://youtube.com/smarthomeminhliem} {instagram#http://instagram.com/smarthomeminhliem}

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.
Javascript DisablePlease Enable Javascript To See All Widget