Cách làm xe điều khiển từ xa bằng Arduino
Bạn là một người bắt đầu tìm hiểu về arduino đơn giản và đangcần một dự án đơn giản để thực hành mà chưa biết lựa chọn dự án nào để thực hành thì hôm nay Linh Kiện Điện Tử 3M sẽ giới thiệu đến các bạn một project đơn giản là làm một chiếc xe điều khiển từ xa bluetooth bằng smartphone, kháhay ho để bạn vừa có thể vọc vạch vựa học và vừa chơi. Show Bạn đang xem: Hướng dẫn làm xe điều khiển từ xa bằng điện thoại Cùng bắt tay vào làm luôn nhé: Chuẩn Bị Linh Kiện Làm Xe Điều Khiển Từ Xa Bluetooth:01Động cơ giảm tốc vàng01Arduino uno R301Module Bluetooth HC0501Module L298 Mạch Cầu H Điều Khiển Động Cơ DC01Mica, 04 bánh xe02pin 18650 Hình 1: Sơ đồ mạch điều khiển xe bluetooth Bước 1: lắp động cơ giảm tốc vào bánh xe Bước 2: Gắn bánh xe đã được lắp động cơ giảm tốc vào khung xe. Xem thêm: Danh Sách 5 Mẫu Xe Moto Giá Rẻ Dưới 30 Triệu Đồng Dân Việt Phát Thèm Bước 3:Lắp encoder vào động cơ giảm tốc như hình bên dưới Bước 4: Hàn dây cho động cơ giảm tốc, hàn 2 đầu dây và 2 là đồng trên động cơ Bước 5: lắp Arduino uno R3, Module Bluetooth HC05, Module L298 Mạch Cầu H Điều Khiển Động Cơ DC lên khung xe và kết nối dây như hình 1. Download code tại đây: Lưu ý: Khi nạp chương trình cho Arduino, cầnphải gỡ 2 dây gắn vào Tx và Rx trên board Arduino. Sau khi nạp code xong bạncắm 2 dây kia vào vị trí Rx và Tx vào lại. Vậy là đã xong rồi. Chúc các bạn thành công!Hyvọng qua bài này, các bạn sẽ có thể tự mình sáng tạo thêm những chiếc xe, robot điều khiển bằng bluetooth hay ho và hoành tráng hơn nhiều nữa nhé Combo xe 3 bánh điều khiển bluetooth, thường được sử dụng trong dạy học STEM, thi đấu, giải trí, mạch khả năng hoạt động lên tới 3h, khi không còn sử dụng vào mục đích chính người dùng có thể thay đổi sang combo khác như: kết hợp với module dò line làm xe dò line, dò line tránh vật cản, kết hợp với cảm biến siêu âm làm cảm biến tránh vật cản,.. Danh sách sản phẩm sử dụng trong combo
Lưu ý: combo này là tự ráp, quý khách chỉ cần đấu nối và nạp code theo đúng sơ đồ là chạy, quý khách có thể chỉnh sửa lại code để tối ưu hơn Sơ đồ đấu nối của Combo tự làm xe 3 bánh bluetooth ArduinoĐấu nguồn
Đấu tín hiệu:
App hỗ trợ Car Bluetooth RC Một số lỗi khi test: Hỏi: Đã kết nối bluetooth trên app, đèn rx trên arduino có nháy liên tục nhưng điều khiển không chạy? Tl: Thử điều chỉnh lại tốc độ trên app Hỏi: Nếu bấm chạy tới mà xe chạy lùi? Tl: Ta đảo cực của 2 động cơ lại Hỏi: Nếu bấm qua trái mà xe chạy qua phải hoặc bấm qua phải mà xe chạy qua trái ? Tl: Ta đổi bên của động cơ Video demo: Code test: #include <SoftwareSerial.h> int bluetoothTx = 2; // định nghĩa chân 2 là chân truyền tín hiệu int bluetoothRx = 3;// định nghĩa chân 3 là chân nhận tín hiệu SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); //định nghĩa chân motor trái #define enA 6 #define in1 13 #define in2 12 //định nghĩa chân motor phai #define enB 5 #define in3 11 #define in4 10 char blue;// là vùng nhớ để so sánh kí tự trả về từ app. int spd; // giá trị băm xung( tay ga). void setup() { bluetooth.begin(115200); bluetooth.print("$$$"); delay(100); bluetooth.println("U,9600,N"); bluetooth.begin(9600); Serial.begin(9600); // định nghĩa chân tín hiệu in & out pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); } // dieu khien motor trai void motor_left(int spd, byte dir) { if (dir == 0) // motor trái quay tới { digitalWrite(in2, LOW); digitalWrite(in1, HIGH); } else if (dir == 1) // motor trái quay lùi { digitalWrite(in2, HIGH); digitalWrite(in1, LOW); } else if (dir == 2)// motor trái đứng yên { digitalWrite(in1, LOW); digitalWrite(in2,LOW); } analogWrite(enA, spd );// băm xung cho motor trái } // dieu khien motor phai void motor_right(int spd, byte dir) { if (dir == 0) // motor phải quay tới { digitalWrite(in4, LOW); digitalWrite(in3, HIGH); } else if (dir == 1)//motor phải quay lùi { digitalWrite(in4, HIGH); digitalWrite(in3, LOW); } else if (dir ==2)//motor phải dứng lùi { digitalWrite(in3, LOW); digitalWrite(in4, LOW); } analogWrite(enB, spd ); } void forw () // chay { Serial.println("motor di thang"); motor_right(spd , 0); motor_left( spd , 0); } void back () // chay lui { Serial.println("motor di lui"); motor_right(spd , 1); motor_left( spd , 1); } void right () // quay trai { Serial.println("motor cua trai"); motor_right(spd , 0); motor_left( spd , 2); } void left () // quai phai { Serial.println("motor cua phai"); motor_left( spd , 0); motor_right( spd , 2); } void leftforw () // quai phai cham { Serial.println("motor cua phai nhanh"); motor_left( spd-20 , 0); motor_right( spd , 0); } void rightforw () // quai phai nhanh { Serial.println("motor cua trai nhanh "); motor_left( spd , 0); motor_right( spd-20 , 0); } void rightback () // quai phai nhanh { Serial.println("motor cua trai nhanh "); motor_left( spd , 1); motor_right( spd-20 , 1); } void leftback () // quai phai nhanh { Serial.println("motor cua trai nhanh "); motor_left( spd-20 , 1); motor_right( spd , 1); } void tack() { motor_left( spd , 2); motor_right( spd , 2); } void robot_android() { if ( bluetooth.available() ) { blue =bluetooth.read(); Serial.println("gia tri cua blue la "); Serial.println(blue); } switch (blue ){ case('0'): spd = 70; case('1'): spd = 80; break; case('2'): spd = 100; break; case('3'): spd = 110; break; case('4'): spd = 127; break; case('5'): spd = 140; break; case('6'): spd = 160; break; case('7'): spd = 200; break; case('8'): spd = 230; break; case('9'): spd = 255; break; case ('S'): tack(); break; case ('F'): forw(); break; case ('B'): back(); break; case ('L'): left(); break; case ('R'): right(); break; case ('H'): leftback(); break; case ('J'): rightback(); break; case ('I'): rightforw(); break; case ('G'): leftforw(); break; } } void loop() { robot_android(); // put your main code here, to run repeatedly: } |