HỆ THỐNG ĐIỀU KHIỂN TỪ XA

Tóm tắt ý tưởng

Remote control for ceiling fan - Cablematic

Các thiết bị trong nhà được điều khiển bằng Remote rất quen thuộc trong cuộc sống hằng ngày của chúng ta: TV, Quạt, Máy Lạnh,… Có bao giờ bạn tự hỏi các thiết bị này vận hành như thế nào chưa?

Dự án Hệ thống điều khiển từ xa – Infrared Remote Control System sẽ mô phỏng lại một chiếc quạt điều khiển bằng Remote từ đó sẽ giúp bạn hiểu được nguyên lý vận hành và tự tạo được các thiết bị điều khiển từ xa cho riêng mình, dự án sử dụng các sản phẩm phần cứng Robotics của MakerEdu.vn với những thao tác lắp đặt và lâp trình vô cùng đơn giản.

Mô tả tính năng

Khi bạn nhấn các nút 0, 1, 2, 3 trên remote, tín hiệu sẽ điều khiển cho quạt và đèn thay đổi theo mức tương ứng như sau:

  • Mức 0: Quạt tắt.
  • Mức 1 < 2 < 3: quạt quay mạnh dần, tương ứng các đèn Xanh < Vàng < Đỏ.

Danh sách vật dụng

Vật dụng

Hình ảnh

Chức năng / Chuẩn giao tiếp

Mạch Vietduino Uno (Arduino Uno Compatible) (x1)

Mạch điều khiển trung tâm, tương thích Arduino Uno, kết nối máy tính qua cổng USB

Mạch MakerEDU Shield (x1)

Mạch Shield giúp kết nối Vietduino Uno với các phần cứng Robotics MakerEdu.vn qua chuẩn kết nối XH2.54

Mạch hiển thị MKE-M07 LCD1602 I2C module (x1)

Màn hình hiển thị thông tin, chuẩn giao tiếp Digital I2C

Mạch đóng ngắt tải MKE-M06 SS8050 NPN transistor module (x1)

Đóng ngắt và cấp nguồn cho tải sử dụng 5VDC (Quạt), chuẩn giao tiếp Digital

Mạch thu hồng ngoại MKE-M14 VS1838 IR remote control receiver module (x1)

Mạch thu tín hiệu hồng ngoại từ Remote, chuẩn giao tiếp Digital

Mạch led đơn MKE-M01 10mm single LED module
Xanh x1
Vàng x1
Đỏ x1
Trắng x1

Mạch đèn tín hiệu, chuẩn giao tiếp Digital

Động cơ Quạt (x1)

Quạt 5VDC.

Remote Control (x1)

Remote điều khiển

Cáp Kết Nối MakerEDU XH2.54-XH2.54 3Wires (x5)

Cáp kết nối phần cứng MakerEdu.vn chuẩn XH2.54 3 dây

Cáp Kết Nối MakerEDU XH2.54-XH2.54 4Wires (x1)

Cáp kết nối phần cứng MakerEdu.vn chuẩn XH2.54 4 dây

Flowchart

Hướng dẫn kết nối

LƯU Ý QUAN TRỌNG: CẦN XOÁ CHƯƠNG TRÌNH CŨ TRÊN MẠCH VIETDUINO TRƯỚC KHI THỰC HIỆN KẾT NỐI VỚI CÁC PHẦN CỨNG MỚI ĐỂ TRÁNH CÁC XUNG ĐỘT CÓ THỂ LÀM HƯ HỎNG MẠCH!!!

  • Bước 1: Xoá chương trình cũ có sẵn trên mạch Vietduino trước khi thực hiện kết nối các phần cứng mới.
  • Bước 2: Lắp Shield lên mạch Vietduino Uno
  • Bước 3: Kết nối các phần cứng theo sơ đồ sau:

Hướng dẫn lập trình Mblock for Arduino

LƯU Ý QUAN TRỌNG: TRƯỚC KHI THỰC HIỆN CẦN CÀI ĐẶT PHẦN MỀM MBLOCK, CẤU HÌNH PHẦN MỀM VỚI MẠCH VIETDUINO UNO VÀ CÀI ĐẶT CÁC EXTENSION CỦA MAKEREDU.VN THEO HƯỚNG DẪN TẠI ĐÂY

Test tín hiệu từ remote:

Bước 1: Lập trình nhận tín hiệu từ Remote và hiển thị lên Sprites:

Bước 2: Dùng kết quả Panda vừa nhận để tạo lệnh mở quạt theo mức độ:

Khi Gấu Panda thông báo kết quả nghĩa là bạn đã test thành công, hệ thống thu – nhận tín hiệu hoạt động bình thường.

Hình thành các bộ phận code

Code hoàn chỉnh

***Link dự án tại Mblock: HỆ THỐNG ĐIỀU KHIỂN TỪ XA – Mblock Community

Giải thích code

Phân loại   Khối lệnh  Chức năng 
Events Bắt đầu chương trình
Control Lặp lại mãi mãi
Thực hiện đoạn mã các tập lệnh trong khối này nếu các điều kiện chỉ định được đáp ứng
Chờ một khoảng thời gian bao nhiêu giây
Pin Bật / tắt thiết bị chuẩn digital 
Điều chỉnh dòng điện analog 
Operators Phép so sánh bằng nhau
MKE-M07,08 Xóa nội dung hiển thị trên màn hình LCD
In dòng chữ hiển thị trên màn hình LCD
MKE-M14 Đọc tín hiệu từ cảm biến hồng ngoại 
Upload Mode Broadcast Gửi nội dung với giá trị 

Hướng dẫn lập trình Arduino

LƯU Ý QUAN TRỌNG: TRƯỚC KHI THỰC HIỆN CẦN CÀI ĐẶT PHẦN MỀM ARDUINO, CẤU HÌNH PHẦN MỀM VỚI MẠCH VIETDUINO UNO VÀ CÀI ĐẶT BỘ THƯ VIỆN CỦA MAKEREDU.VN THEO HƯỚNG DẪN TẠI ĐÂY

// Include library
// Cai dat thu vien
#include "LiquidCrystal_I2C.h"
#include "IRremote.h"

// set the LCD address to 0x27 for a 16 chars and 2 line display
// Thiet lap dia chi LCD 0x27 de hien thi ky tu LCD 16 ky tu và 2 dong
LiquidCrystal_I2C LCD(0x27, 16, 2);  

// Define connected pin
// Dat ten cong ket noi chan LED va BUZZER
#define LED_RED_PIN       A1
#define LED_YELLOW_PIN    A2
#define LED_GREEN_PIN     A3
#define FAN_PIN           9
#define IR_RECEIVE_PIN    10

void setup() {
  // We initialize serial connection so that we could print values from sensor
  // Khoi tao cong ket noi noi tiep
  Serial.begin(9600);
  // Initialize LCD 1602 to display
  // Khoi tao LCD 1602 de hien thi
  LCD.init();      
  // Turn on LCD backlight  
  // Bat den nen LCD 1602    
  LCD.backlight();   
  // Set connected pin as output pin
  // Thiet lap cong ket noi la chan tin hieu ra
  pinMode(LED_RED_PIN, OUTPUT);
  pinMode(LED_YELLOW_PIN, OUTPUT);
  pinMode(LED_GREEN_PIN, OUTPUT);
  pinMode(FAN_PIN, OUTPUT);
  
  // Start the receiver
  // Thiet lap chan tin hieu nhan hong ngoai
  IrReceiver.begin(IR_RECEIVE_PIN);
  
  //Display Remote button selection
  //Hien thi man hinh lua chon nut nhan
  LCD.setCursor(0, 0);
  LCD.print("Remote button");
  LCD.setCursor(0, 1);
  LCD.print("0  1  2  3");
}

void loop()
{
    if (IrReceiver.decode()){
        Serial.println(IrReceiver.decodedIRData.command);
        if (IrReceiver.decodedIRData.command == 12){
        // Set PWM 25%
        // Dat gia tri PWM de dieu chinh toc do quat la 25%
        analogWrite(FAN_PIN, 64);
        digitalWrite(LED_GREEN_PIN, HIGH);
        digitalWrite(LED_YELLOW_PIN, LOW);
        digitalWrite(LED_RED_PIN, LOW);
        LCD.clear();
        LCD.setCursor(0, 0);
        LCD.print("Level 1 ^^");
        LCD.setCursor(0, 1);
        LCD.print("~~ Mat khong?~~");
        }
    
        /*
         * !!!Important!!! Enable receiving of the next value,
         * since receiving has stopped after the end of the current received data packet.
         */
        IrReceiver.resume(); // Enable receiving of the next value

        delay(100);

        if (IrReceiver.decodedIRData.command == 0x18){
        // Set PWM 50%
        // Dat gia tri PWM de dieu chinh toc do quat la 50%
        analogWrite(FAN_PIN, 123);
        digitalWrite(LED_GREEN_PIN, LOW);
        digitalWrite(LED_RED_PIN, LOW);
        digitalWrite(LED_YELLOW_PIN, HIGH);
        LCD.clear();
        LCD.setCursor(0, 0);
        LCD.print("Level 2 :)");
        LCD.setCursor(0, 1);
        LCD.print("~~ Mat khong?~~");
        }
        if (IrReceiver.decodedIRData.command == 0x5e){
        // Set PWM 100%
        // Dat gia tri PWM de dieu chinh toc do quat la 100%
        analogWrite(FAN_PIN, 255); 
        digitalWrite(LED_GREEN_PIN, LOW);
        digitalWrite(LED_YELLOW_PIN, LOW);
        digitalWrite(LED_RED_PIN, HIGH);
        LCD.clear();
        LCD.setCursor(0, 0);
        LCD.print("Level 3 :)");
        LCD.setCursor(0, 1);
        LCD.print("Cho tui nghi diiii");
        }
        if (IrReceiver.decodedIRData.command == 0x16){
        // Set PWM 0% to turn off fan
        // Tat quat
        analogWrite(FAN_PIN, 0); 
        digitalWrite(LED_GREEN_PIN, LOW);
        digitalWrite(LED_YELLOW_PIN, LOW);
        digitalWrite(LED_RED_PIN, LOW);
        LCD.clear();
        LCD.setCursor(0, 0);
        LCD.print("Cam on ban ^^");
        LCD.setCursor(0, 1);
        LCD.print(":>>>>");
        }
    }
}

***Link tải code tại Github: makereduvn/MakerEdu_Development_Kit (github.com)

Hình ảnh thành phẩm

Tìm kiếm

Các kênh truyền thông

Bài viết phổ biến

Các chuyên mục

Đăng ký theo dõi

Hãy đăng ký theo dõi MakerLab.vn để cập nhật các bài viết và thông tin công nghệ mới nhất!

Bài viết liên quan

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments