Professional Documents
Culture Documents
Đồ Án Tốt Nghiệp - Thiết Kế, Thi Công Bãi Giữ Xe Ứng Dụng Công Nghệ RFID Và Xử Lý Ảnh - 1232771
Đồ Án Tốt Nghiệp - Thiết Kế, Thi Công Bãi Giữ Xe Ứng Dụng Công Nghệ RFID Và Xử Lý Ảnh - 1232771
TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o----
I. TÊN ĐỀ TÀI: THIẾT KẾ, THI CÔNG BÃI GIỮ XE ỨNG DỤNG CÔNG
NGHỆ RFID VÀ XỬ LÝ ẢNH.
II. NHIỆM VỤ
1. Các số liệu ban đầu: (ghi những thông số, tập tài liệu tín hiệu, hình ảnh,…)
Vì đề tài là thiết kế, thi công bãi giữ xe nên nhóm chỉ sưu tầm những tấm hình biển
số xe có sẵn trên mạng để sau này đưa vào sử dụng trong phần xử lý ảnh.
2. Nội dung thực hiện: (ghi những nội dung chính cần thực hiện như trong phần
tổng quan)
Tổng quan về hệ thống quản lý xe ra vào tự động ứng dụng xử lý ảnh.
Nghiên cứu thuật toán xử lý ảnh ứng dụng.
Viết chương trình điều khiển cho Arduino, xử lý trên mô hình thực tế.
Viết chương trình xử lý ảnh.
Giải pháp thiết kế giao diện giám sát hoạt động của hệ thống.
Hoàn thiện hệ thống điều khiển và mô hình, tiến hành chạy mẫu.
III. NGÀY GIAO NHIỆM VỤ: 18/02/2019
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 10/06/2019
V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS. Nguyễn Ngô Lâm
TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o----
(25/3 – 31/3)
Tuần 7 - Nghiên cứu thiết kế cơ bản sơ đồ nguyên lý.
(1/4 - 7/4) - Nghiên cứu thiết kế cơ bản về phần cứng, mô
hình nhà giữ xe.
Tuần 8 - Viết chương trình điểu khiển cho Arduino, nạp
(8/4 – 14/4) code, chạy thử riêng phần RFID trên phần cứng
thực tế.
Tuần 9 - Xử lý hình ảnh biển số xe nhận về từ camera
(15/4 – 21/4) thông qua phần mềm Matlab.
Tuần 10 - Tiếp tục xử lý về hình ảnh, khi ảnh bị lệch, chụp
(22/4 – 28/4) không rõ, hoặc nhận dạng sai,…
Tuần 11 - Đưa ra giải pháp thiết kế giao diện cách tối ưu
(29/4 – 5/5) nhất để giám sát hệ thống.
Tuần 12 - Hoàn chỉnh cơ bản phần cứng.
(6/5 – 12/5) - Vẽ mạch in từng phần cho phù hợp mô hình.
Tuần 13 - Lắp ráp mạch, các linh kiện, mạch in, module
(13/5 – 19/5) lên mô hình.
Tuần 14 - Lập trình hoàn chỉnh.
(20/5 – 26/5) - Cân chỉnh, tối ưu sản phẩm.
Tuần 15 - Viết và chỉnh sửa báo cáo.
(27/5 – 2/6) - In báo cáo.
Tuần 16 - Bảo vệ ĐATN
(18/6 – 22/6)
GV HƯỚNG DẪN
(Ký và ghi rõ họ và tên)
Báo Cáo Đồ Án Tốt Nghiệp Trang iv
LỜI CẢM ƠN
Trong thời gian thực hiện đề tài này, nhóm em đã nhận được nhiều sự giúp đỡ,
đóng góp ý kiến và chỉ bảo nhiệt tình của các thầy cô và bạn bè, vậy nên nhóm em
xin chân thành cảm ơn:
Ban giám hiệu nhà trường Đại học Sư Phạm Kỹ Thuật TP.HCM đã tạo điều
kiện tốt nhất cho sinh viên học tập và nghiên cứu.
Thầy cô trong trường đã tận tình hướng dẫn và thư viện trường đã cung cấp giáo
trình và tài liệu tham khảo trong suốt quá trình học tập của sinh viên.
Đặc biệt là sự hướng dẫn và giúp đỡ tận tình của thầy giáo Nguyễn Ngô Lâm
đã giảng dạy, giúp đỡ và phân tích rõ về những vấn đề sinh viên còn khúc mắc.
Nhóm em đã cố gắng trong quá trình tìm hiểu và thực hiện đề tài nhưng vì kiến
thức còn hạn chế khiến bài tiểu luận này không được như ý thầy. Nhóm rất mong
được sự góp ý, nhận xét đánh giá về nội dung và hình thức trình bày từ thầy để nhóm
có thể hoàn thiện bài báo cáo tốt hơn.
Xin chân thành cảm ơn!
MỤC LỤC
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP....................................................................................... i
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP ............................................................ii
LỜI CAM ĐOAN ................................................................................................................. iv
LỜI CẢM ƠN ........................................................................................................................ v
MỤC LỤC ............................................................................................................................ vi
LIỆT KÊ HÌNH VẼ .............................................................................................................. ix
LIỆT KÊ BẢNG ................................................................................................................... xi
PHỤ LỤC CÁC TỪ VIẾT TẮT ..........................................................................................xii
TÓM TẮT ...........................................................................................................................xiii
Chương 1: TỔNG QUAN ...................................................................................................... 1
1.1 Giới thiệu ..................................................................................................................... 1
1.2 Tình hình nghiên cứu hiện nay .................................................................................... 1
1.2.1 Tình hình nghiên cứu trong nước ......................................................................... 1
1.2.2 Tình hình nghiên cứu ngoài nước ......................................................................... 3
1.3 Tính cấp thiết của đề tài ............................................................................................... 3
1.4 Mục tiêu đề tài ............................................................................................................. 4
1.5 Phương hướng thực hiện đề tài .................................................................................... 4
1.6 Bố cục đồ án................................................................................................................. 4
Chương 2: CƠ SỞ LÝ THUYẾT .......................................................................................... 6
2.1 Giới thiệu linh kiện ...................................................................................................... 6
2.1.1 Borad Arduino Uno R3 ......................................................................................... 6
2.1.2 Module RFID RC522............................................................................................ 9
2.1.3 Màn hình LCD 20x4 ........................................................................................... 10
2.1.4 Động cơ Servo SG90 .......................................................................................... 13
2.1.5 Camera USB 2.0 ................................................................................................. 14
2.2 Phần mềm lập trình điều khiển .................................................................................. 15
2.2.1 Phần mềm lập trình Arduino IDE ....................................................................... 15
2.2.2 Giới thiệu phần mềm Matlab .............................................................................. 21
2.2.3 Cài đặt thư viện Arduino cho Matlab ................................................................. 23
2.3 Sơ lược về công nghệ RFID ...................................................................................... 25
2.4 Sơ lược về UART ...................................................................................................... 27
2.5 Sơ lược về chuẩn giao tiếp SPI .................................................................................. 33
2.6 Sơ lược về I2C ........................................................................................................... 33
2.7 Lý thuyết ảnh số ......................................................................................................... 33
Báo Cáo Đồ Án Tốt Nghiệp Trang vii
LIỆT KÊ HÌNH VẼ
Hình Trang
Hình 1. 1: Máy tính hiển thị và lưu dữ liệu thông tin xe ra - vào ...............................2
Hình 1. 2: Đầu đọc thẻ xe CR500 ...............................................................................3
Hình 2. 1: Hình ảnh thực tế Arduino Uno R3 .............................................................6
Hình 2. 2: Sơ đồ chân của Arduino Uno R3 ...............................................................7
Hình 2. 3: Hình ảnh thực tế module RFID RC522 .....................................................9
Hình 2. 4: Hình ảnh LCD 20x4 .................................................................................10
Hình 2. 5: Dạng sóng điều khiển LCD......................................................................12
Hình 2. 6: Module chuyển đổi I2C ...........................................................................12
Hình 2. 7: Hình ảnh động cơ Servo SG90 ................................................................13
Hình 2. 8: Hình ảnh Camera .....................................................................................14
Hình 2. 9: Giao diện phần mềm Arduino IDE ..........................................................16
Hình 2. 10: Vùng lập trình code Arduino .................................................................16
Hình 2. 11: Chọn board để biên dịch code ................................................................17
Hình 2. 12: Chọn port của board đang kết nối ..........................................................17
Hình 2. 13: Lưu lại file đã lập trình ..........................................................................18
Hình 2. 14: Biên dịch chương trình...........................................................................18
Hình 2. 15: Biên dịch chương trình...........................................................................19
Hình 2. 16: Nạp chương trình ...................................................................................19
Hình 2. 17: Nạp chương trình ...................................................................................20
Hình 2. 18: Nạp chương trình ...................................................................................20
Hình 2. 19: Kết quả chương trình .............................................................................21
Hình 2. 20: Giao diện phần mềm Matlab ..................................................................22
Hình 2. 21: Nhận gói hỗ trợ phần cứng ....................................................................24
Hình 2. 22: Chọn gói hỗ trợ phần cứng cho Arduino ...............................................24
Hình 2. 23: Chọn hoàn tất cài đặt..............................................................................25
Hình 2. 24: Hệ thống RFID cơ bản ...........................................................................27
Hình 2. 25: Giao tiếp UART .....................................................................................28
Hình 2. 26: Giao tiếp song song ................................................................................29
Hình 2. 27: Sơ đồ khối UART ..................................................................................30
Hình 2. 28: Truyền thông UART ..............................................................................31
Hình 2. 29: Giao diện UART ....................................................................................32
Hình 2. 30: Mảng 2 chiều của một file ảnh ...............................................................34
Hình 2. 31: Mô hình màu RGB .................................................................................35
Hình 2. 32: Ảnh xám và lược đồ mức xám ...............................................................36
Hình 2. 33: Ảnh nhị phân ..........................................................................................36
Hình 3. 1: Sơ đồ khối hệ thống .................................................................................38
Hình 3. 2: Sơ đồ kết nối Arduino với 2 servo ...........................................................40
Hình 3. 3: Sơ đồ kết nối Arduino với LCD ...............................................................41
Hình 3. 4: Sơ đồ kết nối khối RFID với Arduino .....................................................42
Hình 3. 5: Lưu đồ giải thuật chương trình chính ......................................................44
Hình 3. 6: Lưu đồ chương trình khối xử lý trung tâm ..............................................45
Hình 3. 7: Lưu đồ chương trình RFID ......................................................................46
Báo Cáo Đồ Án Tốt Nghiệp Trang x
LIỆT KÊ BẢNG
Bảng Trang
Bảng 2. 1: Thông số kỹ thuật chính của borad Arduino .............................................8
Bảng 2. 2: Chức năng các chân của LCD .................................................................12
Bảng 3. 1: Bảng nối chân giữa LCD và arduino .......................................................41
Bảng 3. 2: Sơ đồ kết nối với RC522 .........................................................................42
Bảng 3. 3: Dòng và áp quy định các link kiện ..........................................................43
Báo Cáo Đồ Án Tốt Nghiệp Trang xii
IoT Internet of Things Mạng lưới vạn vật kết nối Internet
UART Universal Asynchronous Receiver / Truyền dữ liệu nối tiếp bất đồng
Transmitter bộ
SRAM Static Random Access Memory Bộ nhớ truy cập ngẫu nhiên tĩnh
SCK Serial Clock Chân giữ xung nhịp trong giao tiếp
SPI
MISO Master Input Slave Output Chân mang dữ liệu từ các thiết bị
SPI về vi điều khiển
TÓM TẮT
Theo sau sự phát triển và biến động như vũ bão của nền kinh tế, cùng đó là tốc
độ phát triển chóng mặt của Khoa học – Kỹ thuật, ngày nay ở các thành phố lớn mật
độ số lượng xe ngày càng đông. Điều này phần nào nói lên sự phát triển của một quốc
gia nhưng ngược lại dẫn đến sự ô nhiễm về môi trường, ùn tắc giao thông và thiếu
bãi đậu, đỗ xe cần được giải quyết.
Điện tử đang trở thành một ngành công nghiệp đa nhiệm, đã và đang đáp ứng
nhu cầu của mọi người về tất cả những lĩnh vực phổ biến trong đời sống. Các thiết bị
điện tử đã, đang và sẽ tiếp tục được ứng dụng rộng rãi và mang lại hiệu quả tối ưu
nhất trong hầu hết các lĩnh vực khoa học kỹ thuật cũng như đời sống xã hội.
Với trình độ khoa học kỹ thuật ngày càng phát triển, rất nhiều những vấn đề
đã được giải quyết một cách nhanh gọn với công nghệ điện tử hiện đại. Các bãi giữ
xe truyền thống đã không còn phù hợp với những trung tâm thương mại, siêu thị hay
bệnh viện vì những rắc rối mà nó mang lại. Với hệ thống giữ xe bằng thẻ từ và xử lý
ảnh để nhận dạng biển số xe thì những vấn đề như mất xe, mất vé gửi xe đã được giải
quyết nhanh gọn và triệt để. Xuất phát từ những vấn đề thiết thực đó đề tài “Thiết
kế, thi công bãi giữ xe ứng dụng công nghệ RFID và xử lý ảnh” đã được chọn cho
quá trình nghiên cứu.
Báo Cáo Đồ Án Tốt Nghiệp Trang 1
và hình thức đầu tư phù hợp để hướng dẫn các nhà đầu tư có quan tâm thực hiện theo
quy định. Bãi đậu xe cao tầng lắp ghép tại các khu đất thuộc côn trường Lam Sơn ở
phía sau nhà hát TP.HCM (rộng 1.410 m2) có 9 tầng với tổng mức đầu tư 161 tỉ đồng.
Dự án có tổng diện tích xây dựng hơn 6.000 m2 với sức chứa 168 ôtô. Bãi xe được
trang bị hệ thống đậu xe sử dụng robot tự động xếp xe. Hình thức đầu tư dự án được
đề xuất theo hợp đồng Xây dựng – Sở hữu – Kinh doanh.
Bên cạnh đó còn có kế hoạch xây dựng thêm bãi xe thông minh ở công viên
23/9 (rộng 4.048 m2), công viên Lê Văn Tám (rộng 1.416 m2) và công viên Tao Đàn
(rộng 570 m2) [7]. Và cho tới thời điểm này hầu hết các trung tâm thương mại và
siêu thị lớn đều đã tích hợp các bãi xe sử dụng công nghệ RFID và đạt được thành
công. Tuy nhiên so với thực tế tình hình phát triển của đất nước thì còn cần nhiều bãi
giữ xe hơn là thế nữa.
Đây là hình ảnh bãi giữ xe sử dụng công nghệ RFID ngay tại trường Đại học
Sư Phạm Kỹ Thuật TP.HCM:
Hình 1. 1: Máy tính hiển thị và lưu dữ liệu thông tin xe ra - vào
xe thông minh nhằm đáp ứng nhu cầu của người dân cũng như là thu về lợi nhuận rất
khủng.
Như ở các bãi xe truyền thống trước đó, bộ phận quản lý gặp rất nhiều khó
khăn trong công việc quản lý và cũng không ít trường hợp nhân viên giữ xe bị gây
khó dễ, việc thất thoát tài chính là điều không tránh khỏi, rồi ở một số nới việc ghi
phấn lên xe khiến nhiều người khó chịu, còn nếu ghi vé xe bằng giấy thì một số trường
hợp bị ướt sẽ rất khó xử lý,… gây lãng phí và ô nhiễm môi trường.
Để khắc phục những vấn đề đó thì đề tài này phần nào góp phần giải quyết
được nhu cầu về bãi xe, tích hợp được công nghệ RFID vào để cải thiện tính hiệu quả
và linh hoạt trong các hệ thống hiện có.
1.4 Mục tiêu đề tài
Mục tiêu của đề tài là thiết kế và thi công được một hệ thống bãi giữ xe gồm
mô hình một bãi giữ xe tự động và phần mềm quản lý trên PC ứng dụng công nghệ
RFID và xử lý ảnh.
1.5 Phương hướng thực hiện đề tài
Phương pháp tham khảo tài liệu: bằng cách thu thập thông tin từ sách, tạp chí
về khoa học điện tử, tham khảo từ nguồn Internet và các đồ án của những
khóa trước.
Phương pháp quan sát: khảo sát một số bãi xe thông minh hiện hành để đưa
ra phương án thiết kế sau này cách tốt nhất.
Phương pháp thực nghiệm: từ những ý tưởng và kiến thức của nhóm, kết hợp
với sự hướng dẫn của giảng viên, nhóm đã chọn lọc được cách làm tối ưu
nhất.
1.6 Bố cục đồ án
Chương 1: Tổng quan
Giới thiệu sơ lược, mục tiêu và phương pháp nghiên cứu đề tài.
Chương 2: Cơ sở lý thuyết
Nêu các lý thuyết cần thiết để sử dụng trong đề tài.
Chương 3: Thiết kế và xây dựng hệ thống trên board Arduino
Chương 4: Hệ thống nhận dạng biển số xe bằng Matlab
Trình bày sơ bộ về hệ thống, nguyên lý hoạt động và giải thích hoạt
Chương 2: CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu linh kiện
2.1.1 Borad Arduino Uno R3
Arduino Uno R3 là kit Arduino Uno thế hệ thứ 3, tích hợp vi điều khiển
ATmega328P(8bits), với khả năng lập trình cho các ứng dụng điều khiển phức tạp do
được trang bị cấu hình mạnh cho các loại bộ nhớ ROM, RAM và Flash, các ngõ vào
ra digital I/O trong đó có nhiều ngõ có khả năng xuất tín hiệu PWM, các ngõ đọc tín
hiệu analog và các chuẩn giao tiếp đa dạng như UART, SPI, TWI (I2C).
Arduino Uno R3 có 6 chân Analog (A0 ÷ A5) cung cấp độ phân giải 10bit (0 ÷
210 -1) để đọc giá trị điện áp trong khoảng 0V – 5V. Với chân AREF trên board, ta có
thể đưa vào điện áp tham chiếu khi sử dụng các chân Analog. Tức là nếu cấp điện áp
2.5V vào chân này thì có thể dùng các chân Analog để đo điện áp trong khoảng 0V
÷ 2.5V với độ phân giải vẫn là 10bit.
Arduino có thế cấp nguồn 5V thông qua cổng USB.
Bộ nhớ của Arduino Uno R3 cung cấp cho người dùng:
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 7
32KB bộ nhớ Flash: những đoạn lệnh lập trình sẽ được lưu trữ trong bộ nhớ
Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số này sẽ
được dùng cho bootloader nhưng rất hiếm khi nào cần quá 20KB bộ nhớ này.
2KB cho SRAM (Static Random Access Memory): giá trị các biến khai báo
khi lập trình sẽ ở đây. Khai báo càng nhiều biến thì cần càng nhiều bộ nhớ
RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM trở thành thứ
đáng để mà phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị mất.
EPROM (Electrically Eraseble Programmable Read Only Memory): đây
giống như một chiếc ổ cứng mini – nơi mà bạn có thể đọc và ghi dữ liệu của
mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên
SRAM là 1KB.
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 8
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 9
Dùng giao tiếp SPI kết nối với ARDUINO, kết nối qua 4 chân: SCK, MISO,
MOSI, SS
SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên
cần 1 đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi.
MISO – Master Input / Slave Output: nếu là chip Master thì đây là đường Input
còn nếu là chip Slave thì MISO lại là Output. MISO của Master và các Slaves
được nối trực tiếp với nhau.
MOSI – Master Output / Slave Input: nếu là chip Master thì đây là đường
Output còn nếu là chip Slave thì MOSI là Input. MOSI của Master và các
Slaves được nối trực tiếp với nhau.
SS – Slave Select: đường chọn Slave cần giap tiếp, tích cực mức thấp.
Thông số kỹ thuật:
Nguồn: 3.3VDC, 13 - 26mA
Dòng ở chế độ chờ: 1013mA
Dòng ở chế độ nghỉ: < 80uA
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 10
LCD 20x4 là loại màn hình tinh thể lỏng nhỏ dùng để hiển thị chữ hoặc số
trong bảng mã ASCII. Mỗi ô của Text LCD bao gồm các chấm tinh thể lỏng, các
chấm này kết hợp với nhau theo trình tự “ẩn” hoặc “hiện” sẽ tạo nên các kí tự cần
hiển thị và mỗi ô chỉ hiển thị được một kí tự duy nhất.
LCD 20x4 nghĩa là loại LCD có 4 dòng và mỗi dòng chỉ hiển thị được 20 kí
tự. Đây là loại màn hình được sử dụng rất phổ biến trong các loại mạch điện.
Thông số kĩ thuật của LCD 20x4:
Điện áp: 5V
Ngõ giao tiếp: 16 chân
Màu sắc: xanh lá hoặc xanh dương
Module hỗ trợ giao tiếp với vi điều khiển: LCD I2C 16x2
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 11
Chân Ký hiệu Mô tả
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với
1 Vss
GND của mạch điều khiển.
Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này
2 VDD
với VCC=5V của mạch điều khiển.
3 VEE Điều chỉnh độ tương phản của LCD.
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
4 RS 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.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với
5 R/W logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic
“1” để LCD ở chế độ đọc.
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
6 E 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.
Tám đường của bus dữ liệu dùng để trao đổi thông tin với
MPU. Có 2 chế độ sử dụng 8 đường bus này:
DB0 - + Chế độ 8 bit: Dữ liệu được truyền trên cả 8 đường, với bit
7 - 14
DB7 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.
15 - Nguồn dương cho đèn nền.
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 12
Nhìn vào dạng song ta có thể thấy được trình tự điều khiển như sau:
Điều khiển tín hiệu RS.
Điều khiển tín hiệu R/W xuống mức thấp.
Điều khiển tín hiệu E lên mức cao để cho phép.
Xuất dữ liệu D7 – D0.
Điều khiển tín hiệu E về mức thấp.
Điều khiển tín hiệu R/W lên mức cao trở lại.
Kết nối với Arduino thông qua Module chuyển đổi I2C với địa chỉ giao tiếp
I2C là 0x27.
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 13
Để sử dụng các loại LCD có driver là HD44780 (LCD 1602, LCD 2004, …)
cần có ít nhất 6 chân của MCU kết nối với các chân RS, EN, D7, D6, D5 và D4 để
có thể giao tiếp với LCD. Nhưng với module chuyển giao tiếp LCD sang I2C, chỉ cần
hai chân (SDA và SCL) của MCU kết nối với hai chân (SDA và SCL) của module để
có thể hiển thị thông tin lên LCD. Ngoài ra có thể điều chỉnh được độ tương phản bởi
biến trở gắn trên module.
Thông số kĩ thuật của module I2C:
Kích thước: 41.5mm(L)X19mm(W)X15.3MM(H)
Trọng lượng: 5g
Điện áp hoạt động: 2.5v-6v
Jump chốt: Cung cấp đèn cho LCD hoặc ngắt
Biến trở xoay độ tương phản cho LCD
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 14
được hồi tiếp về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản chuyển động
quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong
muốn. Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác.
Thông số kỹ thuật của động cơ:
Momen xoắn: 1.8kg/cm
Tốc độ hoạt động: 60 độ trong 0.1 giây
Điện áp hoạt động: 4.8V(~5V)
Nhiệt độ hoạt động: 0 ºC – 55 ºC
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 15
Thông số kỹ thuật:
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 16
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 17
Sau khi gõ code, tiến hành chọn Board và Port giao tiếp
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 18
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 19
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 20
Sau khi nạp, nhấp chuột vào đây để xem kết quả:
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 21
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 22
Về dữ liệu, dữ liệu của Matlab thể hiện dưới dạng ma trận (hoặc mảng - tổng
quát), và có các kiểu dữ liệu được liệt kê sau đây:
Kiểu đơn single, kiểu này có lợi về bộ nhớ dữ liệu vì nó đòi hỏi ít byte nhớ
hơn, kiểu dữ liệu này không được sử dụng trong các phép tính toán học, độ
chính xác kém hơn.
Kiểu double kiểu này là kiểu thông dụng nhất của các biến trong Matlab.
Kiểu Sparse.
Kiểu uint8, uint8, uint16, uint64...
Kiểu char ví dụ “Hello”.
Kiểu cell.
Kiểu Structure.
Trong Matlab kiểu dữ liệu double là kiểu mặc định sử dụng trong các phép
tính số học.
Toolbox là một công cụ quan trọng trong Matlab, công cụ này được Matlab
cung cấp cho phép bạn ứng dụng các kỹ thuật để phân tích, thiết kế, mô phỏng các
mô hình.
Ta có thể tìm thấy toolbox ở trong mô trường làm việc của:
Mạng nơron.
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 23
Logic mờ.
Simulink.
Hệ thống Matlab, hệ thống giao diện của Matlab được chia thành 5 phần:
Môi trường phát triển: đây là nơi đặt các thanh công cụ, các phương tiện
giúp chúng ta sử dụng các lệnh và các file, ta có thể liệt kê một số như
sau:
+ Desktop.
+ Command Window.
+ Command History.
+ Browsers for viewinghelp.
Thư viện, các hàm toán học bao gồm các cấu trúc như tính tổng, sin cosin
atan, atan2 etc..., các phép tính đơn giản đến các phép tính phức tạp như
tính ma trận nghich đảo, trị riêng, chuyển đổi fourier, laplace, symbolic
library.
Ngôn ngữ Matlab. Đó là các ngôn ngữ cao về ma trận và mảng, với các
dòng lệnh, các hàm, cấu trúc dữ liệu vào, có thể lập trình hướng đối tượng.
Đồ hoạ trong Matlab. Bao gồm các câu lệnh thể hiện đồ họa trong môi
trường 2D và 3D, tạo các hình ảnh chuyển động, cung cấp các giao diện
tương tác giữa người sử dụng và máy tính.
Giao tiếp với các ngôn ngữ khác. Matlab cho phép tương tác với các ngôn
ngữ khác như C, Fortran …
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 24
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 25
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 26
xe,… Reader scan dữ liệu của tag và gửi thông tin đến cơ sở dữ liệu có lưu trữ dữ
liệu của tag. Ví dụ, các tag có thể được đặt trên kính chắn gió của xe hơi để hệ thống
thu phí đường nhanh chóng nhận dạng và thu tiền trên các tuyến đường lớn.
Một hệ thống RFID cơ bản bao gồm 2 thành phần chính:
Phần cứng: gồm có thẻ (con tem), anten, máy đọc thẻ, máy chủ.
Phần mềm: gồm có phần mềm trung gian (middle ware) và phần mềm ứng
dụng (trong lĩnh vực thư viện nó là các phần mềm quản trị thư viện).
Phần cứng
Thẻ RFID (RFID tag): Thẻ RFID được cấu tạo mềm mỏng có chứa chíp vi xử
lí và anten (đối với loại thẻ không năng). Nó có thể đọc, ghi dữ liệu, và thậm
chí có chứa cả thông tin về bảo mật. Thẻ này có thể dán vào các vật cần quản
lý như sách, hàng hóa, động vật,…
Máy đọc (Readers): Máy đọc có nhiệm vụ chuyển dữ liệu giải mã dữ liệu được
từ thẻ tới phần mềm trung gian và phần mềm ứng dụng để xử lý. Thông thường
máy đọc tích hợp với anten. Máy đọc thường được đặt tại bàn mượn/trả, các
điểm mượn/trả tự động, trong kho và máy phân loại tự động, tại lối ra của thư
viện.
Máy chủ: là máy vi tính được dùng để chạy các phần mềm trung gian và phần
mềm ứng dụng.
Phần mềm
Phần mềm trung gian (Middleware): Phần mềm trung gian là các phần mềm
được sử dụng để nhận và xử lý các dữ liệu thô nhận được từ các máy đọc để
chuyển tới các phần mềm quản trị thư viện. Đây là một thành phần không thể
thiếu trong hệ thống RFID. Phần mềm này thường được xây dựng và cung cấp
bởi các nhà cung cấp thiết bị RFID.
Phần mềm ứng dụng (Application software): Là các phần mềm được sử dụng
để xử lý và tự động hóa các công việc của một cơ quan, tổ chức. Trong lĩnh
vực thư viện, phần mềm ứng dụng chính là các phần mềm thư viện điện tử tích
hợp trong đó có lưu thông tin về các tài liệu, bạn đọc, quá trình mượn/trả, hệ
thống kho… mà thư viện quản lý. Phần mềm này sẽ nhận dữ liệu đã được xử
lý từ phần mềm trung gian để phân tích.
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 27
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 28
giao thức truyền thông (I2C & SPI). Chức năng chính của UART là truyền dữ liệu
nối tiếp. Trong UART, giao tiếp giữa hai thiết bị có thể được thực hiện theo hai cách
là giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song.
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 29
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 30
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 31
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 32
Hình dưới đây cho thấy UART giao tiếp với vi điều khiển. Giao tiếp UART có
thể được thực hiện bằng ba tín hiệu như TXD, RXD và GND.
Bằng cách sử dụng điều này, chúng ta có thể hiển thị một văn bản trong máy
tính cá nhân từ board vi điều khiển 8051 cũng như mô-đun UART. Trong board 8051,
có hai giao diện nối tiếp như UART0 và UART1. Ở đây, giao diện UART0 được sử
dụng. Chân Tx truyền thông tin đến chân PC & Rx nhận thông tin từ PC. Tốc độ
Baud có thể được sử dụng để biểu thị tốc độ của cả vi điều khiển và PC. Việc truyền
và nhận dữ liệu có thể được thực hiện đúng khi tốc độ truyền của cả vi điều khiển và
PC là tương tự nhau.
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 33
Sắp xếp gói dữ liệu có thể được sửa đổi vì cả hai mặt được sắp xếp
Kích thước khung dữ liệu tối đa là 9 bit
Nó không chứa một số hệ thống phụ (hoặc)
Tốc độ truyền của UART phải ở mức 10% của nhau
2.5 Sơ lược về chuẩn giao tiếp SPI
SPI là một chuẩn truyền thông nối tiếp tốc độ cao. Đây là kiểu truyền thông
Master Slave, tức là sử dụng tín hiệu đồng bộ chuyên dụng để đồng bộ bộ phát và bộ
thu hoặc Master và Slave, trong đó có 1 chip Master điều phối quá trình truyền thông
và các chip Slaves được điều khiển bởi Master (gọi là một mối quan hệ trong giao
diện đa điểm). SPI là một cách truyền song công, nghĩa là tại cùng một thời điểm quá
trình truyền và nhận có thể xảy ra đồng thời.
Bus SPI bao gồm 4 tín hiệu hoặc chân:
Master – Out / Slave – In (MOSI hay SI): cổng ra của bên Master, cổng vào
của bên Slave, dành cho việc truyền dữ liệu từ thiết bị Master đến thiết bị Slave
Master – In / Slave – Out (MISO hay SO): cổng vào của bên Master, cổng ra
của bên Slave, dành cho việc truyền dữ liệu từ thiết Slave đến thiết bị Master.
Serial Clock (SCK hay SCLK): xung giữ nhịp cho giao tiếp SPI.
Chip Select (CS) hay Slave Select (SS): chọn chip.
2.6 Sơ lược về I2C
I2C sử dụng hai đường truyền tín hiệu: một đường xung nhịp đồng hồ (SCL)
và một đường tín hiệu (SDA). SCL và SDA luôn được kéo lên nguồn bằng một điện
trở kéo lên có giá trị xấp xỉ 4.7 Kohm.
Các chế độ hoạt động của I2C bao gồm:
Chế độ chuẩn (standard mode) hoạt động ở tốc độ 100 Kbit/s.
Chế độ tần số thấp (low speed mode) hoạt động ở tốc độ 10 Kbit/s.
Ngoài ra I2C còn có chế độ 10 bit địa chỉ tương đương với 1024 địa chỉ.
2.7 Lý thuyết ảnh số
2.7.1 Khái niệm ảnh số
Ảnh trong thực tế liên tục về không gian và độ sáng, để có thể xử lý ảnh ta cần
biến đổi tín hiệu tương tự thành tín hiệu rời rạc thông qua quá trình lấy mẫu, và lượng
tự hóa thành phần cấu tạo thành tập hợp phần tử ảnh gọi là quá trình số hóa.
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 34
Ảnh là tập hợp các điểm (phần tử ảnh) khi được số hóa. Khối lượng thông tin
trong một ảnh là rất lớn. Bản chất các thông số ảnh có tính vector.
2.7.2 Cấu trúc một file ảnh
Một file ảnh là tập hợp nhiều điểm ảnh:
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 35
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 36
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 37
Chương 2: Cơ Sở Lý Thuyết
Báo Cáo Đồ Án Tốt Nghiệp Trang 38
Khối hiển thị: Hiển thị thông báo của bãi xe.
Khối động cơ: Điều khiển Servo đóng mở cho phép xe ra - vào.
3.1.3 Hoạt động của hệ thống
Hệ thống hoạt động có 3 chế độ:
Khi có xe vào đúng vị trí, hành khách được nhận thẻ và tự quẹt thẻ. Khi thẻ được
quét thì camera sẽ chụp ảnh và gửi về máy tính để nhận dạng biển số. Các thông
tin (biển số, mã thẻ, thời gian gửi) được lưu vào một cơ sở dữ liệu của hệ thống
và hệ thống sẽ mở sevor để xe chạy vào. Sau khi xe chạy vào thì hạ sevor xuống.
Khi xe ra thẻ được quét, camera cũng sẽ chụp lại hình ảnh xe và biển số xe, dựa
vào mã ID của thẻ mà so sánh, nếu đúng với biển số xe ban đầu thì cho xe ra (có
thể mở rộng thêm tính thời gian để thu tiền gửi xe) và sevor tự động mở cho xe
chạy ra còn nếu không trùng khớp hệ thống sẽ thông báo không trùng biển số.
Trường hợp khách hàng mất thẻ từ nên việc lấy xe bằng quá trình quẹt thẻ không
được thực hiện. Như vậy, hành khách muốn lấy xe buộc phải chứng minh xe
mình được gửi trong bãi xe bằng các giấy tờ thùy thân. Nhân viên kiểm tra giấy
tờ của khách, kiểm tra biển số xe có tồn tại trong hệ thống cơ sở dữ liệu không
và sau đó giải quyết.
3.2 Thiết kế
Theo sơ đồ khối ta sẽ thiết kế kế phần cứng bao gồm các phần:
Khối xử lý trung tâm: Arduino Uno
Khối RFID: module RC522
Khối động cơ: động cơ servo mini 5V
Khối hiển thị: LCD 20x4
Khối nguồn: sử dụng nguồn máy tính
3.2.1 Khối động cơ
Yêu cầu thiết kế: khối này điều khiển đóng – mở cổng khi xe vào và xe ra.
Lựa chọn phần cứng: để ứng dụng việc đóng mở cửa ta thường nghĩ đến động cơ
Servo. Vì hệ thống nhỏ nên ta sẽ chọn loại động cơ Servo 5V minni là đủ để đáp
ứng cho yêu cầu điều khiển, tối đa giải pháp kinh tế.
Kết nối Arduino: do Servo mini chỉ có 3 chân và đề tài này chỉ sử dụng 2 Servo
gồm nguồn, mas và chân điều khiển. Ta kết nối nguồn và mass vào chân nguồn
và mas của Arduino còn chân điều khiển nối vào chân 5 và 6.
Sơ đồ nguyên lý:
phương thức giao tiếp với module I2C vì: hạn chế được số lượng dây và giúp thiết kế
phần cứng dễ dàng và gọn gàng.
Kết nối:
STT LCD I2C ARDUINO
1. VCC 5V
2. GND GND
3. SDA PIN A4
SCL PIN A5
4.
Sơ đồ nguyên lý:
Giải thích nguyên lý: khối hiển thị được kết nối với Arduino Uno để hiển thị
thông tin tình hình trạng thái bãi giữ xe.
3.2.3 Khối RFID
Yêu cầu thiết kế: khối RFID có nhiệu vụ đọc mã UID từ thẻ RFID sau đó chuyển
mã UID thành chuỗi số rồi gửi về Arduino, gửi về PC.
Phương án chọn phần cứng: như yêu cầu hệ thống phần mềm trên máy tính ta sẽ
kết hợp giữa các camera và công nghệ RFID để quản lý xe ra vào. Ở đây ta sử
dụng thẻ tag thụ động để ứng dụng công nghệ cho hệ thống, với ứng dụng RFID
người ta sẽ thường chọn các module đầu đọc thẻ có sẵn với các tần số nhác nhau
như 125khz, 13.56Mhz, 433Mhz,…
Kết luận ở đây ta lựa chọn đầu lọc thẻ 13.56 Mhz RC522 vì khoảng cách không
cần xa, với mức giá rẻ thiết kế nhỏ gọn, module này sử dụng lựa chọn hàng đầu
cho các ứng dụng về ghi đọc thẻ RFID.
Kết nối với Arduino:
STT RFID RC522 ARDUINO
1. 3.3V 3.3V
2. RST PIN 9
3. GND GND
4. MISO PIN 11
5. MOSI PIN 12
6. SCK PIN 13
7. SDA PIN 10
Sơ đồ nguyên lý:
Giải thích nguyên lý: khi có thẻ tag được quét vào hay thẻ mới có tác động vào
RC522 thì sẽ gửi mã thẻ đã quét cho PC.
3.2.4 Khối nguồn
Yêu cầu thiết kế: khối này có nhiệm vụ cung cấp điện cho tất cả các khối còn lại
trong mạch hoạt động.
Phương án lựa chọn: để đáp ứng được yêu cầu của hệ thống thì ta cần tính toán
điện áp và dòng điện để cung cấp cho các linh kiện hoạt động bình thường và sử
dụng nguồn một cách hợp lý. Theo đó các giá trị điện áp và tổng dòng điện sẽ
được liệt kê trong bảng sau:
TỔNG
SỐ ĐIỆN DÒNG DÒNG
STT THIẾT BỊ
LƯỢNG ÁP ĐIỆN ĐIỆN
TỔNG ~1.3A
Phương hướng thiết kế: các thiết bị được sử dụng trong đề tài này chủ yếu sử
dụng nguồn trực tiếp từ máy tính.
3.2.5 Sơ đồ nguyên lý toàn mạch
Sau khi thực hiện kết nối các thành phần lại, ta được sơ đồ nguyên lý toàn mạch
như sau:
3.3.3 Lưu đồ chương trình con khởi tạo, điều khiển LCD – Servo
Tiếp theo là mạch in kết nối Arduino với động cơ servo và LCD:
Sau đó, tiến hành đóng hộp board mạch cho gọn gàng:
4.3 Tiền xử lý
Ảnh chụp vào thường là ảnh màu, ta tiến hành chuyển ảnh màu thành ảnh xám,
tiếp tục nhị phân hóa thành ảnh trắng đen, sau đó tiến hành trích vùng biển số dựa vào
các vùng liên thông.
Việc xác định ngưỡng sáng rất quan trọng nó quyết định đến khả năng chọn đúng
vùng biển số. Chọn chính xác vùng biển số thật sự rất khó ta chỉ có thể xác định chính
xác trong một khoảng nào đó. Thông qua lược đồ xám ta nhận thấy vùng biển số thường
sẽ có độ sáng tương đối lớn, vì vậy ta sẽ xác định lược đồ xám lớn nhất trong khoảng
này và ngưỡng xám cần chọn sẽ thuộc vùng này nhờ nó ta sẽ giảm được thời gian lặp
tìm ngưỡng xám. Kết quả này có được nhờ vào quá trình khảo sát thống kê trên nhiều
ảnh và đây là kết quả tối ưu nhất mà ta có thể tìm được.
Ảnh nhị phân là ảnh mà giá trị các điểm ảnh chỉ có hai giá trị 0 và 1 (trắng và
đen). Để chuyển từ ảnh xám về ảnh nhị phân ta đặt một ngưỡng thích hợp để so sánh.
Mức xám của ảnh sẽ được dùng để so sánh với giá trị ngưỡng này.
0, 𝑢 < 𝑛
Biếu thức f(u) = {
1, 𝑥 ≥ 𝑛
Nếu phân vùng dựa trên các vùng liên thông ta gọi là kỹ thuật phân vùng miền
đồng nhất. Nếu ta phân vùng dựa theo biên gọi là kỹ thuật phân vùng biên. Ngoài ra
còn có các kỹ thuật khác như phân vùng dựa theo biên độ, phân vùng dựa theo kết cấu.
Để phân tích các đối tượng trong ảnh, chúng ta cần phải phân biệt được các đối
tượng cần quan tâm với phần còn lại của ảnh. Những đối tượng này có thể tìm được nhờ
các kỹ thuật phân đoạn ảnh, theo nghĩa tách phần tiền ảnh ra hậu ảnh.
Có thể hiểu phân vùng là tiến trình chia ảnh thành nhiều vùng, mỗi vùng chứa
một đối tượng có thể biểu diễn một hai từ đoạn thẳng tiếp xúc nhau. Ta có phương pháp
phân vùng ảnh như sau:
Thuật toán gán nhãn thành phần liên thông:
Kỹ thuật này gán cho mỗi thành phần liên thông của ảnh nhị phân một nhãn riêng
biệt. Nhãn thường là các số tự nhiên bắt đầu từ một đến tổng số các thành phần liên
thông có trong ảnh. Giải thuật quét ảnh từ trái sang phải và từ trên xuống dưới.
Trong dòng thữ nhất của các pixel, một nhãn duy nhất được gán cho mỗi đường
chạy liên tục pixel đen. Với mỗi pixel đen của các dòng tiếp theo, các pixel lân cận trên
dòng trước và pixel bên trái được xem xét. Nếu bất kì pixel lân cận nào được gán nhãn,
nhãn tương tự được gán cho pixel đen hiện thời, ngược lại nhãn tiếp theo chưa được sử
dụng được chọn, thủ tục này tiếp tục cho tới dòng cuối của ảnh.
Ảnh được nhận về là ảnh nhị phân, trong đó có nhiều đối tượng khác nhau ta tiến
hành chọn ra đối tượng nào là biển số còn đối tượng nào không phải là biển số. Dựa vào
thuật toán gán nhãn liên tiếp các đối tượng cụ thể như sau:
Thuật toán phân vùng ảnh dựa trên kỹ thuật đánh nhãn liên tiếp:
Mặt nạ ảnh với 4 điểm lân cận
Mặt nạ ảnh với 8 điểm lân cận
Mặt nạ ảnh với 4 điểm lân cận và 8 điểm lân cận
Quy ước khi quét ảnh:
Nếu điểm ảnh có giá trị là 0 thì gọi là điểm ảnh nền
Nếu điểm ảnh có giá trị là 1 thì gọi là điểm ảnh nổi
Ta chỉ đánh nhãn các điểm ảnh nổi
4.3.2 Trích vùng biển số
Trích ra các đối tượng đem so sánh với điều kiện cụ thể của biển số xe về chiều
cao, chiều rộng, tỉ lệ các cạnh, diện tích, trọng tâm,… để thu về vùng biển số.
Dựa vào các thực nghiệm ta thấy chỉ có cùng biển số mới thỏa điều kiện tích nhất
định, cong những vùng khác sẽ nhỏ hơn, nhưng trong điều kiện ánh sáng quá chói việc
xác định ngưỡng xám không chính xác sẽ dẫn đến có nhiều vùng có diện tích thỏa điều
kiện đưa ra, dẫn đến nhận dạng sai, hoặc không cắt được chính xác vùng biến số, đây
cũng là mặt hạn chế của đồ án.
4.4 Phân đoạn biển số
Nhị phân biển số xe là bước quan trọng để nhận dạng biển số xe. Bước này sẽ
tìm mức ngưỡng tối ưu, sau đó tiến hành nhị phân hóa ảnh với ngưỡng vừa tìm được
(nhằm làm tăng độ tương phản của ký tự với nền biển số).
biến đổi được các thuộc tính cố hữu của đối tượng hay do các thiết bị thu nhận ảnh tạo
ra.
Việc chọn các đối tượng đặc trưng của đối tượng là việc lựa chọn ra các yếu tố
hình học. Sự biến đổi từng yếu tố riêng có thể làm thay đổi trật tự các đại lượng, điều
này có thể làm ảnh hưởng đến việc phân lớp. Vấn đề này thường được giải quyết bằng
một phép biến đổi tuyến tính thích hợp với các thành phần của vector đặc trưng.
Qua thực nghiệm đã cắt ra từng ký tự của biển số và cho ra kích thước ảnh chuẩn
của một ký tự là 24x42. Tiến hành lấy tất cả 15 mẫu ký tự thường được dùng trong biển
số xe và 10 mẫu ký tự số. Tổng cổng có 24 mẫu ký tự (24x42) được lưu vào trong hai
ma trận mẫu “kytu” va “kyso”. Màu đen tương ứng với bit 0, màu trắng tương ứng với
bit 1, như hình 4.5.
Hình 4. 5: Mẫu ký tự số 1
Ví dụ: Gọi A là ma trận ảnh chứa ký tự cần nhận dạng là số 1, B là ma trận mẫu số 1,
C là ma trận mẫu số 2.
Ở giao diện mới khởi động này thì sẽ không có thông tin nào của xe vì bãi xe
chưa hoạt động và chưa có xe trong bãi. Chỉ có 2 camera ngõ ra và ngõ vào hoạt động
bình thường thôi.
Tiếp theo, khi có xe vào hệ thống sẽ chụp ảnh của xe ở ngõ vào, phân tích xử lý
và đọc đúng biển số xe của khách hàng, đồng thời hiển thị lên dòng chữ “MỜI XE VÀO”
và lưu dữ liệu của xe (bao gồm: mã thẻ, biển số xe, thời gian xe vào) vào trong PC.
SPI.begin(); }
while (! Serial); }
mfrc522.PCD_Init(); }
} }
2. Code Matlab
function varargout = vidu14(varargin) % existing singleton*. Starting from
% VIDU14 MATLAB code for vidu14.fig the left, property value pairs are
% VIDU14, by itself, creates a new % applied to the GUI before
VIDU14 or raises the existing vidu14_OpeningFcn gets called. An
% singleton*. % unrecognized property name or
% invalid value makes property application
% H = VIDU14 returns the handle to a % stop. All inputs are passed to
new VIDU14 or the handle to vidu14_OpeningFcn via varargin.
% the existing singleton*. %
% % *See GUI Options on GUIDE's
% Tools menu. Choose "GUI allows only
VIDU14('CALLBACK',hObject,eventDat one
a,handles,...) calls the local % instance to run (singleton)".
% function named CALLBACK in %
VIDU14.M with the given input % See also: GUIDE, GUIDATA,
arguments. GUIHANDLES
%
% VIDU14('Property','Value',...) % Edit the above text to modify the
creates a new VIDU14 or raises the response to help vidu14
Phụ Lục
Báo Cáo Đồ Án Tốt Nghiệp Trang 67
vd1 =
% Last Modified by GUIDE v2.5 02-Jun- videoinput('winvideo',1,'YUY2_640x480')
2019 04:46:41 ;
vd1.FramesPerTrigger = 1;
% Begin initialization code - DO NOT vd1.ReturnedColorspace = 'rgb';
EDIT img = image (zeros(500,650,3), 'Parent',
gui_Singleton = 1; handles.axes1);
gui_State = struct('gui_Name', preview(vd1,img);
mfilename, ... vd2 =
'gui_Singleton', videoinput('winvideo',2,'YUY2_640x480')
gui_Singleton, ... ;
'gui_OpeningFcn', vd2.FramesPerTrigger = 1;
@vidu14_OpeningFcn, ... vd2.ReturnedColorspace = 'rgb';
'gui_OutputFcn', img1 = image (zeros(500,650,3), 'Parent',
@vidu14_OutputFcn, ... handles.axes3);
'gui_LayoutFcn', [] , ... preview(vd2,img1);
'gui_Callback', []);
if nargin && ischar(varargin{1}) delete(instrfind)
gui_State.gui_Callback = s = serial('com4');
str2func(varargin{1}); s.BytesAvailableFcnMode = 'Byte';
end s.BytesAvailableFcnCount = 10;
s.Timeout = 0.5;
if nargout s.InputBufferSize=10;
[varargout{1:nargout}] = s.BytesAvailableFcn
gui_mainfcn(gui_State, varargin{:}); ={@mycallback,handles};
else s1= serial('com5');
gui_mainfcn(gui_State, varargin{:}); s1.BytesAvailableFcnMode = 'Byte';
end s1.BytesAvailableFcnCount = 10;
% End initialization code - DO NOT s1.Timeout = 0.5;
EDIT s1.InputBufferSize=10;
s1.BytesAvailableFcn
% --- Executes just before vidu14 is made ={@mycallback,handles};
visible. s2 = serial('com3');
function vidu14_OpeningFcn(hObject, ~ , fopen(s);
handles, varargin) fopen(s1);
fopen(s2);
handles.output = hObject; % Update handles structure
global vd1 vd2 s s1 s2 ; guidata(hObject, handles);
global data table
table.TD = {}; % UIWAIT makes vidu14 wait for user
table.count = 0; response (see UIRESUME)
data.TD = {}; % uiwait(handles.figure1);
data.count = 0;
delete('EX_LichSuXeVaoRa.xlsx'); % --- Outputs from this function are
delete(instrfind) returned to the command line.
Phụ Lục
Báo Cáo Đồ Án Tốt Nghiệp Trang 68
Phụ Lục
Báo Cáo Đồ Án Tốt Nghiệp Trang 69
data.count=data.count +
1; Iprops=regionprops(im,'BoundingBox','Ar
t=datetime; ea', 'Image');
data.TD{data.count,1}='Ra'; area = Iprops.Area;
data.TD{data.count,2}=char(card1); count = numel(Iprops);
data.TD{data.count,3}=noPlate3; maxa= area;
data.TD{data.count,4}=char(t); boundingBox =
set(handles.uitable1,'Data',table.TD); Iprops.BoundingBox;
set(handles.text5,'String',' MOI XE for i=1:count
RA '); if maxa<Iprops(i).Area
set(handles.text6,'String',data.count); maxa=Iprops(i).Area;
set(handles.text7,'String',table.count); boundingBox=Iprops(i).BoundingBox;
end
xlswrite('EX_LichSuXeVaoRa.xlsx',data. end
TD);
break; boundingBox(1)=boundingBox(1)+15;
end; boundingBox(3)=boundingBox(3)-
else 20;
fprintf(s2,'3'); im = imcrop(imbin, boundingBox);
set(handles.text5,'String',' axes(handles.axes6);
KHONG HOP LE '); imshow(im);
end; img5 = imcrop(img, boundingBox);
end; axes(handles.axes5);
end; imshow(img5);
im = imresize(im, [240 NaN]);
function XulyXeVao(hObject, eventdata, im = imopen(im, strel('rectangle', [4
handles) 4]));
global vd1 noPlate2 im = bwareaopen(~im, 500);
[h, w] = size(im);
axes(handles.axes2);
img = getsnapshot(vd1); im1 = im(1:120,:);
imshow(img);
im2 = im(121:240,:);
im = imresize(img, [480 NaN]);
imgray = rgb2gray(im); Iprops=regionprops(im1,'BoundingBox','
imbin = imbinarize(imgray); Area', 'Image');
im = edge(imgray, 'sobel'); count = numel(Iprops);
Phụ Lục
Báo Cáo Đồ Án Tốt Nghiệp Trang 70
Iprops=regionprops(im2,'BoundingBox',' Iprops=regionprops(im,'BoundingBox','Ar
Area', 'Image'); ea', 'Image');
count = numel(Iprops); area = Iprops.Area;
count = numel(Iprops);
noPlate1=[]; % Initializing the maxa= area;
variable of number plate string. boundingBox =
Iprops.BoundingBox;
for i=1:count for i=1:count
ow = length(Iprops(i).Image(1,:)); if maxa<Iprops(i).Area
oh = length(Iprops(i).Image(:,1)); maxa=Iprops(i).Area;
if ow<(h/2) & oh>(h/3)
boundingBox=Iprops(i).BoundingBox;
letter=readLetter(Iprops(i).Image); % end
Reading the letter corresponding the end
binary image 'N'.
noPlate1=[noPlate1 letter]; % boundingBox(1)=boundingBox(1)+15;
Appending every subsequent character in boundingBox(3)=boundingBox(3)-
noPlate variable. 20;
end im = imcrop(imbin, boundingBox);
end axes(handles.axes8);
noPlate2=[noPlate '-' noPlate1] imshow(im);
set(handles.text3,'String',noPlate2); img5 = imcrop(img, boundingBox);
set(handles.text5,'String',' MOI XE axes(handles.axes7);
VAO '); imshow(img5);
WriteDataVao(handles); im = imresize(im, [240 NaN]);
im = imopen(im, strel('rectangle', [4
function XulyXeRa(hObject, eventdata, 4]));
handles) im = bwareaopen(~im, 500);
global vd2 noPlate3 [h, w] = size(im);
Phụ Lục
Báo Cáo Đồ Án Tốt Nghiệp Trang 71
Iprops=regionprops(im2,'BoundingBox',' set(handles.uitable1,'Data',table.TD);
Area', 'Image');
count = numel(Iprops); set(handles.text6,'String',data.count);
letter=readLetter(Iprops(i).Image); % data.count=data.count + 1;
Reading the letter corresponding the t=datetime;
binary image 'N'. data.TD{data.count,1}='Ra';
noPlate1=[noPlate1 letter]; % data.TD{data.count,2}=char(card1);
Appending every subsequent character in data.TD{data.count,3}=noPlate3;
noPlate variable. data.TD{data.count,4}=char(t);
end set(handles.uitable1,'Data',table.TD);
end
noPlate3=[noPlate '-' noPlate1] xlswrite('EX_LichSuXeVaoRa.xlsx',data.
set(handles.text4,'String',noPlate3); TD);
Phụ Lục
Báo Cáo Đồ Án Tốt Nghiệp Trang 72
Phụ Lục