loc4atnt gửi vào
- 47801 lượt xem
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óp. 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 .
II. Làm Thôi
1. Chuẩn Bị
-
Mắt thu hồng ngoại.
-
Module điều khiển động cơ L298.
-
Nguyên liệu làm xe: Khung xe mica, 2 motor hộp số có bánh xe, bánh xe đa hướng, vài con ốc nữa là xong. (Bạn có thể sử dụng 4 motor cũng được, mình dùng 2 cái cho tiết kiệm :D). Các bạn có thể tham khảo các bài viết:
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):
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 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
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(); } }