Tự làm Xe điều khiển từ xa bằng Remote TV - Điều khiển xe bằng Hồng Ngoại khó hay dễ?

I. Giới Thiệu

Đây là bài viết đầu tiên của mình nên có sai sót gì mong mọi người đóng gópsmiley. Vào vấn đề thôi ! Hiện nay, trên cộng đồng của mình đã có bài viết hướng dẫn làm xe điều khiển với cách điều khiển là dùng sóng nrf hoặc sóng bluetooth. Hôm trước mình đọc bình luận của một bạn, bạn ấy nói rằng bạn chỉ có 1 con arduino và cũng không có sờ-mát-phôn(Mình cũng thế :D), nên không thể sử dụng 2 cách điều khiển trên. Vì vậy hôm nay mình xin viết bài viết hướng dẫn làm xe điều khiển bằng remote TV (Nói chính xác hơn là bằng tín hiệu hồng ngoại) nhằm giúp cho các bạn có số phận như mình và bạn ấy laugh.

II. Làm Thôi

​1. Chuẩn Bị

2. Ráp Phần Cứng

Trước tiên ngắm mạch nguyên lí nha (Máy cài fritzing bị lỗi nên dùng tạm phần mềm Paint :D):

"Mình chụp bằng con Nokia cùi nên ảnh không được nét lắm"

Ráp bánh vào hộp số.

Gắn bánh vào khung xe

Thêm cái bánh đa hướng vào

 

Cho ông vua lên kiệu

Bà hoàng hậu cũng đu theo :D

Cậu hoàng tử của ta đây mà

Mình sài con 1838

"Mình sài con 1838 nha".

Cho lên kiệu luôn

Nối 2 motor với L298, nếu sử dụng 4 motor thì nối song song 2 motor của 1 luồng lại nha.

[UPDATE] Nối chân + Motor trái vào OUT1, chân - vào OUT2. Nối chân + Motor phải vào OUT4, chân - vào OUT3.

Nối 4 chân In1, In2, In3, In4 với arduino. (Mình nối in1 - D6, in2 - D7, in3 - D8, in4 - D9)

Nối con mắt thu hồng ngoại với arduino, (Mình nối chân OUT với D12). Các bạn lưu ý, các mắt thu hồng ngoại khác nhau có thể có sơ đồ chân khác nhau, nên để chắc chắn thì nên xem datasheet của nó.

Đây là sơ đồ chân của con 1838

Lắp nguồn cho L298.

Mình nối chân 12V vào cực dương nguồn công suất, chân GND vào cực âm nguồn công suất và cực âm arduino. Nếu sử dụng nguồn chung cho cả arduino và L298 thì nối chân 5V vào chân Vin arduino(Mình sài 2 nguồn riêng nên bỏ trống).

Cấp nguồn cho arduino, mình sài pin 9V.

+ 9V - Vin

- 9V - GND

Thêm cái remote tv nữa là xong phần cứng.

3. Lập trình

Trước tiên các bạn cần tra mã của cái nút mà bạn sẽ bấm trên remote tv, rồi từ đó thế cái mã ấy vào mã nút trong code lập trình của mình. Ngoài ra, còn cả cách cài thư viện IRremote cho arduino nữa. Cách tra mã nút và cách cài thư viện bạn có thể tham khảo tại bài viết: 

Infrare remote control ( Điều khiển bằng hồng ngoại) Với arduino

Một bài viết của anh NTP_PRO

Ok, sau khi tra mã nút và cài thư viện ta bắt đầu lập trình:

 

#define ir 12
#define inA1 6
#define inA2 7
#define inB1 8
#define inB2 9
#include <IRremote.h>
IRrecv irrecv(ir);
decode_results results;
void setup()
{
  irrecv.enableIRIn();
  pinMode(inA1,OUTPUT);
  pinMode(inA2,OUTPUT);
  pinMode(inB1,OUTPUT);
  pinMode(inB2,OUTPUT);
}
void translateIR()
{
  switch(results.value)
  {
    case 0xC03E:
    robotMove(1);
    break;
    case 0xC05E:
    robotMove(0);
    break;
    case 0xC0DE:
    robotMove(2);
    break;
    case 0xC05A:
    robotMove(3);
    break;
    case 0xC0DA:
    robotMove(4);
    break;
    case 0xC01E:
    robotMove(6);
    break;
    case 0xC038:
    robotMove(5);
    break;
  }
}
void robotMove(int chedo)
{
  switch(chedo)
  {
    case 0: //Dung
    motorMove(inA1,inA2,0);
    motorMove(inB1,inB2,0);
    break;
    case 1: //Di thang
    motorMove(inA1,inA2,1);
    motorMove(inB1,inB2,1);
    break;
    case 2: //Lui
    motorMove(inA1,inA2,2);
    motorMove(inB1,inB2,2);
    break;
    case 3: //Re phai
    motorMove(inA1,inA2,0);
    motorMove(inB1,inB2,1);
    break;
    case 4: //Re trai
    motorMove(inA1,inA2,1);
    motorMove(inB1,inB2,0);
    break;
    case 5: //Xoay phai
    motorMove(inA1,inA2,2);
    motorMove(inB1,inB2,1);
    break;
    case 6: //Xoay trai
    motorMove(inA1,inA2,1);
    motorMove(inB1,inB2,2);
    break;
  }
}
void motorMove(int in1,int in2, byte action)
{
  switch(action)
  {
    case 0: //Dung
    digitalWrite(in1,0);
    digitalWrite(in2,0);
    break;
    case 1: //Chieu thu 1
    digitalWrite(in1,1);
    digitalWrite(in2,0);
    break;
    case 2: //Chieu thu 2
    digitalWrite(in1,0);
    digitalWrite(in2,1);
    break;
  }
}
void loop()
{
  if (irrecv.decode(&results))
 {
  translateIR();
  delay(200);
  irrecv.resume();
 }
}

 

III. Kết luận

Như vậy là chúng ta đã hoàn thành được chiếc xe rồi. Mình hi vọng rằng các bạn sẽ hài lòng khi xem bài viết này. Còn bây giờ thì cùng hướng thành quả nào. Chúc các bạn thành công.
Youtube: 
lên
32 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Giới thiệu về Femtoduino – Arduino nhỏ nhất hiện nay

Xin chào các bạn! Hôm nay mình xin giới thiệu với các bạn một board Arduino nhỏ nhất hiện nay, nó có tên là Femtoduino. Đây là sản phẩm của công ty Femtoduino, chứ không phải là của công ty Arduino. Nó có kích thước nhỏ hơn cả đồng xu.

lên
16 thành viên đã đánh giá bài viết này hữu ích.

[Khám phá thế giới IoT với bSmart] Bài 1 - Điều khiển 8 rơ le qua internet

Xin chào các bạn, tiếp nối seri bài viết "Khám phá thế giới IoT với bSmart", hôm nay mình sẽ hướng dẫn các bạn cách tự tạo một mô hình IoT nho nhỏ với 8 chiếc rơ le được điều khiển qua mạng internet. Đặc biệt, với kit bSmart mình sẽ hướng dẫn các bạn cách lập trình để thiết bị của chúng ta có thể tự kết nối wifi khi đến vùng có sóng wifi cần kết nối và tự động chuyển sang sử dụng dữ liệu di động để kết nối khi ra khỏi vùng sóng wifi (Một tính năng thông minh y hệt như trên điện thoại di động của chúng ta).

lên
10 thành viên đã đánh giá bài viết này hữu ích.