xe tự động tránh vật cản
Trang 1BỘ GIAO THÔNG VẬN TẢI
HỌC VIỆN HÀNG KHÔNG VIỆT NAM
Trang 2BỘ GIAO THÔNG VẬN TẢI
HỌC VIỆN HÀNG KHÔNG VIỆT NAM
Khoa Điện Tử Viễn Thông
TÊN ĐỀ TÀI:
XE TỰ ĐỘNG TRÁNH VẬT CẢN
G
iáo v i ê n h ư ớ n g d ẫ n : Sinh v i ê n t hực h i ệ n : ThS NGUYỄN THỊ LINH PHƯƠNG
Trang 3Em xin gửi lời cảm ơn chân thành đến Th.s Nguyễn Thị Linh Phương, đã hướng, giúp đỡ em trong quá trình làm tiểu luận.
Em đã nỗ lực hết mình trong suốt quá trình làm đề tài này nhương với lượng kiến thức còn hạn chế nên tiểu luận còn nhiều thiếu sót Em rất mong nhận được những ý kiến đóng góp của thầy cô và các bạn để đề tài của em được hoàn thiện hơn Em xin chân thành cảm ơn
Trang 4LỜI CAM ĐOAN
Tôi cam đoan rằng tiểu luận tốt nghiệp này là do chính tôi thực hiện, các số liệu và kết quả trong báo cáo là trung thực, không sao chép từ bất kỳ đề tài nghiên cứu khoa học nào
Ngày……tháng……năm 2017 Sinh viên thực hiện
Trang 5NHIỆM VỤ TIỂU LUẬN TỐT NGHIỆP
LỚP: NGÀNH: Điện tử viễn thông
1 Tên tiểu luận tốt nghiệp:
Xe tự động tránh vật cản
2 Nhiệm vụ tiểu luận tốt nghiệp:
Tìm hiểu các linh kiện, bộ xử lý, chương trình điều khiển của xe, thiết kế tạo ra sản phẩm thực tế
3 Ngày giao tiểu luận tốt nghiệp: 6/4/2017
4 Ngày nộp tiểu luận tốt nghiệp: 22/5/2017
5 Họ tên cán bộ hướng dẫn
ThS Nguyễn Thị Linh Phương
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)
Trang 6NHẬN XÉT CỦA GIÁO VIÊN
HƯỚNG DẪN
TpHCM, ngày … tháng …… năm …… Giáo viên hướng dẫn
[Ký tên và ghi rõ họ tên]
Trang 7NHẬN XÉT CỦA GIÁO VIÊN
PHẢN BIỆN
TpHCM, ngày … tháng …… năm …… Giáo viên phản biện
[Ký tên và ghi rõ họ tên]
Trang 8MỤC LỤC
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 Lý do chọn đề tài 1
1.2 Mục tiêu của đề tài 1
1.3 Phương pháp nghiên cứu 1
1.4 Đối tượng và phạm vi nghiên cứu 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1 Arduino UNO R3 3
2.1.1 Giới thiệu tổng quan về Arduino UNO R3 3
2.1.2 Một vài thông số của Arduino UNO R3 4
2.1.3 Vi điều khiển 5
2.1.4 Nguồn 6
2.1.5 Bộ nhớ 8
2.1.6 Các cổng vào/ ra 9
2.1.7 Lập trình cho Arduino 11
2.2 Module điều khiển động cơ L298 12
2.2.1 Thông số kỹ thuật 12
2.2.2 Các chân tín hiệu 12
2.3 Cảm biến siêu âm SRF05 14
2.3.1 Sóng siêu âm 14
2.3.2 Giới thiệu chung 16
2.3.3 Nguyên lý làm việc 17
2.3.4 Lập trình điều khiển 20
2.4 Động cơ điện một chiều 21
2.5 Module bluetooth HC-05 23
Trang 92.5.1 Giới thiệu 23
2.5.2 Các chế độ hoạt động 25
CHƯƠNG 3 THIẾT KẾ VÀ THI CÔNG 27
3.1 Sơ đồ khối và nguyên lý hoạt động của mạch 27
3.2 Lưu đồ thuật toán 30
3.3 Lưu đồ thuật toán chương trình tự động 31
3.4 Sơ đồ nguyên lý 32
3.5 Mạch thực tế 33
3.6 Kết quả kiểm thử mạch 34
CHƯƠNG 4 KẾT LUẬN VÀ KIẾN NGHỊ 35
4.1 Kết luận 35
4.2 Kiến nghị 35
Trang 10PHỤ LỤC HÌNH ẢNH
Hình 2.1 Arduino UNO R3 3
Hình 2.2 Vi điều khiển 5
Hình 2.3 Các cổng vào ra 9
Hình 2.4 Cửa sổ lập trình 11
Hình 2.5 Các chân tín hiệu L298 12
Hình 2.6 Sóng siêu âm 15
Hình 2.7 Cảm biến siêu âm 16
Hình 2.8 Cấu hình SRF 05 ở mode 1 17
Hình 2.9 Nguyên lý hoạt động của SRF 05 ở mode 1 18
Hình 2.10 Cấu hình SRF 05 ở mode 2 19
Hình 2.11 Nguyên lý hoạt động của SRF 05 ở mode 2 19
Hình 2.12 Động cơ DC 21
Hình 2.13 module bluetooth HC-05 23
Hình 2.14 Sơ đồ chân HC - 05 24
Hình 3.1 Sơ đồ khối tổng quát 27
Hình 3.2 Lưu đồ chương trình chính 30
Hình 3.3 Lưu đồ chương trình tự động 31
Hình 3.4 Sơ đồ nguyên lý 32
Hình 3.5 Mạch thực tế 33
Trang 11CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1.1 Lý do chọn đề tài
Hiện nay, đời sống ngày càng được nâng cao, các máy móc tự động ngày càng được sử dụng rộng rãi trong đời sống nhằm phục vụ cho con người với nhiều mục đích khác nhau như: nhà thông minh, nông trại thông minh, máy hút bụi tự động, xe dò đường Do kiến thức còn hạn chế trong bài tiểu luận này em chọn làm xe tự động tránh vật cản Đề tài này có thể thêm chức năng, nâng cấp để tạo ra những robot tự động cao cấp hơn
1.2 Mục tiêu của đề tài
Thiết kế và thi công xe tự động tránh vật cản bằng việc áp dụng cảm biến siêu âm SRF 05, module điềukhiển động cơ L298, module bluetooth HC 05 và vi điều khiển (Arduino Uno) cho quá trình xử lý tín hiệu trong hệ thống
1.3 Phương pháp nghiên cứu
Tìm hiểu về lý thuyết về vi xử lý arduino, cách kết nối, sử dụng cảm biến siêu âm SRF 05 và module điều khiển động cơ L298 và module bluetooth HC 05 với arduino Từ đó kết nối các linh kiện
và sử dụng phần mềm Arduino IDE để viết chương trình điều khiển cho xe hoạt động như ý muốn
Trang 121.4 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu:
+ Vi xử lý: Arduino Uno R3: đóng vai trò là bộ xử lý tring tâm của hệ thống+ Module điều khiển động cơ L298: dùng để kết nối điều khiển hai động cơ DC+ Động cơ DC: Dùng gắn hai bánh để xe di chuyển
+ Động cơ servo: Để gắn cảm biến siêu âm giúp cảm biến có thể quét rộng hơn+ Cảm biến siêu âm SRF 05: Dùng để quét phát hiện các vật cản
+ Module bluetooth HC 05: Kết nối xe với app android dùng để điều khiển xe+ Phần mềm Arduino IDE: Dùng để viết, biên dịch chương trình điều khiển
Phạm vi nghiên cứu: Thi công mô hình và thử nghiệm tại trường
Trang 13CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Arduino UNO R3
2.1.1 Giới thiệu tổng quan về Arduino UNO R3
Arduino board có rất nhiều phiên bản với hiệu năng và mục đích sử dụng khác nhau như: Arduino Mega, Aruino LilyPad Trong số đó, Arduino Uno R3 là một trong những phiên bản được sử dụng rộng rãi nhất bởi chi phí và tính linh động của nó
Do Arduino có tính mở về phần cứng, chính vì vậy bản thân Arduino Uno R3 cũng có những biếnthể của để phù hợp cho nhiều đối tượng khác nhau
Hình 2.1 Arduino UNO R3
Vì vậy, để có thể tận dụng tối đa sức mạnh của Arduino board, ta cần phải biết rõ được thông số
kỹ thuật của từng loại, nắm được các khác biệt giữa các phiên bản từ đó có giải pháp xử lý phù hợp
2.1.2 Một vài thông số của Arduino UNO R3
Vi điều khiển ATmega 328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Trang 14Tần số hoạt động 16MHz
Điện áp vào khuyên dùng 7 – 12 V DC
Điện áp vào giới hạn 6 – 20 V DC
Số chân Digital 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Trang 152.1.3 Vi điều khiển
Hình 2.2 Vi điều khiểnArduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168, ATmega328
Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,… hay những ứng dụng khác
2.1.4 Nguồn
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V Thường thì cấp nguồn bằng pin vuông 9V là hợp lí nhất nếu bạn không có sẵn nguồn từ cổng USB Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, bạn sẽ làm hỏng Arduino UNO
Các chân nguồn:
GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO Khi bạn dùng các thiết bị
sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau
5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA
3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA
Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND
Trang 16 IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân này.
Và dĩ nhiên nó luôn là 5V Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn
RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ
Lưu ý:
Arduino UNO không có bảo vệ cắm ngược nguồn vào Do đó bạn phải hết sức cẩn thận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho Arduino UNO Việc làm chập mạch nguồn vào của Arduino UNO sẽ biến nó thành một miếng nhựa chặn giấy mình khuyên bạn nên dùng nguồn từ cổng USB nếu có thể
Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho các thiết bị khác, không phải là các chân cấp nguồn vào Việc cấp nguồn sai vị trí có thể làm hỏng board Điều này không được nhà sản xuất khuyến khích
Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp dưới 6V có thể làm hỏng board
Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển
Trang 172.1.5 Bộ nhớ
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớ Flash của vi điều khiển Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho
bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này đâu
2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo khi lập trình
sẽ lưu ở đây Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM Tuy vậy, thực
sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà bạn phải bận tâm Khi mất điện, dữ liệu trên SRAM sẽ bị mất
1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): đây giống
như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM
Trang 182.1.6 Các cổng vào/ ra
Hình 2.3 Các cổng vào raArduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối)
Một số chân digital có các chức năng đặc biệt như sau:
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit(giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói một cách đơn
Trang 19giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấm nút Reset, bạn
sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác
2.1.7 Lập trình cho Arduino
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung Và Wiring lại là một biến thể của C/C++ Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++ Riêng mình thì gọi nó là “ngôn ngữ
Arduino”, và đội ngũ phát triển Arduino cũng gọi như vậy Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu
Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm phát triển dự án này đãcũng cấp đến cho người dùng một môi trường lập trình Arduino được gọi là Arduino IDE
(Intergrated Development Environment) như hình dưới đây
Trang 20Hình 2.4 Cửa sổ lập trình
2.2 Module điều khiển động cơ L298
2.2.1 Thông số kỹ thuật
Driver: L298 tích hợp hai mạch cầu H
Điện áp điều khiển: +5V ~ +12V
Dòng tối đa cho mỗi cầu H là: 2A
Điện áp của tín hiệu điều khiển: +5V ~ +7V
Dòng của tín hiệu điều khiển: 0 ~ 36mA
Công suất hao phí: 20W (khi nhiệt độ T = 75oC)
Nhiệt độ bảo quản : -25 oC ~ +130 oC
Trang 212.2.2 Các chân tín hiệu
Hình 2.5 Các chân tín hiệu L298
1 DC motor 1 “+” hoặc stepper motor A+
2 DC motor 1 “-” hoặc stepper motor
A-3 12V jumper – tháo jumper ra nếu sử dụng nguồn trên 12V Jumper này dùng để cấp nguồn cho IC ổn áp tạo ra nguồn 5V nếu nguồn trên 12V sẽ làm cháy IC nguồn
4 Cắm dây nguồn cung cấp điện áp cho motor vào đây từ 6V đến 35V
5 Cắm chân GND của nguồn
6 Ngõ ra nguồn 5V, nếu jumper đầu vào không rút ra
7 Chân Enable của motor 1, chân này dùng để cấp xung PWM cho motor nếu dùng vi điều khiển thì rút jumper ra và cắm chân PWM vào Giữ nguyên khi dùng với động cơ bước
8 IN1
9 IN2
10 IN3
11 IN4
Trang 2212 Chân Enable của Motor 2, chân này dùng để cấp xung cho motor nếu dùng vi điều khiển thì rút jumper ra và cắm chân PWM vào Giữ nguyên khi dùng với động cơ bước
13 DC motor 2 “+”, hoặc stepper motor B+
14 DC motor 2 “-“, hoặc stepper motor
B-2.3 Cảm biến siêu âm SRF05
2.3.1 Sóng siêu âm
Sóng siêu âm (sonar) là một loại sóng cao tầng mà con người không thể nghe thấy được Tuy nhiên, ta có thể thấy được sự hiện diện của sóng siêu âm ở khắp mọi nơi trong tự nhiên Ta có các loàiđộng vật như dơi, cá heo dùng sóng siêu âm để liên lạc với nhau, để săn mồi hay định vị trong không gian
Dựa trên việc quan sát các quan sát hoạt động của chúng, ta thấy được nguyên tắc mà các loài vật sử dụng sóng âm để định vị rất đơn giản, có thể tóm gọn trong 3 bước sau:
Vật chủ phát ra sóng âm
Sóng âm này va chạm với môi trường xung quanh và phản xạ lại
Dựa vào thời gian phát / thu, khoảng cách giữa vật chủ và môi trường xung quanh được tính ra
Việc tính toán khoảng cách cũng còn phụ thuộc rất nhiều vào môi trường truyền dẫn, ví dụ như sóng âm truyền trong môi trường nước hay kim loại sẽ nhanh hơn rất nhiều so với sóng âm được truyền trong môi trường không khí
Trang 23Hình 2.6 Sóng siêu âm
Cảm biến siêu âm SRF05 cũng hoạt động theo như nguyên tắc ở trên, thiết bị gồm có 2 loa - thu
và phát - cùng với 5 chân để kết nối với Arduino Theo tài liệu của nhà sản xuất thì tầm hoạt động tối
đa của cảm biến này nằm trong khoảng 5m
Trang 24Hình 2.7 Cảm biến siêu âm
2.3.2 Giới thiệu chung
Cảm biến SRF 05 là một loại cảm biến khoảng cách dựa trên nguyên lý thu phát siêu âm Cảm biến gồm một bộ phát và một bộ thu sóng siêu âm Sóng siêu
âm từ đầu phát truyền đi trong không khí, gặp vật cản (vật cản đo khoảng cách tới) sẽ phản xạ ngược trở lại và được đầu thu ghi lại Khoảng cách đo được của SRF 05 nằm trong phạm vi từ 4cm đến 300cm
2.3.3 Nguyên lý làm việc
SRF 05 có thể thiết lập 2 mode hoạt động khác nhau thông qua các chân điều khiển Nối hoặc không nối chân OUT xuống GND cho phép cảm biến được điều khiển thông qua giao tiếp dùng 1 chân hay 2 chân IO
Mode 1: Tách chân Trig và chân Echo dùng riêng:
Trong mode này, SRF 05 sử dụng cả 2 chân trig và echo cho việc giao tiếp với vi điều khiển Để xử dụng mode này, ta chỉ cần để trống chân OUT của module, điện trở bêntrong module sẽ kéo chân pin này lên mức 1
Trang 25Hình 2.8 Cấu hình SRF 05 ở mode 1
Để điều khiển SRF 05, ta cẩn cấp cho chân trig một xung điều khiển với độ rộng tối thiểu 10us Sau đó một khoảng thời gian, đầu phát sóng siêu âm sẽ phát ra sóng siêu âm,
vi xử lý tích hợp trên module sẽ tự xác định thời điểm phát sóng siêu âm và thu sóng siêu
âm Vi xử lý tích hợp này sẽ đưa kết qua thu được ra chân echo Độ rộng xung vuông tại chân Echo tỉ lệ với khoảng cách từ cảm biến tới vật thể
Hình 2.9 Nguyên lý hoạt động của SRF 05 ở mode 1
Mode 2:Chân Trig và echo dùng chung
Trang 26Được thiết kế nhằm cho mục đích tiết kiệm chân pin cho vi điều khiển, nên trong mode này, SRF 05 chỉ sử dụng 1 chân pin cho 2 chức năng trig và echo Để sử dụng mode này, ta kết nối chân OUT xuống GND
Hình 2.10 Cấu hình SRF 05 ở mode 2
Để điều khiển SRF 05, đầu tiên xuất một xung với độ rộng tối thiểu 10us vào chân trig – echo Sau đó vi xử lý tích hợp trên cảm biến sẽ phát ra tín hiệu điều khiển đầu phát siêu âm Sau 700us kể từ lúc kết thúc tín hiệu điều khiển, từ chân trig – echo có thể đọc
ra một xung mà độ rộng tỉ lệ với khoảng cách từ cảm biến tới vật cản
Hình 2.11 Nguyên lý hoạt động của SRF 05 ở mode 2