1 ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐỒ ÁN CƠ SỞ 3 ĐỀ TÀI ĐIỀU KHIỂN XE ARDUINO BẰNG ỨNG DỤNG ANDROID Sinh viên thực hiện LÊ THỊ THANH HÀ NGUYỄN THANH TÂM Giảng viên hướng dẫn HÀ[.]
Trang 1ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN CƠ SỞ 3
ĐỀ TÀI: ĐIỀU KHIỂN XE ARDUINO
BẰNG ỨNG DỤNG ANDROID
Sinh viên thực hiện : LÊ THỊ THANH HÀ
NGUYỄN THANH TÂM
Giảng viên hướng dẫn : HÀ THỊ MINH PHƯƠNG
Lớp : 18IT1
Đà nẵng, tháng 07 năm 2020
Trang 2ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN CƠ SỞ 3
ĐỀ TÀI: ĐIỀU KHIỂN XE ARDUINO
BẰNG ỨNG DỤNG ANDROID
Đà nẵng , tháng 07 năm 2020
Trang 3MỞ ĐẦU
Ngày nay, xã hội phát triển mạnh mẽ, kỹ thuật ngày càng hiện đại nên nhu cầu về trao đổi thông tin giải trí, nhu cầu về điều khiển các thiết bị từ
xa, ngày càng cao Và những hệ thống dây cáp phức tạp lại không thể đáp ứng nhu cầu này, nhất là ở những khu vực chật hẹp, những nơi xa xôi, trên các phương tiện vận chuyển Vì vậy công nghệ không dây đã ra đời và phát triển mạnh mẽ, tạo rất nhiều thuận lợi cho con người trong đời sống hằng ngày Trong những năm gần đây công nghệ truyền nhận dữ liệu không dây đang có những bước phát triển mạnh mẽ, góp công lớn trong việc phát triển các hệ thống điều khiển, giám sát từ xa, đặc biệt là các hệ thống thông minh Hiện nay, có khá nhiều công nghệ không truyền nhận dữ liệu không dây như
RF, Wifi, Bluetooth, NFC
Trong đó, Bluetooth là một trong những công nghệ được phát triển từ lâu và luôn được cải tiến để nâng cao tốc độ cũng như khả năng bảo mật Trên thị trường Việt Nam hiện nay chưa có nhiều sản phẩm điều khiển thiết bị không dây, đa số những sản phẩm hiện có đều là nhập khẩu từ nước ngoài với giá thành cao Việc nghiên cứu và thiết kế một bộ sản phẩm điều khiển thiết bị không dây có một ý nghĩa lớn, giúp tăng thêm sự lựa chọn cho người sử dụng, sản phẩm được sản xuất trong nước nên giá thành rẻ và góp phần phát triển các hệ thống điều khiển thông minh Do đó, nhóm quyết định thực hiện
đề tài: “Điều khiển xe Arduino Robot bằng ứng dụng android” Đề tài ứng dụng công nghệ Bluetooth phổ biến trên nhiều thiết bị, đặc biệt điểm mới của đề tài so với các sản phẩm hiện có là điều khiển thông qua hệ điều hành Android giúp tận dụng những thiết bị sử dụng hệ điều hành Android có sẵn của người dùng giúp giảm giá thành sản phẩm, ngoài ra với màn hình hiển thị lớn của điện thoại cho phép hiển thị nhiều thông tin hơn
Trang 4
LỜI CẢM ƠN
……
Xin chân thành cảm ơn quý thầy trong Khoa Công Nghệ thông tin và Truyền Thông đã tận tình giảng dạy, trang bị, cung cấp cho chúng tôi những kiến thức nền tảng, chuyên môn cần thiết giúp chúng tôi hiểu sâu về bộ môn
Xin bày tỏ lòng biết ơn sâu sắc đối với cô Hà Thị Minh Phương đã tận tình hướng dẫn, chỉ bảo và dành nhiều thời gian quý báu để giúp chúng tôi hoàn thành tốt đề tài được giao
Cuối cùng xin gửi lời cảm ơn đến các bạn bè và gia đình đã động viên cổ vũ, đóng góp kiến cho chúng tôi trong suốt quá trình học cũng như thời gian làm báo cáo, giúp chúng tôi hoàn thành báo cáo đúng thời hạn
Mặc dù đã cố gắng hoàn thành công việc được phân công trong phạm vi và khả năng cho phép nhưng chắc không tránh khỏi những thiếu sót Rất mong được sự góp ý của các thầy cô để báo cáo được hoàn chỉnh hơn, đồng thời bổ sung vốn kinh nghiệm cho chúng tôi trên con đường sắp tới
Xin chân thành cảm ơn!
Trang 5NHẬN XÉT
(Của giảng viên hướng dẫn)
….
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Chữ ký giáo viên hướng dẫn
HÀ THỊ MINH PHƯƠNG
Trang 66
Trang 7
MỤC LỤC MỞ ĐẦU 3
LỜI CẢM ƠN 4
NHẬN XÉT 5
MỤC LỤC 6
PHẦN 1: GIỚI THIỆU TỔNG QUAN 7
1.1 Tổng quan 7
1.2 Phương pháp nghiên cứu 7
1.3 Kết cấu đề tài 7
PHẦN 2: NGHIÊN CỨU TỔNG QUAN 8
2.1 Linh kiện cần thiết 8
2.2 Lắp ráp linh kiện 12
PHẦN 3: NGUYÊN LÝ HOẠT ĐỘNG –LẬP TRÌNH 13
3.1 Nguyên lý hoạt động 13
3.2 Lập trình chương trình 13
PHẦN 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 16
4.1 Kết luận 16
4.2 Hướng phát triển 16
PHẦN 5: NHỮNG TÀI LIỆU THAM KHẢO 17
Trang 8PHẦN 1: GIỚI THIỆU TỔNG QUAN
1.1 Tổng quan
Sự xuất hiện của Arduino đã hỗ trợ cho con người rất nhiều trong lập trình và thiết kế, nhất là đối với những người bắt đầu tìm tòi về vi điều khiển mà không có quá nhiều kiến thức, hiểu biết sâu sắc về vật
lý và điện tử Phần cứng của thiết bị đã được tích hợp nhiều chức năng cơ bản và là mã nguồn mở Ngôn ngữ lập trình trên nền Java lại
vô cùng dễ sử dụng tương thích với ngôn ngữ C và hệ thư viện rất phong phú và được chia sẻ miễn phí Chính vì những lý do như vậy nên Arduino hiện đang dần phổ biến và được phát triển ngày càng mạnh mẽ trên toàn thế giới Mạng trong đề tài được thiết kế theo mô hình Master/Slaver, trong đó điện thoại đóng vai trò là Master, Kit Arduino đóng vai trò Slaver Khoảng cách truyền trong mạng này là mười 10m, đó cũng là mặt hạng chế của sóng Wifi
1.2 Phương pháp nghiên cứu
- Ý tưởng về điều khiển xe Arduino Robot bằng ứng dụng android
- Tìm hiểu một số cách làm trên mạng
- Áp dụng kiến thức môn vi điều khiển
1.3 Kết cấu đề tài
- Ngoài phần mở đầu, lời cảm ợn, danh mục tài liệu tham khảo và phụ lục, nội dung chính của đề tài gồm …chương:
Trang 9- Phần 1 Giới thiệu : Giới thiệu tổng quan về phương pháp và cấu trúc của đề tài
- Phần 2 Nghiên cứu tổng quan : Tìm hiểu về các linh kiện cần thiết, cách lắp ráp phù hợp Cung cấp thêm cơ sở lý thuyết và các kiến thức được áp dụng trong đề tài
- Phần 3 Nguyên lý hoạt động – code chương trình
- Phần 4 Hướng phát triển : Đưa ra những điểm kết luận và xác định phương hướng để có thể phát triển trong tương lai
PHẦN 2: NGHIÊN CỨU TỔNG QUAN
2.1 Linh kiện cần thiết
a) Motor driver: L298N
* Thông số kỹ thuật:
Điện áp hoạt động 5 - 35 V
Điện áp logic 4,5 - 7 V
Tối đa hiện tại 2 A mỗi kênh hoặc tối đa 4 A
Trang 10Bộ điều khiển động cơ L298N, điều khiển 2 động cơ DC hoặc 1 động
cơ bước
Bộ điều chỉnh điện áp 78M05
Kích thước mô-đun 43 x 43 x 28 mm
Kích thước lỗ Khoảng cách 3,2 mm, 37 mm
*Cấu tạo
Module điều khiển động cơ L298 là một module gồm 2 mạch cầu
H tích hợp trong IC L298, nhờ đó module này có thể điều khiển
được 2 động cơ riêng biệt
Chân A Enable, B Enable là 2 chân điều khiển tốc độ 2 động cơ
riêng biệt
Input: Là 4 chân điều khiển chiều quay của 2 động cơ
Bộ nguồn 12V-GND-5V: Tùy thuộc loại động cơ mà ta chọn 12V hay 5V
Output A, Output B: Là 2 đầu ra kết nối với 2 động cơ
b) NODEMCU ESP8266
Thông số kỹ thuật:
WiFi 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n
Điện áp hoạt động 3.3V
Điện áp vào 5V thông qua cổng USB
Số chân I/O 11 ( tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0)
Bộ nhớ Flash 4MB
Giao tiếp Cable Micro USB
Hỗ trợ bảo mật WPA/WPA2
Tích hợp giao thức TCP/IP
Lập trình trên các ngôn ngữ C/C++, Micropython, NodeMCU - Lua
* Sơ đồ chân:
Trang 11NodeMCU có tổng cộng 13 chân GPIO
- Tất cả các GPIO đều có trở kéo lên nguồn bên trong (ngoại trừ GPIO16 có trở kéo xuống GND) Người dùng có thể cấu hình kích hoạt hoặc không kích hoạt trở kéo này
- GPIO1 và GPIO3: hai GPIO này được nối với TX và RX của bộ UART0, NodeMCU nạp code thông qua bộ UART này nên tránh sử dụng 2 chân GPIO này
- GPIO0, GPIO2, GPIO15: đây là các chân có nhiệm vụ cấu hình mode cho ESP8266 điều khiển quá trình nạp code nên bên trong NodeMCU (có tên gọi
là strapping pins) có các trở kéo để định sẵn mức logic cho chúng như sau: GPIO0: HIGH, GPIO2: HIGH, GPIO15: LOW Vì vậy khi muốn sử dụng các chân này ở vai trò GPIO cần phải thiết kế một nguyên lý riêng để tránh xung đột đến quá trình nạp code
- GPIO9, GPIO10: hai chân này được dùng để giao tiếp với External Flash của ESP8266 vì vậy cũng không thể dùng được
- Các GPIO còn lại: GPIO 4, 5, 12, 13, 14, 16 có thể sử dụng bình thường
c) PIN sạc 3.7V 18650 5000mAh
Trang 12* Thông số kỹ thuật:
- Điện Áp: 3.7V ( Khi đầy pin lên đến 4.2v DC )
- Khuyến cáo không sử dụng pin < 2.5 V khi đó pin sẽ bị chết và không
sử dụng lại được
- Pin được sử dụng nhiều lần
- Kích Thước: 18x65mm
- Kiểu 18650
- Dung lượng: 5000mAH
- Nhiệt độ làm việc: -20 ~ 45 ℃ ~ 45 ℃ ℃ ~ 45 ℃
d) Động cơ RC Servo 9G
Động cơ servo với góc quay nằm trong khoảng từ 0 – 180o, ứng dụng để lái robot, di chuyển các tay máy lên xuống, quay một cảm biến để quét khắp phòng
Động cơ RC servo là loại động cơ nhỏ, có thể khiển chính xác góc quay bằng phương pháp điều rộng xung PWM (chân có dấu ~) Thông số kỹ thuật:
Kích thước 22.2x11.8.32 mm
Momen xoắn 1.8kg/cm
Tốc độ hoạt động 60 độ trong 0.1 giây
Điện áp hoạt động 4.8V(~5V)
Nhiệt độ hoạt động 0 ºC – 55 ºC
e) Động Cơ Vàng Giảm Tốc DC 3-6V
Trang 13
Thông số kỹ thuật:
Nguồn điện 3-6V
Tỉ lệ truyền 1:48
2.2 Lắp ráp linh kiện
Trang 14PHẦN 3: LẬP TRÌNH
3.1 Sơ đồ
3.2 Lập trình chương trình
3.2.1 Arduino
#include <Servo.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
//define pin of RC servo
#define servoPin D0
//name of Rc Servo
Servo MyServo;
//define pin of L298
#define in3Pin D7
#define in4Pin D8
String command; // string to store app acommand
int speedCar = 1023;
int speedCar_half = 2;
char ssid[] = "PHONG TRO"; //YourNetworkName
char pass[] = "phongtro6789"; //YourPassword
ESP8266WebServer server(80);
void setup()
{
Trang 15pinMode(in3Pin,OUTPUT);
pinMode(in4Pin,OUTPUT);
delay(2000);
Serial.begin(115200);
//setup pin of RC servo
MyServo.attach(servoPin);
//setup anfle of RC servo
MyServo.write(115);
// Connecting WiFi
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
// Starting WEB-server
server.on ( "/", HTTP_handleRoot );
server.onNotFound ( HTTP_handleRoot );
server.begin();
}
void goAhead(){
digitalWrite(in3Pin, LOW);
digitalWrite(in4Pin, HIGH);
}
void goBack(){
digitalWrite(in3Pin, HIGH);
digitalWrite(in4Pin, LOW);
}
void goRight(){
digitalWrite(in3Pin, LOW);
digitalWrite(in4Pin, HIGH);
MyServo.write(50);
}
void goLeft(){
digitalWrite(in3Pin, HIGH);
digitalWrite(in4Pin, LOW);
MyServo.write(70);
}
Trang 16void stopRobot(){
digitalWrite(in3Pin, LOW);
digitalWrite(in4Pin, LOW);
}
void loop()
{
server.handleClient();
command = server.arg("State");
if (command == "F") goAhead();
else if (command == "B") goBack();
else if (command == "L") goLeft();
else if (command == "R") goRight();
else if (command == "S") stopRobot();
// speed
else if (command == "0") speedCar = 400;
else if (command == "1") speedCar = 470;
else if (command == "2") speedCar = 540;
else if (command == "3") speedCar = 610;
else if (command == "4") speedCar = 680;
else if (command == "5") speedCar = 750;
else if (command == "6") speedCar = 820;
else if (command == "7") speedCar = 890;
else if (command == "8") speedCar = 960;
else if (command == "9") speedCar = 1023;
}
void HTTP_handleRoot(void) {
if( server.hasArg("State") ){
Serial.println(server.arg("State"));
}
server.send ( 200, "text/html", "" );
delay(1);
}
Trang 17PHẦN 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
4.1 Kết luận
- Nghiên cứu về NodeMCU ESP8266, module L298, động cơ RC servo
- Thực hiện đề tài
4.2 Hướng phát triển
- Sử dụng thêm một số loại cảm biến khác, như cảm biến siêu âm, cảm biến dò̀ line (xe dò line), cảm biến phát hiện lửa (xe cứu hỏa)…
- Phần cứng module thiết kế theo hướng dễ tiện lợI, dễ sửa chữa
- Ứng dụng điều khiển: phát triển thêm điều khiển bằng giọng noí…
PHẦN 5: NHỮNG TÀI LIỆU THAM KHẢO