THIẾT KẾ XE ROBOT ĐIỀU KHIỂN BẰNG SMARTPHONE, SỬ DỤNG KIT LAUNCHPAD VÀ LẬP TRÌNH TRÊN MÔI TRƯỜNG ENERGIA Sản phẩm cuối cùng của nhóm em là Mô hình xe robot được điều khiển bởi smart phone thông qua bluetooth, lập trình trên môi trường Energia: gồm có hai chế độ hoạt động chính là chế độ điều khiển bằng tay và chế độ chạy tự động. Ở chế độ điều khiển bằng tay: Các tín hiệu điều khiển ‘tới’, ‘lui’, ‘trái’, ‘phải’, ‘tăng tốc độ’, ‘giảm tốc độ’ được điện thoại gửi đến module bluetooth, rồi thông qua module này đến bộ vi xử lý, điều khiển hoạt động của 2 motor làm xe di chuyển. Ở chế độ tự động: xe sử dụng sóng siêu âm để đo khoảng cách từ xe tới vật cản gần nhất, từ đó đưa ra hướng di chuyển thích hợp. Sản phẩm được xây dựng nhằm hướng tới mục đích sử dụng trong nhiều lĩnh vực quan trọng như: thăm dò địa hình, phát hiện tai nạn ở những nơi con người khó vươn tới được, cứu hộ… Sản phẩm sử dụng một trong nhưng vi xử lý đơn giản và rẻ tiền nhất của TI là kit Launchpad MSP430G2553, thiết kế đơn giản với các module thông dụng như module bluetooth HC05, module siêu âm SFR05, IC cầu H L298… Nhờ vậy mà giá thành sản phẩm thấp. Xe robot có thể được điều khiển bởi bất kì điện thoại nào có chạy hệ điều hành, sử dụng bluetooth; sóng siêu âm sử dụng nguyên lý phản xạ để tránh vật cản. Sản phẩm được lập trình trên môi trường Energia với giao diện đơn giản, gần gũi với người sử dụng, và được hỗ trợ mã nguồn mở bởi một cộng đồng người dùng rất lớn
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM
KHOA ĐIỆN TỬ VIỄN THÔNG
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:
THIẾT KẾ XE ROBOT ĐIỀU KHIỂN BẰNG
SMARTPHONE, SỬ DỤNG KIT LAUNCHPAD VÀ LẬP TRÌNH TRÊN MÔI TRƯỜNG ENERGIA
Tp Hồ Chí Minh ,Tháng 7 năm 2015
Trang 2Lời cam đoan
LỜI CAM ĐOAN
Trang 3- Ở chế độ điều khiển bằng tay: Các tín hiệu điều khiển ‘tới’, ‘lui’, ‘trái’,
‘phải’, ‘tăng tốc độ’, ‘giảm tốc độ’ được điện thoại gửi đến module bluetooth, rồi thông qua module này đến bộ vi xử lý, điều khiển hoạt động của 2 motor làm xe di chuyển Ở chế độ tự động: xe sử dụng sóng siêu âm
để đo khoảng cách từ xe tới vật cản gần nhất, từ đó đưa ra hướng di chuyển thích hợp
- Sản phẩm được xây dựng nhằm hướng tới mục đích sử dụng trong nhiều lĩnh vực quan trọng như: thăm dò địa hình, phát hiện tai nạn ở những nơi con người khó vươn tới được, cứu hộ…
- Sản phẩm sử dụng một trong nhưng vi xử lý đơn giản và rẻ tiền nhất của TI
là kit Launchpad MSP430G2553, thiết kế đơn giản với các module thông dụng như module bluetooth HC05, module siêu âm SFR05, IC cầu H L298… Nhờ vậy mà giá thành sản phẩm thấp Xe robot có thể được điều khiển bởi bất kì điện thoại nào có chạy hệ điều hành, sử dụng bluetooth; sóng siêu âm sử dụng nguyên lý phản xạ để tránh vật cản Sản phẩm được lập trình trên môi trường Energia với giao diện đơn giản, gần gũi với người
sử dụng, và được hỗ trợ mã nguồn mở bởi một cộng đồng người dùng rất lớn
Trang 4Mục lục
MỤC LỤC
LỜI CAM ĐOAN 1
TÓM TẮT ĐỀ TÀI 3
MỤC LỤC 4
1.1 Đặt vấn đề: 5
1.2 Hướng giải quyết: 5
CHƯƠNG II: CƠ SỞ LÝ THUYẾT 2
2.1Vi điều khiển/vi xử lý Launchpad MSP430G2553: 2
2.2 Module bluetooth HC05: 4
2.4 IC L298: 6
CHƯƠNG III: THIẾT KẾ PHẦN CỨNG 9
3.1 Tổng quan thiết kế hệ thống: 9
3.2 Quy trình hoạt động của hệ thống: 10
3.3 Một số hình ảnh về cấu trúc, cơ khí của xe: 11
3.4 Sơ đồ nguyên lý của mạch: 15
3.5 Layout của mạch cầu H điều khiển động cơ: 15
CHƯƠNG IV: THIẾT KẾ PHẦN MỀM 16
4.1 Giới thiệu về ENERGIA: 16
4.2 Phần mềm điều khiển xe robot qua Bluetooth trên điện thoại: 19
4.3 Lưu đồ thuật toán cho hệ thống: 22
4.4 Nội dung code Energia nạp cho Launchpad: 25
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 32
TÀI LIỆU THAM KHẢO: 33
Trang 5CHƯƠNG 1:GIỚI THIỆU ĐỀ TÀI 1.1 Đặt vấn đề:
Thứ nhất, hiện nay, hầu hết các ngành công nghiệp ở nước ta đều có quy mô lớn nhưng chất lượng chưa cao do những hạn chế về khoa học kĩ thuật, máy móc thiết bị còn thô sơ nên năng suất lao động chỉ đạt ở mức trung bình vì lợi nhuận giảm do phải thuê mướn một lượng máy móc rất lớn, các công ty trong nước cũng không tránh khỏi tình trạng đó Ví dụ như ngành khai thác than hay khai thác khoáng sản,trước khi bắt tay vào khai thác thì cần thăm dò địa hình để đặt máy móc Vấn đề đặt ra là với những địa hình đồi núi hoặc đi sâu vào lòng đất mà không có ảnh sáng thì yếu tố an toàn rất bé Và quá trình thuê xe dò địa hình tốn kém về cả thời gian và tài chính
Thứ hai , qua thực tế thì nước ta có rất ít các máy móc có thể can thiệp vào các
Thứ ba, quá trình phát triển khoa học được hiện rõ ráng nhất là sự phát triển của smartphone,ngày càng tiện dụng và phổ biến Nhưng nếu chỉ để nghe,gọi,hay các tính năng thông dụng khác thì ý nghĩa smartphone chưa đủ lớn Để can thiệp nhiều hơn vào đời sống con người,chúng ta dùng smartphone như một “đũa phép”,điều khiển những vật xung quanh
Do đó,để đáp ứng nhu cầu cấp bách hiện tại và làm tăng yếu tố an toàn cho con người cũng như tận dụng sự phổ biến của smartphone , nhóm chúng em đã bắt tay vào thực hiện đề tài : “THIẾT KẾ XE ROBOT ĐIỀU KHIỂN BẰNG SMARTPHONE
VÀ TỰ ĐỘNG DÒ ĐƯỜNG
1.2 Hướng giải quyết :
Mục tiêu đặt ra cho đề tài là cần thiết kế ra một chiếc xe có khả năng dò đường như một robot tự động,phát hiện được các vật cản trên đường và có thể điều khiển chuyển động thông qua smartphone Các yêu cầu đặt ra là xe phải hoạt động ổn định
Với các yêu cầu đặt ra,nhóm chúng em đã tìm tòi và ứng dụng thành công module Bluetooth HC-05 để giao tiếp với điện thoại,nhận dữ liệu từ điện thoại,đưa vào trung tâm xử lý nhằm điều khiển xe robot theo ý muốn Trong trường hợp địa hình khuất tầm nhìn, tối tăm, nguy hiểm, cách xa người điều khiển thì vấn đề tự dò đường, phát hiện vật cản và đảm bảo an toàn là rất quan trọng Nhóm em khắc phục điều này bằng cách cho xe robot hoạt động ở chế độ tự động, dùng cảm biến siêu âm SRF05 có khả năng phát hiện vật cản ở tầm xa khoảng từ 3-4m, từ đó xe sẽ tự đưa ra
Trang 6Chương 2: Cơ sở lý thuyết
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Vi điều khiển/vi xử lý Launchpad MSP430G2553:
Vi điều khiển (Micro controller unit – MCU ) là đơn vị xử lý nhỏ, nó được tích hợp toàn bộ các bộ nhớ như ROM , RAM , các port truy xuất , giao tiếp
Trang 7Chương 2: Cơ sở lý thuyết
3
Chân số 1 là chân cấp nguồn Vcc ( ký hiệu trên chip là DVCC ) , ở đây nguồn cho chip chỉ được cấp ở mức 3,3V, nếu cấp nguốn cao quá mức này thì chip có thể hoạt động sai hay cháy chip
Chân 20 là chân nối cực âm (0V)
Chân reset : Chính là chân số 16 RST, dấu gạch ngang trên đầu có nghĩa là chân này tích cực ở mức thấp Mục đích củaviệc reset là nhằm cho chương trình chạy lại từ đầu
Mạch dao động: Cũng giống như những dòng vi điều khiển khác thì MSP430 cũng hỗ trợ người dùng thạch anh ngoài ( external crystal ), nhưng thạch anh ngoại vi cho phép chỉ có thể lên tới 32,768 kHz mà thôi, và tín hiệu này được mắc trên 2 chân 18 và 19 Nhưng MSP430 lại hỗ trợ thạch anh nội có thể lên đến 16Mhz, tùy vào cách khai báo trong lập trình Và mặc định của chip là thạch anh nội Như vậy thì chúng ta không cần thiết phải sử dụng mạch dao động ngoại cho chip giống như những dòng khác
c) Sơ đồ các khối trên kit LaunchPad :
Trang 8
Chương 2: Cơ sở lý thuyết
2.2 Module bluetooth HC05:
Tổng quan :
Bluetooth module SLAVE cho phép vi điều khiển kết nối với các thiết bị ngoại vi: smartphone, laptop, usb bluetooth thông qua giao tiếp Serial gửi và nhận tín hiệu 2 chiều
Module bluetooth được tích hợp trên board cho phép ta sử dụng nguồn từ 3.5V đến 6V cung cấp cho board mà không cần lo lắng về chênh lệch điện áp 3V - 5V gây hỏng board
Bluetooth module gồm 6 chân theo thứ tự: KEY, VCC, GND, TX, RX, STATE Đây là module bluetooth SLAVE nghĩa là ta không thể chủ động kết nối bằng vi điều khiển, mà cần sử dụng smartphone, laptop, bluetooth usb để dò tín hiệu và kết nối từ smartphone, laptop, bluetooth usb, Sau khi kết nối thành công, ta có thể gửi và nhận tín hiệu từ vi điều khiển đến các thiết bị này
Hình ảnh của module bluetooth:
a) Bảng biểu diễn kết nối bluetooth với launchpad:
Trang 9Chương 2: Cơ sở lý thuyết
5
Nhiệm vụ:
Module Bluetooth làm nhiệm vụ nhận dữ liệu từ smartphone và đưa dữ liệu vào kit MSP430LAUNCHPAD để bắt đầu xử lý và điều khiển động cơ của xe
Yêu cầu: Baud rate = 9600
2.3 Cảm biến siêu âm SRF05:
a) Tổng quan về cảm biến siêu âm SRF05:
Cảm biến SRF05 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 Vận tốc truyền âm thanh trong không khí là một giá trị xác định trước, ít thay đổi Do đó nếu xác định được
khoảng thời gian từ lúc phát sóng siêu âm tới lúc nó phản xạ về đầu thu sẽ quy đổi được khoảng cách từ cảm biến tới vật thể Cảm biến SRF05 cho khoảng cách đo từ 3cm tới 3m
SRF05 có thể thiết lập cách hoạt động thông qua các chân điều khiển
MODE Nối hoặc không nối chân MODE 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
Ở đây, ta dùng MODE 1 ( chân MODE để trống )
Trang 10Chương 2: Cơ sở lý thuyết
Hình vẽ biểu diễn sự điều khiển SRF05
Từ hình vẽ mô tả trên, để điều khiển SRF05 ở MODE1 cần cấp cho chân TRIGGER 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 modun 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 quả 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 vẽ cho IC L298
Trang 11
Chương 2: Cơ sở lý thuyết
7
Biểu diễn sơ đồ khối của IC L298
Tóm tắt chức năng các chân của L298:
+ 4 chân INPUT: IN1, IN2, IN3, IN4 được nối lần lượt với các chân 5,
7, 10, 12 của L298 Đây là các chân nhận tín hiệu điều khiển
+ 4 chân OUTPUT: OUT1, OUT2, OUT3, OUT4 (tương ứng với các
chân INPUT) được nối với các chân 2, 3, 13, 14 của L298 Các chân này
sẽ được nối với động cơ
+ Hai chân ENA và ENB dung để điều khiển các mạch cầu H trong
L298 Nếu ở mức logic “1” (nối với nguồn 5V) thì cho phép mạch cầu H hoạt động, nếu ở mức logic “0” thì mạch cầu H không hoạt động
Cách điều khiển chiều quay với L298:
+ Khi ENA = 0: Động cơ không quay với mọi đầu vào + Khi ENA = 1:
INT1 = 1; INT2 = 0: động cơ quay thuân
INT1 = 0; INT2 = 1: động cơ quay nghịch
INT1 = INT2: động cơ dừng ngay tức thì
(tương tự với các chân ENB, INT3, INT4)
Trang 12Chương 2: Cơ sở lý thuyết
b.) Sơ đồ mắc IC L298 với động cơ DC:
Trang 13 Khối điều khiển bởi Smart Phone: sử dụng phần mềm bluetooth để gửi
đi các tín hiệu điều khiển di chuyển tới/lui, trái/phải; chọn mode điều khiển bằng tay/mode tự động; tăng/giảm tốc độ…
Khối module bluetooth HC05: cho phép kết nối giữa MSP430 với điện thoại, nhận tín hiệu điều khiển từ người sử dụng đưa đến vi điều khiển
Khối cảm biến siêu âm SRF05: được dùng ở mode điều khiển tự động của xe, dùng cảm biến khoảng cách từ xe tới vật cản dựa trên nguyên lý
Trang 14để điều khiển 2 động cơ DC về chiều quay cũng như tốc độ quay
Khối IC L298 điều khiển động cơ: gồm 2 mạch cầu H bên trong, phụ thuộc tín hiệu ra từ vi xử lý được đưa đến các chân In1, In2, In3, In4 mà chiều quay và tốc độ của 2 động cơ là khác nhau
o In1 = 1, In2 = 0: động cơ quay thuận
o In1 = 0, In2 = 1: động cơ quay nghịch
o In1 = In 2: động cơ dừng quay
3.2 Quy trình hoạt động của hệ thống:
Xe có 2 mode hoạt động được chọn bởi người dùng thông qua phần mềm bluetooth trên điện thoại:
a) Mode điều khiển bằng tay:
Các tín hiệu điều khiển ‘tới’, ‘lui’, ‘trái’, ‘phải’, ‘xoay’, ‘tăng tốc độ’, ‘giảm tốc độ’ được điện thoại gửi đến module bluetooth, rồi thông qua module này đến
bộ vi xử lý ( chính là các dữ liệu kiểu int được lưu trong biến data_bt )
Tùy thuộc vào dữ liệu điều khiển mà vi xử lý xuất ra tín hiệu thích hợp đến các chân đầu vào của IC cầu H L298, điều khiển hoạt động của 2 motor làm xe di chuyển
b) Mode điều khiển tự động:
Ở chế độ này sẽ không sử dụng chức năng điều khiển di chuyển tới/lui, trái/phải bằng tay nữa Mà xe sẽ tự đo khoảng cách từ nó đến vật cản gần nhất, rồi
từ đó đưa ra quyết định về hướng di chuyển tiếp theo
Xe sử dụng sóng siêu âm từ đầu phát của cảm biến siêu âm truyền đi trong không khí, khi 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 Vận tốc truyền âm thanh trong không khí là một giá trị xác định trước, ít thay đổi Do đó từ khoảng thời gian xác định được từ lúc phát sóng siêu âm tới lúc nó phản xạ về đầu thu sẽ quy đổi được khoảng cách từ cảm biến tới vật thể
o Nếu ‘khoảng cách’ > 20cm: xe di chuyển tới
o Nếu 10cm < ‘khoảng cách’ < 20cm xe rẽ trái hoặc rẽ phải
Nếu ‘khoảng cách’ < 10cm: xe di chuyển lùi
Trang 15Chương 3: Thiết kế phần cứng
11
3.3 Một số hình ảnh về cấu trúc, cơ khí của xe:
Trang 16Chương 3: Thiết kế phần cứng
Trang 17Chương 3: Thiết kế phần cứng
13
Trang 18Chương 3: Thiết kế phần cứng
Trang 19Chương 3: Thiết kế phần cứng
15
3.4 Sơ đồ nguyên lý của mạch:
3.5 Layout của mạch cầu H điều khiển động cơ:
Trang 20Energia được xây dựng như một phiên bản của Wiring/Arduino IDE, nhưng thay vì lập trình trên board Arduino, Energia hỗ trợ cho các board Texas Instruments, Stellaris và TivaC Launchpad
Energia có môi trường lập trình rất đơn giản và thân thiện với người sử dụng Điều này giúp người dùng có thể tạo ra những ứng dụng dễ dàng hơn trên Launchpad mà không cần phải hiểu chi tiết về phần cứng
Giao diện sử dụng của Energia
Thêm một ưu điểm nữa là Energia có môi trường mã nguồn mở liên tục được cập nhật
và phát triển bởi cộng đồng người dùng rất lớn trên thế giới, tạo cơ hội thuận lợi cho bất kì ai đều có thể tiếp cận được các mã nguồn mở, từ đó phát triển nên ứng dụng cho riêng mình
4.1.2 Giới thiệu sơ lược các thành phần của một chương trình Energia:
Trang 21 Boolean Operators; && (and), || (or), ! (not)
Bitwise Operators: &, |, ^, ~, <<, >>
- Values:
Constants: HIGH | LOW, INPUT | OUTPUT, INPUT_PULLUP| INPUT_PULLDOWN, true | false, integer constants, floating point constants
Data Types: void, boolean, char, unsigned char, byte, int, unsigned int, word, long, unsigned long, float, double, string, String, array
- Functions:
Digital I/O: pinMode(), digitalWrite, digitalRead()
Analog I/O: analogReference(), analogRead(), analogWrite()
Time: millis(), micros(), delay(), delayMicroseconds()
Math: min(), max(), abs(), constrain(), map(), pow(), sqrt()
Interrupts: interrupts(), noInterrupts()
4.1.3 Lập trình chương trình nháy LED dùng Energia:
- Đầu tiên kết nối Launchpad với máy tính qua cổng USB
- Từ cửa sổ chương trình Enegia: Tools > Board > LaunchPad w/MSP430G2553 (16 MHz)
- Có thể sử dụng chương trình nháy LED từ rất nhiều ví dụ có sẵn của Energia như sau: File > Examples > 1 Basics > Blink
- Complie chương trình trình bằng cách nhấn nút “checkmark button”
- Download code xuống Launchpad bằng cách nhấn nút “arrow button”
Trang 22Chương 4: Thiết kế phần mềm
- Hình minh họa như sau:
Trang 23Chương 4: Thiết kế phần mềm
19
4.2 Phần mềm điều khiển xe robot qua Bluetooth trên điện thoại:
Phần mềm trên có tên Bluetooth SPP
Để kết nối với Module HC 05 thì nhấn CONNECT, nhấp vào “HC-05” và nhấn
CONNECT
Khi kết nối thành công sẽ có thông báo: “Connect with: HC-05”
Khi nhấn các nút:
Trang 24Chương 4: Thiết kế phần mềm
Nút lên: gởi mã ‘1’, xe chạy thẳng
Nút xuống: gởi mã ‘2’, xe chạy lùi
Nút trái: gởi mã ‘3’, xe rẽ trái
Nút phải: gởi mã ‘4’, xe rẽ phải
Nút dừng: gửi mã ‘5’ xe dừng
Nút tròn: gởi mã ‘6’, giảm tốc độ
Nút vuông: gởi mã ‘7’, tăng tốc độ
Nút tam giác: gởi mã ‘8’, chuyển đổi giữa hai chế độ điều khiển bằng tay và tự động
Để cài đặt độ nhạy khi gởi, chọn CONFIG => Send Delay, chọn 100ms
Trang 25Chương 4: Thiết kế phần mềm
21
Trang 26Chương 4: Thiết kế phần mềm
4.3 Lưu đồ thuật toán cho hệ thống:
Trang 27Chương 4: Thiết kế phần mềm
23
4.3.1 Lưu đồ thuật toán cho các chương trình con:
Trang 28Chương 4: Thiết kế phần mềm
4.3.2 Lưu đồ chương trình con để xe robot chạy tự động:
Trang 29Chương 4: Thiết kế phần mềm
25
4.4 Nội dung code Energia nạp cho Launchpad:
unsigned int nadc=0;
float temp_C=0.0;
float temp_F=0.0;
int pwm_level=7000; //mức băm xung
int pwm_level_stand=6000; //mức băm xung chuẩn
int distance; //khoảng cách xe đến vật cản (cm)
//hc 06
int data_bt; //dữ liệu hc06 nhận được
//srf 05
int trig=P2_3; //trig là chân phát xung kích cho srf05
int echo=P2_4; //chân đọc thời gian tồn tại mức cao để tính khoảng cách
//đầu vào IC cầu H điều khiển động cơ
ADC10CTL0 |= ENC + ADC10SC;
//thiết lập các chân OUTPUT
Trang 32digitalWrite(trig,LOW); // phát xung kích 10us
distance=pulseIn(echo,HIGH,1500)/58;// đo xung cao trên chân echo và tính khoảng cách