Tải bản đầy đủ (.docx) (35 trang)

THIẾT KẾ MÔ HÌNH XE ĐIỀU KHIỂN BẰNG BLUETOOTH VÀ TỰ ĐỘNG TRÁNH VẬT CẢN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (987.64 KB, 35 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA:KỸ THUẬT ĐIỆN – ĐIỆN TỬ

CHUYÊN ĐỀ XỬ LÍ TÍN HIỆU TRUYỀN THÔNG
ĐỀ TÀI:THIẾT KẾ MÔ HÌNH XE ĐIỀU KHIỂN BẰNG
BLUETOOTH VÀ TỰ ĐỘNG TRÁNH VẬT CẢN
TÊN THÀNH VIÊN: ĐỖ HOÀNG CÔNG
VŨ ĐỨC ANH
NGUYỄN SỸ HÙNG
LÊ VĂN AN
LỚP
: D11XLTH
NHÓM
: 10

HÀ NỘI, 2014


MỤC LỤC

2


DANH MỤC CÁC KÍ HIỆU VÀ CHỮ VIẾT TẮT
AC

: Alternating current

: Dòng xoay chiều

AMA : Active member address


ACL : Asynchronous connectionless

: Phi kết nối không đồng bộ.

ARM : Advanced RISC machine

: Cấu trúc ARM.

CPU : Central processing unit

: Bộ xử lý trung tâm.

CSR : Cambridge silicon radio

: Tên công ty công nghệ của Anh.

CES : Consumer electronics show

: Nơi triển lãm các sản phẩm điện
tử tiêu dùng.

CRC : Cyclic redundancy check

: Tên một loại hàm băm.

DC

: Dòng một chiều.

: Direct Current


DMA : Direct memory access

: Truy cập bộ nhớ trực tiếp.

ERD : Enhanced data rate

: Cải thiện kết nối truyền tải.

FEC : Forward error correction

: Sửa lỗi ở phía trước.

ISM : Industrial, scientific, medical

: Băng tần ISM.

IEEE : Institute of electrical and electronics engineers : Viện kỹ nghệ Điện và Điển tử.
IrDA : Infrared data association

: Hiệp hội dữ liệu hồng ngoại.

ISR

: Chương trình phục vụ ngắt.

: Interrupt service routine

JTAG : Joint test action group


: Công nghệ kiểm tra PCB kết hợp
công nghệ Boundary scan.

MAC : Media access control

: Là một định danh duy nhất được
gán cho thiết bị mạng.
3


LMP : Link management protocol

: Giao thức quản lý tuyến.

PC

: Máy tính cá nhân.

: Personal computer

PMA : Packed member address

: Là số 8 bit để phân biệt các
Packed slave với nhau.

UART

: Universal asynchronous receiver/ Transmitter : Bộ truyền / nhận dữ liệu
không đồng bộ.


USART

: Universal synchronous & asynchronous receiver/ Transmitter :
Bộ truyền / Nhận dữ liệu đồng bộ và không đồng bộ.

STM

: Stmicroelectronics

: Tên hãng, viết tắt là STM.

SIG

: Special interest group

: Nhóm quan tâm đặc biệt.

SCO

: Synchronous connection – oriented

: Các dịch vụ truyền thông có liên
kết.

SWD

: Serial wire debug

: Tên một chuẩn.


TS

: Time slots

: Khe thời gian.

WPAN

: Wireless personal area network

: Các mạng cá nhân không dây.

4


DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH

5


LỜI MỞ ĐẨU

Theo dự đoán trong tương lai, robot sẽ là tâm điểm của một cuộc cách mạng lớn
sau Internet. Con người sẽ có nhu cầu sở hữu một robot cá nhân như nhu cầu một máy
tính PC bây giờ. Với xu hướng này, cùng các ứng dụng truyền thống khác của robot trong
công nghiệp, y tế, giáo dục đào tạo, giải trí và đặc biệt là trong an ninh quốc phòng thì thị
trường robot sẽ vô cùng to lớn. Trong công cuộc công nghiệp hóa – hiện đại hóa của đất
nước ta hiện nay, ngành kỹ thuật điện tử là một trong những ngành mũi nhọn giúp cho
Việt Nam có nhiều cơ hội hòa nhập với nền công nghệ trên toàn thế giới. Những công
trình nghiên cứu khoa học hàng năm của các sinh viên, các thạc sỹ, tiến sỹ, giáo sư cũng

từng bước đóng góp nên bức tranh toàn cảnh về sự phát triển của khoa học nước nhà.
Hiện nay, dòng chip xử lý lõi ARM (Acorn RISC Machine) ngày càng được ứng dụng
rộng rãi trong các hệ thống nhúng mà đơn cử là các thiết bị di động do ưu thế tuyệt vời về
tiết kiệm năng lượng, tốc độ xử lý cao và luôn sẵn có các công cụ hỗ trợ phần cứng, phần
mềm. Sự kết hợp chip ARM vào điều khiển Robot ở Việt Nam còn khá mới mẻ, do đó
việc tìm hiểu và nghiên cứu lĩnh vực này là một việc cần thiết. Vì vậy, chúng em quyết
định chọn đề tài của mình là:
“THIẾT KẾ MÔ HÌNH XE ĐIỀU KHIỂN BẰNG BLUETOOTH VÀ
TỰ ĐỘNG TRÁNH VẬT CẢN”

Đồ án tập trung vào việc thiết kế mô hình điều khiển với hai chức năng đó là:
-

Điều khiển từ xa bằng Bluetooth thông qua PC.
Chức năng tự chạy tránh vật cản bằng sòng siêu âm.

Tuy đã có nhiều cố gắng, nhưng do vốn kiến thức và thời gian còn hạn chế nên
không tránh khỏi được những sai sót và khuyết điểm, chúng em rất mong nhận được
những nhận xét, góp ý của cô để đề tài được hoàn thiện.

6


CHƯƠNG I: GIỚI THIỆU VỀ ĐỀ TÀI
1.1

Mục đích chọn đề tài
Sau quãng thời gian học tập, tích lũy kiến thức ở giảng đường đại học,chúng em
muốn vận dụng những kiến thức được học để xây dựng một hệ thống hoàn chỉnh, vì vậy
chúng em đã chọn đề tài “Thiết kế mô hình xe điều khiển bằng bluetooth” với nhiệm vụ

xây dựng mô hình xe điều khiển có khả năng điều khiển bằng Bluetooth thông qua PC,
ngoài ra xe có thể tự chạy tránh vật cản bằng sóng siêu âm, sản phẩm có thể sử dụng để
phục vụ con người thực hiện một số công việc đơn giản như mang café, hút bụi, hoặc có
thể dùng trong công nghiệp như: thám hiểm, đến do thám được những nơi độc hại mà con
người không thể tự đặt chân đến…
1.2
Ý tưởng thiết kế
1.2.1 Thiết bị điều khiển
-

-

Để thực hiện chức năng điều khiển bằng Bluetooth, hệ thống được xây dựng với bộ công
cụ điều khiển trên máy tính bao gồm những phím: Tiến, Lùi, Trái, Phải, Dừng lại,
Connect, Disconnect. Bộ công cụ này có tác dụng điều khiển thiết bị ngoại vi thông qua
sóng Bluetooth trên PC.
Để thực hiện chức năng tự chạy tránh vật cản bằng sóng siêu âm, hệ thống được thiết kế
với một công tắc đặt trên thân xe.
1.2.2 Thiết bị ngoại vi

-

-

Hệ thống sử dụng một module Bluetooth để truyền nhận dữ liệu với PC và được điều
khiển bởi một vi điều khiển. Vi điều khiển có nhiệm vụ chính là xử lý tín hiệu nhận được
từ module Bluetooth và điều khiển hai động cơ DC của xe.
Hệ thống sử dụng ba cảm biến siêu âm, lắp ở ba vị trí: trái, phải, trước của thân xe. Các
cảm biến này có nhiệm vu đo khoảng cách đến vật cản và truyền dữ liệu về vi điều khiển.
Để đơn giản trong việc lập trình, em chọn dùng vi điều khiển STM32, đây là dòng vi điều

khiển quen thuộc, đáp ứng được các yêu cầu của đề tài.

7


CHƯƠNG II: CƠ SỞ LÝ THUYẾT
2.1
Công nghệ Bluetooth
2.1.1 Giới thiệu công nghệ bluetooth
Tên gọi Bluetooth (có nghĩa là "răng xanh") là tên của nhà vua Đan Mạch – Harald
I Bluetooth (Danish Harald Blaatand người đã thống nhất Thụy Điển và Nauy), người
Viking nổi tiếng về khả năng giúp mọi người có thể giao tiếp, thương lượng với
nhau. Thời điểm ban đầu của kỉ nguyên công nghệ không dây Bluetooth, Bluetooth có ý
nghĩa là thống nhất công nghiệp máy tính và viễn thông. Có lẽ những nhà nghiên cứu đã
dùng tên này để nhấn mạnh việc các thiết bị có thể trao đổi, kết nối với nhau mà không
phụ thuộc vào loại máy hay nhà sản xuất.

Hình 2.1. Logo Bluetooth
Bluetooth là công nghệ không dây cho phép các thiết bị điện, điện tử giao tiếp với
nhau trong khoảng cách ngắn, bằng sóng vô tuyến qua băng tần chung ISM (Industrial,
Scientific, Medical) trong dãy tầng 2.40 – 2.48 GHz. Và có khả năng truyền tải giọng nói
và dữ liệu. Phạm vi hoạt động của thiết bị Bluetooth là khoảng 10m. Bluetooth truyền dữ
liệu với tốc độ 1 Mbps, nhanh gấp 3 và 8 lần tốc độ trung bình của cổng song song và
cổng serial tương ứng. Đây là dãy băng tần không cần đăng ký được dành riêng để dùng
cho các thiết bị không dây trong công nghiệp, khoa học, y tế. Bluetooth được thiết kế
nhằm mục đích thay thế dây cable giữa máy tính và các thiết bị truyền thông cá nhân, kết
nối vô tuyến giữa các thiết bị điện tử lại với nhau một cách thuận lợi với giá thành rẻ. Khi
được kích hoạt Bluetooth có thể tự động định vị những thiết bị khác có chung công nghệ
trong vùng xung quanh và bắt đầu kết nối với chúng.
2.1.2 Phương thức hoạt động của Bluetooth

8


2.1.2.1
-

-

-

Cơ chế truyền và sửa lỗi

Kỹ thuật Bluetooth rất phức tạp. Nó dùng kỹ thuật nhảy tần số trong các timeslot (TS),
được thiết kế để làm việc trong môi trường nhiễu tần số radio, Bluetooth dùng chiến lược
nhảy tần để tạo nên sức mạnh liên kết truyền thông và truyền thông thông minh. Cứ mỗi
lần gửi hay nhận một packet xong, Bluetooth lại nhảy sang một tần số mới, như thế sẽ
tránh được nhiễu từ các tín hiệu khác.
So sánh với các hệ thống khác làm việc trong cùng băng tần, sóng radio của Bluetooth
nhảy tần nhanh và dùng packet ngắn hơn. Vì nhảy nhanh và packet ngắn sẽ làm giảm va
chạm với sóng từ lò vi sóng và các phương tiện gây nhiễu khác trong khí quyển.
Có 3 phương pháp được sử dụng trong việc kiểm tra tính đúng đắn của dữ liệu truyền đi
là:
+ Forwad Error Corrrection
+ Automatic Repeat Request
+ Cyclic Redundancy Check

-

-


-

Bluetooth dùng kỹ thuật sửa lỗi tiến FEC (Forward Error Correction) để sửa sai do nhiễu
tự nhiên khi truyền khoảng cách xa. FEC cho phép phát hiện lỗi, biết sửa sai và truyền đi
tiếp (khác với kỹ thuật BEC-Backward Error Control chỉ phát hiện, không biết sửa, yêu
cầu truyền lại).
Giao thức băng tần cơ sở (Baseband) của Bluetooth là sự kết hợp giữa chuyển mạch và
chuyển đổi packet. Các khe thời gian có thể được dành riêng cho các packet phục vụ đồng
bộ. Thực hiện bước nhảy tần cho mỗi packet được truyền đi. Một packet trên danh nghĩa
sẽ chiếm 1 timeslot, nhưng nó có thể mở rộng chiếm đến 3 hay 5 timeslot.
Bluetooth hỗ trợ 1 kênh dữ liệu bất đồng bộ, hay 3 kênh tín hiệu thoại đồng bộ nhau cùng
một lúc, hay 1 kênh hỗ trợ cùng lúc dữ liệu bất đồng bộ và tín hiệu đồng bộ.
2.1.2.2

Ưu nhược điểm của công nghệ Bluetooth

- Ưu điểm
+ Tiêu thụ năng lượng thấp, cho phép ứng dụng được trong nhiều loại thiết bị,
bao gồm cả các thiết bị cầm tay và điện thoại di động.
+ Giá thành ngày một hạ.
+ Khoảng cách giao tiếp cho phép giữa hai thiết bị đầu cuối có thể lên đến 10m
ngoài trời và 5m trong toà nhà.
+ Bluetooth sử dụng băng tần 2,4GHz trên dãy băng tần ISM. Tốc độ truyền
dữ liệu có thể đạt mức tối đa 1Mbps (do sử dụng tần số cao) mà các thiết bị không cần
phải thấy trực tiếp nhau (light-of-sight requirements).

9


+ Dễ dàng trong việc phát triển ứng dụng: Bluetooth kết nối một ứng dụng này

với một ứng dụng khác thông qua các chuẩn “Bluetooth profiles”, do đó có thể độc lập về
phần cứng cũng như hệ điều hành sử dụng.
+ An toàn và bảo mật: được tích hợp với sự xác nhận và mã hoá.
+ Tính tương thích cao, được nhiều nhà sản xuất phần cứng cũng như phần
mềm hỗ trợ.
- NHƯỢC ĐIỂM:
+ Sử dụng mô hình adhoc nên không thể thiếp lập các ứng dụng thời gian thực.
+ Khoảng cách kết nối còn ngắn so với các công nghệ mạng không dây khác.
+ Số thiết bị Active, pack trong cùng một piconet còn hạn chế.
+ Tốc độ truyền không cao.
2.2
Cảm biến siêu âm
2.2.1 Đặc điểm và nguyên lý của cảm biến siêu âm
2.2.1.1

Khái niệm cơ bản

Cảm biến siêu âm được phát triển từ việc sử dụng các đặc điểm cảm biến siêu âm.
Là tần số trên 20kHz sóng cơ học siêu âm từ các kích thích bộ chuyển đổi điện áp wafer
rung động xảy ra, và nó có tần số cao, chiều dài sóng, sự nhiễu xạ nhỏ, đặc biệt là định
hướng tốt, để được hướng dẫn, phổ biến tia tính năng. Siêu âm cho chất lỏng, khả năng
thâm nhập các chất rắn cao, đặc biệt là trong ánh nắng mặt trời đục vững chắc, trong đó
thâm nhập vào sâu hàng chục mét. Tạp chất cuộc gặp gỡ siêu âm hoặc phụ giao diện sẽ
tạo ra phản xạ phản xạ quan trọng hình thành nên tiếng vang, đánh đối tượng chuyển
động có thể tạo ra hiệu ứng Doppler. Vì vậy, kiểm tra siêu âm được sử dụng rộng rãi trong
công nghiệp, quốc phòng, y sinh học và các khía cạnh khác.
Đầu dò siêu âm bao gồm chủ yếu là các wafer áp điện, cả sóng siêu âm, và có thể
nhận được siêu âm. Đầu dò siêu âm công suất thấp để phát hiện nhiều vai trò. Nó có nhiều
cấu trúc khác nhau, được chia thành thăm dò thẳng (sóng dọc), góc đầu dò (sóng), làn
sóng thăm dò bề mặt (sóng), Chiên thăm dò (Chiên), đầu dò kép (một thăm dò phản ánh,

một thăm dò nhận).
Đầu dò siêu âm là cốt lõi của áo khoác hoặc áo nhựa của nó trong một áp lực kim
loại cảm biến siêu âm Chip điện. Vật liệu cấu thành wafer có thể có nhiều. Kích thước
chip, chẳng hạn như đường kính và độ dày khác nhau, vì vậy hiệu suất của từng thăm dò
là khác nhau, chúng ta phải biết trước trước khi sử dụng hiệu quả của nó.
2.2.1.2
-

Đặc điểm của cảm biến siêu âm

Tần số hoạt động: Tần số hoạt động là tần số cộng hưởng của wafer áp điện. Khi điện áp
AC áp dụng cho tần số của nó trên wafer bằng với tần số cộng hưởng, sản lượng năng
lượng tối đa, độ nhạy cao nhất.
10


-

-

Nhiệt độ hoạt động: Điểm Curie của vật liệu áp điện nói chung là cao, đặc biệt là trong
việc chẩn đoán siêu âm sử dụng một đầu dò cảm biến siêu âm. Điện là nhỏ, do đó nhiệt độ
làm việc là tương đối thấp, ta có thể làm việc nhiều giờ mà không thất bại. Siêu âm đầu
dò nhiệt độ y tế là tương đối cao, nhu cầu về một thiết bị làm lạnh riêng biệt.
Độ nhạy: Phụ thuộc chủ yếu vào sản xuất chip của mình. Hệ số điện khớp nối, độ nhạy
cao; Ngược lại, độ nhạy thấp.
2.3

Bộ xử lý ARM – Cortex M3
Dòng vi xử lý ARM Cortex dựa trên một kiến trúc chuẩn đủ để đáp ứng hầu hết

các yêu cầu về hiệu năng làm việc trong tất cả các lĩnh vực trên. Dòng ARM Cortex bao
gồm ba cấu hình khác nhau của kiến trúc ARMv7: cấu hình A cho các ứng dụng tinh vi,
yêu cầu cao chạy trên các hệ điều hành mở và phức tạp như Linux, Android…; cấu hình R
dành cho các hệ thống thời gian thực và cấu hình M được tối ưu cho các ứng dụng vi điều
khiển, cần tiết kiệm chi phí. Bộ vi xử lý Cortex-M3 là bộ vi xử lý ARM đầu tiên dựa trên
kiến trúc ARMv7-M và được thiết kế đặc biệt để đạt được hiệu suất cao trong các ứng
dụng nhúng cần tiết kiệm năng lượng và chi phí, chẳng hạn như các vi điều khiển, hệ
thống cơ ô tô, hệ thống kiểm soát công nghiệp và hệ thống mạng không dây. Thêm vào đó
là việc lập trình được đơn giản hóa đáng kể giúp kiến trúc ARM trở thành một lựa chọn
tốt cho ngay cả những ứng dụng đơn giản nhất.
Tiêu chí quan trọng trong việc lựa chọn bộ vi xử lý là giảm thời gian và chi phí
phát triển, đặc biệt là khả năng phát triển ứng dụng phải thật nhanh chóng và đơn giản. Bộ
vi xử lý Cortex-M3 được thiết kế để đáp ứng mục tiêu trên. Người lập trình không cần
phải viết bất kì mã hợp ngữ nào (assembler code) hoặc cần phải có kiến thức sâu về kiến
trúc để tạo ra một ứng dụng đơn giản. Bộ vi xử lý có mô hình lập trình dựa trên ngăn xếp
đã được đơn giản hoá để tương thích với kiến trúc ARM truyền thống nhưng tương tự với
hệ thống đã được triển khai trên kiến trúc 8 và 16-bit, giúp việc chuyển tiếp đến kiến trúc
32-bit dễ dàng hơn. Ngoài ra một mô hình ngắt dựa trên phần cứng sẽ giúp việc viết các
chương trình xử lý ngắt trở nên đơn giản hơn bao giờ hết, chương trình khởi động có thể
được viết trực tiếp bằng ngôn ngữ C mà không cần bất kì một lệnh assembly nào so với
kiến trúc ARM truyền thống. Các tính năng chính mới trong tập lệnh Thumb-2 bao gồm
việc thực hiện mã lệnh C một cách tự nhiên hơn, thao tác trực tiếp trên các bit, phép chia
phần cứng và lệnh If/Then. Hơn nữa, nhìn từ góc độ phát triển ứng dụng, Thumb-2 tăng
tốc độ phát triển, đơn giản hóa việc bảo trì, hỗ trợ các đối tượng biên dịch thông qua tối
ưu hóa tự động cho cả hiệu suất và mật độ mã mà không cần quan tâm đến việc mã được
biên dịch cho chế độ ARM hoặc Thumb. Kết quả là lập trình viên có thể để mã nguồn của
họ trong ngôn ngữ C mà không cần tạo ra các thư viện đối tượng biên dịch sẵn, có nghĩa
là khả năng tái sử dụng mã nguồn lớn hơn nhiều.
2.3.1 Kiến trúc
11



Bộ vi xử lý Cortex-M3 dựa trên kiến trúc ARMv7-M có cấu trúc thứ bậc. Nó tích
hợp lõi xử lý trung tâm, gọi là CM3Core, với các thiết bị ngoại vi hệ thống tiên tiến để tạo
ra các khả năng như kiểm soát ngắt, bảo vệ bộ nhớ, gỡ lỗi và theo vết hệ thống.
Các thiết bị ngoại vi có thể được cấu hình một cách thích hợp, cho phép bộ vi xử lý
Cortex-M3 đáp ứng được rất nhiều ứng dụng và yêu cầu khắt khe của hệ thống. Lõi của
bộ vi xử lý Cortex-M3 và các thành phần tích hợp (hình 3) đã được thiết kế đặc biệt để
đáp ứng yêu cầu bộ nhớ tối thiểu, năng lượng tiêu thụ thấp và thiết kế nhỏ gọn.


Lõi Cortex-M3

Lõi trung tâm Cortex-M3 dựa trên kiến trúc Harvard, được đặc trưng bằng sự tách
biệt giữa vùng nhớ chứa dữ liệu và chương trình do đó có các bus riêng để truy cập (hình
3). Đặc tính này khác với dòng ARM7 dựa trên kiến trúc Von Neumann sử dụng chung
vùng nhớ để chứa dữ liệu và chương trình, do đó dùng chung bus cho việc truy xuất. Vì
có thể đọc cùng lúc lệnh và dữ liệu từ bộ nhớ, bộ vi xử lý Cortex-M3 có thể thực hiện
nhiều hoạt động song song, tăng tốc thực thi ứng dụng.

Hình 2. 2. Bộ vi xử lý Cortex-M3
Lõi Cortex có cấu trúc đường ống gồm 3 tầng: Instruction Fetch, Instruction
Decode và Instruction Execute. Khi gặp một lệnh nhánh, tầng decode chứa một chỉ thị
nạp lệnh suy đoán có thể dẫn đến việc thực thi nhanh hơn. Bộ xử lý nạp lệnh dự định rẽ
nhánh trong giai đoạn giải mã. Sau đó, trong giai đoạn thực thi, việc rẽ nhánh được giải
12


quyết và bộ vi xử lý sẽ phân tích xem đâu là lệnh thực thi kế tiếp. Nếu việc rẽ nhánh
không được chọn thì lệnh tiếp theo đã sẵn sàng. Còn nếu việc rẽ nhánh được chọn thì lệnh

rẽ nhánh đó cũng đã sẵn sàng ngay lập tức, hạn chế thời gian rỗi chỉ còn một chu kỳ.
Lõi Cortex-M3 chứa một bộ giải mã cho tập lệnh Thumb truyền thống và Thumb-2
mới, một ALU tiên tiến hỗ trợ nhân chia phần cứng, điều khiển logic, và các giao tiếp với
các thành phần khác của bộ xử lý.
2.3.2 Tính năng
Bộ vi xử lý Cortex-M3 là một bộ vi xử lý 32-bit, với độ rộng của đường dẫn dữ
liệu 32 bit, các dải thanh ghi và giao tiếp bộ nhớ. Có 13 thanh ghi đa dụng, hai con trỏ
ngăn xếp, một thanh ghi liên kết, một bộ đếm chương trình và một số thanh ghi đặc biệt
trong đó có một thanh ghi trạng thái chương trình.
Bộ vi xử lý Cortex-M3 hỗ trợ hai chế độ hoạt động (Thread và Handler) và hai
mức truy cập tài nguyên của lõi xử lí (đặc quyền và không đặc quyền), tạo điều kiện cho
việc cài đặt các hệ thống mở và phức tạp nhưng vẫn bảo mật. Những dòng mã không đặc
quyền bị giới hạn hoặc không cho phép truy cập vào một số tài nguyên quan trọng (một
số lệnh đặc biệt và các vùng nhớ nhất định). Chế độ Thread là chế độ hoạt động tiêu biểu
hỗ trợ cả mã đặc quyền và không đặc quyền. Bộ vi xử lý sẽ vào chế độ Handler khi một
ngoại lệ (exception) xảy ra và tất cả các mã là đặc quyền trong chế độ này. Ngoài ra, tất cả
các hoạt động trong bộ vi xử lý đều thuộc một trong hai trạng thái hoạt động: Thumb cho
chế độ thực thi bình thường và Debug cho việc gỡ lỗi.
Bộ vi xử lý Cortex-M3 là một hệ thống ánh xạ bộ nhớ đơn giản, quản lí vùng nhớ
cố định lên tới 4 gigabyte với các địa chỉ định nghĩa sẵn, dành riêng cho mã lệnh (vùng
mã lệnh), SRAM (vùng nhớ), bộ nhớ/thiết bị bên ngoài, thiết bị ngoại vi bên trong và bên
ngoài. Ngoài ra còn có một vùng nhớ đặc biệt dành riêng cho nhà cung cấp.

13


Hình 2. 3 Bản đồ bộ nhớ
Bộ vi xử lý Cortex-M3 cho phép truy cập trực tiếp đến từng bit dữ liệu trong các
hệ thống đơn giản bằng cách thực thi một kỹ thuật được gọi là bit-banding (hình 5). Bộ
nhớ bao gồm hai vùng bit-band (mỗi vùng 1MB) trong SRAM và vùng bí danh 32MB của

vùng không gian ngoại vi (Mỗi byte trong vùng bí danh sẽ tương ứng với một bit trong
vùng bit-band). Mỗi hoạt động nạp/lưu tại một địa chỉ trong khu vực bí danh (alias
region) sẽ trực tiếp tương ứng với hoạt động trên bit được đại diện bởi bí danh đó. Cụ thể,
khi ghi giá trị 0x01 vào một địa chỉ trên vùng bí danh thì có nghĩa là xác định bit tương
ứng sẽ có giá trị là 1, tương tự giá trị 0x00 sẽ xác định bit tương ứng có giá trị 0. Còn đọc
giá trị tại một địa chỉ vùng bí danh có nghĩa là đọc được giá trị của bit tương ứng. Một
vấn đề cần chú ý nữa là hoạt động này mang tính nguyên tử (không chia nhỏ được nữa),
không thể bị gián đoạn bởi các hoạt động khác trên bus.
2.3.3 Kiến trúc tập lệnh Thumb-2
ARMv7-M là cấu hình vi điều khiển của kiến trúc ARMV7 và khác với các kiến
trúc ARM trước đó ở chỗ nó chỉ hỗ trợ tập lệnh Thumb-2. Tập lệnh Thumb-2 là sự pha
trộn giữa tập lệnh 16 và 32 bit, đạt được hiệu suất của các lệnh ARM 32 bit, đồng thời
phù hợp với mật độ mã cũng như tương thích ngược với tập lệnh gốc Thumb 16 bit.
14


Hình 2. 4. Kiến trúc tập lệnh Thumb-2
Trong một hệ thống dựa trên bộ vi xử lý ARM7, việc chuyển đổi nhân xử lý giữa
chế độ Thumb (có lợi về mật độ mã) và ARM (có lợi về mặt hiệu suất) là cần thiết cho
một số ứng dụng. Còn bộ vi xử lý Cortex-M3 có các lệnh 16 bit và 32 bit tồn tại trong
cùng một chế độ, cho phép mật độ mã cũng như hiệu suất đều cao hơn mà không cần phải
chuyển đổi phức tạp. Vì tập lệnh Thumb-2 là tập bao hàm của tập lệnh Thumb 16 bit nên
bộ vi xử lý Cortex-M3 có thể thực thi các đoạn mã trước đây viết cho Thumb 16 bit. Do
được cài đặt tập lệnh Thumb-2 nên bộ vi xử lý Cortex-M3 có khả năng tương thích với
các thành viên khác của dòng ARM Cortex.

15


CHƯƠNG III: THIẾT KẾ MÔ HÌNH XE ĐIỀU KHIỂN

3.1. Sơ đồ khối

Hình 3. 1. Sơ đồ khối hệ thống
Sơ lược chức năng từng khối:
1. Khối động cơ: Bao gồm Mạch cầu H, động cơ DC có chức năng nhận dữ liệu điều khiển

-

-

của vi điều khiển để điều khiển xe chạy
2. Khối xử lý: Bao gồm module Bluetooth, vi điều khiển, cảm biến siêu âm.
Module Bluetooth: dùng Bluetooth và công cụ điều khiển trên máy tính để giao
tiếp với module HC05, và được điều khiển bằng vi điều khiển.
Cảm biến siêu âm: Cảm biến siêu âm SRF04 dùng để đo khoảng cách, bằng cách
sử dụng ngắt ngoài, và bộ timer của vi điều khiển, sẽ tìm được khoảng cách mà cảm biến
trả về.
Vi điều khiển: Nhận các dữ liệu mà các cảm biến trả về để xử lý, điều khiển động
cơ theo thuật toán đã được lập trình.
3. Khối nguồn: Dùng module nguồn 7805 cấp nguồn 5V cho vi điều khiển, mạch
điều khiển động cơ, và các cảm biến siêu âm. Dùng module nguồn LM317 cấp
nguồn 4V cho động cơ.
Module Bluetooth HC-05 sẽ hoạt động ở chế độ kết nối tự động. Khi chạy, ứng dụng sẽ tự
động tìm kiếm địa chỉ của module HC05. Ta phải nhập mật khẩu để có thể kết nối với
module, mặc định mật khẩu đầu tiên của HC-05 là "1234". Khi ấn phím, PC sẽ truyền mã
tương ứng qua Bluetooth đến module HC-05. Em sử dụng vi điều khiển STM32 để nhận
mã và tiến hành điều khiển các động cơ thực hiện chức năng tương ứng của phím.
Cảm biến siêu âm liên tục đo khoảng cách rồi truyền dữ liệu về vi điều khiển. Vi điều
khiển sẽ xử lý rồi điều khiển các động cơ tránh vật cản với thuật toán được thiết lập từ
trước.

16


3.2. Khối xử lý
3.2.1. Giới thiệu dòng vi điều khiển STM32
Những đặc điểm nổi trội của dòng ARM Cortex đã thu hút các nhà sản xuất IC,
hơn 240 dòng vi điều khiển dựa vào nhân Cortex đã được giới thiệu. Không nằm ngoài xu
hướng đó, hãng sản xuất chip ST Microelectronic đã nhanh chóng đưa ra dòng STM32.
STM32 là vi điều khiển dựa trên nền tảng lõi ARM Cortex-M3 thế hệ mới do hãng ARM
thiết kế. Lõi ARM Cortex-M3 là sự cải tiến từ lõi ARM7 truyền thống từng mang lại
thành công vang dội cho công ty ARM.

Hình 3. 2. Kit STM32F103C8T6
3.2.1.1. Kiến trúc STM32

Hình 3. 3. Kiến trúc của STM32 nhánh Performance và Access
17


Nhánh Performance hoạt động với xung nhịp lên đến 72 Mhz và có đầy đủ các
ngoại vi, nhánh Access hoạt động với xung nhịp tối đa 36 Mhz và có ít ngoại vi hơn so
với nhánh Performance.
3.2.1.2. Ưu điểm của STM32
Thoạt nhìn thì các ngoại vi của STM32 cũng giống như những vi điều khiển khác,
như hai bộ chuyển đổi ADC, timer, I2C, SPI, CAN, USB và RTC. Tuy nhiên mỗi ngoại vi
trên đều có rất nhiều đặc điểm thú vị. Ví dụ như bộ ADC 12-bit có tích hợp một cảm biến
nhiệt độ để tự động hiệu chỉnh khi nhiệt độ thay đổi và hỗ trợ nhiều chế độ chuyển đổi.
Mỗi bộ định thời có 4 khối capture compare (dùng để bắt sự kiện với tính năng input
capture và tạo dạng sóng ở ngõ ra với output compare), mỗi khối định thời có thể liên kết
với các khối định thời khác để tạo ra một mảng các định thời tinh vi hơn. Một bộ định

thời cao cấp chuyên hỗ trợ điều khiển động cơ, với 6 đầu ra PWM với dead time (khoảng
thời gian được chèn vào giữa hai đầu tín hiệu xuất PWM bù nhau trong điều khiển mạch
cầu H) lập trình được và một đường break input (khi phát hiện điều kiện dừng khẩn cấp)
sẽ buộc tín hiệu PWM sang một trạng thái an toàn đã được cài sẵn. Ngoại vi nối tiếp SPI
có một khối kiểm tổng (CRC) bằng phần cứng cho 8 và 16 word hỗ trợ tích cực cho giao
tiếp thẻ nhớ SD hoặc MMC.
STM32 có hỗ trợ thêm tối đa 12 kênh DMA (Direct Memory Access). Mỗi kênh có
thể được dùng để truyền dữ liệu đến các thanh ghi ngoại vi hoặc từ các thanh ghi ngoại vi
đi với kích thước từ (word) dữ liệu truyền đi có thể là 8/16 hoặc 32-bit. Mỗi ngoại vi có
thể có một bộ điều khiển DMA (DMA controller) đi kèm dùng để gửi hoặc đòi hỏi dữ liệu
như yêu cầu. Một bộ phân xử bus nội (bus arbiter) và ma trận bus (bus matrix) tối thiểu
hoá sự tranh chấp bus giữa truy cập dữ liệu thông qua CPU (CPU data access) và các
kênh DMA. Điều đó cho phép các đơn vị DMA hoạt động linh hoạt, dễ dùng và tự động
điều khiển các luồng dữ liệu bên trong vi điều khiển.
STM32 là một vi điều khiển tiêu thụ năng lượng thấp và đạt hiệu suất cao. Nó có
thể hoạt động ở điện áp 2V, chạy ở tần số 72MHz và dòng tiêu thụ chỉ có 36mA với tất cả
các khối bên trong vi điều khiển đều được hoạt động. Kết hợp với các chế độ tiết kiệm
năng lượng của Cortex, STM32 chỉ tiêu thụ 2μA khi ở chế độ Standby. Một bộ dao động
nội RC 8MHz cho phép chip nhanh chóng thoát khỏi chế độ tiết kiệm năng lượng trong
khi bộ dao động ngoài đang khởi động. Khả năng nhanh đi vào và thoát khỏi các chế độ
tiết kiệm năng lượng làm giảm nhiều sự tiêu thụ năng lượng tổng thể.
Nếu bạn đã sử dụng một vi điều khiển dựa trên lõi ARM, thì các công cụ phát triển
cho ARM hiện có đã được hỗ trợ tập lệnh Thumb-2 và dòng Cortex. Ngoài ra ST cũng
cung cấp một thư viện điều khiển thiết bị ngoại vi, một bộ thư viện phát triển USB như là
một thư viện ANSI C và mã nguồn đó là tương thích với các thư viện trước đó được công
bố cho vi điều khiển STR7 và STR9. Có rất nhiều RTOS mã nguồn mở và thương mại và
middleware (TCP/IP, hệ thống tập tin, v.v.) hỗ trợ cho họ Cortex. Dòng Cortex-M3 cũng
đi kèm với một hệ thống gỡ lỗi hoàn toàn mới gọi là CoreSight. Truy cập vào hệ thống
CoreSight thông qua cổng truy cập Debug (Debug Access Port), cổng này hỗ trợ kết nối
chuẩn JTAG hoặc giao diện 2 dây (serial wire-2 Pin), cũng như cung cấp trình điều khiển

18


chạy gỡ lỗi, hệ thống CoreSight trên STM32 cung cấp hệ thống điểm truy cập (data
watchpoint) và một công cụ theo dõi (instrumentation trace). Công cụ này có thể gửi
thông tin về ứng dụng được lựa chọn đến công cụ gỡ lỗi. Điều này có thể cung cấp thêm
các thông tin gỡ lỗi và cũng có thể được sử dụng trong quá trình thử nghiệm phần mềm.

(*: Không bao gồm các thiết bị ngoại vi (MPU & ETM) hoặc các thành phần tích hợp
khác)
Bảng 3. 1. So sánh ARM7TDMI-S và Cortex-M3 (100MHz - TSMC 0.18G)

Bảng 3. 2. So sánh hiệu suất giữa ARM7TDMI-S (ARM) và Cortex-M3 (Thumb-2)

19


Bảng 3. 3. So sánh kích thước mã lệnh giữa ARM7TDMI-S (ARM) và Cortex-M3

3.2.2. Module Bluetooth HC-05
3.2.2.1

Đặc điểm kỹ thuật

Module Bluetooth HC-05 được thiết kế để sử dụng giao giao tiếp Bluetooth qua
Serial Port, truyền dữ liệu nối tiếp qua wireless.
Đặc điểm kỹ thuật:
+ Chuẩn Bluetooth: V2.0+EDR- Điện áp hoạt động: 3,3VDC/ 30mA
+ Chế độ hoạt động: Master, Slave, Loopback
+ Kích thước 28mm x 15mm x 2.35mm

+ Tần số: 2.4GHz ISM band
+ Tốc độ: Asynchronous: 2.1 Mbs (Max)/160kbps Synchronous: 1Mbps/1Mbps
+ Bảo mật: Authentication and encryption
+ Giao tiếp: Bluetooth serial port
+ Baud Rate mặc định: 38400, databits: 8, Stopbit: 1, Parity: No. Hỗ trợ tốc
độ baud: 9600,19200,38400,57600,115200,230400,460800.
+ Nhiệt độ làm việc: -20 ~ 75 độ C
+ Độ nhạy: -80dBm

20


Điểm đặc biệt của module bluetooth HC-05 là module có thể hoạt động được ở 2
chế độ: MASTER hoặc SLAVE. Trong khi đó, bluetooth module HC-06 chỉ hoạt động ở
chế độ SLAVE.
+ Ở chê độ SLAVE: ta cần thiết lập kết nối từ smartphone, laptop, usb bluetooth
để dò tìm module sau đó pair với mã PIN là 1234. Sau khi pair thành công, ta đã có 1
cổng serial từ xa hoạt động ở baud rate 9600.
+ Ở chế độ MASTER: module sẽ tự động dò tìm thiết bị bluetooth khác (1 module
bluetooth HC-06, usb bluetooth, bluetooth của laptop...) và tiến hành pair chủ động mà
không cần thiết lập gì từ máy tính hoặc smartphone.
Module bluetooth HC05 có nhiều chức năng
Module bluetooth HC05 được điều khiển bằng tập lệnh AT để thực hiện các tác vụ mong
muốn. Để module bluetooth chuyển từ chế độ thông thường qua điều khiển bằng AT, ta có
2 cách như sau:
+ Cấp nguồn cho module bluetooth (Vcc và Gnd) đồng thời cấp mức điện áp cao (=Vcc)
cho chân KEY của module bluetooth. Khi đó giao tiếp bằng tập lệnh AT với module bằng
cổng Serial (Tx và Rx) với baud rate là 38400. (khuyên dùng)
+ Cấp nguồn cho module bluetooth trước, sau đó cấp mức điện áp cao cho chân KEY của
module bluetooth. Lúc này bạn có thể giao tiếp với module bằng tập lệnh AT với baud

rate là 9600.
Sau khi pair thành công với thiết bị bluetooth khác, đèn trên
module bluetooth HC05 sẽ nhấp nháy chậm cho thấy kết nối Serial đã được thiết lập.
Nguồn cung cấp cho module bluetooth là nguồn từ 3.6V đến 6V. Quá áp sẽ gây
cháy module. Ngoài ra module tương thích với các vi điều khiển 5V mà không cần
chuyển đổi mức giao tiếp 5V về 3.3V như nhiều loại module bluetooth khác.

Hình 3. 4. Module Bluetooth HC-05
3.2.2.2

Tập lệnh AT cho module bluetooth HC-05
21


-

Ta sẽ test giao tiếp với HC05 bằng các lệnh AT sử dụng phần mềm “Hercules Setup
Untility” trên PC.
Trong phần mềm “Hercules Setup Untility”, chọn “Serial”, giao diện giao tiếp với cổng
nối tiếp sẽ hiện ra:

Hình 3. 5. Phần mềm “Hercules Setup Untility”

-

Ta sẽ cấu hình cổng vào, chế độ, khung dữ liệu, tốc độ Baud cho cổng nối tiếp.
Thiết lập module HC05 hoạt động ở chế độ đáp ứng theo lệnh. Ở chế độ này, ta có thể cấu
hình và kiểm soát module của mình.
Kết nối module Bluetooth với PC bằng USB TO COM PL2303 như sau:
+ RX  TX của module HC05.

+ TX  RX của module HC05.
+ VCC  5.0.
+ GND  GND.
- Các câu lệnh:
+ AT$0D$0A
// Test module
+ AT+NAME?$0D$0A
// Kiểm tra tên của module
+ AT+VERSION?$0D$0A
// Kiểm tra phiên bản của module
+ AT+ADDR?$0D$0A
// Lấy địa chỉ của module
+ AT+ROLE?$0D$0A
// Kiểm tra chế độ hoạt động của module
+ AT+PSWD?$0D$0A
// Kiểm tra mật khẩu của module
+ AT+PSWD=””$0D$0A
// Đặt mật khẩu cho module
22


+ AT+RESET$0D$0A
3.2.2.3

// Reset module

Thuật toán

Khi cho chân PA1 của vi điều khiển ở mức thấp (GND) xe sẽ ở chế độ điều khiển từ xa:
Khi gửi chữ ‘t’, module HC05 nhận được chữ “t” gửi trả về cho vi điều khiển thông qua

giao tiếp USART. Vi điều khiển sẽ xuất dữ liệu ra các PIN tương ứng được kết nối với
module L298 (gồm các PIN: PB10,PB11,PB12,PB13,PB14,PB15 nối tương ứng với INA,
INB, INC, IND, ENB, ENA của L298) để điểu khiển 2 động cơ cùng quay tiến về phía
trước, xe sẽ đi tiến.
Tương tự khi gửi chữ ‘l’ 2 động cơ sẽ quay ngược lại để xe lùi.
Khi gửi chữ ‘p’ thì động cơ bên phải sẽ dừng lại, động cơ bên trái sẽ quay, xe sẽ rẽ phải.
Khi gửi chữ ‘r’ thì động cơ bên trái sẽ dừng lại, động cơ bên phải xẽ quay, xe sẽ rẽ trái.
3.2.3 Cảm biến siêu âm SRF04
3.2.3.1

Thông số kỹ thuật

HC-SR04 là module cảm biến siêu âm dùng để đo khoảng cách bằng sóng siêu âm.
Sóng siêu âm là sóng âm thanh thuộc nhóm sóng cơ học với tốc độ lan truyền trong
không khí không cao, lợi dụng điều này mà người ta có thể đo đạt khoảng cách dựa trên
sóng này. Nguyên lý như sau, đầu tiên máy sẽ phát đi một chùm sóng siêu âm, khi lan
truyền nếu gặp được vật cản sóng sẽ dội về máy thu, từ thời gian phát đi và nhận về của
chùm sóng này người ta sẽ tính được khoảng cách của vật cản.

Hình 3. 6. Sóng siêu âm
Thông số kỹ thuật:

23


Hình 3. 7. Cảm biến siêu âm SRF04
+ Nguồn cung cấp: 5V DC
+ Dòng: 30mA (Max 50mA)
+ Tần số hoạt động: 40 KHz
+ Khoảng cách lớn nhất đo được: 3 m

+ Khoảng cách nhỏ nhất đo được: 3 cm
+ Góc quét 45 °
3.2.3.2

Nguyên lý hoạt động
Nguyên lý hoạt động của module SRF04 dựa vào giản đồ thời gian bên dưới:

Hình 3. 8. Giản đổ thời gian module SRF04
24


Chân VCC cấp nguồn +5V
Chân Trig sẽ là chân phát xung cho cảm biến
Chân Echo là chân nhận tín hiệu phản hồi về
Chân GND nối nguồn 0V
Khi chân Trig phát 1 xung có thời gian ít nhất là 10us, nếu cảm biến phát hiện có vật cản
sẽ phản hồi về làm chân Echo lên mức 1. Nếu sau khoảng thời gian 36ms mà không phát
hiện có vật cản thì chân Echo sẽ tự động lên mức 1. Độ rộng xung chân Echo sẽ kéo dài
từ 100us đến 18ms
3.2.3.3
Thuật toán đọc giá trị cảm biến
-

Cho chân Trig lên mức 1. Sau khoảng thời gian t=10us thì cho chân Trig xuống mức 0.
Khi chân Trig xuống mức 0 thì bắt đầu đếm thời gian (Time Start).
Kiểm tra chân Echo lên mức 1 chưa? Nếu chân Echo lên mức 1 rồi thì cho ngừng đếm
thời gian (Time Stop)
Tính toán khoảng cách (quãng đường) bằng cách:
Quãng đường = (Time Start – Time Stop) * vận tốc âm thanh (34400cm/s)
Quãng đường cần tính: quãng đường / 2.


-

Vì quãng đường đi và quãng đường tín hiệu phản hồi về nên cần chia cho 2 để tính được
khoảng cách từ cảm biến đến vật cần đo.
Khi cho chân PA1 của vi điều khiển ở mức cao (mức 1) và cấp nguồn thì xe ở chế độ
tự chạy.
Ta gọi khoảng cách siêu âm đo được ở cảm biến đặt trước, trái, phải thân xe lần lượt
là: kh_cach_trc, kh_cach_trai, kh_cach_phai.
if((0.3<=kh_cach_truoc)&&(kh_cach_truoc<=5)) {truoc=1;}
else truoc=0;
if((0.3<=kh_cach_trai)&&(kh_cach_trai<=5))
else trai=0;
if((0.3<=kh_cach_phai)&&(kh_cach_phai<=5))
else phai=0;

{trai=1;}
{phai=1;}

if((truoc==0)&&(trai==0)&&(phai==0))
{
Encoder_Tien();
}
if((truoc==1)&&(trai==1)&&(phai==1))
{
Encoder_Trai();
Delay_ms(1000);
25



×