BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN VIỄN THÔNG
BÁO CÁO ĐỒ ÁN 2
TÊN ĐỀ TÀI:
Thiết kế xe điều khiển bằng sóng RF
sử dụng module Arduino
Giảng viên hướng dẫn : Th.S NGUYỄN DUY KHANH
Sinh viên thực hiện : PHÙNG TẤN HUY HOÀNG
Lớp: DHDTVT8A
Khóa: 2012-2016
Thành phố Hồ Chí Minh, tháng 05 năm 2016
BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN VIỄN THÔNG
BÁO CÁO ĐỒ ÁN 2
TÊN ĐỀ TÀI:
Thiết kế xe điều khiển bằng sóng RF
sử dụng module Arduino
Giảng viên hướng dẫn : Th.S NGUYỄN DUY KHANH
Sinh viên thực hiện : PHÙNG TẤN HUY HOÀNG
Lớp: DHDTVT8A
Khóa: 2012-2016
Thành phố Hồ Chí Minh, tháng 05 năm 2016
LỜI MỞ ĐẦU
Cùng với sự phát triển của các ngành kỹ thuật điện tử, công nghệ thông tin,
ngành kỹ thuật điều khiển, các thiết bị thuộc họ vi điều khiển do con người tạo ra
ngày càng thông minh hơn. Khả năng mở rộng chương trình kết hợp với nhiều
module khác nhau giúp cho chúng có thể xử lí những công việc phức tạp. Không
chỉ đóng vai trò quan trọng trong công nghiệp, vi điều khiển còn có thể tích hợp
cho các robot để thực hiện nhiệm vụ ở những nơi nguy hiểm, độc hại, hay những
nơi con người không thể tới được. Với lợi thế giá thành ngày càng rẻ và tính linh
động cao, các thiết bị này đã hỗ trợ con người rất nhiều vấn đề trong cuộc sống.
Dựa trên ý tưởng tạo ra một thiết bị điều khiển từ xa tích hợp nhiều loại
cảm biến có thể truyền dữ liệu thu thập được về cho người dùng, em đã chọn đề tài
“Thiết kế xe điều khiển bằng sóng RF sử dụng module Arduino”. Và để dễ dàng
thu nhận dữ liệu, việc điều khiển sẽ được thực hiện trên máy tính. Do thời gian có
hạn nên thiết bị chỉ được tích hợp module cảm biến hồng ngoại nhưng hoàn toàn có
thể kết hợp với những module khác phù hợp với nhu cầu người sử dụng.
LỜI CẢM ƠN
Đề tài được thực hiện dưới sự hướng dẫn của Th.S Nguyễn Duy Khanh.
Trong quá trình thực hiện đề tài em xin chân thành cám ơn Th.S Nguyễn Duy
Khanh đã tận tình hướng dẫn cũng như tạo điều kiện mọi mặt cho em thực hiện đề
tài một cách tốt nhất. Em cũng gửi lời cảm ơn tất cả các thầy cô trong khoa Công
nghệ điện tử đã xây dựng nền tảng kiến thức giúp em hoàn thiện đề tài.
Mặc dù đã cố gắng hoàn thiện đề tài với tất cả sự nỗ lực, nhưng cũng không
tránh khỏi được những sai sót. Kính mong nhận được sự góp ý tận tình của thầy cô
để em có thể rút kinh nghiệm hoàn thiện sản phẩm của mình hơn.
Cuối cùng em xin chúc quý thầy cô lời chúc sức khỏe và lời cảm ơn chân
thành nhất !
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Bộ môn :
Điện Tử Viễn Thông
Giảng viên hướng dẫn : ThS. Nguyễn Duy Khanh
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
TP. Hồ Chí Minh, ngày……, tháng 04, năm 2016
Xác nhận của giảng viên hướng dẫn
NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN
Bộ môn : Điện Tử Viễn Thông
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
TP. Hồ Chí Minh, ngày……, tháng 04, năm 2016
Xác nhận của giảng viên phản biện
MỤC LỤC
LỜI MỞ ĐẦU..........................................................................................................
LỜI CẢM ƠN..........................................................................................................
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN..................................................
NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN.....................................................
Danh mục hình ảnh
Chương 1: Cơ sở lý thuyết
Chương 1: Cơ sở lý thuyết
1.1.
Tổng quan về phương thức truyền dẫn
1.1.1.
Tổng quan về sóng vô tuyến (RF)
Trong một phiên truyền thông, vì tận cùng bản chất của dữ liệu là bao gồm
các bit 0 và 1, bên phát dữ liệu cần có một cách thức để gửi các bit 0 và 1 để gửi
cho bên nhận. Một tín hiệu xoay chiều hay một chiều tự nó sẽ không thực hiện tác
vụ này. Tuy nhiên, nếu một tín hiệu có thay đổi và dao động, dù chỉ một ít, sự thay
đổi này sẽ giúp phân biệt bit 0 và bit 1. Lúc đó, dữ liệu cần truyền sẽ có thể gửi và
nhận thành công dựa vào chính sự thay đổi của tín hiệu. Dạng tín hiệu đã điều chế
này còn được gọi là sóng mang (carrier signal). Có ba thành phần của dạng sóng
có thể thay đổi để tạo ra sóng mang, đó là biên độ, tần số và pha. Tất cả các dạng
truyền thông dùng sóng vô tuyến đều dùng vài dạng điều chế để truyền dữ liệu. Để
mã hóa dữ liệu vào trong một tín hiệu gửi qua sóng AM/FM, điện thoại di động,
truyền hình vệ tinh, ta phải thực hiện một vài kiểu điều chế trong sóng vô tuyến
đang truyền.
1.1.2.
Biên độ và bước sóng
Truyền thông vô tuyến bắt đầu khi các sóng vô tuyến được tạo ra từ một
máy phát và gửi đến máy nhận ở một vị trí khác. Sóng vô tuyến tương tự như các
cơn sóng hay gặp ở biển, hồ, sông, suối. Sóng có hai thành phần chính: biên độ và
bước sóng. Biên độ là chiều cao, độ mạnh hoặc công suất của sóng. Bước sóng là
khoảng cách giữa hai điểm tương tự trên hai đỉnh sóng liên tiếp. Biên độ và bước
sóng cả hai đều là các thuộc tính của sóng.
1.1.3.
Pha
Pha là một thuật ngữ mang tính tương đối. Nó chỉ ra mối quan hệ giữa hai
sóng có cùng tần số. Để xác định pha, bước sóng được chia thành 360 phần, được
gọi là độ.
1.2.
Chuẩn giao tiếp nối tiếp RS232
Chuẩn giao tiếp RS232 là một trong những kỹ thuật được sử dụng rộng rãi
hiện nay để nối ghép các thiết bị ngoại vi với máy tính. Nó là một chuẩn giao tiếp
nối tiếp dùng định dạng không đồng bộ, kết nối nhiều nhất là hai thiết bị , chiều dài
kết nối lớn nhất cho phép để đảm bảo dữ liệu là 15m, tốc độ 20kbit/s (Ngày nay
có thể cao hơn)
Trang 9
Chương 1: Cơ sở lý thuyết
1.2.1. Các đặc tính kỹ thuật của chuẩn RS-232 theo tiêu chuẩn TIA/EIA-232F
Bảng 1. 1. Đặc tính kĩ thuật RS-232:
Chiều dài cable cực đại
Tốc độ dữ liệu cực đại
Điện áp ngõ ra cực đại
Điện áp ngõ ra có tải
tiếp Trở kháng tải
Điện áp ngõ vào
Độ nhạy ngõ vào
Trở kháng ngõ vào
15m (50 Feet)
20 Kbps
± 25V
± 5V đến ± 15V
3K đến 7K
± 15V
± 3V
3K đến 7K
Các tốc độ truyền dữ liệu
thông dụng trong cổng nối
là: 1200bps, 4800bps,
9600bps và 19200bps.
Các mức điện áp của
đường truyền:
Mức điện áp của tiêu chuẩn RS232( chuẩn thường được dùng bây giờ) được
mô tả như sau:
-
Mức logic 0: +3V, +12V (SPACE)
-
Mức logic 1: -12V, -3V. (MARK)
Các mức điện áp trong phạm vi -3V đến 3V là trạng thái chuyển tuyến.
Chính vì từ -3V tới 3V là phạm vi không được định nghĩa, trong trường hợp thay
đổi giá trị logic từ thấp lên cao hoặc từ cao xuống thấp, một tín hiệu phải vượt qua
quãng quá độ trong một thời gian ngắn hợp lý. Điều này dẫn tới việc phải hạn chế
về điện dung của các thiết bị tham gia và của cả đường truyền. Tốc độ truyền dẫn
tối đa phụ thuộc vào chiều dài của dây dẫn.Đa số các hệ thống hiện nay chỉ hỗ trợ
với tốc độ 19,2kbit/s.
Định dạng của khung truyền dữ liệu theo chuẩn RS-232 như sau:
Trang 10
Chương 1: Cơ sở lý thuyết
Hình 1. 1. Dạng tín hiệu truyền RS232
Dạng tín hiệu truyền mô tả như sau (truyền ký tự A):
Truyền dữ liệu qua cổng nối tiếp RS232 được thực hiện không đồng bộ. Do
vậy nên tại một thời điểm chỉ có một bit được truyền. Bộ truyền gửi một bit bắt
đầu (bit start) để thông báo cho bộ nhận biết một ký tự sẽ được gửi đến trong lần
truyền bit tiếp theo. Bit này luôn bắt đầu bằng mức 0. Tiếp theo đó là các bit dữ
liệu (bit data) được gửi dưới dạng mã ASCII (có thể là 5,6,7, hay 8 bit dữ liệu)
sau đó là một Parity bit (kiểm tra bit chẵn, lẻ hay không) và cuối cùng là bit stop
(còn gọi là bit dừng) có thể là 1 hay 2 bit Stop.
1.2.2. Tốc độ baud
Đây là một tham số đặc trưng của RS232. Tham số này chính là đặc
trưng cho quá trình truyền dữ liệu qua cổng nối tiếp RS232 là tốc độ truyền nhận
dữ liệu hay còn gọi là tốc độ bit. Tốc độ bit được định nghĩa là số bit truyền được
trong thời gian 1 giây. Tốc độ bit này phải được thiết lập ở bên phát và bên nhận
đều phải có tốc độ như nhau ( tốc độ giữa vi điều khiển và máy tính phải chung
nhau một tốc độ truyền bit).
Ngoài tốc độ bit còn một tham số để mô tả tốc độ truyền là tốc độ baud. Tốc độ
baud liên quan đến tốc độ mà phân tử mã hóa dữ liệu được sử dụng để diễn tả bit
được truyền, còn tốc độ bit thì phản ánh tốc độ mà phân tử mã hóa dữ liệu được sử
Trang 11
Chương 1: Cơ sở lý thuyết
dụng để diễn tả bit được truyền. Vì một phần tử báo hiệu sự mã hóa một bit nên
khi đó hai tốc độ bit và tốc độ baud là phải đồng nhất.
Một số tốc độ baud thường dùng: 50, 75, 110, 150, 300, 600, 1200, 2400,
4800, 9600, 19200, 28800, 38400, 56000, 115200. Trong thiết bị thường
dùng tốc độ baud là 19200.
1.2.3. Bit chẵn lẻ hay Parity bit
Đây là bit kiểm tra lỗi trên đường truyền. Thực chất của quá trình kiểm tra
lỗi khi truyền dữ liệu là bổ sung thêm dữ liệu được truyền để tìm ra hoặc sửa một
số lỗi trong quá trình truyền. Do đó trong chuẩn RS232 sử dụng một kỹ thuật kiểm
tra chẵn lẻ. Một bit chẵn lẻ được bổ sung vào dữ liệu được truyền để thấy số lượng
các bit “1” được gửi trong một khung truyền là chẵn hay lẻ.
Một Parity bit chỉ có thể tìm ra một số lẻ các lỗi như là 1, 3, 5, 7, 9… Nếu như
một bit mắc lỗi thì bit Parity bit sẽ trùng giá trị với trường hợp không mắc lỗi vì
thế không phát hiện ra lỗi. Do đó trong kỹ thuật mã hóa lỗi này không được sử
dụng trong trường hợp có khả năng một vài bit bị mắc lỗi.
1.3.
Giao tiếp Uart
Thuật ngữ USART trong tiếng anh là viết tắt của cụm từ: Universal
Synchronous & Asynchronous serial Reveiver and Transmitter, nghĩa là bộ truyền
nhận nối tiếp đồng bộ và không đồng bộ. Cần chú ý rằng khái niệm USART (hay
UART nếu chỉ nói đến bộ truyền nhận không đồng bộ) thường để chỉ thiết bị phần
cứng (device, hardware), không phải chỉ một chuẩn giao tiếp. USART hay UART
cần phải kết hợp với một thiết bị chuyển đổi mức điện áp để tạo ra một chuẩn giao
tiếp nào đó. Ví dụ, chuẩn RS232 (hay COM) trên các máy tính cá nhân là sự kết
hợp của chip UART và chip chuyển đổi mức điện áp. Tín hiệu từ chip UART
thường theo mức TTL: mức logic high là 5, mức low là 0V. Trong khi đó, tín hiệu
theo chuẩn RS232 trên máy tính cá nhân thường là -12V cho mức logic high và
+12 cho mức low (tham khảo hình 1). Chú ý là các giải thích trong tài liệu này
theo mức logic TTL của USART, không theo RS232.
Trang 12
Chương 1: Cơ sở lý thuyết
Hình 1. 2. Tín hiệu tương đương của UART và RS232.
1.3.1. Truyền thông nối tiếp:
Giả sử bạn đang xây dựng một ứng dụng phức tạp cần sử dụng nhiều vi
điều khiển (hoặc vi điều khiển và máy tính) kết nối với nhau. Trong quá trình làm
việc các vi điều khiển cần trao đổi dữ liệu cho nhau, ví dụ tình huống Master
truyền lệnh cho Slaver hoặc Slaver gởi tín hiệu thu thập được về Master xử lí…Giả
sử dữ liệu cần trao đổi là các mã có chiều dài 8 bits, bạn có thể sẽ nghĩ đến cách
kết nối đơn giản nhất là kết nối 1 PORT (8 bit) của mỗi vi điều khiển với nhau,
mỗi line trên PORT sẽ chịu trách nhiệm truyền/nhận 1 bit dữ liệu. Đây gọi là cách
giao tiếp song song, cách này là cách đơn giản nhất vì dữ liệu được xuất và nhận
trực tiếp không thông qua bất kỳ một giải thuật biến đổi nào và vì thế tốc độ truyền
cũng rất nhanh. Tuy nhiên, như bạn thấy, nhược điểm của cách truyền này là số
đường truyền quá nhiều, bạn hãy tưởng tượng nếu dữ liệu của bạn có giá trị càng
lớn thì số đường truyền cũng sẽ nhiều thêm. Hệ thống truyền thông song song
thường rất cồng kềnh và vì thế kém hiệu quả. Truyền thông nối tiếp sẽ giải quyết
vần đề này, trong tuyền thông nối tiếp dữ liệu được truyền từng bit trên 1 (hoặc
một ít) đường truyền. Vì lý do này, cho dù dữ liệu của bạn có lớn đến đâu bạn cũng
chỉ dùng rất ít đường truyền. Hình 2 mô tả sự so sánh giữa 2 cách truyền song song
và nối tiếp trong việc truyền con số 187 thập phân (tức 10111011 nhị phân).
Hình 1. 3. Truyền 8 bit theo phương pháp song song và nối tiếp.
Một hạn chế rất dễ nhận thấy khi truyền nối tiếp so với song song là tốc độ
truyền và độ chính xác của dữ liệu khi truyền và nhận. Vì dữ liệu cần được “chia
Trang 13
Chương 1: Cơ sở lý thuyết
nhỏ” thành từng bit khi truyền/nhận, tốc độ truyền sẽ bị giảm. Mặt khác, để đảm
bảo tính chính xác của dữ liệu, bộ truyền và bộ nhận cần có những “thỏa hiệp” hay
những tiêu chuẩn nhất định. Phần tiếp theo trong chương này giới thiệu các tiêu
chuẩn trong truyền thông nối tiếp không đồng bộ.
Khái niệm “đồng bộ” để chỉ sự “báo trước” trong quá trình truyền. Lấy ví
dụ thiết bị 1 (tb1) kết với với thiết bị 2 (tb2) bởi 2 đường, một đường dữ liệu và 1
đường xung nhịp. Cứ mỗi lần tb1 muốn send 1 bit dữ liệu, tb1 điều khiển đường
xung nhịp chuyển từ mức thấp lên mức cao báo cho tb2 sẵn sàng nhận một bit.
Bằng cách “báo trước” này tất cả các bit dữ liệu có thể truyền/nhận dễ dàng với ít
“rủi ro” trong quá trình truyền. Tuy nhiên, cách truyền này đòi hỏi ít nhất 2 đường
truyền cho 1 quá trình (send or receive). Giao tiếp giữa máy tính và các bàn phím
(trừ bàn phím kết nối theo chuẩn USB) là một ví dụ của cách truyền thông nối tiếp
đồng bộ.
Khác với cách truyền đồng bộ, truyền thông “không đồng bộ” chỉ cần một
đường truyền cho một quá trình. “Khung dữ liệu” đã được chuẩn hóa bởi các thiết
bị nên không cần đường xung nhịp báo trước dữ liệu đến. Ví dụ 2 thiết bị đang
giao tiếp với nhau theo phương pháp này, chúng đã được thỏa thuận với nhau rằng
cứ 1ms thì sẽ có 1 bit dữ liệu truyền đến, như thế thiết bị nhận chỉ cần kiểm tra và
đọc đường truyền mỗi mili-giây để đọc các bit dữ liệu và sau đó kết hợp chúng lại
thành dữ liệu có ý nghĩa. Truyền thông nối tiếp không đồng bộ vì thế hiệu quả hơn
truyền thông đồng bộ (không cần nhiều lines truyền). Tuy nhiên, để quá trình
truyền thành công thì việc tuân thủ các tiêu chuẩn truyền là hết sức quan trọng.
Chúng ta sẽ bắt đầu tìm hiểu các khái niệm quan trọng trong phương pháp truyền
thông này.
1.3.2. Baud rate (tốc độ Baud):
Như trong ví dụ trên về việc truyền 1 bit trong 1ms, bạn thấy rằng để việc
truyền và nhận không đồng bộ xảy ra thành công thì các thiết bị tham gia phải
“thống nhất” nhau về khoảng thời dành cho 1 bit truyền, hay nói cách khác tốc độ
truyền phải được cài đặt như nhau trước, tốc độ này gọi là tốc độ Baud. Theo định
nghĩa, tốc độ baud là số bit truyền trong 1 giây. Ví dụ nếu tốc độ baud được đặt là
19200 thì thời gian dành cho 1 bit truyền là 1/19200 ~ 52.083us.
1.3.3. Frame (khung truyền):
Do truyền thông nối tiếp mà nhất là nối tiếp không đồng bộ rất dễ mất hoặc
sai lệch dữ liệu, quá trình truyền thông theo kiểu này phải tuân theo một số quy
cách nhất định. Bên cạnh tốc độ baud, khung truyền là một yếu tốc quan trọng tạo
nên sự thành công khi truyền và nhận. Khung truyền bao gồm các quy định về số
bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra
như Parity, ngoài ra số lượng các bit trong một data cũng được quy định bởi
khung truyền. Hình 1 là một ví dụ của một khung truyền theo UART, khung truyền
này được bắt đầu bằng một start bit, tiếp theo là 8 bit data, sau đó là 1 bit parity
dùng kiểm tra dữ liệu và cuối cùng là 2 bits stop.
Trang 14
Chương 1: Cơ sở lý thuyết
1.3.4. Start bit:
Start là bit đầu tiên được truyền trong một frame truyền, bit này có chức
năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới. Ở
module USART trong AVR, đường truyền luôn ở trạng thái cao khi nghỉ (Idle), nếu
một chip AVR muốn thực hiện việc truyền dữ liệu nó sẽ gởi một bit start bằng cách
“kéo” đường truyền xuống mức 0. Như vậy, với AVR bit start là mang giá trị 0 và
có giá trị điện áp 0V (với chuẩn RS232 giá trị điện áp của bit start là ngược lại).
start là bit bắt buộc phải có trong khung truyền.
1.3.5. Data:
Data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận.
Data không nhất thiết phải là gói 8 bit, với AVR bạn có thể quy định số lượng bit
của data là 5, 6, 7, 8 hoặc 9 (tương tự cho hầu hết các thiết bị hỗ trợ UART khác).
Trong truyền thông nối tiếp UART, bit có ảnh hưởng nhỏ nhất (LSB – Least
Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng là bit có
ảnh hưởng lớn nhất (MSB – Most Significant Bit, bit bên trái).
1.3.6. Parity bit:
Parity là bit dùng kiểm tra dữ liệu truyền đúng không (một cách tương đối).
Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity). Parity chẵn
nghĩa là số lượng số 1 trong dữ liệu bao gồm bit parity luôn là số chẵn. Ngược lại
tổng số lượng các số 1 trong parity lẻ luôn là số lẻ. Ví dụ, nếu dữ liệu của bạn là
10111011 nhị phân, có tất cả 6 số 1 trong dữ liệu này, nếu parity chẵn được dùng,
bit parity sẽ mang giá trị 0 để đảm bảo tổng các số 1 là số chẵn (6 số 1). Nếu parity
lẻ được yêu cầu thì giá trị của parity bit là 1. Hình 1 mô tả ví dụ này với parity
chẵn được sử dụng. Parity bit không phải là bit bắt buộc và vì thế chúng ta có thể
loại bit này khỏi khung truyền (các ví dụ trong bài này tôi không dùng bit parity).
1.3.7. Stop bits:
Stop bits là một hoặc các bit báo cho thiết bị nhận rằng một gói dữ liệu đã
được gởi xong. Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra
khung truyền để đảm bảo tính chính xác của dữ liệu. Stop bits là các bits bắt buộc
xuất hiện trong khung truyền, trong AVR USART có thể là 1 hoặc 2 bits (Trong
các thiết bị khác Stop bits có thể là 2.5 bits). Trong ví dụ ở hình 1, có 2 stop bits
được dùng cho khung truyền.Giá trị của stop bit luôn là giá trị nghỉ (Idle) và là
ngược với giá trị của start bit, giá trị stop bit trong AVR luôn là mức cao
(5V). (Khung truyền phổ biến nhất là : start bit+ 8 bit data+1 stop bit).
1.4. Giới thiệu về Arduino
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương
tác với nhau hoặc với môi trường được thuận lợi hơn. Phần cứng bao gồm một
board mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc
ARM Atmel 32-bit. Những Model hiện tại được trang bị gồm 1 cổng giao tiếp
Trang 15
Chương 1: Cơ sở lý thuyết
USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board
mở rộng khác nhau.
Hình 1. 4. Một số mạch Arduino thông dụng
Được giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắng
mang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích,
sinh viên và giới chuyên nghiệp để tạo ra những nhiết bị có khả năng tương tác với
môi trường thông qua các cảm biến và điều khiển các thiết bị khác. Đi cùng với nó
là phần mềm Arduino IDE chạy trên các máy tính cá nhân thông thường và cho
phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc C++.
Arduino được khởi động vào năm 2005 như là một dự án dành cho sinh
viên trại Interaction Design Institute Ivrea (Viện thiết kế tương tác Ivrea) tại Ivrea,
Italy. Vào thời điểm đó các sinh viên sử dụng một "BASIC Stamp" (con tem Cơ
Bản) có giá khoảng $100, xem như giá dành cho sinh viên. Massimo Banzi, một
trong những người sáng lập, giảng dạy tại Ivrea. Cái tên "Ảrduino" đến từ một
quán bar tại Ivrea, nơi một vài nhà sáng lập của dự án này thường xuyên gặp mặt.
Lý thuyết phần cứng được đóng góp bởi một sinh viên người Colombia tên
là Hernando Barragan. Sau khi nền tảng Wiring hoàn thành, các nhà nghiên cứu đã
làm việc với nhau để giúp nó nhẹ hơn, rẻ hơn, và khả dụng đối với cộng đồng mã
nguồn mở. Trường này cuối cùng bị đóng cửa, vì vậy các nhà nghiên cứu, một
trong số đó là David Cuarlielles, đã phổ biến ý tưởng này.
Giá hiện tại của board mạch này dao động xung quanh $30 và được làm giả
đến mức chỉ còn $9. Một mạch bắt chước đơn giản Arduino Mini Pro có lẽ được
xuất phát từ Trung Quốc có giá rẻ hơn $4, đã trả phí bưu điện.
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ
sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác. Một khía cạnh
Trang 16
Chương 1: Cơ sở lý thuyết
quan trọng của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết
nối với CPU của board với các module thêm vào có thể dễ dàng chuyển đổi, được
gọi là shield. Vài shield truyền thông với board Arduino trực tiếp thông qua các
chân khách nhau, nhưng nhiều shield được định địa chỉ thông qua serial bus I²Cnhiều shield có thể được xếp chồng và sử dụng dưới dạng song song. Arduino
chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8,
ATmega168, ATmega328, ATmega1280, và ATmega2560. Một vài các bộ vi xử lý
khác cũng được sử dụng bởi các mạch Aquino tương thích. Hầu hết các mạch gồm
một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz (hoặc bộ
cộng hưởng ceramic trong một vài biến thể), mặc dù một vài thiết kế như LilyPad
chạy tại 8 MHz và bỏ qua bộ điều chỉnh điện áp onboard do hạn chế về kích cỡ
thiết bị. Một vi điều khiển Arduino cũng có thể được lập trình sẵn với một boot
loader cho phép đơn giản là upload chương trình vào bộ nhớ flash on-chip, so với
các thiết bị khác thường phải cần một bộ nạp bên ngoài. Điều này giúp cho việc sử
dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như
là một bộ nạp chương trình.
Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board
được lập trình thông qua một kết nối RS-232, nhưng cách thức thực hiện lại tùy
thuộc vào đời phần cứng. Các board Serial Arduino có chứa một mạch chuyển đổi
giữa RS232 sang TTL. Các board Arduino hiện tại được lập trình thông qua cổng
USB, thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232. Vài
biến thể, như Arduino Mini và Boarduino không chính thức, sử dụng một board
adapter hoặc cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc các
phương thức khác. (Khi sử dụng một công cụ lập trình vi điều khiển truyền thống
thay vì ArduinoIDE, công cụ lập trình AVR ISP tiêu chuẩn sẽ được sử dụng.)
Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử dụng
cho những mạch ngoài. Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chân
I/O kỹ thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6
chân input analog, có thể được sử dụng như là 6 chân I/O số. Những chân này
được thiết kế nằm phía trên mặt board, thông qua các header cái 0.10-inch
(2.5 mm). Nhiều shield ứng dụng plug-in cũng được thương mại hóa. Các board
Arduino Nano, và Arduino-compatible Bare Bones Board và Boarduino có thể
cung cấp các chân header đực ở mặt trên của board dùng để cắm vào các
breadboard.
Có nhiều biến thể như Arduino-compatible và Arduino-derived. Một vài
trong số đó có chức năng tương đương với Arduino và có thể sử dụng để thay thế
qua lại. Nhiều mở rộng cho Arduino được thực thiện bằng cách thêm vào các
driver đầu ra, thường sử dụng trong các trường học để đơn giản hóa các cấu trúc
của các 'con rệp' và các robot nhỏ. Những board khác thường tương đương về điện
nhưng có thay đổi về hình dạng-đôi khi còn duy trì độ tương thích với các shield,
Trang 17
Chương 1: Cơ sở lý thuyết
đôi khi không. Vài biến thể sử dụng bộ vi xử lý hoàn toàn khác biệt, với các mức
độ tương thích khác nhau.
Trang 18
Chương 2: Phương hướng thực hiện
Chương 2: Phương hướng thực hiện
2.1. Giới thiệu về phần mềm
2.1.1. Phần mềm nạp chương trình Arduino IDE
Để lập trình được cho các board Arduino, chúng ta cần phải có một công cụ
gọi là Intergrated Development Environment (IDE). Công cụ này được đội ngũ kĩ
sư của Arduino phát triển và có thể chạy trên Windows , MAC OS X và Linux.
Muốn tải Arduino IDE ta cần truy cập vào địa chỉ
/>và vào mục Windows ZIP file for non
admin install để tải về phiên bản mới nhất của chương trình.
Sau khi cài đặt chương trình cần phải cài thêm Driver để máy tính và board
Arduino có thể giao tiếp với nhau.
Hình 2. 1. Giao diện chính của Arduino IDE sau khi cài đặt
(1)
(2)
(3)
(4)
(5)
(6)
(7)
Nút biên dịch chương trình đang soạn thảo để kiểm tra lỗi lập trình.
Nút biên dịch và upload chương trình vào board Arduino.
Nút tạo trang mới.
Nút mở chương trình đã lưu.
Nút lưu chương trình đang soạn.
Mở cửa sổ Serial Monitor để gửi và nhận dữ liệu giữa máy tính và board
Arduino, cũng là nơi cấu hình AT Command cho module.
Nơi xuất hiện thông báo sau khi nạp chương trình.
Trang 19
Chương 2: Phương hướng thực hiện
Vùng màu trắng là nơi để viết chương trình.
Arduino IDE ban đầu là một chương trình trống, chúng ta cần phải viết 1
chương trình đầy đủ sau đó biên dịch vào board Arduino để vận hành nó. Arduino
IDE có rất nhiều chương trình mẫu cho ta tham khảo và phát triển theo ý mình
trong mục File => Examples.
Ngoài ra cũng có thể sử dụng Codebender để lập trình cho Arduino, đây là
một dịch vụ miễn phí mới được phát triển gần đây, nó cho phép nạp chương trình
trực tuyến thông qua Internet mà không cần phải sử dụng Arduino IDE.
2.1.2. Giao diện điều khiển
Theo như yêu cầu đặt ra ở phần giới thiệu đề tài thì phần mềm có nhiệm vụ
điều khiển phần cứng và xử lí dữ liệu do phần cứng truyền về.
Môi trường làm việc của phần mềm:
Sử dụng .Microsoft .NET Frameword SDK v4.0 môi trường làm việc
chuyên dụng của Window.
Microsoft .NET là môi trường để đoạn mã của chương trình thực thi. Điều
này có nghĩa là .NET Framework quản lý việc thi hành chương trình, cấp phát bộ
nhớ, thu hồi các bộ nhớ không dùng đến. Ngoài ra, .NET Framework còn chứa một
tập thư viện lớp .NET bases class, cho phép thực hiện vô số các tác vụ trên
Window.
Để triển khai các ứng dụng có thể sử dụng công cụ Visual Studio 2015 một
môi trường triển khai tổng thể cho phép chúng ta viết đoạn mã, biên dịch, gỡ rối
dựa trên tất cả các ngôn ngữ của .NET, chẳng hạn C#, VB .NET, kể cả những trang
ASP.NET.
Ngôn ngữ lập trình và cài đặt:
Ngôn ngữ C#:
NET hỗ trợ chính thức 4 ngôn ngữ: C#, VB.NET, J# và C++ managed. Em
chọn sử dụng ngôn ngữ C# là ngôn ngữ chính để viết phần mềm.
Vì C# là một ngôn ngữ rất đơn giản và chỉ gồm khoảng 80 từ khóa. C# là
một ngôn ngữ lập trình hướng đối tượng nên nó hỗ trợ việc định nghĩa các lớp.
Lớp định nghĩa những kiểu dữ liệu mới cho phép ta mở rộng ngôn ngữ để mô hình
hóa vấn đề cần giải quyết.
Trang 20
Chương 2: Phương hướng thực hiện
C# có chứa những từ chốt cho phép khai báo những lớp mới, thuộc tính và
các hàm hành sự, kế thừa, đa hình … Trên C#, mọi việc liên quan đến khai báo
một lớp nằm ngay trong bản thân phần khai báo lớp.
C# cũng hỗ trợ giao diện (Interface), một kiểu khế ước với một lớp liên
quan đến những dịch vụ mà giao diện đề ra. Ngôn ngữ C# định nghĩa một lớp chỉ
có thể kế thừa từ một lớp khác nhưng có thể thiết đặt vô số giao diện. Khi thiết đặt
một giao diện, lớp phải cài đặt tất cả các hàm hành sự của giao diện.
2.2.
Giới thiệu về phần cứng
2.2.1. Sơ đồ khối tổng quát
Phần cứng được chia làm 2 phần:
Phần gửi nhận dữ liệu từ thiết bị:
Hình 2. 2. Sơ đồ khối phần gửi nhận dữ liệu từ thiết bị
Thiết bị gồm có bộ xử lí trung tâm là 1 board Arduino Mega 2560 lấy
nguồn từ viên pin Li –po. Khi có tín hiệu điều khiển, Module HC11 sẽ gửi về bộ
xử lí thông qua chân TXD. Sau đó Arduino Mega 2560 xử lí dữ liệu nhận được và
phát tín hiệu điều khiển động cơ đến Motor Shield L298.
Trang 21
Chương 2: Phương hướng thực hiện
2 Module cảm biến hồng ngoại được đặt phía trước và sau xe. Nếu phát
hiện có vật cản Arduino Mega sẽ phát tín hiệu cảnh báo tới HC11 qua chân RXD
để truyền về máy tính.
Phần gửi nhận dữ liệu từ máy tính:
Hình 2. 3 Sơ đồ khối phần gửi nhận dữ liệu từ máy tính
Để điều khiển thiết bị, máy tính sẽ được kết nối với 1 Module HC11.
Module CP2102 có nhiệm vụ chuyển đổi chuẩn giao tiếp USB trên máy tính sang
chuẩn giao tiếp Uart trên HC11.
2.2.2 Module Arduino Mega 2560
Arduino Mega 2560 là vi xử lí 8 bit với bộ nhớ Flash lập trình được
Thành phần:
Hình 2. 4. Arduino Mega 2560
(1)
(2)
(3)
(4)
(5)
Nút Reset
Vi điều khiển AT Mega 2560
Cổng USB để nạp chương trình
IC Driver Uart
IC giảm áp 5 – 3,3V
Trang 22
Chương 2: Phương hướng thực hiện
(6)
(7)
(8)
Thạch anh 16 Mhz
IC giảm áp 12 – 5V
Cầu chì
Thông số kĩ thuật:
-
Điện áp hoạt động: 5V
Nguồn ngoài: 7-12V
Số chân Digital: 54 chân (15 chân PWM)
Số chân Analog: 16 chân
Giao tiếp SPI: chân 50 – 53 (dùng với thư viện SPI của Arduino)
Ngắt ngoài: 6 chân
Bộ nhớ Flash: 256 Kb, 8Kb sử dụng cho Bootloader
SRAM: 8Kb
EEPROM: 4Kb
Xung Clock: 16 Mhz
Hình 2. 5. Sơ đồ chân I/O của Arduino Mega 2560
Trang 23
Chương 2: Phương hướng thực hiện
2.2.3. Module truyền dẫn HC-11
Module HC-11 sử dụng chip thu phát CC1101, hoạt động dựa trên chuẩn
truyền dẫn RS 232(bán song công). Ngoài ra Module còn được trang bị chip STM8
có nhiệm vụ chuyển giao tiếp SPI trên CC1101 sang Uart, nhờ đó mà dễ dàng kết
nối với máy tính hoặc các vi điều khiển khác.
Hình 2. 6. Truyền dẫn theo chuẩn RS 232
Thành phần:
Hình 2. 7. Module RF HC11
(1) IC CC1101
(2) IC SMT8
(3) Anten
Trang 24
Chương 2: Phương hướng thực hiện
•
•
•
•
Thông số kỹ thuật:
Điện áp hoạt đông: 3,3 – 5V
Khoảng cách thu phát tối đa 200m (không có vật cản)
Tần số thu phát: 433Mhz
Hỗ trợ truyên dẫn cổng COM (bán song công)
Giao tiếp: Serial Uart (TTL)
Thông số mặc định:
Tốc độ Baurate: 9600 (Sử dụng chế độ truyền dẫn RS 232)
Kênh sóng dùng: kênh 2
Địa chỉ dùng: 2
Công suất phát sóng: 8-10 dBm
Bảng 2. 1.Chức năng các chân HC-11:
Tên
Vcc
GND
TXD
RXD
SET
Chức năng
Nguồn vào 5V
Chân nối mass
Chân gửi dữ liệu Uart nối với chân RXD của module khác
Chân nhận dữ liệu Uart nối với chân TXD của module khác
Chân thiết đặt chế độ AT Command
Cấu hình module: Để cài đặt module, có 2 cách để đưa module về chế độ
AT Command:
Cách 1: khi module đang hoạt động, đưa chân SET về mức thấp trong 3ms
Cách 2: khi module đang tắt đưa chân SET về mức thấp sau đó cấp nguồn, module
sẽ tự reset về các thông số mặc định
Sau đó sử dụng Arduino IDE vào chế độ Serial Monitor, chọn kí tự kết thúc
“Both NL & CR”.
Hình 2. 8. Nơi nhập lệnh trong chế độ AT Command
Sau khi cài đặt xong có thể nối chân SET lên Vcc hoặc để hở để về chế độ
hoạt động bình thường.
Bảng 2. 2. Mã lệnh AT Command:
Trang 25