Thiết kế xe điều khiển bằng sóng RF sử dụng module Arduino 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.
Trang 1BỘ 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
Trang 2KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN VIỄN THÔNG
Trang 3LỜ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 rangà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ềumodule khác nhau giúp cho chúng có thể xử lí những công việc phức tạp Khôngchỉ đóng vai trò quan trọng trong công nghiệp, vi điều khiển còn có thể tích hợpcho các robot để thực hiện nhiệm vụ ở những nơi nguy hiểm, độc hại, hay nhữngnơ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ạicả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àngthu 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
Trang 4Đề 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 DuyKhanh đã 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ôngnghệ đ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ôngtrá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ânthành nhất !
Trang 5NHẬ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
Trang 6Bộ 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
Trang 7MỤ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
MỤC LỤC
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1
1.1 Tổng quan về phương thức truyền dẫn 1
1.1.1 Tổng quan về sóng vô tuyến (RF) 1
1.1.2 Biên độ và bước sóng 1
1.1.3 Pha 1
1.2 Chuẩn giao tiếp nối tiếp RS232 1
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
2
1.2.2 Tốc độ baud 3
1.2.3 Bit chẵn lẻ hay Parity bit 4
1.3 Giao tiếp Uart 4
1.3.1 Truyền thông nối tiếp: 5
1.3.2 Baud rate (tốc độ Baud): 6
1.3.3 Frame (khung truyền): 6
1.3.4 Start bit: 6
1.3.7 Stop bits: 7
1.4 Giới thiệu về Arduino 7
CHƯƠNG 2: PHƯƠNG HƯỚNG THỰC HIỆN 10
2.1 Giới thiệu về phần mềm 10
2.1.1 Phần mềm nạp chương trình Arduino IDE 10
2.1.2 Giao diện điều khiển 11
2.2 Giới thiệu về phần cứng 12
2.2.1 Sơ đồ khối tổng quát 12
2.2.2 Module Arduino Mega 2560 13
Trang 82.2.4 Module chuyển USB Uart 2102 18
2.2.5 Module cảm biến hồng ngoại(IR Detector) 19
2.2.6 Module Motor Shield L298 20
2.2.7 Pin Lipo 11,1V 1800mA 3S 25C 22
CHƯƠNG 3: THI CÔNG 23
3.1 Lắp ráp phần cứng 23
3.1.1 Hình ảnh sau khi hoàn thiện phần gởi nhận dữ liệu từ máy tính 23
3.1.2 Hình ảnh sau khi hoàn thiện phần thiết bị 24
3.2 Thiết kế phần mềm 25
3.2.1 Giao diện chương trình điều khiển trên máy tính 25
3.2.2 Lưu đồ giải thuật Arduino: 26
KẾT LUẬN 30
PHỤ LỤC 31
Code Arduino: 31
Code C# : 34
Các bước thiết kế giao diện trên Visual Studio: 42
TÀI LIỆU THAM KHẢO 48
Trang 9Danh mục hình ảnh
Hình 1 1 Dạng tín hiệu truyền RS232 3
Hình 1 2 Tín hiệu tương đương của UART và RS232 4
Hình 1 3 Truyền 8 bit theo phương pháp song song và nối tiếp 5
Hình 1 4 Một số mạch Arduino thông dụng 8
Hình 2 1 Giao diện chính của Arduino IDE sau khi cài đặt 10
Hình 2 2 Sơ đồ khối phần gửi nhận dữ liệu từ thiết bị 12
Hình 2 3 Sơ đồ khối phần gửi nhận dữ liệu từ máy tính 13
Hình 2 4 Arduino Mega 2560 13
Hình 2 5 Sơ đồ chân I/O của Arduino Mega 2560 14
Hình 2 6 Truyền dẫn theo chuẩn RS 232 15
Hình 2 7 Module RF HC11 15
Hình 2 8 Nơi nhập lệnh trong chế độ AT Command 16
Hình 2 9 Module USB Uart 2102 18
Hình 2 10 Module cảm biến hồng ngoại 19
Hình 2 11 Sơ đồ nguyên lý 19
Hình 2 12 Layout 20
Hình 2 13 Module Motor Shield L298 20
Hình 2 14 Các chân két nối của Motor Shield L298 21
Hình 2 15 Pin Lipo 11,1V 1800mA 22
Hình 3 1 Module USB Uart 2102 kết nối với HC11 23
Hình 3 2 Thiết bị đã hoàn thiện 24
Hình 3 3 Chương trình khi chưa có kết nối 25
Hình 3 4 Chương trình khi bắt đầu kết nối 25
Bảng 1 1 Đặc tính kĩ thuật RS-232: 2
Bảng 2 1.Chức năng các chân HC-11: 16
Bảng 2 2 Mã lệnh AT Command: 17
Bảng 2 3.Chức năng các chân USB Uart 2102: 18
Bảng 2 4 Chức năng các chân Motor Shield L298: 21
Trang 10Chương 1: Cơ sở lý thuyết1.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ồmcá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ửicho 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ạngtruyề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ộtmá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áccơ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ướcsó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 haisóng có cùng tần số Để xác định pha, bước sóng được chia thành 360 phần, đượcgọ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ãihiệ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ếpnố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àikế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 11Chươ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:
Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp 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 quaquã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ẫntố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:
Chiều dài cable cực đại 15m (50 Feet)
Trang 12Hì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ộ Dovậ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ầntruyề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
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ử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ênkhi đó hai tốc độ bit và tốc độ baud là phải đồng nhất
Trang 13Chương 1: Cơ sở lý thuyế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ườngdù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 tralỗ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ểmtra chẵn lẻ. Một bit chẵn lẻ được bổ sung vào dữ liệu được truyền để thấy số lượngcá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ừ: UniversalSynchronous & Asynchronous serial Reveiver and Transmitter, nghĩa là bộ truyềnnhận nối tiếp đồng bộ và không đồng bộ Cần chú ý rằng khái niệm USART (hayUART nếu chỉ nói đến bộ truyền nhận không đồng bộ) thường để chỉ thiết bị phầncứng (device, hardware), không phải chỉ một chuẩn giao tiếp USART hay UARTcầ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 giaotiếp nào đó Ví dụ, chuẩn RS232 (hay COM) trên các máy tính cá nhân là sự kếthợp của chip UART và chip chuyển đổi mức điện áp Tín hiệu từ chip UARTthường theo mức TTL: mức logic high là 5, mức low là 0V Trong khi đó, tín hiệutheo 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àytheo mức logic TTL của USART, không theo RS232
Hình 1 2 Tín hiệu tương đương của UART và RS232.
Trang 141.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ềukhiể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ệccác vi điều khiển cần trao đổi dữ liệu cho nhau, ví dụ tình huống Master truyềnlệ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 linetrê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ếpsong 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ếpkhô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ấtnhanh Tuy nhiên, như bạn thấy, nhược điểm của cách truyền này là số đườngtruyề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ấtcồ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) đườngtruyề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ếptrong 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 “chianhỏ” thành từng bit khi truyền/nhận, tốc độ truyền sẽ bị giảm Mặt khác, để đảmbả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” haynhữ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êuchuẩ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 đườngxung 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 đườngtruyề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ộ
Trang 15Chương 1: Cơ sở lý thuyết
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ị đanggiao 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ạithà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ơntruyền thông đồng bộ (không cần nhiều lines truyền) Tuy nhiên, để quá trìnhtruyề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ềnthô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ệctruyề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 địnhnghĩ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ặcsai 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ố quycá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ạonê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 tranhư Parity, ngoài ra số lượng các bit trong một data cũng được quy định bởikhung truyền Hình 1 là một ví dụ của một khung truyền theo UART, khung truyềnnày được bắt đầu bằng một start bit, tiếp theo là 8 bit data, sau đó là 1 bit paritydùng kiểm tra dữ liệu và cuối cùng là 2 bits stop.
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ứcnă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ằngcá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ượclạ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 bitcủ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
Trang 16Significant 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ạitổ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 paritychẵ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 trakhung 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ộcxuất hiện trong khung truyền, trong AVR USART có thể là 1 hoặc 2 bits (Trongcá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ộtboard mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặcARM Atmel 32-bit Những Model hiện tại được trang bị gồm 1 cổng giao tiếpUSB, 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
Trang 17Chương 1: Cơ sở lý thuyết
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ắngmang đế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ớimô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à chophé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 sinhviê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ộttrong những người sáng lập, giảng dạy tại Ivrea Cái tên "Ảrduino" đến từ mộtquá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ộttrong 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ẽ đượcxuấ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ạnhquan 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ếtnố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
Trang 18gọ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 nhiều shield có thể được xếp chồng và sử dụng dưới dạng song song Arduinochí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ử
I²C-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ạchgồ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ư LilyPadchạ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 bootloader cho phép đơn giản là upload chương trình vào bộ nhớ flash on-chip, so vớicá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ùythuộc vào đời phần cứng Các board Serial Arduino có chứa một mạch chuyển đổigiữa RS232 sang TTL Các board Arduino hiện tại được lập trình thông qua cổngUSB, thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232 Vàibiến thể, như Arduino Mini và Boarduino không chính thức, sử dụng một boardadapter hoặc cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc cácphươ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ốngthay 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ụngcho những mạch ngoài Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chânI/O kỹ thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6châ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 boardArduino 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ácbreadboard
Có nhiều biến thể như Arduino-compatible và Arduino-derived Một vàitrong 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ácdriver đầu ra, thường sử dụng trong các trường học để đơn giản hóa các cấu trúccủa các 'con rệp' và các robot nhỏ Những board khác thường tương đương về điệnnhưng có thay đổi về hình dạng-đôi khi còn duy trì độ tương thích với các shield,đô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 19Chương 2: Phương hướng thực hiện
Chương 2: Phương hướng thực hiện2.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ỉhttp://arduino.cc/en/Main/Software/ 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à boardArduino 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) Nút biên dịch chương trình đang soạn thảo để kiểm tra lỗi lập trình
(2) Nút biên dịch và upload chương trình vào board Arduino
(3) Nút tạo trang mới
(4) Nút mở chương trình đã lưu
(5) Nút lưu chương trình đang soạn
(6) 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
(7) Nơi xuất hiện thông báo sau khi nạp chương trình
Trang 20Vù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 1chương trình đầy đủ sau đó biên dịch vào board Arduino để vận hành nó ArduinoIDE có rất nhiều chương trình mẫu cho ta tham khảo và phát triển theo ý mìnhtrong 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ìnhtrự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ộttập thư viện lớp NET bases class, cho phép thực hiện vô số các tác vụ trênWindow
Để triển khai các ứng dụng có thể sử dụng công cụ Visual Studio 2015 mộtmô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ốidựa trên tất cả các ngôn ngữ của NET, chẳng hạn C#, VB NET, kể cả nhữngtrang ASP.NET
Trang 21Chươ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áomộ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ênquan đế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 đặtmộ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ấynguồ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 222 Module cảm biến hồng ngoại được đặt phía trước và sau xe Nếu pháthiệ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 sangchuẩ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
Trang 23Chương 2: Phương hướng thực hiện
- 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)
Trang 25Chươ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)
GND Chân nối mass
TXD Chân gửi dữ liệu Uart nối với chân RXD của module khác
RXD Chân nhận dữ liệu Uart nối với chân TXD của module khác
SET 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ế độ
Trang 26Mặc định là 9600
Đặt Baud rate 2400:
AT + B2400Nếu thành công sẽ trả về:OK-B2400
Đặt Odd Pairing 2bot stop:
AT + UO2Nếu thành công sẽ trả về:OK-UO2
AT+Ax
Cài đặt địa chỉ từ 000 đến255
Mặc định là 000
Đặt địa chỉ 213:
AT+A213Nếu thành công sẽ trả về:OK-A213
AT+Px
Cài đặt công suất phát với x
từ 1-8Các giá trị 1-8 tương ứngvới: -30 dBm,
-20 dBm, -15 dBm, -10dBm, 0 dBm, 5 dBm,
7 dBm, 10 dBmMặc định là 8 (10 dBm)
Đặt công suất 7dBm:
AT+P7
AT+FU Cài đặt chế độ truyền 232Mặt định module sử dụng
chế độ này
Trang 27Chương 2: Phương hướng thực hiện
2.2.4 Module chuyển USB Uart 2102
Sử dụng chip CP 2102 của hãng SILICON LAB hỗ trợ nhiều tốc độ truyềnkhác nhau
Hình 2 9 Module USB Uart 2102
Bảng 2 3.Chức năng các chân USB Uart 2102:
5V Nguồn vào 5V
3,3V Nguồn vào 3,3V
DTR Chân Reset để nạp cho vi điều khiẻn
GND Chân nối mass
TXD Chân gửi dữ liệu Uart nối với chân RXD của module khác
RXD Chân nhận dữ liệu Uart nối với chân TXD của module khác
Trang 282.2.5 Module cảm biến hồng ngoại(IR Detector)
Hình 2 10 Module cảm biến hồng ngoại