Professional Documents
Culture Documents
ĐỒ ÁN TỐT NGHIỆP
1. Tên đề tài: Hệ thống bãi giữ xe ứng dụng công nghệ RFID kết hợp nhận diện biển số.
2. Các số liệu, tài liệu ban đầu: Giáo trình “Lập trình Android trong ứng dụng điều
khiển – Nguyễn Văn Hiệp” – Đại Học Sư Phạm Kỹ Thuật Tp.HCM tháng 8/2015.
Giáo trình “Lập trình hướng đối tượng với PHP – Đinh Vũ Quốc Trung” – Đại
Học FPT. Giáo trình “Xử lý ảnh – Nguyễn Thanh Hải” – Đại Học Sư Phạm Kỹ Thuật
Tp.HCM.
3. Nội dung thực hiện đề tài: Thiết kế và xây dựng giải pháp hệ thống bãi giữ xe thông
minh bao gồm phần mềm quản lý(giao diện, các thuật toán xử lý ảnh, cơ sở dữ liệu,…)
và phần cứng ứng dụng công nghệ lớn RFID.
4. Sản phẩm: Hệ thống bãi giữ xe bao gồm giải pháp phần mềm quản lý và phần cứng ứng
dụng công nghệ lớn là RFID.
Điện tử đang trở thành một ngành công nghiệp đa nhiệm. Điện tử đã đang đáp ứng
những đòi hỏi không ngừng từ các lĩnh vực công, nông, lâm, ngư nghiệp cho đến các nhu
cầu thiết bị trong đời sống hàng ngày và nhiều hơn thế nữa. Các thiết bị điện tử đã, đang
và sẽ tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả trong hầu hết các
lĩnh vực khoa học kỹ thuật cũng như trong đời sống xã hội đi đôi với sự phát triển của khoa
học và công nghệ.
Với trình độ khoa học kĩ thuật ngày càng phát triển. Nhiều vấn đề đã được giải quyết
nhanh gọn với công nghệ điện tử và tự động hóa. Các bãi giữ xe truyền thống đã không
còn phù hợp với hầu hết các tòa nhà, chung cư hay bệnh viện… vì những rắc rồi mà nó
mang lại. Với hệ thống máy giữ xe bằng thẻ từ (máy giữ xe quẹt thẻ) các vấn đề nan giải
muôn thủa như vấn đề ùn tắc, tình trạng mất xe, mất vé gửi… dường như đã được giải
quyết triệt để. Xuất phát từ các vấn đề thiết thực đó đề tài “Bãi giữ xe ứng dụng công
nghệ RFID kết hợp nhận diện biển số” đã được chọn cho quá trình nghiên cứu.
i
Lời cảm ơn
Trong thời gian thực hiện đề tài này, nhóm đã nhận được nhiều sự giúp đỡ, đóng
góp ý kiến và chỉ bảo nhiệt tình của thầy cô, gia đình và bạn bè.
Nhóm thực hiện đề tài xin gửi lời cảm ơn chân thành đến thầy Ths.Nguyễn Ngô
Lâm giảng viên Bộ môn Điện tử công nghiệp - trường Đại học Sư Phạm Kỹ Thuật Tp.HCM
người đã tận tình hướng dẫn, chỉ bảo nhóm trong suốt quá trình làm đề tài.
Nhóm thực hiện đề tài cũng xin chân thành cảm ơn các thầy cô giáo trong trường
Đại học Sư Phạm Kỹ Thuật Tp.HCM nói chung, các thầy cô trong Khoa Đào Tạo Chất
Lượng Cao và Bộ môn Điện tử công nghiệp nói riêng đã cho nhómem kiến thức về các
môn đại cương cũng như các môn học chuyên ngành, giúp nhóm em có được cơ sở lý
thuyết vững vàng và tạo điều kiện giúp đỡ nhóm em trong suốt quá trình học tập.
ii
Danh sách hình
Hình 2.1. Tín hiệu tương đương của UART và RS232. ...................................................... 5
Hình 2.2. Giao diện SPI. ...................................................................................................... 8
Hình 2.3. Truyền dữ liệu SPI. .............................................................................................. 8
Hình 2.4. Giao tiếp I2C. ...................................................................................................... 9
Hình 2.5. Hệ thống RFID cơ bản....................................................................................... 11
Hình 2.6. Phương thức hoạt động của ngôn ngữ PHP....................................................... 20
Hình 2.7. Ví dụ vể tổ chức dạng cây của đường biên. ...................................................... 35
Hình 2.8. Mô hình lưu trữ Counters dạng cây. .................................................................. 35
iii
Hình 5.4. Giao diện khi book chỗ thành công. .................................................................. 61
Hình 5.5. Giao diện Log In vào hệ thống. ......................................................................... 62
Hình 5.6. Giao diện Set thẻ. .............................................................................................. 62
Hình 5.7. Giao diện chụp hình khi xe đúng biển số. ......................................................... 63
Hình 5.8. Giao diện chụp hình khi xe sai biển số. ............................................................. 63
iv
Danh sách bảng
Bảng 2.1. Thuộc tính của văn bản trong HTLM. .............................................................. 13
Bảng 2.2. Bảng màu cơ bản trong HTML. ........................................................................ 14
Bảng 2.3. Các thuộc tính cơ bản của CSS. ........................................................................ 16
Bảng 2.4. Danh sách các quyền trong PHP. ...................................................................... 27
Bảng 2.5. Ưu & Nhược điểm của CSDL ........................................................................... 29
Bảng 2.6. Quy trình xử lý nhận diện ảnh. ......................................................................... 33
Bảng 3.1. Bảng kết nối chân giữa LCD và Adruino. ........................................................ 42
Bảng 3.2. Sơ đồ kết nối RC522 với Arduino .................................................................... 43
Bảng 3.3. Dòng và áp quy định các thiết bị trong đồ án. .................................................. 45
v
Danh sách các từ viết tắt
VAMA Vietnam Automobile Manufacturers Association Hiệp hội các nhà sản xuất
ôtô Việt Nam
RFID Radio Frequency Identification Nhận dạng qua tần số vô
tuyến
ECMA European Computer Manufacturers Association Hiệp hội các nhà sản xuất
máy tính châu âu
HTML Hyper Text Markup Language Ngôn ngữ đánh dấu siêu
văn bản
vi
LCD Liquid Crystal Display Màn hình tinh thể lỏng
vii
Chương 1. Tổng quan
Yêu cầu đặt ra là cần phải áp dụng các tiến bộ về khoa học kỹ thuật cho các bãi giữ
xe tiến đến tối ưu hóa tự động và thông minh. Các công nghệ mới tiên tiến đã ra đời như
công nghệ RFID, các công nghệ điều khiển và giám sát từ xa, công nghệ IoT (Internet of
Thing) … đã và luôn được ưu tiên ứng dụng vào các hệ thống hiện đại và ứng dụng nó cho
các bãi giữ xe thông minh là một thành công điển hình.
Có thể thấy được ở hình thức giữ xe truyền thống đã mang lại nhiều vấn đề tồn động
và cần được thay thế. Ví dụ như mỗi vé giữ xe chỉ sử dụng một lần, hết lượt xe của khách
ra khỏi bãi là nó trở thành rác và không thể tái sử dụng. Ngoài ra, mỗi khi trời mưa vé xe
dễ bị thấm nước, bị mờ số xe và nhân viên không thể nhận diện được, đôi khi khách hàng
còn làm rách. Ở hệ thống bãi giữ xe thông minh thì tất cả những điều đó đều được giải
quyết một cách triệt để, thẻ xe là thẻ điện từ, chống thấm nước khi trời mưa, tiện và gọn
khách hàng và chủ đầu tư dễ dàng bảo quản và thời gian sử dụng của thẻ điện từ rất lâu
khoảng 10 năm hoặc có thể hơn tùy vào mức độ bảo quản, mức độ an toàn cũng như an
ninh được nâng cao hơn khi hạn chế được các hành vi giả mạo.
Gần đây 4 bãi giữ xe thông minh được đề xuất xây ở Sài Gòn, các bãi đậu cao tầng,
lắp ghép, được đề xuất xây tại 4 vị trí khác nhau ở trung tâm TP HCM nhằm giải quyết cấp
bách nhu cầu đỗ xe của người dân. Trình bày với lãnh đạo UBND TP HCM chiều 29/3,
một doanh nghiệp đưa ra các giải pháp tổ chức bãi giữ xe thông minh ở trung tâm thành
1
phố. Công ty này đề xuất xây bãi giữ xe thông minh cao tầng, lắp ghép, tại Công trường
Lam Sơn (rộng 1.410 m2); Công viên 23/9 (4.048 m2); Công viên Lê Văn Tám (1.416 m2)
và Công viên Tao Đàn (570 m2). Khi hoàn thành, các bãi có thể giữ khoảng 500 ôtô cùng
lúc. Với công nghệ robot tự động xoay vòng, khi ôtô vào vị trí đậu, hệ thống tự động chuyển
xe lên vị trí cao hơn theo thứ tự. Nếu chủ xe muốn lấy, hệ thống tự động đưa ôtô về vị trí
ban đầu để chuyển sang trạng thái giao thông động.
Cho tới thời điểm này hầu hết các trung tâm thương mại, siêu thị lớn đều đã tích
hợp các bãi xe thông minh sử dụng công nghệ RFID và đạt bước thành công đột phá. Tuy
nhiên vấn đề kết hợp công nghệ IoT vào bãi xe vẫn còn đang là một hướng nghiên cứu mới
khi Internet vạn vật đang dần thâm nhập vào hầu hết các quy trình công nghệ.
Ở các nước phát triển các công nghệ mới như RFID và IoT đã và đang được ứng
dụng rộng rãi trong hầu hết các lĩnh vực. Việc ứng dụng các công nghệ mới đã góp phần
phát triển kinh tế và bảo vệ môi trường. Nạn kẹt xe hay thiếu chỗ và vấn đề về bảo mật, an
ninh, sự không hài lòng về chất lượng quản lý ở các bãi giữ xe đã không còn nữa vì các bãi
giữ xe truyền thống đã dần biến mất.
Ở các hình thức giữ xe truyền thống, các doanh nghiệp đã gặp phải rất nhiều bất cập
và gây khó khăn cho quá trình quản lý cũng như cho nhân viên an ninh. Đồng thời các nhân
viên cũng dễ dàng làm thất thoát tài chính, dễ lấy tiền của chủ đầu tư. Ngoài ra, ở các bãi
giữ xe thông thường như: xé vé tay, ghi phấn lên xe…các hình thức giữ xe truyền thống
rất tốn kém, không an toàn, gây lãng phí và ô nhiễm môi trường do lượng giấy thải ra ngoài
môi trường.
2
Để khắc phục vấn đề đó đề tài sau nghiên cứu sẽ phần nào góp phần vào việc giải
quyết nhu cầu về bãi xe, cũng như tích hợp thêm công nghệ mới IoT vào để cải thiện hiệu
quả và tính linh hoạt, thông minh của các hệ thống hiện có.
So với các đề tài bãi giữ xe nhóm đã tham khảo thì đề tài nhóm đang nghiên cứu
được phát triển hơn bởi công nghệ nhận dạng biển số và thiết kế web đặt chỗ giúp cho công
việc được thuận tiện và ngày càng đa dạng, thông minh dần thay thế sức lao động của con
người trong tương lai.
Ứng dụng công nghệ IoT vào bãi xe để giải quyết các vấn đề về đặt chỗ và giám sát
thông minh, mạng lại nhiều sự tiện lợi cũng như tính mới cho hệ thống.
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ề điện tử, viễn thông, truy cập từ mạng internet, các đồ án của khóa trước.
Phương pháp quan sát: khảo sát một số mạch điện từ mạng internet, khảo sát
các bãi giữ xe thông minh hiện hành để chọn lựa phương án thiết kế sau này.
Phương pháp khảo sát và thực nghiệm: từ những ý tưởng và kiến thức của
nhóm, kết họp sự hướng dẫn của giáo viên, nhóm đã lắp ráp thử nghiệm nhiều
dạng mạch khác nhau để từ đó chọn lọc những mạch điện tối ưu.
3
1.6. Bố cục đồ án
Chương 1: Tổng quan
Giới thiệu sơ lược về tình hình nghiên cứu hiện nay cũng như tính cấp thiết
của đề 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ình bày sơ đồ hệ thống và giải thích hoạt động của hệ thống.
Đưa ra các phương pháp lựa chọn phần cứng và xác định lựa chọn phù hợp
với yêu cầu của đề tài.
Chương 4: Kết quả thực hiện
Tính toán đưa ra giải thuật, thuật toán phần mềm.
Trình bày kết quả đã thực hiện về phần cứng và phần mềm.
Chương 5: Kết quả so sánh, thực nghiệm, phân tích, tổng hợp
Đưa ra các kết quả thực nghiệm và đánh giá, nhận xét hệ thống.
Chương 6: Kết luận và hướng phát triển
Nêu các ưu điểm và các điểm cần cải thiện của đề tài, hướng khắc phục và
hướng phát triển trong tương lại.
4
Chương 2. Cơ sở lý thuyết
Để tiến hành thiết kế phần cứng cũng như phần mềm nhóm đã tìm hiểu một số khái niệm
sau
5
xuất và nhận trực tiếp không thông qua bất kỳ một giải thuật biến đổi nào và vì thế tốc độ
truyền cũng rất nhanh. Nhược điểm của cách truyền này là số đường truyền quá nhiều,
tưởng tượng nếu dữ liệu của ta có giá trị càng lớn thì số đường truyền cũng sẽ nhiều thêm.
Hệ thống truyền thông song song thường rất cồng kềnh và vì thế kém hiệu quả. Truyền
thông nối tiếp sẽ giải quyết vần đề này, trong tuyền thông nối tiếp dữ liệu được truyền từng
bit trên 1 (hoặc một ít) đường truyền. Vì lý do này, cho dù dữ liệu của ta có lớn đến đâu ta
cũng chỉ dùng rất ít đường truyền.
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 kết với với thiết bị 2 bởi 2 đường, một đường dữ liệu và 1 đường xung nhịp. Cứ mỗi
lần thiết bị 1 muốn send 1-bit dữ liệu, thiết bị 1 điều khiển đường xung nhịp chuyển từ mức
thấp lên mức cao báo cho thiết bị 2 sẵn sàng nhận một bit. Bằng cách “báo trước” này tất
cả các bit dữ liệu có thể truyền/nhận dễ dàng với ít “rủi ro” trong quá trình truyền. Tuy
nhiên, cách truyền này đòi hỏi ít nhất 2 đường truyền cho 1 quá trình (send or receive).
Giao tiếp giữa máy tính và các bàn phím (trừ bàn phím kết nối theo chuẩn USB) là một ví
dụ của cách truyền thông nối tiếp đồng bộ.
Khác với cách truyền đồng bộ, truyền thông “không đồng bộ” chỉ cần một đường
truyền cho một quá trình. “Khung dữ liệu” đã được chuẩn hóa bởi các thiết bị nên không
cần đường xung nhịp báo trước dữ liệu đến. Ví dụ 2 thiết bị đang giao tiếp với nhau theo
phương pháp này, chúng đã được thỏa thuận với nhau rằng cứ 1ms thì sẽ có 1 bit dữ liệu
truyền đến, như thế thiết bị nhận chỉ cần kiểm tra và đọc đường truyền mỗi mili-giây để
đọc các bit dữ liệu và sau đó kết hợp chúng lại thành dữ liệu có ý nghĩa. Truyền thông nối
tiếp không đồng bộ vì thế hiệu quả hơn truyền thông đồng bộ (không cần nhiều lines
truyền). Tuy nhiên, để quá trình truyền thành công thì việc tuân thủ các tiêu chuẩn truyền
là hết sức quan trọng. Chúng ta sẽ bắt đầu tìm hiểu các khái niệm quan trọng trong phương
pháp truyền thông này.
Baud rate (tốc độ Baud): như trong ví dụ trên về việc truyền 1 bit trong 1ms, ta thấy
rằng để việc truyền và nhận không đồng bộ xảy ra thành công thì các thiết bị tham gia phải
“thống nhất” nhau về khoảng thời dành cho 1 bit truyền, hay nói cách khác tốc độ truyền
phải được cài đặt như nhau trước, tốc độ này gọi là tốc độ Baud. Theo định nghĩa, tốc độ
baud là số bit truyền trong 1 giây. Ví dụ nếu tốc độ baud được đặt là 19200 thì thời gian
dành cho 1 bit truyền là 1/19200 ~ 52.083us.
Frame (khung truyền): do truyền thông nối tiếp mà nhất là nối tiếp không đồng bộ
rất dễ mất hoặc sai lệch dữ liệu, quá trình truyền thông theo kiểu này phải tuân theo một số
quy cách nhất định. Bên cạnh tốc độ baud, khung truyền là một yếu tốc quan trọng tạo nên
6
sự thành công khi truyền và nhận. Khung truyền bao gồm các quy định về số bit trong mỗi
lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số
lượng các bit trong một data cũng được quy định bởi khung truyền.
Start bit: start là bit đầu tiên được truyền trong một frame truyền, bit này có chức
năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới. Ở module
USART trong các vi điều khiển, đường truyền thường ở trạng thái cao khi nghỉ (Idle), nếu
một vi điều khiển muốn thực hiện việc truyền dữ liệu nó sẽ gởi một bit start bằng cách
“kéo” đường truyền xuống mức 0. Như vậy, với các vi điều khiển bit start thường mang
giá trị 0 và có giá trị điện áp 0V. Start là bit bắt buộc phải có trong khung truyền.
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 vi điều khiển có thể quy định số lượng bit của
data là 5, 6, 7, 8 hoặc 9 (tương tự cho hầu hết các thiết bị hỗ trợ UART khác). Trong truyền
thông nối tiếp UART, bit có ảnh hưởng nhỏ nhất (LSB – Least Significant Bit, bit bên phải)
của data sẽ được truyền trước và cuối cùng là bit có ảnh hưởng lớn nhất (MSB – Most
Significant Bit, bit bên trái).
7
SS – Slave Select: SS là đường chọn Slave cần giap tiếp, trên các chip Slave đường
SS sẽ ở mức cao khi không làm việc. Nếu chip Master kéo đường SS của một Slave nào
đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và Slave đó. Chỉ có 1 đường
SS trên mỗi Slave nhưng có thể có nhiều đường điều khiển SS trên Master, tùy thuộc vào
thiết kế của người dung.
8
giữ nhịp. Dữ liệu có thể được lấy mẫu ở cạnh lên của SCK (CPHA=0) hoặc cạnh xuống
(CPHA=1). Sự kết hợp của SPOL và CPHA làm nên 4 chế độ hoạt động của SPI. Nhìn
chung việc chọn 1 trong 4 chế độ này không ảnh hưởng đến chất lượng truyền thông mà
chỉ cốt sao cho có sự tương thích giữa Master và Slave.
9
2.2. Tổng quan về công nghệ RFID
Công nghệ RFID là một trong những công nghệ nhận dạng dữ liệu tự động tiên tiến
nhất hiện nay có tính khả thi cao và áp dụng trong thực tế rất hiệu quả. RFID đang hiện
diện trong rất nhiều lĩnh vực tự động hóa, rất nhiều ứng dụng quản lý và các mô hình tổ
chức khác nhau nhằm đem lại những giải pháp nhận dạng dữ liệu tự động tối ưu và hiệu
quả hơn.
Công nghệ RFID cho phép một thiết bị đọc thông tin chứa trong chip không tiếp
xúc trực tiếp ở khoảng cách xa, không thực hiện bất kỳ giao tiếp vật lý nào hoặc giữa hai
vật không nhìn thấy. Công nghệ này cho ta phương pháp truyền, nhận dữ liệu từ một điểm
đến điểm khác.
Kỹ thuật RFID sử dụng truyền thông không dây trong dải tần sóng vô tuyến để
truyền dữ liệu từ các tag (thẻ) đến các reader (bộ đọc). Tag có thể được đính kèm hoặc gắn
vào đối tượng được nhận dạng chẳng hạn sản phẩm, hộp hoặc giá kệ (pallet). 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. Chẳng hạn,
các tag có thể được đặt trên kính chắn gió xe hơi để hệ thống thu phí đường có thể nhanh
chóng nhận dạng và thu tiền trên các tuyến đường
Dạng đơn giản nhất được sử dụng hiện nay là hệ thống RFID thụ động làm việc như
sau: reader truyền một tín hiệu tần số vô tuyến điện từ qua anten của nó đến một con chip.
Reader nhận thông tin trở lại từ chip và gửi nó đến máy tính điều khiển đầu đọc và xử lý
thông tin lấy được từ chip. Các chip không tiếp xúc không tích điện, chúng hoạt động bằng
cách sử dụng năng lượng nhận từ tín hiệu được gửi bởi reader.
Một hệ thống RFID gồm những thành phần cơ bản sau:
Thẻ RFID (RFID Tag, còn được gọi là transponder): là một thẻ gắn chíp cộng
antena. Gồm 2 loại: RFID passive tag và active tag:
Passive tags: Không cần nguồn ngoài và nhận nằng lượng từ thiết bị
đọc. Khoảng cách đọc ngắn.
Active tags: Được nuôi bằng PIN, sử dụng với khoảng cách đọc lớn.
Reader hoặc sensor: để đọc thông tin từ các thẻ, có thể đặt cố định hoặc lưu
động.
Antenna: Là thiết bị liên kết giữa thẻ và thiết bị đọc. Thiết bị đọc phát xạ tín
hiệu sóng để kích họat và truyền nhận với thẻ.
Server: nhu nhận, xử lý dữ liệu, phục vụ giám sát, thống kê, điều khiển...
10
Hình 2.5. Hệ thống RFID cơ bản.
Về dải tần hoạt động của hệ thống RFID. Khi phải lựa chọn một hệ thống RFID,
yêu cầu đầu tiên là chọn dải tần hoạt động của hệ thống.
Tần số thấp - Low frequency 125 KHz: Dải đọc ngắn tốc độ đọc thấp.
Dải tần cao - High frequency 13.56 MHz: Khoảng cách đọc ngắn tốc độ đọc
trung bình. Phần lớn thẻ Passive sử dụng dải này.
Dải tần cao hơn - High frequency: Dải đọc từ ngắn đến trung bình, tốc độ
đọc trung bình đến cao. Phần lớn thẻ Active sử dụng tần số này.
Dải siêu cao tần - UHF frequency 860-960 MHz. Dải đọc rộng Tốc độ đọc
cao. Phần lớn dùng thẻ Active và một số thẻ Passive cao tần sử dụng dải này.
Dải vi sóng - Microwave 2.45-5.8 GHz: Dải đọc rộng tốc độ đọc lớn.
11
có trong đó. Tất cả các trang web dù xử lý phức tạp đến đâu đều phải trả về dưới dạng mã
nguồn HTML để trình duyệt có thể hiểu và hiển thị lên được.
Về cấu trúc cơ bản của HTML, để bắt đầu một file html, ta cần sử dụng thẻ <html>
để mở và kết thúc bằng thẻ </html>. Bên trong một file html gồm có 2 phần cơ bản:
Phần tiêu đề: Phần tiêu đề bắt đầu bằng thẻ <head> và kết thúc bởi thẻ </head>.
Phần này chứa tiêu đề mà được hiển thị trên thanh điều hướng của trang Web. Tiêu
đề nằm trong thẻ title, bắt đầu bằng thẻ <title> và kết thúc là thẻ </title>. Tiêu đề là
phần khá quan trọng. Khi người dùng tìm kiếm thông tin, tiêu đề của trang Web
cung cấp từ khóa chính yếu cho việc tìm kiếm.
Phần thân: phần này nằm sau phần tiêu đề. Phần thân bao gồm văn bản, hình ảnh và
các liên kết mà ta muốn hiển thị trên trang web của mình. Phần thân bắt đầu bằng
thẻ <body> và kết thúc bằng thẻ </body>.
Ta sẽ đề cập đến các thẻ HTML cơ bản như Headings (tiêu đề), thẻ khối <span>;
<div>, cách sử dụng font, cách dùng màu, cách tạo bảng, cách chèn ảnh, các thẻ liên kết,
thẻ thu thập thông tin.
Headings được sử dụng để trình bày tiêu đề cho phần nội dung hiển thị trên trang
Web. Những phần tiêu đề được hiển thị to và in đậm hơn để phân biệt chúng với các phần
còn lại của văn bản. Chúng ta cũng có thể hiển thị phần tiêu đề theo một trong sáu kích
thước từ h1 đến h6. Tất cả những gì chúng ta làm là định rõ kích thước h1, h2… Thẻ h1
dành cho các tiêu đề quan trọng nhất và giảm dần đến h6.
//Ví dụ:
<h1>This is a man</h1>
<h2>This is a man</h2>
<h3>This is a man</h3>
This is a man
This is a man
This is a man
Về thẻ khối <span> và <div>, có những trường hợp chúng ta muốn chia văn bản
trong một trang web thành những khối thông tin logic khi đó phần tử div và span được sử
dụng để nhóm nội dung lại với nhau. Thẻ div rất thường được sử dụng trong thiết kế layout
website.
12
Phần tử div dùng để chia tài liệu thành các thành phần có liên quan với nhau.
Phần tử span dùng để định nghĩa nội dung trong dòng (in-line) còn phần tử div
dùng để định nghĩa nội dung mức khối (block-level).
Về cách sử dụng font, thẻ <font> dùng để điều khiển sự hiển thị văn bản trên trang
Web. Ngoài ra cũng có thể chỉ định các thuộc tính như kích thước, màu sắc, kiểu chữ…
Có thể đặt các thuộc tính <font> cho cả tài liệu bằng cách đặt phần tử vào bên trong thẻ
<body>. Ngoài ra, thuộc tính font có thể đặt cho từng từ, từng block trong trang. Các thuộc
tính của FONT có thể kết hợp trong cùng một thẻ.
Bảng 2.1. Thuộc tính của văn bản trong HTLM.
Thuộc tính Mô tả
Được dùng để chỉ màu của font. Chúng ta có thể dùng tên màu
COLOR
hoặc giá trị thập phân để xác định màu.
Được dùng để chỉ kích thước của font. Chúng ta có thể xác định
các kích thước FONT từ 1 cho đến 7. Kích thước lớn nhất là 7 và
nhỏ nhất là 1. Chúng ta có thể dùng một kích thước chuẩn và chỉ
SIZE
ra những kích thước tiếp theo liên quan đến kích thước chuẩn. Ví
dụ, nếu kích thước chính là 3, thì, SIZE = +4 sẽ tăng lên 7, SIZE
= -1 sẽ giảm xuống 2
Về cách sử dụng màu sắc, ta có thể thêm màu vào trang và các phần tử trong trang.
COLOR là thuộc tính có thể được sử dụng với nhiều phần tử như phần tử FONT và BODY.
Có 3 kiểu màu chính: đỏ, xanh lá và xanh da trời. Mỗi màu chính được xem như một bộ
hai số của hệ 16 - #RRGGBB. Số thập lục phân 00 chỉ 0% của màu trong khi đó số thập
lục phân FF chỉ 100% của màu. Giá trị cuối cùng là một mã sáu chữ số chỉ màu.
13
Bảng 2.2. Bảng màu cơ bản trong HTML.
#FF0000 Red
#00FF00 Green
#0000FF Blue
#000000 Black
#FFFFFF White
Về cách chèn ảnh, ta dùng thẻ <img> dùng để chèn hình ảnh vào trong HTML.
Chúng ta cũng có thể đặt thẻ IMG tại vị trí mà hình ảnh được hiển thị. Thẻ IMG không có
nội dung, nó hiển thị nội dung bằng cách xác định thuộc tính SRC. Cú pháp là <IMG
SRC=”URL”>. Trong đó SRC (source) là thuộc tính và giá trị là một URL, chỉ vị trí chính
xác của file ảnh. Thuộc tính align của thẻ <img> có thể được sử dụng để điều chỉnh canh
lề của ảnh với văn bản xung quanh. <IMG ALIGN=position SRC=”PICTURE.GIF”>.
Trong đó, vị trí của ảnh có thể là trên (top), dưới (bottom), ở giữa (middle), trái (left) hoặc
phải (right).
Về cách tạo bảng, ta dùng thẻ <table> dùng để tạo bảng biểu trong HTML. Cấu
trúc cơ bản như sau:
<table>
<tr>
<td> … </td>
</tr>
</table>
Trong đó thẻ <tr> cho biết bắt đầu 1 hàng, <td> là thẻ chỉ đến cột tương ứng với
hàng đó.
14
Về thẻ liên kết, ta dùng thẻ <a> để tạo liên kết với một địa chỉ URL. Cấu trúc như
sau:
<a href = “ http://www.fhq.hcmute.edu.vn”> FHQ-HCMUTE </a>
Trên giao diện web sẽ hiển thị chữ “FHQ-HCMUTE” và khi click vào dòng chữ
này sẽ liên kết tới một trang web (www.fhq.hcmute.edu.vn).
Về thẻ thu thập thông tin, thẻ <form> là thẻ dùng để thu thập thông tin từ người
dùng, chẳng hạn như hồ sơ xin việc làm, mẫu thăm dò ý kiến… Cấu trúc như sau:
<form>
<input type = “text” name = “username” />
<input type = “password” name = “password” />
</form>
Với dạng "text" thì các ký tự hiển thị bình thường. Với dạng "password" thì các ký
tự sẽ được thay thế bằng ký tự ‘*’.
2.3.2. CSS
CSS là một file có phần mở rộng là .css, nhiệm vụ của nó là tách riêng phần định dạng
(style) ra khỏi nội dung trang HTML.
Khi sử dụng CSS chúng ta sẽ dễ dàng quản lý nội dung trang HTML, dễ điều khiển phần
định dạng, và đặc biệt là sẽ tốn ít thời gian khi code hay chỉnh sửa, giả sử các ta có ~100
file HTML có tiêu đề như nhau, các tiêu đề này được định dạng trong từng trang HTML,
khi các ta muốn chỉnh sửa các tiêu đề này, thì các ta sẽ phải mở và chỉnh từng trang trong
~100 file, việc này mất bao nhiêu thời gian chắc các ta có thể ước lượng được, còn nếu
~100 file này được kết hợp với 1 file CSS thì việc định dạng tiêu đề trong ~100 file này
chỉ mất vài phút.
Chúng ta đừng nhầm lẫn CSS và "style trong HTML" là như nhau, style dùng để dịnh
dạng cho nội dung HTML, còn CSS là file chứa các định dạng style, 2 đoạn code style dưới
đây không thể gọi là CSS:
HTML viết
<html>
<head>
<style>
p { color: #ff0000; }
</style>
</head>
15
<body>
<p>Một đoạn văn bản.</p>
</body>
</html>
HTML viết
<html>
<head>
</head>
<body>
<p style="color: #ff0000;">Một đoạn văn bản.</p>
</body>
</html>
Thuộc tính Ví dụ Mô tả
background background: #ff0000; Định dạng nền (background) cho thành phần.
border border: 1px solid #ff0000; Định dạng đường viền cho thành phần.
16
caption-side caption-side: bottom; Xác định vị trí một chú thích của table.
counter-reset counter-reset: subsection; Tạo hoặc reset một hoặc nhiều counter.
cursor cursor: pointer; Xác định kiểu con trỏ chuột được hiển thị.
display display: inline; Xác định loại hiển thị của thành phần.
height height: 50px; Thiết lập chiều cao của thành phần.
17
Tăng hoặc giảm khoảng cách giữa các ký tự
letter-spacing letter-spacing: 2px;
trong đoạn text.
line-height line-height: 1.5; Thiết lập chiều cao giữa các dòng.
list-style list-style: decimal; Thiết lập kiểu cho một danh sách.
max-height max-height: 200px; Thiết lập chiều cao tối đa của thành phần.
max-width max-width: 900px; Thiết lập chiều rộng tối đa của thành phần.
min-height min-height: 100px; Thiết lập chiều cao tối thiểu của thành phần.
min-width min-width: 600px; Thiết lập chiều rộng tối thiểu của thành phần.
outline outline: dotted; Định dạng các đường viền bao ngoài
18
Thiết lập các loại dấu ngoặc bao ngoài khi
quotes "‘" "’"
nhúng một trích dẫn.
text-align text-align: center; Sắp xếp các nội dung theo chiều ngang.
text-decoration text-decoration: underline; Xác định các trang trí thêm cho text.
text-transform text-transform: uppercase; Thiết lập các ký tự viết hoa cho văn bản.
vertical-align vertical-align: middle; Sắp xếp các nội dung theo chiều dọc.
width width: 800px; Thiết lập chiều rộng cho thành phần.
19
2.3.3. PHP
PHP là một ngôn ngữ lập trình kịch bản được chạy ở phía server nhằm sinh ra mã
html trên client. PHP đã trải qua rất nhiều phiên bản và được tối ưu hóa cho các ứng dụng
web, với cách viết mã rõ rãng, tốc độ nhanh, dễ học nên PHP đã trở thành một ngôn ngữ
lập trình web rất phổ biến và được ưa chuộng.
PHP chạy trên môi trường Webserver và lưu trữ dữ liệu thông qua hệ quản trị cơ sở
dữ liệu nên PHP thường đi kèm với Apache, MySQL và hệ điều hành Linux (LAMP).
Apache là một phần mềm web server có nhiệm vụ tiếp nhận request từ trình
duyệt người dùng sau đó chuyển giao cho PHP xử lý và gửi trả lại cho trình
duyệt.
MySQL cũng tương tự như các hệ quản trị cơ sở dữ liệu khác (Postgress,
Oracle, SQL server...) đóng vai trò là nơi lưu trữ và truy vấn dữ liệu.
Linux: Hệ điều hành mã nguồn mở được sử dụng rất rộng rãi cho các
webserver. Thông thường các phiên bản được sử dụng nhiều nhất là RedHat
Enterprise Linux, Ubuntu...
PHP hoạt động như sau, khi người sử dụng gọi trang PHP, Web Server sẽ triệu gọi
PHP Engine để thông dịch dịch trang PHP và trả kết quả cho người dùng như hình 2.6.
Hình 2.6. Phương thức hoạt động của ngôn ngữ PHP.
File PHP có thể chứ text thuần, các thẻ HTML, các đoạn mã script khác. File PHP
chạy và hiển thị trên trình duyệt ở dạng mã HTML. Một file php có thể chứa một trong các
phần mở rộng sau: “.php”, “.php3”, “.phtml”. Mã lệnh của chương trình cần được đặt trong
20
cặp thẻ <?php?>. Sử dụng dấu hai chấm; để kết thúc một câu lệnh. Văn bản cần được đặt
trong cặp dấu nháy đơn ' ' hoặc cặp dấu nháy kép " ".
Về cấu trúc (PHP syntax), 1 đọan script PHP luôn luôn nằm trong cặp thẻ đóng/mở
của PHP (<?php và ?>) và có thể đặt bất kỳ chỗ nào trong file. Ví dụ:
<html>
<body>
<?php
echo "Hello World"; //Hiện nội dung Hello World lên nền của trang web
?>
</body>
</html>
Ngoài ra, có thể dùng các cặp thẻ đóng mở sau <? và ?>, <?php và ?>, <script
language="php"> và </script> hoặc <% và %>. Cách (1) chỉ có hiệu lực khi
short_open_tag được mở trong file cấu hình PHP tương tự, cách (4) cũng thực hiện khi
asp_tag được mở trong file cấu hình PHP. Mỗi dòng lệnh trong PHP được kết thúc bằng
dấu chấm phẩy (;).
Có 3 cách chú thích (comment) trong PHP:
Cách 1: // comment cho 1 dòng.
Cách 2: # comment cho 1 dòng.
Cách 3: /* comment cho nhiều dòng */.
Ta đề cập đến các kiểu dữ liệu thường dùng trong PHP:
Boolean: là kiểu dữ liệu cơ bản nhất bao gồm 2 giá trị TRUE (đúng) và
FALSE (sai). Ví dụ:
<?php
$var = TRUE; //gán giá trị TRUE cho biến $var
?>
21
Interger: : dữ liệu số nguyên bao gồm các giá trị {-2147483648..-2,-
1,0,1,2,...2147483647}, chú ý: 2147483648 (>2147483647) sẽ đựơc hiểu là
số thực float. Ví dụ:
<?php
$a = 1234;
$a = -123;
$a = 0123; // số bát phân (= 83 hệ thập phân)
$a = 0x1A; // số thập lục phân (= 26 hệ thập phân)
?>
String: kiểu chuỗi, là 1 dãy các ký tự liên tiếp và được giới hạn bởi ' (single
quote) hoặc " (double quote) hoặc heredoc. Ví dụ:
//single quote:
<?php
$url = 'phpbasic.com';
print 'this is a simple string'; //kết quả: this is a simple string
print 'double quote " '; // kết quả: double quote "
print 'single quote ' '; //kết quả: single quote '
print 'value: $url '; //kết quả: value $url
?>
//double quote:
<?php
$url = 'phpbasic.com';
print 'this is a simple string'; //kết quả: this is a simple string
print "double quote " "; // kết quả: double quote "
print "single quote ' "; //kết quả: single quote '
print "value: $url "; //kết quả: value: phpbasic.com
?>
22
Array: mảng, ta có thể xem mảng giống như 1 tấm bản đồ thế giới, căn cứ
vào tọa độ (key) để xác định quốc gia (value). Cấu trúc array( [key =>] value,
kiểu dữ liệu của key có thể là Integer hoặc String, kiểu dữ liệu của value có
thể là bất kỳ. Ví dụ:
//Ví dụ mảng 1 chiều:
<?php
$arr = array("foo" => "bar", 12 => true);
print $arr["foo"]; // bar
print $arr[12]; // 1
?>
//Ví dụ: mảng nhiều chiều(2 chiều)
<?php
$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42));
print $arr["somearray"][6]; // 5
print $arr["somearray"][13]; // 9
print $arr["somearray"]["a"]; // 42
?>
Chú ý PHP là 1 ngôn ngữ thông minh, tự động nhận ra kiểu dữ liệu đang sử dụng
và có thể thay đổi khi giá trị của biến thay đổi, đó cũng là lý do vì sao trong PHP không
cần khai báo kiểu dữ liệu khi khai báo biến. Ví dụ:
<?php
23
$foo = 5 + "10 Little Piggies"; // $foo is integer (15)
$a = 'car'; // $a is a string
Khi lập trình với ngôn ngữ PHP có 2 phương thức truyền/nhận dữ liệu cần chú ý đó
là GET/POST. Tuy nhiên ta cần phân biệt rõ 2 phương thức này để có cách xử dụng hợp
lý. Về phương thức GET và POST giống nhau là đều gửi dữ liệu tới server để xử lý, sau
khi người dùng nhập thông tin vào Form.
Về sự khác nhau:
POST: Bảo mật hơn GET vì dữ liệu được gửi ngầm, không xuất hiện trên
URL.
GET: Dữ liệu được gửi tường minh, chúng ta có thể nhìn thấy trên URL, đây
là lý do khiến nó không bảo mật so với POST. Nó còn bị giới hạn số ký tự
bởi URL của web browsers.
GET thực thi nhanh hơn POST vì những dữ liệu gửi đi luôn được
Webbrowser cached lại.
Khi dùng phương thức POST thì server luôn thực thi và trả về kết quả cho
client, còn phương thức GET ứng với cùng 1 yêu cầu đó Webbrowser sẽ xem.
Trong cached có kết quả tương ứng với yêu cầu đó không và trả về ngay
không cần phải thực thi các yêu cầu đó ở phía server.
Đối với những dữ liệu luôn được thay đổi thì chúng ta nên sử dụng phương
thức POST, còn dữ liệu ít thay đổi chúng ta dùng phương thức GET để truy
xuất và xử lý nhanh hơn.
Phương thức GET. Trong ví dụ này sẽ hướng dẫn các ta truyền và nhận dữ
liệu qua phương thức GET của Form. Để thực hiện ví dụ này chúng ta cần
có 2 site: test.php và test2.php. Trang test.php có nhiệm vụ truyền dữ liệu
sang trang test2.php thông qua phương thức GET.
24
Ví dụ: Trang test.php có nội dung như sau:
</form>
<?php
$name=$_GET['txt_name'];
$tuoi=$_GET['txt_tuoi'];
?>
Phương thức POST. Trong ví dụ này sẽ hướng dẫn các ta truyền và nhận dữ
liệu qua phương thức POST của Form. Để thực hiện ví dụ này chúng ta sử
dụng 2 site: test.php và test2.php. Site test.php có nhiệm vụ truyền dữ liệu
sang trang test2.php thông qua phương thức POST.
<input type="text"
name="txt_name"/><br/>
25
<input type="submit"
value="OK" name="OK"/>
</form>
<?php $name=$_POST['txt_name'];
$tuoi=$_POST['txt_tuoi'];
?>
Về cú pháp các câu lệnh điều khiển, câu lệnh của PHP cũng tương tự như Java và
C bao gồm các lệnh cơ bản như IF-ELSE,SWITCH-CASE, WHILE, DO-WHILE… các
cú pháp vòng lặp như FOR, FOREACH... các cấu trúc lệnh điều khiển cụ thể sẽ không
được trình bày ở đây.
Ngoài các câu lệnh cú pháp điều khiển ta còn phải thường xuyên kết hợp với các
hàm xử lý file khi lập trình PHP. Các hàm xử lý file thường dùng đó là mở, đọc, ghi và
đóng file. Ngoài ra ta còn có các hàm nâng cao đó là kiểm tra file có tồn tại không, kiểm
tra file có được cấp quyền ghi không, lấy nội dung một file mà không cần dùng hàm fread,
ghi nội dung file mà không cần dùng hàm fwrite, đổi tên file, copy file, xóa file, kiểm tra
một đường dẫn folder có tồn tại không, tạo một folder mới… sẽ không được trình bày cụ
thể ở đây.
Về các hàm xử lý file thường dùng ta sẽ tìm hiểu cách viết cũng như cú pháp qua
từng ví dụ cụ thể:
Hàm mở file: Để mở một file ta dùng cú pháp sau: fopen($path, $option).
Trong đó $path là đường dẫn đến file cần mở, $option là quyền cho phép
thao tác trên file. Ta có danh sách các quyền được trình bày như bảng 2.
26
Bảng 2.4. Danh sách các quyền trong PHP.
Mode Chú thích
r Read only
r+ Read + Write
w+ Write only
w Write + Read. Nếu file này tồn tại thì nội dung cũ sẽ bị xóa đi và ghi lại
nội dung mới, còn nếu file chưa tồn tại thì nó tạo file mới.
a Mở dưới dạng append dữ liệu, chỉ có write và nếu file tồn tại nó sẽ ghi
tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới.
a+ Mở dưới dạng append dữ liệu, bao gồm write và read. Nếu file tồn tại nó
sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo
file mới.
Hàm đọc file. Có 3 cách đọc file thông thường trong PHP đó là đọc từng
dòng, đọc từng ký tự và đọc hết file.
Ta dùng hàm fgetc($fp) để đọc theo từng ký tự, dùng fgets($fp) để
đọc theo từng dòng.
Đối với đọc từng dòng và đọc từng ký tự ta phải dùng hàm feof($fp)
đặt trong vòng lặp while để sau khi đọc xong nó sẽ chuyển sang dòng
mới hoặc ký tự mới.
Để đọc hết tất cả file ta dùng hàm fread($fp, $size), trong đó $fp là
đối tượng lúc mở file còn $size là kích cỡ của file cần đọc. Để lấy kích
cỡ của file cần đọc ta dùng hàm filesize($path).
Hàm ghi file. Để ghi file thì bắt buộc file của ta phải được mở ở chế độ mode
có cho phép ghi file và tiếp đó dùng hàm fwrite để ghi dữ liệu. Việc ghi file
27
phụ thuộc vào lúc ta mở file như thế nào. Ví dụ lúc ta mở file ghi đè thì lúc
ghi file nó sẽ ghi đè, lúc ta mở file ghi kiểu append thì lúc ghi file nó sẽ thêm
xuống cuối file, nếu ta mở file chỉ cho đọc thì ta không thể ghi file được.
//Ví dụ mở file a.php và ghi chuỗi abcdef vào file.
fwrite($file, "abcdef");
Hàm đóng file. Việc mở file để sử dụng mà không đóng file rất nguy hiểm,
vì thế sau khi sử dụng xong ta nên đóng file để an toán hơn. Để đóng file ta
dùng hàm fclose($fp) trong đó $fp là đối tượng trả về lúc ta mở file.
$x = fread($myfile,filesize("den.php"));
echo $x;
fclose($myfile);
fclose($file);
28
EmguCV là một cross flatform .NET, một thư viện xử lý hình ảnh mạnh dành riêng
cho ngôn ngữ C#. Thích hợp các ngôn ngữ như C#, Python,VB,…Warpper có thể được
dịch bởi Visual Studio, Xamarin Studio và Unity.
Theo như nhóm nghiên cứu và tìm hiểu được thì EmguCv có một số lợi thế như sau:
EmguCV được viết hoàn toàn bằng C#. Có thể chạy trên bất kỳ nền tảng hỗ
trợ bao gồm iOS, Android, Windows Phone, Hệ điều hành Mac OS X
và Linux.
EmguCV có thể được sử dụng từ nhiều ngôn ngữ khác nhau, bao gồm C#,
VB.NET, C ++ và Iron Python.
Nhận dạng ảnh: nhận dạng khuôn mặt, các vật thể …
Xử lý ảnh: khử nhiễu, điều chỉnh độ sáng …
Nhận dạng cử chỉ.
Hỗ trợ tài liệu XML và intellisense.
Sự lựa chọn để sử dụng hình ảnh lớp hoặc trực tiếp gọi chức năng từ
OpenCV.
....
Trong đề tài này, nhóm đã xây dựng phần mềm quản lý cũng như điều khiển hoàn
toàn trên ngôn ngữ C#, để sử dụng được OpenCV thì nhóm cần phải tốn khá nhiều thời
gian để tạo Warpper kết nối giao tiếp giữa ngôn ngữ C++ của OpenCV với C# trong khi
đó sử dụng thư viện EmguCV thì hoàn toàn không cần thiết.
Chính vì thế bộ thư viện EmguCV đã được nhóm lựa chọn để nghiên cứu và sử
dụng cho đề tài này.
2.5. Tổng quan về cơ sở dữ liệu (Database)
2.5.1. SQL Server
Cơ sở dữ liệu là một tập hợp thông tin có cấu trúc hay còn được hiểu là một tập
hợp liên kết dữ liệu.
29
Cơ sở dữ liệu được phân chia ra nhiều loại khác nhau:
Cơ sở dữ liệu dạng file: dữ liệu được lưu trữ dưới dạng các file có thể là text, ascii,
*.dbf. Tiêu biểu cho cơ sở dữ liệu dạng file là*.mdb Foxpro
Cơ sở dữ liệu quan hệ: dữ liệu được lưu trữ trong các bảng dữ liệu gọi là các thực
thể, giữa các thực thể này có mối liên hệ với nhau gọi là các quan hệ, mỗi quan hệ
có các thuộc tính, trong đó có một thuộc tính là khóa chính. Các hệ quản trị hỗ trợ
cơ sở dữ liệu quan hệ như: MS SQL server, Oracle, MySQL...
Cơ sở dữ liệu hướng đối tượng: dữ liệu cũng được lưu trữ trong các bảng dữ liệu
nhưng các bảng có bổ sung thêm các tính năng hướng đối tượng như lưu trữ thêm
các hành vi, nhằm thể hiện hành vi của đối tượng. Mỗi bảng xem như một lớp dữ
liệu, một dòng dữ liệu trong bảng là một đối tượng. Các hệ quản trị có hỗ trợ cơ sở
dữ liệu hướng đối tượng như: MS SQL server, Oracle, Postgres
Cơ sở dữ liệu bán cấu trúc: dữ liệu được lưu dưới dạng XML, với định dạng này
thông tin mô tả về đối tượng thể hiện trong các tag. Đây là cơ sở dữ liệu có nhiều
ưu điểm do lưu trữ được hầu hết các loại dữ liệu khác nhau nên cơ sở dữ liệu bán
cấu trúc là hướng mới trong nghiên cứu và ứng dụng.
Cơ sở dữ liệu phân cấp (blockchain): Dữ liệu được phân tán trên mạng máy tính
ngang hàng và luôn được cả mạng lưới kiểm định. Ví dụ: Bitcoin blockchain.
2.5.2. MySQL
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được
các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở
dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều
hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao,
MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet. MySQL miễn phí
hoàn toàn cho nên ta có thể tải về MySQL từ trang chủ. Nó có nhiều phiên bản cho các hệ
điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac
OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,…
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm
nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,…
Các đặc trưng cơ bản của MySql được nhóm tìm hiểu như sau:
1. Tốc độ: MySQL rất nhanh. Những nhà phát triển cho rằng MySQL là cơ sở dữ liệu
nhanh nhất mà ta có thể có.
2. Dễ sử dụng: MySQL tuy có tính năng cao nhưng thực sự là một hệ thống cơ sở dữ
liệu rất đơn giản và ít phức tạp khi cài đặt và quản trị hơn các hệ thống lớn .
3. Giá thành: MySQL là miễn phí cho hầu hết các việc sử dụng trong một tổ chức.
30
4. Hỗ trợ ngôn ngữ truy vấn: MySQL hiểu SQL, là ngôn ngữ của sự chọn lựa cho tất
cả các hệ thống cơ sở dữ liệu hiện đại. Ta cũng có thể truy cập MySQL bằng cách
sử dụng các ứng dụng mà hỗ trợ ODBC (Open Database Connectivity -một giao
thức giao tiếp cơ sở dữ liệu được phát triển bởi Microsoft).
5. Năng lực: Nhiều client có thể truy cập đến server trong cùng một thời gian. Các
client có thể sử dụng nhiều cơ sở dữ liệu một cách đồng thời. Ta có thể truy cập
MySQL tương tác với sử dụng một vài giao diện để ta có thể đưa vào các truy vấn
và xem các kết quả: các dòng yêu cầu của khách hàng, các trình duyệt Web…
6. Kết nối và bảo mật: MySQL được nối mạng một cách đầy đủ, các cơ sở dữ liệu có
thể được truy cập từ bất kỳ nơi nào trên Internet do đó ta có thể chia sẽ dữ liệu của
ta với bất kỳ ai, bất kỳ nơi nào. Nhưng MySQL kiểm soát quyền truy cập cho nên
người mà không nên nhìn thấy dữ liệu của ta thì không thể nhìn được.
7. Tính linh động: MySQL chạy trên nhiều hệ thống UNIX cũng như không phải
UNIX chẳng hạn như Windows hay OS/2. MySQL chạy được các với mọi phần
cứng từ các máy PC ở nhà cho đến các máy server.
8. Sự phân phối rộng: MySQL rất dễ dàng đạt được, chỉ cần sử dụng trình duyệt web
của ta. Nếu ta không hiểu làm thế nào mà nó làm việc hay tò mò về thuật toán, ta
có thể lấy mã nguồn và tìm tòi nó. Nếu ta không thích một vài cái, ta có thể thay
đổi nó.
9. Sự hỗ trợ: Ta có thể tìm thấy các tài nguyên có sẵn mà MySQL hỗ trợ. Cộng đồng
MySQL rất có trách nhiệm. Họ trả lời các câu hỏi trên mailing list thường chỉ trong
vài phút. Khi lỗi được phát hiện, các nhà phát triển sẽ đưa ra cách khắc phục trong
vài ngày, thậm chí có khi trong vài giờ và cách khắc phục đó sẽ ngay lập tức có
sẵn trên Internet.
Trong đề tài này, nhóm có thiết kế một trang web để khách hàng đặt chỗ chính vì
thế cần một CSDL để lưu thông tin khách hàng và MySql là lựa chọn thích hợp.
31
Một số hạn chế của OCR nhóm đã tìm hiểu đươc:
Hầu hết các phần mềm sử dụng OCR chỉ nhận dạng được khoảng 80 - 90% trên
hình ảnh rõ nét.
Đối với những hình ảnh có màu nền mà màu chữ không có nhiều chênh lệch, hay
các hình chụp chữ viết tay thì kết quả nhận dạng không khả quan cho lắm
Đến thời điểm hiện tại thì OCR chưa hỗ trợ tất cả các ngôn ngữ.
32
2.6.3. Quy trình xử lý nhận diện ảnh
Bảng 2.6. Quy trình xử lý nhận diện ảnh.
33
Bức ảnh sau khi được đưa về sẽ được
chuyển qua ảnh trắng đen và mã hóa
thành dạng nhị phân kiểu byte.
34
Với yêu cầu ứng dụng đưa ra là tìm biển số xe, ta sẽ xét đến cách tổ chức theo dạng
cây của các đường biên.
35
Chương 3. Thiết kế và xây dựng hệ thống
Sau khi nhóm đã tìm hiểu một số khái niệm liên quan cần thiết, nhóm tiến hành thiết
kế và xây dựng phần cứng cũng như phần mềm.
3.1. Giới thiệu và tóm tắt
3.1.1. Yêu cầu chung của hệ thống
Với tiêu chi thiết kế, xây dựng một hệ thống bãi giữ xe thông mình, an toàn, dễ sử
dụng. Hệ thống có các tính năng như sau:
Phần mềm quản lý bãi xe trên PC có chức năng quản lý xe ra/vào sử
dụng camera kết hợp với công nghệ RFID và nhận diện biển số xe.
Đóng mở Barrier khi mã thẻ RFID chính xác
Cho phép điều chỉnh được số lượng thẻ sử dụng qua phẩn mềm.
Cho phép đặt chỗ trước trên Web.
Hiển thị tình trạng hoạt động của bãi xe.
3.1.2. Phương án thiết kế
Với các yêu cầu của hệ thống trên nhóm đã tiến hành đề ra các phương án thiết kế
cho phần cứng như sau:
Khối xử lý sẽ tận dụng các module có sẵn ngoài thị trường như: Module
Arduino Uno, Arduino Pro Mini, Module RC522, Buzzer, Servo 5V, …
Khối nguồn sẽ lấy trực tiếp từ máy tính và Arduino.
Thiết kế vẽ board mạch kết nối các module lại.
Với các yêu cầu của hệ thống trên nhóm đã tiến hành đề ra các phương án thiết kế
cho phần mềm như sau:
Sử dụng ngôn ngữ C# để thiết kế giao diện điều khiển, quan sát xe
vào/ra.
Sử dụng cơ sở dữ liệu SQL để lưu trữ thông tin thẻ và hình ảnh cũng
như xử lý các tác vụ cần thiết.
Sử dụng ngôn ngữ PHP để thiết kế web đặt chỗ.
Sử dụng cơ sở dữ liệu MySql để lưu thông tin khách hàng và vị trí đặt
chỗ.
Sử dụng phần mềm hỗ trợ lập trình Arduino.
36
3.2. Sơ đồ khối
Khi khối RFID nhận tín hiệu từ đầu đọc thẻ tag, sẽ gửi tín hiệu lên vi điều khiển
sau đó vi điều khiển sẽ gửi mã đó cho PC để PC điều khiển camera bắt đầu chụp
hình. Sau khi chụp hình sau PC lại gửi tín hiều về vi điều khiển đề điều khiển Servo
đóng/mở. Sau khi xe tiến vào bãi sẽ có cảm biến thu phát hồng ngoại phát hiện để
thông báo tình trạng bãi giữ xe hiện tại. Ngoài ra, nhóm còn thiết kế một giao diện
web để khách hàng có thể đặt xe tránh tình trạng khi đến bãi xe không còn chỗ.
37
3.3. Thiết kế phần cứng
Theo sơ đồ khối ta sẽ thiết kế phần cứng bao gồm 6 phần:
Khối xử lý trung tâm: Arduino Uno.
Khối RFID: Module RC522.
Khối hiển thị: LCD 16x2.
Khối cảm biến vật cản: Module cảm biến hồng ngoại FC-51.
Khối động cơ Servo: Động cơ Servo mini 5V.
Khối nguồn: sử dụng nguồn từ máy tính.
38
3.3.2. Khối nút nhấn
Yêu cầu thiết kế
Trong đề tài này, nhóm thiết kế khối nút nhấn đề điều khiển servo đóng/mở
khi có xe ra/vào.
Lựa chọn phần cứng
Có rất nhiều loại nút nhấn hiện nay như nút nhấn 2 chân, nút nhấn 4 chân,
nút nhấn thường, nút nhấn dán, nút nhấn PLC.
Do yêu cầu đặt ra khá là đơn giản chỉ điều khiển servo đóng/mở và giá cả
cũng không chênh lệch bao nhiêu nhưng để cho mô hình thêm phong phú nhóm
đã chọn nút nhấn PLC
Kết nối
Ta tiến hành kết nối 2 nút nhấn với chân số 3 và số 4 của adruino.
Sơ đồ nguyên lý
39
3.3.3. Khối cảm biến vật cản
Yêu cầu thiết kế
Trong đề tài này, nhóm thiết kế khối cảm biến để phát hiện xa ra/vào bãi, đọc
vị trí xe cũng như kiểm soát được số lượng xe ra/vào.
Lựa chọn phần cứng
Trong các ứng dụng phát hiện vật thể, phát hiện chuyển động, phát hiện vị trí
người ta thường ưu tiên nghĩ đến việc dùng các cảm biến hồng ngoại. Hiện nay
trên thị trường có rất nhiều loại cảm biến hồng ngoại ngõ ra analog hoặc digital,
với độ chính xác và khả năng chống nhiễu khác nhau tùy thuộc vào mức giá.
Bên cạnh cảm biến hống ngoại, các cảm biến siêu âm cũng được ứng dụng rộng
rãi trong việc phát hiện vị trí và dò đường với ưu điểm ít nhiễu và độ chính xác
tương đối cao.
Trong đề tài này nhóm chọn sử dụng module Led thu phát hồng ngoại với
ngõ ra số vì:
Thuận tiện cho việc điều khiển.
Giá thành hợp lý.
Tuy cảm biến này chưa chống nhiễu ánh sáng được thực sự tốt, tuy nhiên vẫn
đáp ứng được yêu cầu đặt ra.
Kết nối
Ta tiến hành kết nối 6 cảm biến tới các chân từ chân số 8 tới chân số 13 của
adruino.
40
Sơ đồ nguyên lý
41
Dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác
nhau.
Tốn rất ít tài nguyên hệ thống và giá thành rẻ.
Từ các ưu điểm đó LCD đã được chọn cho việc hiển thị thông tin điều khiển
của hệ thống. Trên thị trường có nhiều loại LCD khác nhau với kích thước và
tính năng đa dạng, các LCD thường dùng trong điều khiển như LCD 16x2, 20x4,
128x64. Ở đây hệ thống ta chỉ cần hiển thị ít thông tin, cũng như để thiết kế hệ
thống gọn gàng nhỏ đẹp ta chọn LCD 16x2 là đủ cho yêu cầu thiết kế.
Ở đây ta chọn Arduino giao tiếp với LCD qua module I2C vì:
Sơ đồ nguyên lý
42
Giải thích nguyên lý
Khối hiển thị được kết nối với Arduino Uno R3 để hiển thị thông tin tình
trạng bãi giữ xe.
3.3.5. Khối RFID
Yêu cầu thiết kế
Khối RFID có nhiệm vụ đọc mã UID từ thẻ RFID sau đó chuyển mã UID
thành chuỗi với số Hex rồi gửi về Arduino mang đi điều khiển.
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 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 công nghệ RFID thụ
động để ứng dụng cho hệ thống.
Với các ứ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ố khác nhau như 125Khz, 13.56Mhz, 433Mhz…
Lựa chọn
Ở đây ta chọn đầu đọc thẻ 12.56Mhz RC522 vì khoảng cách không cần xa,
vì khoảng cách không cần xa để giao tiếp với Arduino Uno tạo thành đầu đọc thẻ
cho hệ thống bãi giữ xe của chúng ta. Bên đó ta sẽ gắn thêm một buzzer, cho đầu
đọc, để lập trình buzzer báo khi có thẻ quẹt vào.
Module RFID RC522 sử dụng IC MFRC522 của Phillip dùng để đọc và ghi
dữ liệu cho thẻ NFC tần số 13.56Mhz, với mức giá rẻ thiết kế nhỏ gọn, module này
là sự lựa chọn hàng đầu cho các ứng dụng về ghi đọc thẻ RFID.
Kết nối Arduino
Để có thể đọc được mã UID từ thẻ tag ta tiến hành kết nối module RC522 với
Adruino.
43
Sơ đồ nguyên lý
44
Lựa chọn
Trong đề tài này ta sử dụng vi điều khiển AT328 được tích hợp sẵn trong
board Arduino Uno R3 thuận tiện cho lập trình và tiết kiệm thời gian vì:
Arduino hiện là đang là vi điều khiển được phát triển rộng rãi và sử
dụng phổ biến. Được hỗ trợ cực kì rộng lớn cho nhiều ứng dụng thực
tế.
Arduino được lập trình dựa trên ngôn ngữ Java mang lại khả năng xử
lý chuỗi mạnh mẽ, tạo nên sự thuận lợi cho yêu cầu hệ thống của chúng
ta, vì khi giao tiếp với PC ta sẽ dường như làm việc với chuỗi để xử lý
đến >90% trong code chương trình.
Giá thành rẻ phù hợp với sinh viên.
3.3.7. Khối nguồn
Yêu cầu thiết kế
Khối này có nhiệm cung cấp điện cho các vi xử lý hoạt động.
Phương á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
được liệt kê theo danh sách trong bảng
45
Phương hướng thiết kế
Để Arduino có thể điều khiển qua giao diện C#, cần kết nối trực tiếp Arduino
với máy tính, cho nên nguồn sử dụng cho Arduino sẽ là nguồn USB liên kết
Arduino với máy tinh.
Buzzer hoạt động khi các chân digital điều khiển được kích hoạt mức cao,
như vậy nguồn điều khiển buzzer là nguồn trực tiếp từ Arduino.
46
3.4.1.1. Lưu đồ giải thuật chương trình chính
47
3.4.1.2. Lưu đồ giải thuật của chương trình con
Lưu đồ giải thuật cho Servo và nút nhấn
48
Lưu đồ giải thuật cho LCD
49
Lưu đồ giải thuật cho RFID Reader
INPUT OUTPUT
#include <SPI.h> #include <SPI.h>
#include <MFRC522.h> #include <MFRC522.h>
#include <Servo.h> #include <Servo.h>
50
while (! Serial); while (! Serial);
SPI.begin(); SPI.begin();
mfrc522.PCD_Init(); mfrc522.PCD_Init();
myservo_vao.attach(4); myservo_vao.attach(4);
myservo_vao.write(0); myservo_vao.write(0);
} }
void loop() void loop()
{ {
if( mfrc522.PICC_IsNewCardPresent()) if( mfrc522.PICC_IsNewCardPresent())
return; return;
if ( ! if ( !
mfrc522.PICC_ReadCardSerial()) mfrc522.PICC_ReadCardSerial())
return; return;
Serial.print("ci"); Serial.print("co");
Serial.print(mfrc522.uid.uidByte[0], Serial.print(mfrc522.uid.uidByte[0],
HEX); HEX);
Serial.print(mfrc522.uid.uidByte[1], Serial.print(mfrc522.uid.uidByte[1],
HEX); HEX);
Serial.print(mfrc522.uid.uidByte[2], Serial.print(mfrc522.uid.uidByte[2],
HEX); HEX);
Serial.println(mfrc522.uid.uidByte[3] Serial.println(mfrc522.uid.uidByte[3]
, HEX); , HEX);
51
Chương 4. Kết quả thực hiện
4.1. Phần cứng
4.1.1. Các công cụ sử dụng
Đồng hồ VOM.
Chì hàn.
Chuẩn bị các module có sẵn theo thiết kế.
Chuẩn bị các linh kiện như sơ đồ nguyên lý.
Chuẩn bị các phần mềm sử dụng.
4.1.2. Vẽ mạch in mạch đã thiết kế
Sau khi thiết kế sơ đồ khối, sơ đồ nguyên lí toàn mạch ta tiến hành vẽ mạch in đã
thiết kế.
52
4.1.3. Board mạch đã hoàn thiện
Sau khi thiết kế sơ đồ nguyên lí phần cứng và tiến hành thi công mạch nay nhóm đã
hoàn thành xong sản phẩm
53
4.2. Phần mềm
4.2.1. Phần mềm quản lý bãi giữ xe trên PC
Theo yêu cầu và phương án thiết kế đã đề ra ta tiến hành viết phần mềm quản lý
bãi xe trên PC sử dụng ngôn ngữ lập trình C#.
54
Hình 4.4 như mô tả dưới đây là giao diện chính của phần mềm nhóm đã thiết kế
Hình 4.4. Giao diện chính phần mềm quản lý bãi xe.
Để tiện cho việc quản lý các thẻ cũng như số lượng thẻ dùng nhóm đã thiết kế thêm giao
diện SET THẺ như hình 4.5
Hình 4.5. Giao diện SET THẺ trên phần mềm quản lý bãi xe.
55
Ngoài ra để trực quan và dễ quan sát chế độ Full Screen cũng được nhóm thiết kế
56
Giao diện các trang website sau khi thiết kế như hình sau. Hình 4.8 là giao diện trang web
chính
57
Sau cùng là trang chọn chỗ như hình 4.10
58
Chương 5: Kết quả so sánh, thực nghiệm, phân tích, tổng hợp
Sau khi hoàn thiện ta tiến hành chạy thử toàn bộ hệ thống để kiểm tra độ ổn định,
củng như tính chính xác và độ trễ khi điều khiển. Sau thực nghiệm ta thấy khi mạch hoạt
động thời gian dài mạch điều khiển chạy chưa ổn định và dễ bị nhiễu.
Các chức năng của phần mềm bãi giữ xe RFID và nhận diện ảnh trên PC.
Đặt chỗ qua Website.
Vận hành các thiết bị trên hệ thống.
Cụ thể quá trình kiểm tra hoạt đông của phần mềm và các chức năng còn lại có thể
xem cụ thể ở phần Video Demo theo đường link:
Ở đây sẽ chỉ trình bày lại bảng tóm tắt cũng như một vài hình ảnh của quá trình kiểm
tra. Quá trình kiểm tra sẽ tiến thành theo trình tự thực hiện việc khởi động lại hệ thống,
kiểm tra các chức năng đặt chỗ. Ta có thể qua sát thông tin hiển thị trên LCD.
Sau khi khởi động mạch điều khiển và phần mềm trên PC, ta tiến hành kết nối
camera, đầu đọc thẻ RFID trên phần mềm sau đó tiến hành kết nối phần mềm trên PC với
mạch điều khiển. Hình ảnh sau khi bước kết nối hoàn tất như hình
Sau khi kiểm tra xong ta tiến hành kiểm tra chức năng đặt chỗ qua Website. Ta tiến
hành truy cập vào trang web hệ thống theo địa chỉ: http://carbooking.tk/ , sau đó ta tiến
hành chọn vào trang booking, tiến hành điền thông tin cần thiết. Sau đó hệ thống sẽ tự động
chuyển qua trang cho người dùng chọn chỗ. Kết thúc đặt chỗ xe xuất hiện thông báo “Đặt
chỗ thành công” và tự động chuyển về trang chủ của website.
59
Ta tiến hành xét ví dụ về chọn chỗ A5 như hình sau:
Đầu tiên điền các thông tin được yêu cầu trong trang booking như tên, số điện thoại,
biển số xe…
Hình 5.2. Trang chọn chỗ khi chưa chọn chỗ A5.
60
Sau khi chọn chỗ xong ta nhấn nút “Confirm” hệ thống sẽ xuất hiện một thống báo
để cho người dùng biết là đã đặt chỗ thành công như hình.
61
Cuối cùng ta tiến hành kiểm tra chức năng của phần mềm quản lý trên C# được trình bày
như hình sau:
Hình 5.5 mô tả giao diện log in. Khi muốn sử dụng phần mềm cần có user và password
để đăng nhập vào hệ thống.
62
Hình 5.7 mô tả giao diện đang hoạt động và nhận diện được đúng biển số xe
Hình 5.7. Giao diện chụp hình khi xe đúng biển số.
Ngược lại là không nhận diện đúng biển số hay sử dụng sai thẻ khi ra khỏi bãi. Hệ thống
sẽ báo là “khác biến số”.
Hình 5.8. Giao diện chụp hình khi xe sai biển số.
63
Chương 6. Kết luận và hướng phát triển
6.1. Kết luận
Sau thời gian thực hiện đề tài đến nay nhóm đã hoàn thành các yêu cầu đặt ra, đã
thiết kế và thi công thành công mô hình bãi giữ xe kết hợp với phần mềm quản lý bãi xe
ứng dụng công nghệ RFID và C#.
Hoàn thành đề tài này đã giúp cho nhóm nắm thêm được nhiều kiến thức bổ ích
như:
Hiểu và lập trình các Board Arduino thông dụng trong các ứng dụng điều
khiển.
Hiểu thêm về các chuẩn và phương thức giao tiếp thường gặp với vi điều
khiển như: UART, SPI…
Hiểu thêm về các thuật toán xử lý ảnh
Nguyên lý hoạt động, cách điều khiển và ứng dụng của công nghệ RFID.
Nguyên lý hoạt động và cách điều khiển động cơ servo.
Có thêm nhiều kiến thức về lập trình phần mềm trên C#.
Ứng dụng được nhiều công cụ hỗ trợ lập trình về xử lý hình ảnh,
SQL,MySql,EmguCV… trên C#.
Bên cạnh đó do thời gian cũng như kiến thức còn hạn hẹp nên cũng không tránh
khỏi một số điều cần cải thiện như:
Chưa có tính năng tự động nhận diện biển số cho phần mềm quản lý.
Phần mềm quản lý chưa có tính bảo mật cao.
6.2. Hướng phát triển
Qua các điểm cần cải thiện được nêu ra đề tài có thể được phát triển theo các hướng
rộng hơn và hoàn thiện hơn như:
Tích hợp, thay thế thêm nhiều cảm biến để nâng tính ổn định, thông minh
cho hệ thống.
Backup dữ liệu lên cloud để tránh trường hợp hệ thống bị mất điện hay xảy
ra sự cố.
Lập trình thêm chức năng tự động nhận dạng biển số, nhận diện người lái xe
cho phần mềm quản lý.
64
Kết hợp thêm các tấm pin năng lượng mặt trời đặt ở bãi xe, hướng đến sử
dụng nguồn năng lượng sạch, xanh và tiết kiệm.
Tăng cường tính bảo mật để hệ thống hoạt động bảo mật hơn.
6.3. Ứng dụng trong tương lai gần
Do được thiết kế dưới dạng mô hình, nên phần cứng hệ thống cần được cải thiện
nhiều để ứng dụng vào thực tế. Tuy nhiên, về cơ bản hệ thống đã vận hành được đúng các
yêu cầu được đề ra có thể ứng dụng vào:
Làm giải pháp cho các bãi xe có công nghệ thông minh.
Làm phương thức quản lý, điều khiển cho các bãi xe thông minh, hiện đại.
Tạo tiền đề phát triển cho các hệ thống IoT.
Phần mềm quản lý bãi xe có thể lập trình lại để kết nối với camera an ninh công
nghiệp, camera IP để ứng dụng vào quản lý bãi xe cho các trung tâm thương mại, siêu thị,
trường học… tương tự với các hệ thống phần mềm quản lý bãi xe thông minh hiện có.
65
Tài liệu tham khảo
[1]. Giáo trình “Lập trình Android trong ứng dụng điều khiển – Nguyễn Văn Hiệp” – Đại
Học Sư Phạm Kỹ Thuật Tp.HCM tháng 8/2015.
[2]. Giáo trình “Thực tập vi điều khiển PIC – Nguyễn Đình Phú” – Đại Học Sư Phạm Kỹ
Thuật Tp.HCM tháng 8/2015.
[3]. Giáo trình “Lập trình hướng đối tượng với PHP – Đinh Vũ Quốc Trung” – Đại Học
FPT.
[4]. Giáo trình “Xử lý ảnh – Nguyễn Thanh Hải” – Đại Học Sư Phạm Kỹ Thuật Tp.HCM.
[5]. https://en.wikipedia.org/wiki/Canny_edge_detector
66
Phụ Lục
1. Code chương trình cho vi điều khiển (Đĩa CD)
2. Chương trình cho RFID-Reader (Đĩa CD)
3. Chương trình điều khiển C# (Đĩa CD)
4. Chương trình Web (Đĩa CD)
5. AT Mega 328P Datasheet
6. LCD Datasheet
7. SG90 Datasheet
8. Video Demo
9. Hướng dẫn vận hành hệ thống
B1: Kiểm tra các mối nối dây điện, các thiết bị.
B2: Bật nguồn, khởi động hệ thống.
B3: Kiểm tra các thiết bị có nguồn chưa.
B4: Gắn đầu đọc thẻ, camera, khối xử lý trung tâm với PC qua cổng
USB.
B5: Mở phần mềm trên máy tính, kết nối đầu đọc thẻ, camera, khối xử lý
trung tâm.
B6: Có xe vào tiến hành quẹt thẻ, mở Barrier.
B7: Đặt chỗ trước trên Web.
67