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

THIẾT KẾ MẠCH ĐỌC THẺ RFID VÀ GIAO TIẾP VỚI MÁY TÍNH QUA CỔNG UART

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 (3.81 MB, 50 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG

BÁO CÁO ĐỒ ÁN 2 K55
ĐỀ TÀI: THIẾT KẾ MẠCH ĐỌC THẺ RFID VÀ GIAO TIẾP
VỚI MÁY TÍNH QUA CỔNG UART
GIẢNG VIÊN HƯỚNG DẪN:
NHÓM SINH VIÊN
Nguyễn Thanh Tiền
Nguyễn Văn Tỉnh
Lê Việt Tuấn

ĐT1 - K55
ĐT2 - K55
ĐT4 - K55

HÀ NỘI 11/2012

1

20102303 (Nhóm trưởng)
20102422
20102422


MỤC LỤC
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI................................................................1
MỤC LỤC....................................................................................................................... 2
Phần 1: Giới thiệu đề tài, tìm hiểu MSP430.................................................................3
1.1 Nhận dạng tự động tần số vô tuyến (Radio Frequency Identification – RFID).....3
1.1.1. Giới thiệu về nhận dạng tự động tần số vô tuyến (RFID)...............................3


1.1.2. Module MFRC 522 và thẻ RFID....................................................................5
1.2 Tìm hiểu về MSP430.............................................................................................6
1.3 Lên ý tưởng cho đề tài.........................................................................................10
Phần 2. Triển khai thiết kế đề tài...............................................................................12
2.1 Phân chia chức năng...........................................................................................12
2.1.1. Chip xử lý....................................................................................................12
2.1.2. Cảm biến RC522..........................................................................................13
2.1.3. Khối hiển thị LCD16x2................................................................................14
2.1.4. Board mạch..................................................................................................16
2.1.5. Phần mềm sử dụng.......................................................................................17
2.2 Lập kế hoạch.......................................................................................................18
2.3 Thực hành...........................................................................................................19
2.3.1. Lập trình cho vi xử lý MSP430....................................................................19
2.3.1.1. Khởi tạo project mới.............................................................................19
2.3.1.2. Tạo các thư viện cần xử dụng...............................................................21
2.3.1.3. Tạo hàm main.c (kịch bản hoạt động chính cho chip xử lý).................26
2.3.1.4. Hoàn thành và kiểm tra code.................................................................27
2.3.2. Thiết kế bo mạch..........................................................................................29
2.3.2.1. Xây dựng sơ đồ nguyên lý....................................................................29
2.3.2.2. Xây dựng sơ đồ layout và in mạch:.......................................................32
2.3.2.3. Hàn linh kiện, hoàn thành mạch:...........................................................33
2.3.3. Thiết kế phần mềm sử dụng.........................................................................34
2.3.4. Kiểm tra, hoàn thành sản phẩm....................................................................37
2


Phần 3. kết quả thử nghiệm, phụ lục, hình vẽ, mã nguồn MSP, tài nguyên phần
cứng, phần mềm...........................................................................................................38
3.1 Mã nguồn MSP, tài nguyên phần cừng, phần mềm.............................................38
3.2 Kết quả thử nghiệm, đánh giá sản phẩm.............................................................47

3.3 Phụ lục................................................................................................................ 50
Tài liệu tham khảo........................................................................................................50

3


Phần 1: Giới thiệu đề tài, tìm hiểu MSP430
1.1
1.1.1.

Nhận dạng tự động tần số vô tuyến (Radio Frequency Identification – RFID)
Giới thiệu về nhận dạng tự động tần số vô tuyến (RFID)

Nhận dạng tự động (Automatic Identification) hay gọi ngắn gọn là "ID tự động" là
một thuật ngữ chỉ các công nghệ chủ dùng để giúp các máy nhận dạng các đối tượng.
Nhận dạng tự động thường được thực hiện bằng tự động thu thập dữ liệu. Đó là phương
pháp các công ty dùng để nhận dạng đồ vật hay hàng hóa, thu thập thông tin về chúng
và nhập dữ liệu đưa vào máy tính mà không cần làm thủ công. Mục tiêu của "ID tự
động" là tăng tính hiệu quả, giảm lỗi dữ liệu đầu vào và sử dụng lao động dư thừa cho
các chức năng giá trị gia tăng như cung cấp dịch vụ cho khách hàng. Các công nghệ chủ
được xếp vào nhóm "ID tự động" gồm có: mã vạch (Bar Codes), thẻ thông minh, nhận
dạng tiếng nói, một số công nghệ sinh trắc học (biometric), nhận dạng đặc trưng quang
học (Optical character Recognition - OCR) và nhận dạng tần số vô tuyến (Radio
Frequency Identification - RFID).
Đó là một kỹ thuật nhận dạng sóng vô tuyến từ xa, cho phép đọc không cần tiếp xúc
dữ liệu trên một con chíp bằng sóng vô tuyến ở khoảng cách từ 50 cm tới 10 mét, tùy
theo kiểu của thẻ nhãn RFID
Hệ thống RFID gồm hai thành phần: thứ nhất là những chiếc thẻ nhãn nhỏ (cỡ vài
cm) có gắn chip silicon cùng ăng ten radio và thứ hai là bộ đọc cho phép giao tiếp với
thẻ nhãn và truyền dữ liệu tới hệ thống máy tính trung tâm.


Bộ nhớ của con chip có thể chứa từ 96 đến 512 bit dữ liệu, nhiều gấp 64 lần so với
một mã vạch. Ưu việt hơn, thông tin được lưu giữ trên con chíp có thể được sửa đổi bởi
sự tương tác của bộ đọc. Dung lượng lưu trữ cao của những thẻ nhãn RFID thông minh
này sẽ cho phép chúng cung cấp nhiều thông tin đa dạng như thời gian lưu trữ, ngày bày
bán, giá và thậm chí cả nhiệt độ sản phấm
4


Với công nghệ RFID, các sản phẩm ngay lập tức sẽ được nhận dạng tự động.
Chip trên thẻ nhãn RFID được gắn kèm với một ăngten chuyển tín hiệu đến một máy
cầm tay hoặc máy đọc cố định. Các máy này chuyển tín hiệu radio từ thẻ RFID sang
một mã liên quan đến việc xác định các thông tin trong một cơ sở dữ liệu máy tính do cơ
quan quản lý kiểm soát.
Khi một RFID được gắn vào một sản phẩm, ngay tức khắc nó sẽ phát ra các tín hiệu
vô tuyến cho biết sản phẩm ấy đang nằm ở chỗ nào, trên xe đẩy vào kho, trong kho lạnh
hay trên xe đẩy của khách hàng. Do thiết bị này được nối kết trong mạng vi tính của cửa
hàng nên nhờ vậy các nhân viên bán hàng có thể biết rõ sản phẩm ấy được sản xuất khi
nào, tại nhà máy nào, màu sắc và kích cỡ của sản phẩm; để bảo quản sản phẩm tốt hơn
thì phải lưu trữ nó ở nhiệt độ nào.
Nhờ RFID sẽ giảm được rất nhiều thời gian và chi phí quản lý, trưng bày, bán hàng .
Tín hiệu vô tuyến phát ra từ chiếc tem điện tử này sẽ giúp các nhân viên bán hàng không
phải đưa đầu dò đọc lướt lên mã vạch của sản phẩm nữa; việc tính tiền sẽ nhanh lẹ hơn
rất nhiều, và như vậy khách hàng sẽ không mất nhiều thời gian xếp hàng chờ thanh toán
nữa.
Trong các kho hàng, nhân viên sẽ thao tác nhanh chóng và chính xác hơn việc lập sổ
thu mua, tiêu thụ, tồn kho để theo dõi số lượng, chủng loại hàng trong kho. Họ sẽ nhanh
chóng biết lô hàng nào đã quá hạn không được bày bán nữa, chủng loại hàng nào đang
hút khách tiêu dùng cần mua thêm... Tóm lại, nhờ ứng dụng RFID, các cửa hàng bán lẻ,
các siêu thị sẽ cần ít nhân viên hơn, chi phí hoạt động sẽ giảm, lợi nhuận sẽ cao hơn.

1.1.2. Module MFRC 522 và thẻ RFID

Hình 1.1 MFRC-522 RC522 RFID Reader IC Card
 Thông số kỹ thuật
+RC522 Sensor (đọc ghi thông tin lên S50 IC Card or Key)
+S50 IC50 Card (thẻ trống)
5


+S50 IC50 Key
+Hàng chân nối đứng và cong
 Mô tả
Module MF522 sử dụng IC MFRC522 của Phillip, chuyên dùng làm card reader, với
giá rẻ và dễ sử dụng, MFRC522 rất thích hợp cho các ứng dụng cần đến RFID, hay
NFC. Module MF522 được làm với tất cả thành phần cần thiết để MFRC522 hoạt động,
bao gồm cả anthena, người dùng chỉ cần kết nối module với bộ điều khiển thông qua
SPI là có thể dùng được.
 Nguồn: 13—26mA/ DC 3.3VDC, 13 - 26mA
 Dòng ở chế độ chờ: 10-13mA
 Dòng ở chế độ nghỉ: <80uA
 Tần số sóng mang: 13.56MHz
 Khoảng cách hoạt động: 0~60mm~mifare1 card~
 Giao tiếp: SPI
 Tốc độ truyền dữ liệu: tối đa 10Mbit/s
 Các loại card RFID hỗ trợ: mifare1 S50, mifare1 S70, mifare UltraLight, mifare
Pro, mifare Desfire
 Kích thước: 40mm×60mm
Môi trường hoạt động:
 Nhiệt độ hoạt động : -20 - 80oC
 Nhiệt độ lưu trữ: -40 - 85oC

 Độ ẩm : trong khoảng 5% - 95%
Module MFRC522 là sản phẩm ứng dụng nhận dạng tự động thông qua tần số vô
tuyến (RFID) đơn giản, rễ sử dụng, rễ tìm kiếm trên thị trường, đẹp mắt và tính ứng
dụng cao.

6


1.2 Tìm hiểu về MSP430

Hình 1.2 MSP430G2553
a, Dòng vi xử lý msp430
Dòng vi xử lý được sản xuất bởi Texas Instruement, MSP430 là một sự kết hợp chặt
chẽ của một CPU RISC 16 bit, những khối ngoại vi, và hệ thống xung linh hoạt, tần số
cơ bản 25MHz. MSP430 đã đưa ra được những giải pháp tốt cho những nhu cầu ứng
dụng với nhiều phiên bản khác nha. MSP430 có một số phiên bản như: MSP430x1xx,
MSP430x2xx, MSP430x3xx, MSP430x4xx, MSP430x5xx.
Kiến trúc nguồn điện cực thấp để mở rộng tuổi thọ của Pin và giảm tiêu thụ năng
lượng:
-1μAduy trì RAM
-0.8μAchế độ xung thời gian thực
-250μA/MIPS tích cực
Xử lý tín hiệu tương tự với hiệu xuất cao:
-12-bit hoặc 10-bit ADC – 200Ksps, cảm biến nhiệt, V(Ref).
-12-bit kép DAC.
16 bit RISC CPU cho phép được nhiều ứng dụng, thể hiện một phần ở kích thước
code lập trình.
-Thanh ghi lớn nên loại trừ được trường hợp tắt nghẽn tập tin khi đang làm việc.
-Thiết kế nhỏ gọn làm giảm lượng tiêu thụ điện và giảm giá thành.
-Tối ưu hóa cho những chương trình ngôn ngữ bậc cao như C, C++

-Có 7 chế độ định địa chỉ.
-Khả năng ngắt theo véc-tơ lớn.
Trong lập trình cho bộ nhớ Flash cho phép thay đổi Code một cách linh hoạt, phạm
vi rộng, bộ nhớ Flash còn có thể lưu lại được nhật ký của dữ liệu.

7


Hình 1.3: Cấu trúc vi điều khiển MSP430
b, MSP430 LaunchPad:

Hình 1.4: KIT MSP430 LaunchPad
 On Board Emulation (Tích hợp phần mô phỏng trên kit):
Nghĩa là bạn có thể nạp chương trình và gỡ lỗi project của bạn mà không cần thêm
công cụ nào khác. Đặc biệt hơn là bạn có thể dùng Kit để nạp và debug cho tất cả các
chip MSP430 nằm trên một mạch khác.
 BoosterPack-compatibility (Tương thích với các module hỗ trợ):

8


Các chân của MSP430G2 được thiết kế rất thoáng. Các chân này giúp cho việc cắm
các module hỗ trợ khác rất dễ dàng, để thêm các tính năng như wireless, capacitive
touch…
 Hỗ trợ các vi điều khiển MSP430G2xx:
Kit MSP430 hỗ trợ các vi điều hiển dòng MSP430G2xx. Đây là các vi điều khiển tần
số dao động có thể lên đến 16MHZ, bộ nhớ lên đên 16KB Flash, 512B RAM, có tích
hợp ADC, timer và các module giao tiếp...
 Bộ kit MSP430 LaunchPad Rev.1.5 Full Box gồm có
- Kit Msp430 lauchpad

- 1 Chip MSP430G2553IN20 + 1 Chip MSP430G2452IN20
- Thạch anh 32.768Khz
- 2 thanh jump cái
- 1 dây cáp usb mini để kết nối MSP430 launchpad với máy tính
- Tài liệu về kit MSP430 launchpad

Hình 1.5: Bộ kit MSP430 LaunchPad Rev.1.5 Full Box
c, Chương trình biên dịch Code Composer Studio (CCStudio).
Code Composer Studio là môi trường phát triển tích hợp (IDE) cho họ vi xử lý
nhúng của Texas Instrument (TI). CCStudio bao gồm bộ công cụ được dùng để phát
triển và gỡ rối các ứng dụng nhúng. Nó bom gồm việc biên dịch cho mỗi dòng thiết bị
của TI, trình tạo mã nguồn, môi trường xây dựng project, trình gỡ rối, profile, mô
phỏng, vận hành hệ thống thời gian thực và nhiều tính năng khác

9


Hình 1.6:Màn hình khởi động Code Composer Studio
1.3 Lên ý tưởng cho đề tài
Nhận dạng tự động tần số vô tuyến (RFID) thực tế có rất nhiều ứng dụng hữu ích,
trong khuôn khổ thiết kế đò án 2 này, chúng em sẽ thiết kế mạch điện điện tử dùng chíp
xử lý MSP430G2553 của TI, đọc ghi thông tin thẻ RFID bằng cảm biến MFRC522, giao
tiếp với MSP qua cổng SPI; và chíp xử lý này trao đổi thông tin với máy tính qua giao
tiếp UART. Trên máy tính có sẵn hệ cơ sở dữ liệu, được cập nhập thông tin mỗi lần thao
tác với MSP.
Sơ đồ khối hệ thống có thể phân tích như sau:
Mỗi người dùng, sở hữu thẻ RFID với những thông tin riêng biệt, mỗi khi thao tác
với mạch (có thế là quét thẻ), mạch nhận diện thẻ RFID, đọc và xử lý thông tin. Chip xử
lý giao tiếp với máy tính qua cổng UART/USB, trên máy tính có sẵn giao diện phần
mềm ở đó, admin có thể cập nhật thông tin, gửi lệnh lại cho mạch xử lý.

Trong trường hợp khác , admin hoặc người dùng cũng có thể hiển thị thông tin ngay
trên giao diện mạch xử lý.
Mạch xử lý bao gồm các khối:
+Cảm biến RFID (RC522)
+Chip xử lý MSP430
+Khối hiển thị (LCD hiển thị thông tin xử lý khi có nhận diện thẻ RFID)
+Khối giao tiếp UART, SPI
+Khối cấp nguồn
10


Hình 1.7: Sơ đồ ứng dụng nhận dạng tự động RFID
Mục đích thiết kề mạch này là chúng em có thể tạo ra một thiết bị điện tử có khả
năng nhận diện tự động tần số vô tuyến RFID, xử lý thông tin và trao đổi thông tin với
máy vi tính nhằm tạo ra một giao diện sử dụng đơn giản tiển lợi.
Sản phẩm đáp ứng các yêu cầu chức năng và phi chức năng:
+Chức năng: Nhận diện và đọc thông tin trên thẻ RFID, cung cấp giao diện sử dụng.
+Phi chức năng: Thiết bị đơn giản, đẹp mắt, gon nhẹ, xử lý nhanh, dễ sử dụng, tiêu
thụ ít năng lượng…
Đặc biệt, sản phẩm có thể đi vào thực tế với các ứng dụng khác nhau khi tiếp tục
phát triển sản phẩm về sau. (Như quản lý nhân viên công ty, quản lý sinh viên, mở cửa
tự động)…

11


Phần 2. Triển khai thiết kế đề tài
2.1

Phân chia chức năng

Trong quá trình thiết kế, sản phẩm được chia thành các khối, cụ thể chức năng và

phân chia các khối như sau:

Hình 2.1. Sơ đồ các khối chức năng của mạch nhận diện tự động tần số vô tuyến
(RFID)
2.1.1.

Chip xử lý
-Chíp xử lý MSP430 đặt trên kit MSP430

LaunchPad như hình vẽ.
-Trong mạch thiết kế, chíp có nhiệm vụ: hoạt
động theo chương trình đã được lập trình sẵn do lập
trình viên (thành viên thiết kế sản phẩm) và được
nạp vào bộ nhớ chương trình của chip
(MSP430G2553 sử dụng bộ nhớ flash 16KB).
-Cụ thể chương trình hoạt động của chip thực
hiện những nhiệm vụ sau:
+Thiết lập hoạt động cho cảm biến RC522, trao
đổi thông tin qua giao tiếp SPI, đọc ghi thông tin thẻ
FRID.
12


+Hiển thị thông tin lên LCD
+Giao tiếp với phần mềm máy tính qua giao tiếp UART/USB
2.1.2.

Cảm biến RC522


Hình 2.3 Cảm biến RC522 và sơ đồ các chân
Module RC522: Có chức năng nhận diện thẻ RFID, đọc thông tin trên thẻ giao tiếp
với chip xử lý theo cổng giao tiếp SPI, RC522 đóng vai trò Slave trong giao tiếp SPI với
chíp xử lý (đóng vai trò Master).

Hình 2.4: SPI 4 chân
+Chân SCK(chân số 2 cảu RC522) đóng vai trò làm xung đồng hồ được lấy ra từ
xung đồng hồ của chip xử lý msp430
13


+MOSI: Master Out Slave In
+MISO: Master In Slave Out
+SS: Select Slave (đóng vai trò Shift Enable)

Hình 2.5: Biểu đồ thời gian giao tiếp SPI với 1 master 1 slave

2.1.3.

Khối hiển thị LCD16x2

Khối LCD được điểu khiển bơi chip xử lý, nhận và hiển thị thông tin do chip xử lý
cung cấp, giúp cho người sử dụng biết được thông tin cần thiết.

Châ
n
14



hiệu

Mô tả


1
2
3
4

5
6

714

15
16

15

Vss

Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với
GND của mạch điều khiển
VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
VCC=5V của mạch điều khiển
VEE Điều chỉnh độ tương phản của LCD.
RS
Chân chọn thanh ghi (Register select). Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi.

+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD
(ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở
chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên
trong LCD.
R/W Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để
LCD ở chế độ đọc.
E
Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus
DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép
của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp
nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low
transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát
hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ
ở bus đến khi nào chân E xuống mức thấp.
DB0 - Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU.
DB7 Có 2 chế độ sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB
là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới
DB7, bit MSB là DB7
A
Nguồn dương cho đèn nền
K

GND cho đèn nền



Hình 2.6: Giai đoạn EX

2.1.4.

Board mạch

Board mạch là nơi đặt các linh kiện, thiết bị cần thiết, kết nối tín hiệu giữa các thiết
bị, cấp nguồn cho mạch…
Để thiết kế mạch cần trải qua các bước:
+Thiết kế mạch layout từ sơ đồ nguyên lý (thiết kế trên phần mềm hỗ trợ như
Altium, Orcard …)
+Làm mạch in.
+Hàn, nối linh kiện
+Chạy thử mạch
Mạc nguyên lý bao gồm các khối:
+Khối nguồn
+Khối hiển thị
+MSP430
+RC522
+Khối điều khiển
Các khối, link kiện được bố trí hợp lý trên mạch, tạo ra sự nhỏ gọn đẹp mặt cho
người sử dụng, dễ dàng kiểm tra hàn nối các link kiện
Board mạch chính tạo nên một môi trường hoạt động cho các linh kiện, để mạch
chạy tốt ổn định thì chế tạo mạch cần phải chính xác tỉ mỉ.
Khi hoàn thành board mạch, hàn linh kiện, có thể đánh giá được chất lượng sản
phẩm trên các phương diện:
+Tính chính xác: Mạch đã hoạt động đúng chức năng hay không.
+Dộ ổn định: Trên môi trường thực tế mạch có chạy đúng không.
+Tốc độ làm việc: Tốc độ nhanh đáp ứng yêu cầu sử dụng

16


Hình 2.6: Sơ đồ layout mạch nhận diện RFID
2.1.5.

Phần mềm sử dụng
Thực tế khi sử dụng thiết bị, chúng ta phải thao tác với một lượng lớn thông tin, mà

bản thân bộ nhớ của MSP quá nhỏ không đáp ứng được, việc này có thể đáp ứng bằng
cách sử dụng thêm bộ nhớ ngoài.
Tuy nhiên ngoài vấn đề về lượng thông tin lớn, chúng ta cũng cần phải tạo ra được
một giao diện sử dụng dễ dàng, tiện lợi. Phần mềm máy tính có thế đáp ứng được yêu
cầu trên.
Chức năng chính việc thiết kế phần mềm sử dụng bao gồm:
+Nhận thông tin từ board mạch, trao đổi cập nhật với một hệ cơ sở dữ liệu sẵn có
17


+Truyền đạt lại thông tin người sử dụng tới bo mạch xử lý
+Tạo giao diện sử dụng đơn giản, đẹp mắt cho người dùng

Hình 2.7: Giao diện phần mềm sử dụng
Giao diện thiết kế sẽ bao gồm các khối chính:
+ Giao tiếp UART: nhận và truyền thông tin với board mạch
+ Giao tiếp với hệ cơ sở dữ liệu: hiển thị thông tin, cập nhật thông tin và các chức
năng khác
2.2 Lập kế hoạch
Toàn bộ đề tài bao gồm các công việc:
-Tìm hiểu lý thuyết chung, cần thiết để thực hiện đề tài bao gồm: tìm hiểu về

MSP430, tìm hiểu các phương thức truyền thông SPI, UART; tìm hiểu về nhận dạng tự
động tần số vô tuyến (RFID), module RFID-RC522; tìm hiểu LCD16x2; xây dựng khối
cấp nguồn; tìm hiểu cách xây dựng board mạch (sơ đồ nguyên lý, mạch lay out, mạch
in, và hàn mạch); xây dựng phần mềm sử dụng (công cụ được chọn: visual studio C#).
-Sau khi nắm được lý thuyết, đi vào thực hành với các công việc:
18


+Lập trình cho vi điều khiển MSP430: Vi điều khiển được chọn là MSP430G2553,
chip sẽ được lập trình và hoạt động với chức năng: giao tiếp với RC522 qua cổng SPI,
điều khiển hoạt động của nó, đọc ghi thông tin của thẻ RFID, hiển thị một số thông tin
lên LCD16x2, bật một led khi phát hiện thẻ RFID, và tắt nó đi trong trường hợp còn lại.
Truyền thông tin lên phần mềm máy tính qua cổng UART, nhận và xử lý lệnh được gửi
về.
+Xây dựng mạch:
 Vẽ mạch nguyên lý bao gồm các khối: khối nguồn có led báo và công tắc nguồn;






khối hiển thị gồm LCD và các led báo hiệu; khối cảm biển giao tiếp với MSP qua
cổng SPI; và khối giao tiếp UART với máy tính.
Từ sơ đồ nguyên lý, vẽ sơ đồ layout, nối chân các thiết bị.
Từ sơ đồ layout, in mạch, mua linh kiện
Hàn mạch
Chạy thử

+Thiết kế phần mềm sử dụng:

 Giao tiếp với mạch qua cổng UART: nhận thông tin và gửi lệnh xuống board.
 Tạo hệ cơ sở dữ liệu: Cập nhật, hiển thị, trao đổi thông tin.

2.3 Thực hành
Sau khi tìm hiểu lý thuyết, lập kế hoạch triển khải; dưới đây là phần trình bày về
thực hành thực tế sản xuất thiết bị.
2.3.1.

Lập trình cho vi xử lý MSP430

Chức năng vi xử lý trong mạch: giao tiếp với RC522 qua cổng SPI, điều khiển hoạt
động của nó, đọc ghi thông tin của thẻ RFID, hiển thị một số thông tin lên LCD16x2,
bật một led khi phát hiện thẻ RFID, và tắt nó đi trong trường hợp còn lại. Truyền thông
tin lên phần mềm máy tính qua cổng UART, nhận và xử lý lệnh được gửi về.
Công cụ được sử dụng để xây dựng project là CCStudio, lập trình cho dòng vi điều
khiển do TI cung cấp.
2.3.1.1.
Khởi tạo project mới
Các bước đầu tiên đi vào thực hành bao giờ cũng dề dàng nhằm tạo tiền đề cho hoạt
động sản xuất mạch diễn ra được trôi chảy, dưới đây là các bước tạo một project mới
phát triển nên ứng dụng về sau:
 Khởi động giao diện CCStudio:

19


Hình 2.8: Màn hình đầu tiên CCStudio khi khởi động song
Trên màn hình khởi động có các nội dung:
-Project Explorer: Chứa các project đã và đang được phát triển ứng dụng.
-Màn hình chính: Triển khai code.

-Cửa sổ Console: Cửa sổ hiện thị lỗi và các kết quả thao tác.
-Thanh công cụ: Chứa các phím chức năng của CCStudio.
 Tạo CCS Project
Trên thanh công cụ trọn mục file → New → Project… tiếp đó chọn mục CCS
Project, nhấn Next; cửa sổ thiết lập project mới hiện ra như hình 2.9.
-Tại Project Name: Đặt tên cho project mới (tùy thích).
-Tại Family chọn MSP430
-Tại Variant chọn MSP430G2553 (chip đã được chọn để phát triển ứng dụng)
-Tại Connection chọn TI MSP430 USB1 [Default].
-Tại của sổ chọn loại project chọn Empty Project (with main.c).
-Nhấn Finish, project mới được hiện ra
Sau khi thiết lập song môi trường phát triển project mới, hoàn toàn có thể phát triển
ứng dụng với các thao tác như thêm thư viện .h .c cần thiết và viết hàm main.c (Kịch
bản hoạt động chính cho chip xử lý).

20


Hình 2.9: Cửa sổ thiết lập project mới
2.3.1.2.
Tạo các thư viện cần xử dụng
Để thực hiện các chức năng của vi xử lý trong board như đã đề ra, ta cần xây dựng
các thư viện sau:
(thư viện .h chưa khai báo các hàm và các biến sử dụng, thu viện .c định nghĩa các
hàm trong hàm main chỉ cần include thư viện .h)
 Thư viện SPI.H, SPI.C: chứa các hàm phục vụ cho giao tiếp SPI giữu vi sử lý
và cảm biến RC522; định nghĩa chân xử dụng cho SPI.
21



#include <msp430g2553.h>
#ifndef SPI_H
#define SPI_H
void SPI_Init(void);
void Send_byte(int data, int time_ms);
unsigned char SPI_Xfer_byte(unsigned char data);
void setupSpiSlave();
void spiClearCs();
void spiSetCs();
unsigned char spiWriteByte(unsigned char val);
void spiTxRxSlave(int csPin, unsigned char * send_buffer, unsigned char *
receive_buffer , unsigned char length);
#endif

 Thư viện UART.H, UART.C: Chứa các hàm phục vụ truyền thông vi xử lý và
máy tính; định nghĩa chân sử dụng cho UART.
#ifndef UART_H_
#define UART_H_
#ifndef SMCLK_F
#define SMCLK_F 1000000 // frequency of Sub-System Master Clock in Hz
#endif
#define BAUDRATE 9600 // may be ... 1200, 2400, 4800, 9600, 19200, ...
//#define UART_RX_INT_EN 0
void uart_init();
void uart_putc(char c);
void uart_puts(const char *s);
void uart_put_num (unsigned long val, char dec, unsigned char neg);
char uart_data_ready();
char uart_getc();
void uart_gets(char *s);

void uart_printi(int n);
void printreg(char *name, int n);
#endif /* UART_H_ */

 Thư viện LCD.H, LCD.C: Chứa hàm phục vụ cho việc điều khiển LCD, định
nghĩa các chân dùng cho LCD.
#ifndef LCD_H_
#define LCD_H_
#ifndef F_CPU
#define F_CPU 8000000L
#endif
#include <stdio.h>
#include <stdarg.h>
#define
#define
#define
#define

setb(d,b) (d) |= (1 << (b))
clrb(d,b) (d) &= ~ (1 << (b))
getb(d,b) (((d) & (1 << (b))) != 0x00 ? 0x01 : 0x00)
iabs(x) ((x) >= 0 ? (x) : (0 - (x)))

#define LCD_RS_DDR P2DIR

22


#define
#define

#define
#define
#define

LCD_RS_PORT P2OUT
LCD_RS 5
LCD_EN_DDR P2DIR
LCD_EN_PORT P2OUT
LCD_EN 4

#define LCD_LED_DDR P1DIR
#define LCD_LED_PORT P1OUT
#define LCD_LED 5
#define
#define
#define
#define
#define
#define

LCD_DATA_DDR P2DIR
LCD_DATA_PORT P2OUT
LCD_D4 3
LCD_D5 0
LCD_D6 1
LCD_D7 2

#define
#define
#define

#define

LCD_4_DEC_CUR_SHIFT_ON() lcd_write_cmd(0x05);
LCD_4_DEC_CUR_SHIFT_OFF() lcd_write_cmd(0x04);
LCD_4_INC_CUR_SHIFT_ON() lcd_write_cmd(0x07);
LCD_4_INC_CUR_SHIFT_OFF() lcd_write_cmd(0x06);

#define lcd_ready _delay_cycles(3000)
unsigned char _lcd_x = 0, _lcd_y = 0, _lcd_maxx = 0;
unsigned char _base_y[4] = {0x80, 0xc0};
#define lcd_onled setb(LCD_LED_PORT, LCD_LED)
#define lcd_offled clrb(LCD_LED_PORT, LCD_LED)
void lcd_write_4bit(unsigned char rs, unsigned char dat);
void lcd_write_cmd(unsigned char dat);
void lcd_write_data(unsigned char dat);
void LCD_4_CUR_SHIFT(unsigned char direct, unsigned char step);
void lcd_printf_float(float x, unsigned char length, unsigned char coma);
void lcd_gotoxy(unsigned char x, unsigned char y);
void lcd_clear();
void lcd_cus(unsigned char on);
void lcd_putchar(unsigned char c);
void lcd_puts(char * s);
void lcd_printf(char * format, ... );
void lcd_putbin(unsigned char num);
void lcd_init(unsigned char lcd_columns);
#endif /* LCH_ */

 Thư viện MFRC522.H, MFRC522.C: Định nghĩa các thanh ghi, các thao tác
với cảm biến MFRC522, định nghĩa chân sử dụng, và các hàm thao tác.
#include "spi.h"

#include "my_types.h"
#define MAX_LEN 16
//MF522
#define
#define
#define
#define
#define

23

PCD_IDLE
0x00
PCD_AUTHENT
0x0E
PCD_RECEIVE
0x08
PCD_TRANSMIT
0x04
PCD_TRANSCEIVE
0x0C

//NO action


#define PCD_RESETPHASE
#define PCD_CALCCRC

0x0F
0x03


//Mifare_One
#define PICC_REQIDL
#define PICC_REQALL
#define PICC_ANTICOLL
#define PICC_SElECTTAG
#define PICC_AUTHENT1A
#define PICC_AUTHENT1B
#define PICC_READ
#define PICC_WRITE
#define PICC_DECREMENT
#define PICC_INCREMENT
#define PICC_RESTORE
#define PICC_TRANSFER
#define PICC_HALT

0x26
0x52
0x93
0x93
0x60
0x61
0x30
0xA0
0xC0
0xC1
0xC2
0xB0
0x50


//MF522
#define MI_OK
#define MI_NOTAGERR
#define MI_ERR

0

1

2

//------------------MFRC522--------------//Page 0:Command and Status
#define
Reserved00
0x00
#define
CommandReg
0x01
#define
CommIEnReg
0x02
#define
DivlEnReg
0x03
#define
CommIrqReg
0x04
#define
DivIrqReg
0x05

#define
ErrorReg
0x06
#define
Status1Reg
0x07
#define
Status2Reg
0x08
#define
FIFODataReg
0x09
#define
FIFOLevelReg
0x0A
#define
WaterLevelReg
0x0B
#define
ControlReg
0x0C
#define
BitFramingReg
0x0D
#define
CollReg
0x0E
#define
Reserved01
0x0F

//Page 1:Command
#define
Reserved10
0x10
#define
ModeReg
0x11
#define
TxModeReg
0x12
#define
RxModeReg
0x13
#define
TxControlReg
0x14
#define
TxAutoReg
0x15
#define
TxSelReg
0x16
#define
RxSelReg
0x17
#define
RxThresholdReg
0x18
#define
DemodReg

0x19
#define
Reserved11
0x1A
#define
Reserved12
0x1B
#define
MifareReg
0x1C
#define
Reserved13
0x1D
#define
Reserved14
0x1E
#define
SerialSpeedReg
0x1F

24

//CRC


//Page 2:CFG
#define
Reserved20
0x20
#define

CRCResultRegM
0x21
#define
CRCResultRegL
0x22
#define
Reserved21
0x23
#define
ModWidthReg
0x24
#define
Reserved22
0x25
#define
RFCfgReg
0x26
#define
GsNReg
0x27
#define
CWGsPReg
0x28
#define
ModGsPReg
0x29
#define
TModeReg
0x2A
#define

TPrescalerReg
0x2B
#define
TReloadRegH
0x2C
#define
TReloadRegL
0x2D
#define
TCounterValueRegH
0x2E
#define
TCounterValueRegL
0x2F
//Page 3:TestRegister
#define
Reserved30
0x30
#define
TestSel1Reg
0x31
#define
TestSel2Reg
0x32
#define
TestPinEnReg
0x33
#define
TestPinValueReg
0x34

#define
TestBusReg
0x35
#define
AutoTestReg
0x36
#define
VersionReg
0x37
#define
AnalogTestReg
0x38
#define
TestDAC1Reg
0x39
#define
TestDAC2Reg
0x3A
#define
TestADCReg
0x3B
#define
Reserved31
0x3C
#define
Reserved32
0x3D
#define
Reserved33
0x3E

#define
Reserved34
0x3F
//-----------------------------------------------

void Write_MFRC522(uchar addr, uchar val);
uchar Read_MFRC522(uchar addr);
void SetBitMask(uchar reg, uchar mask);
void ClearBitMask(uchar reg, uchar mask);
void AntennaOn(void);
void AntennaOf(void);
void MFRC522_Reset(void);
void MFRC522_Init(void);
uchar MFRC522_Request(uchar reqMode, uchar *TagType);
uchar MFRC522_ToCard(uchar command, uchar *sendData, uchar sendLen, uchar
*backData, uint *backLen);
uchar MFRC522_Anticoll(uchar *serNum);
void CalulateCRC(uchar *pIndata, uchar len, uchar *pOutData);
uchar MFRC522_SelectTag(uchar *serNum);
uchar MFRC522_Auth(uchar authMode, uchar BlockAddr, uchar *Sectorkey, uchar
*serNum);
uchar MFRC522_Read(uchar blockAddr, uchar *recvData);
uchar MFRC522_Write(uchar blockAddr, uchar *writeData);
uchar MFRC522_Halt(void);

25


×