Tóm tắt ý tưởng
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 đ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à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 |
![]() |
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 phần cứng MakerEdu.vn chuẩn XH2.54 3 dây | |
![]() |
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)