1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

XE điều KHIỂN FOLLOW ME (có code)

40 490 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 40
Dung lượng 1,65 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

XE điều KHIỂN FOLLOW ME (có code) ............................................................ XE điều KHIỂN FOLLOW ME (có code) ............................................................ XE điều KHIỂN FOLLOW ME (có code) ............................................................ XE điều KHIỂN FOLLOW ME (có code) ............................................................ XE điều KHIỂN FOLLOW ME (có code) ............................................................ XE điều KHIỂN FOLLOW ME (có code) ............................................................

Trang 1

XE ĐIỀU KHIỂN “FOLLOW ME”

Trang 3

DANH MỤC CÁC BẢNG BIỂU

Trang 4

GPS Global Positioning System

I2C Inter-integrated Circuit

LCD Liquid Crystal Display

NMEA National Marine Electronics Assocition

UART Universal Asynchronous Receiver-Transmitter

Trang 5

CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI

1.1 Giới thiệu

Xe điều khiển là một trong các loại robot quen thuộc, được sử dụng vớinhiều mục đích khác nhau, có thể ứng dụng trong đời sống từ những việc nhỏnhặt đến những việc con người không thể làm được

Hình 1-1 Xe golf “follow me”[5]

Hình 1-2 Cách hoạt động[9]

Trang 6

Xe điều khiển “Follow me” là xe hay robot tự động đi theo người điều khiển,hoạt động nhờ sự định hướng của la bàn số và tọa độ GPS của xe với ngườithông qua đường truyền bluetooth Nó còn có thể phụ giúp mang, di chuyển đồvật.

Xe “Follow me”:

- Ưu điểm: điều khiển qua bluetooth, đáp ứng nhiều nhu cầu, phục vụ đời sống,ứng dụng nhiều mục đích

- Khuyết điểm: hoạt động dựa trên GPS nên chỉ sử dụng ở ngoài trời thoáng, sai

số la bàn nếu gần các thiết bị có trường điện từ

Đề tài sử dụng chíp vi điều khiển Atmega328p, cảm biến la bàn sốHMC5883L, điều khiển qua module bluetooth HC-05, module GPS NEO7

1.2 Mục tiêu đề tài

Thiết kế mạch vi điều khiển Atmega328p, hiểu được cảm biến là bàn số, tìmhiểu dữ liệu GPS cũng như các công thức tính toán, biết được thuật toán hoạtđộng định hướng giữa la bàn và tọa độ GPS

Lấy dữ liệu tọa độ từ module GPS chuyển qua vi điều khiển bằng modulebluetooth, thiết kế xe có thể ứng dụng thực tế

1.3 Hướng thực hiện đề tài

Đọc tài liệu tìm hiểu cảm biến la bàn số HMC5883L, module GPS NEO7, viđiều khiển Atmega328p, lấy thông tin GPS của smartphone

Tìm hiểu thuật toán tìm đường giữa hướng của la bàn số và tọa độ GPS, củng

cố kỹ năng lập trình, đọc hiểu datasheet, tài liệu liên quan, củng cố kỹ năng thiết

kế mạch, vẽ mô hình xe

Trang 7

Xe “Follow Me”

GPS

La bàn HC-05 LCD

GPS HC-05

Vi điều khiển

CHƯƠNG 2 THIẾT KẾ ĐỀ TÀI

1.4 Sơ đồ khối1.1.1 Sơ đồ khối

Hình 2-2 Sơ đồ khối của hệ thống

Trang 8

UART UART

Nguồn (pin)

Bluetooth HC-05Hình 2-3 Sơ đồ khối của xe

Hình 2-2 Sơ đồ khối phía phát

Trang 9

1.1.2 Chức năng các khối

Phần phía phát: sử dụng 1 vi điều khiển đọc giá trị của module GPS, truyềnchuỗi thông tin qua bluetooth bằng module HC-05 Hai module bluetooth tựđộng kết nối với nhau sau vài giây khi cấp nguồn

Khối Bluetooth HC-05: truyền nhận thông tin chuỗi GPS

Khối vi điều khiển: Atmega 328P đọc dữ liệu bluetooth, GPS và cảm biến labàn, xử lý số liệu và xuất tín hiệu điều khiển động cơ

Khối nguồn (pin): sử dụng pin lipo 11,1V cung cấp cho động cơ và toànmạch

Khối L298: nhận tín hiệu điều khiển, sử dụng mạch cầu H điều khiển động

cơ DC

Khối động cơ: sử dụng 2 động cơ DC giảm tốc, là thành phần tạo sự dichuyển của mô hình

1.5 Tìm hiểu các thành phần, module

1.1.3 Vi điều khiển Atmega328P

Đồ án dùng chíp vi điều khiển Atmega328P 8-bit, nhỏ nhẹ, đủ cung cấp cácđiều kiện để đọc, xử lý tín hiệu và điều khiển

Atmega328p là một trong những vi điều khiển họ AVR mới, sản xuất bởihãng ATmel, là 1 trong những dòng vi điều khiển 8 bit nhưng mạnh mẽ, được hỗtrợ bootloader và ngôn ngữ lập trình C,C++

Hình 2-3 Atmega328P [8]

Trang 10

Bảng 2-1 Tóm tắt Atmega328P [8]

- Điện áp hoạt động 1.8-5 V

- Digital I/O pin 14

- PWM Digital I/O Pins 6

- Analog Input Pins 6

- Cường độ dòng điện trên mỗi I/O pin 20 mA

Trang 11

1.1.4 Cảm biến la bàn số HMC5883L

Cảm biến HMC5883L là cảm biến la bàn gồm 3 trục cảm biến điện trở từ và

có bộ chuyển đổi ADC 12 bit

HMC5883L có kích thước nhỏ gọn, dùng để xác định phương hướng, có thểứng dụng trong máy bay điều khiển, điện thoại thông minh, các thiết bị địnhhướng cá nhân, robot tìm đường

Cảm biến la bàn cho phép xuất các dữ liệu thô của 3 trục x, y, z từ đó có thểtính toán dữ liệu theo nhu cầu sử dụng dựa vào datasheet

Cảm biến HMC5883L dùng truyền thông kết nối I2C với vi điều khiển vớitốc độ nhanh 160Hz, độ chính xác cao đến 1 hay 2 độ, độ phân giải tính toán ±8gauss

Giao tiếp I2C (Inter-integrated Circuit): là một chuẩn giao tiếp ở phạm vingắn, tốc độ truyền nhận cao, giao thức kiểu Multi-Master Multi-Slave, chỉ sửdụng hai dây SCL và SDA để truyền nhận dữ liệu, tiết kiệm chân giao tiếp cho

vi điều khiển và có thể nối nhiều thiết bị trên cùng một bus I2C

Cảm biến kết nối với vi điều khiển theo chuẩn giao tiếp I2C, SCL nối vớichân 28, SDA nối với chân 27

Hình 2-4 Cảm biến la bàn số HMC5883L [7]

Cảm biến la bàn số HMC5883L gồm 5 chân, đề tài chỉ dùng 4 chân: 2 chânnguồn với mức điện áp 3-5 V, 2 chân truyền nhận dữ liệu SDA và SCL

Trang 12

1.1.5 GPS (Global Positioning System)

GPS là hệ thống định vị toàn cầu, xác định vị trí dựa trên vị trí của các vệtinh nhân tạo do Hoa Kỳ thiết kế,xây dựng, quản lý và cho phép mọi người sửdụng một số chức năng miễn phí toàn cầu

Trong một thời điểm, tọa độ của một điểm trên bề mặt trái đất sẽ được xácđịnh nếu xác định được khoảng cách từ điểm đó đến ít nhất 3 vệ tinh

Hình 2-5 GPS [5]

Các vệ tinh bay quanh trái đất theo một quỹ đạo chính xác, phát tín hiệuthông tin xuống Các máy thu GPS tiếp nhận dữ liệu và tính toán lượng giác xácđịnh được vị trí người dùng

Máy thu GPS hay các module GPS phải nhận được tín hiệu ít nhất của 3 vệtinh để tính được kinh độ và vĩ độ, càng nhận được nhiều vệ tinh thì càng tínhđược nhiều thông tin của người sử dụng

Đề tài sẽ sử dụng module GPS NEO 7 để thu tín hiệu GPS từ các vệ tinh.Mạch GPS NEO 7 có kích thước nhỏ gọn, tích hợp sẵn anten thu sóng nhưngphải đặt anten ở nơi thoáng đãng không bị chướng ngịa vật che trên đầu

Trang 13

Mạch GPS NEO 7 có độ ổn định và khả năng bắt sóng cao, chuẩn giao tiếpUART với vi điều khiển Mạch sẽ trả về một chuỗi dữ liệu NMEA thu được từ

vệ tinh, từ đó lập trình giải mã chuỗi để tìm được thông tin cần thiết

Hình 2-6 Module GPS NEO 7 [6]

Chuỗi NMEA là 1 chuỗi giao tiếp hay có thể gọi là ngôn ngữ giao tiếp giữacác thiết bị như máy đo vận tốc, hướng gió, la bàn, máy thu GPS do Hiệp hộiđiện tử hàng hải quốc gia Mỹ (National Marine Electronics Assocition) địnhnghĩa và quản lý

Chuỗi NMEA sử dụng chuỗi mã ASCII đơn giản, truyền tuần tự theo mộtchiều duy nhất trong một thời điểm, chuỗi bắt đầu bởi dấu $, các số liệu cáchnhau bởi dấu phẩy và khoảng trắng

Hình 2-7 Chuỗi NMEA [9]

Trang 14

Phân tích chuỗi NMEA:

- GPGGA là Global Positioning System Fix Data chứa các dữ liệu nângcao độ chính xác của vị trí

- UTC Time: thời gian hiện tại

- Checksum: kiểm tra tính hợp lệ của dữ liệu nhận được

Đề tài sẽ sử dụng dữ liệu kinh độ, vĩ độ của GPS để tính toán các thông tin vịtrí dựa vào việc giải mã chuỗi NMEA

1.1.6 Module bluetooth HC-05

Hình 2-8 Module bluetooth HC-05 [3]

Đề tài sẽ sử dụng giao thức bluetooth để truyền nhận tín hiệu giữa ngườidùng và xe; và sử dụng module bluetooth HC-05 do module này có chức năngvừa là slave vừa là master nên có thể dễ dàng áp dụng 1 trong 2 kiểu truyềnnhận

Trang 15

Module HC-05 có tính phổ biến cao, là bluetooth thế hệ 2.0, hoạt động ở tần

số 2.4GHz, khoảng cách truyền khi không có vật cản là 10-12m Module HC-05rất phổ biến hiện nay, được sử dụng nhiều trong các dự án ứng dụng với phạm vinhỏ

- Động cơ có giá đỡ, trục nối bánh xe và sử dụng bánh xe loại 65mm

1.1.8 Nguồn cung cấp

Trang 16

Hình 2-10 Pin lipo 11.1 V [3]

Xe sẽ sử dụng pin lipo 3S là nguồn nuôi chính cho toàn bộ mạch

Dòng xả tối đa của pin là 2.2×25=55A, dung lượng 2200mA, điện áp từ10.6V đến 12.6V, độ bền tốt để hoạt động lâu dài và dễ dàng sạc lại

Ngoài ra, đề tài sẽ sử dụng mạch hạ áp để chuyển từ nguồn pin xuống 5Vcung cấp cho vi điều khiển cùng các module ngoại vi

Trang 17

CHƯƠNG 3 LẬP TRÌNH VÀ THIẾT KẾ HỆ THỐNG

1.6 Mô hình đề tài

Yêu cầu: gửi dữ liệu GPS thông qua bluetooth của 2 module bluetooth

HC-05, đọc và tính toán góc của la bàn số, xử lý dữ liệu GPS của module, tính toán,lập trình xe chạy đến một vị trí định sẵn, lập trình xe chạy theo vị trí người sửdụng

Mục đích: hiểu rõ hệ thống GPS cũng như các cách ứng dụng nó, hiểu đượccác công thức lượng giác tính toán vị trí, điều hướng

1.7 Nguyên lí hoạt động

1.1.9 Sơ đồ nguyên lí

Hình 3-4 Sơ đồ nguyên lí

Trang 19

Bắt đầu

S Kiểm tra kết nối Bluetooth

Kiểm tra dữ liệu GPS S

Trang 20

1.1.11 Nguyên lý hoạt động

Xe điều khiển “Follow me” hoạt động dựa trên thuật toán tìm đường kết hợpgiữa tọa độ vi trí GPS và điều hướng la bàn số, giúp xe có thể nhận biết hướng

đi và khoảng cách đến vị trí người sử dụng điện thoại

Trước hết, người sử dụng và xe phải được kết nối bluetooth với nhau thôngqua module bluetooth HC-05 Sau đó, vi điều khiển phía phát gửi chuỗi GPSsang cho phía xe, giải mã sẽ thu được kinh độ, vĩ độ của người sử dụng

La bàn số sẽ cho ra được góc lệch so với cực Bắc, giống các la bàn thôngthường sẽ chỉ ra các góc tương ứng với 4 hướng Đông, Tây, Nam, Bắc, đề tài sẽquy về -180o - 0o - 180o tương ứng 1 vòng tròn để tiện tính toán

Vi điều khiển đọc, giải mã chuỗi NMEA sẽ lấy được kinh độ, vĩ độ củamodule GPS đặt trên xe Qua đó, chúng ta sẽ có 2 vị trí tọa độ là tọa độ của xe

và tọa độ của điện thoại Xe sẽ chạy tới tọa độ của điện thoại

Đồ án sẽ dùng công thức Haversine tính khoảng cách giữa hai tọa độ địa lý.Hai tọa độ A(lat1,long1) và B(lat2,long2) tương ứng với 2 tọa độ GPS của xe vàđiện thoại

Công thức Havesine được tính toán như sau :

 R là bán kính Trái Đất, quy ước là 6371 km

 ∆lat = lat2 –lat1

 ∆long = long2 – long1

 h = sin2 + cos (lat1)*cos (lat2)*sin

 c = 2* atan2 (, )

 d = R*c, trong đó d là khoảng cách giữa 2 điểm

 Các giá trị tọa độ phải được đổi từ góc sang radian, hàm atan2(x,y) tương đương arctan

Trang 21

Sử dụng công thức tính được khoảng cách giữa xe và người dùng, khi xe điđúng hướng thì khoảng cách sẽ nhỏ dần và đến 1 khoảng cách nhất định sẽ dừnglại Do sai số của cả hai thiết bị GPS nên đồ án sẽ dùng khoảng cách nhỏ hơn 3m

để xe dừng lại

Để biết được hướng hay góc từ xe đến người dùng, đồ án sẽ dùng công thứctính góc xoay (Bearing angle) của 2 tọa độ so với góc Bắc 0o Công thức đượctính như sau :

 x = sin (∆long)*cos (lat2)

 y = cos (lat1)*sin(lat2) – sin(lat1)*cos(lat2)*cos(∆long)

 Góc so với góc 0o = atan2(x, y)*

Khi biết được góc giữa xe và người so với góc Bắc, chúng ta truyền gócbearing vào hệ PID của xe, xe sẽ chạy theo góc bearing được điều chỉnh bởi hệvòng kín PID

1.1.12 Kiểm tra, các bước thực hiện, thiết kế mô hình xe

Viết chương trình đọc giá trị thô 3 trục của la bàn số và tính toán theo 2 trụcsong song với mặt đất để có được góc la bàn từ 0→360 độ Chuyển đổi góc0→180 và -180→0 Tiếp theo, viết chương trình cho xe luôn chạy theo 1 góccho trước dựa theo thuật toán PID và hiệu chỉnh các hệ số PID ổn định

Ở phía phát, khi nhận được tín hiệu GPS, vi điều khiển sẽ lấy một chuỗithông tin GPS để gửi qua bluetooth Có thể thêm một vài điều kiện gửi chuỗithông tin để thích hợp truyền nhận với phía xe

Đối với module GPS NEO7 đặt trên xe di chuyển, chúng ta sẽ kết nối với viđiều khiển theo giao tiếp UART và module sẽ trả về các giá trị 1 giây 1 lần, viếtchương trình giải mã chuỗi NMEA để lấy giá trị vĩ độ, kinh độ

Trang 22

Hình 3-4 Bán kính sai số của GPS NEO7

Hình 3-5 Sai số tọa độ của GPS NEO7

Trang 23

Hình trên cho thấy được độ chính xác của module GPS NEO7 sử dụng phầnmềm chuyên dụng của nhà sản xuất Hình ảnh cho thấy được độ sai số của tọa

độ vị trí gồm vĩ độ và kinh độ; sai số trong khoảng 12m là ổn định Do sai sốkhá lớn so với phạm vi đường truyền của bluetooth nên cũng gây khó khăn việctính toán các giá trị

Sau khi lấy được tọa độ của module GPS, tiền hành viết chương trình cho xechạy tới 1 điểm cố định cho trước tọa độ Sau đó, khi có sự ổn định, chúng ta kếthợp với tọa độ di chuyển nhận được từ bluetooth

Tính toán khoảng cách và góc xoay khi có được 2 tọa độ GPS của xe vàngười dùng, truyền góc xoay vào hệ PID để hệ thống tự điều chỉnh tốc độ động

cơ để xe có the xoay đúng hướng với người dùng

Mô hình xe được vẽ 2D trên AutoCad và nguyên liệu là mica 3mm:

Hình 3-6 Bản vẽ xe

1.1.13 Kết quả, thiết kế, gia công mạch

Trang 24

Sau khi kiểm thử và kết hợp viết chương trình giữa các module, chúng ta sẽ

vẽ mạch in để thu gọn và có hình thức đẹp hơn

Hình 3-7 Mặt dưới của mạch

Hình 3-8 Mặt trên gồm các linh kiện

Mạch được vẽ trên phần mềm Proteus, trên mạch gồm: vi điều khiển, mạch

IC L298 điều khiển động cơ DC và các chuẩn giao tiếp với các module

Trang 25

Hình 3-9 Mô hình xe và mạch phát

Trên xe có gắn thêm màn hình LCD để hiện thị 2 tọa độ GPS, góc la bàn, gócgiữa 2 tọa độ so với cực Bắc và vòng LED để chỉ độ lệch của xe so với góc 0o

Trang 27

Tiếng Việt:

[1] tinh-gps

http://arduino.vn/bai-viet/1257-gps-va-arduino-phan-2-lay-du-lieu-tu-ve-[2] Ngô Diên Tập(NXB Khoa Học Kỹ Thuật 2003) – Kỹ Thuật Vi Điều KhiểnVới AVR

Trang 28

SoftwareSerial ss(10,9);//tx gps nối zo pin 12, rx pin 11

#define addr 0x1E //I2C Address for The HMC5883

#define NUM_LEDS 16 // Number of LEDs on Ring

#define DATA_PIN_RING 13 // Pin 13 connected to RGB RingCRGB leds[NUM_LEDS];

const double RtoD = 180/PI;

const double DtoR = PI/180;

Trang 31

if(b!=0)

{

if (Serial.find("$GNRMC,"))

{

String tempMsg = Serial.readStringUntil('\n');

for (int i = 0; i < tempMsg.length(); i++)

Trang 34

lngfirst = posneg += lngfirst;

bool newData = false;

for (unsigned long start = millis(); millis() - start < 1000;)

float flat, flon;

unsigned long age;

gps.f_get_position(&flat, &flon, &age);

Trang 35

float dy = (Latitude - vidoGPS)*DtoR; //đổi sang radian

float dx = (Longtitude - kinhdoGPS)*DtoR;

float h = sin(dy/2)*sin(dy/2) +cos(vidoGPS*DtoR)*cos(Latitude*DtoR)*sin(dx/2)*sin(dx/2);

Trang 36

lcd.setCursor(12,1);

lcd.print(gocxoay,2);

/*float x = sin(Longtitude-kinhdoGPS)*cos(Latitude);

float y = cos(vidoGPS)*sin(Latitude) sin(vidoGPS)*cos(Latitude)*cos(Longtitude-kinhdoGPS);

Wire.beginTransmission(addr); //start talking

Wire.write(0x02); // Set the Register

Wire.write(0x00); // Tell the HMC5883 to Continuously Measure

static unsigned long lastCompassRead = 0;

unsigned long now = millis();

if ( now - lastCompassRead > 40) {

lastCompassRead = now;

Trang 37

if(goc<0) goc += 2*PI;

if(goc>2*PI) goc -= 2*PI;

goclaban = goc*(RtoD);

gocmoi = int(goclaban);

while (goclaban < -180) goclaban += 360;

while (goclaban > 180) goclaban -= 360;

lcd.setCursor(12,0);

lcd.print(goclaban);

}

}

Trang 39

/**************************** PID theo góc giữa 2 tọa độ

dloi = loi - loitruoc;

pid_out = kp*loi + tongloi + kd*dloi;

pwm1 = int(230 - pid_out); // động cơ bên phải

pwm2 = int(230 + pid_out); // động cơ bên trái

Ngày đăng: 27/02/2018, 10:44

TỪ KHÓA LIÊN QUAN

w