Hải Đăng PPK gửi vào
- 16928 lượt xem
I. MỞ ĐẦU
Thiết bị bạn cần đó là:
- 1 máy tính (hiển nhiên rồi haha)
- 1 arduino
- 1 led thu hồng ngoại (Cái này có thể kiếm ở mấy cái tivi, đầu đĩa cũ, hỏng..)
- 1 Remote
Bản chất là phát tín hiệu hồng ngoại, Led thu hồng ngoại nhận được tín hiệu rồi truyền đến Arduino, Arduino xử lý và truyền về máy tính thông qua giao thức Serial comport. Phần mềm lập trình trên máy tính (Bằng ngôn ngữ Autoit) sẽ nhận dữ liệu và điều khiển chuột và các lệnh theo ý định.
II. KẾT NỐI
Các bạn kết nối IR LED với Arduino theo hình dưới đây nhé
Các bạn có thể dùng arduino nano hoặc promini cho thêm phần nhỏ gọn.
Về việc sử dụng IR LED đã có bài hướng dẫn chi tiết cách sử dụng của bác NTP_PRO mình xin phép không nhắc lại. Các bạn có thể vào đây để nghiên cứu về cách xử dụng IR LED nhé
III. LẬP TRÌNH ARDUINO
Phần này khá đơn giản
Trước tiên, các bạn cần xác định được mã của phím nhấn trên điều khiển
Để chắc chắn các bạn hiểu được được này, các bạn nên xem qua bài viết mình đã giới thiệu bên trên của bác NTP_PRO nói về cách xử dụng led thu hồng ngoại nhé
Để xác định được các mã của điều khiển là gì, các bạn sử dụng đoạn code sau:
#include <IRremote.h> // thư viện hỗ trợ IR remote const int receiverPin = 8; // chân digital 8 dùng để đọc tín hiệu IRrecv irrecv(receiverPin); // tạo đối tượng IRrecv mới decode_results results;// lưu giữ kết quả giải mã tín hiệu void setup() { Serial.begin(9600);// serial baudrate 9600 irrecv.enableIRIn(); // start the IR receiver } void loop() { if (irrecv.decode(&results)) // nếu nhận được tín hiệu { Serial.println(results.value, HEX); // in ra Serial Monitor delay(200); irrecv.resume(); // nhận giá trị tiếp theo } }
Bật Serial monitor lên rồi bấm phím trên điều khiển, hướng về led hồng ngoại, các bạn có thể biết được mã của từng phím trên điều khiển. Sau đó gán các giá trị ấy vào các đoạn
// case ....... trong đoạn code dưới đây
#include <IRremote.h> #include <IRremoteInt.h> int RECV_PIN = 8; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); // thiết lập baudrate là 9600 irrecv.enableIRIn(); // Khởi tạo trạng thái nhận tín hiệu từ Led thu hồng ngoại } void loop() { if (irrecv.decode(&results)) { switch(results.value) { case 0xE0E006F9: // nếu nhận được giá trị là 0xE0E006F9 Serial.print("up"); // truyền về máy tính kí tự "up" break; case 0xE0E08679: Serial.print("down"); break; case 0xE0E0A659: Serial.print("left"); break; case 0xE0E046B9: Serial.print("right"); break; case 0xE0E016E9: Serial.print("ml"); break; case 0xE0E01AE5: Serial.print("mr"); delay(1000); break; } irrecv.resume(); } }
Điều đó có nghĩa là mỗi khi bạn nhấn nút trên điều khiển, nếu đúng với mã đã xác định sẵn trong chương trình thì arduino sẽ gửi về serial 1 ký tự up hoặc down, left, right...
ok! Như vậy đã xong phần lập trình cho arduino
Phần tiếp theo mình sử dụng ngôn ngữ lập trình Autoit, một loại ngôn ngữ lập trình cũng khá dễ tiếp cận. các bạn có thể tham khảo tại diễn đàn http://autoitvn.com/
#include 'CommMG.au3' #NoTrayIcon HotKeySet("+!d", "thoat") ;Shift-Alt-d Global $msg, $port ,$a Global $menu=0 , $menu1=0, $data, $chedo1=0, $chedo2=0 $a=InputBox("nhập cổng com"," ","","",50,50,@DesktopWidth/2-50,@DesktopHeight/2-50) $resOpen = _CommSetPort($a, 1, 9600,8,0,1,0,0,0) $port = _CommPortConnection() $name =_ComGetPortNames("Com 1") $tenport= StringReplace($port,"\\.\COM","Cổng đang kết nối: ") While 1 $pos = MouseGetPos() Global $instr = _CommGetString() $data = $instr if $data = "left" Then MouseMove($pos[0]-30,$pos[1],1) EndIf if $data = "right" Then MouseMove($pos[0]+30,$pos[1],1) EndIf if $data = "up" Then MouseMove($pos[0],$pos[1]-30,1) EndIf if $data = "down" Then MouseMove($pos[0],$pos[1]+30,1) EndIf if $data = "ml" Then MouseClick("left",$pos[0],$pos[1],1,1) EndIf if $data = "mr" Then MouseClick("right",$pos[0],$pos[1],1,1) EndIf WEnd Func thoat() _Commcloseport(true) Exit EndFunc ;==>Thoát
Toàn bộ phần mã nguồn của Autoit các bạn có thể down tại đây
Chương trình mình đã build và các bạn chỉ việc chạy, sau đó nhập cổng com của arduino vào là xong (Điều khiển bằng điều khiển tivi samsung, với các phím lên xuống, trái, phải) tại đây
Chúc các bạn thành công!