1.3 Mục đích của đề tài Đề tài được thực hiện với mục tiêu: - Quẹt thẻ cho xe ra/vô dùng RFID - Nhận diện biển số xe - Phát hiện chỗ trống trong bãi bằng cảm biến siêu âm - Thông báo cò
TỔNG QUAN
Đặt vấn đề
Theo Cục Đăng kiểm Việt Nam, sản lượng ô tô sản xuất và lắp ráp trong nước đã tăng trưởng đáng kể từ năm 2018, với 287.586 xe vào năm 2018 và đạt 439.600 xe vào năm 2022 Tính đến ngày 15/3/2023, Việt Nam có 5.014.243 ô tô, tương đương 5 triệu xe trên tổng dân số 100 triệu người, cho thấy nhu cầu sử dụng ô tô đang tăng mạnh Sự gia tăng này yêu cầu xây dựng các bãi gửi xe để phục vụ nhu cầu của người dân trong công việc và sinh hoạt hàng ngày Để đáp ứng, cần áp dụng công nghệ thẻ từ RFID, một giải pháp IoT giúp điều khiển và giám sát từ xa, phù hợp với yêu cầu quản lý bãi gửi xe hiện đại.
Hình thức giữ xe truyền thống đang gặp nhiều vấn đề cần thay thế, như vé giữ xe chỉ sử dụng một lần và dễ bị hỏng khi gặp thời tiết xấu Những vé này không chỉ gây bất tiện cho khách hàng mà còn làm khó khăn trong quản lý và an ninh bãi gửi xe Hệ thống bãi giữ xe tự động giải quyết triệt để những vấn đề này với thẻ điện từ chống thấm nước, tiện lợi cho cả khách hàng và chủ đầu tư Thẻ điện từ có thời gian sử dụng lên đến 10 năm hoặc hơn, đồng thời nâng cao mức độ an toàn và bảo mật, hạn chế các hành vi giả mạo.
Giới thiệu đề tài
Đất nước ta đang phát triển nhanh chóng, với nhu cầu đời sống ngày càng cao, việc sở hữu phương tiện đi lại riêng, đặc biệt là ô tô, đã trở thành một yêu cầu thiết yếu cho người dân Sự gia tăng số lượng ô tô không chỉ diễn ra trong các dịp lễ mà còn trong các ngày thường, dẫn đến tình trạng thiếu bãi đậu xe ở các thành phố lớn.
Các bãi gửi xe tự phát hiện nay đang gặp nhiều vấn đề về an ninh do quản lý thủ công, như ghi vé bằng giấy, dẫn đến việc tăng giá vé vượt mức quy định Do đó, việc xây dựng các bãi gửi xe tự động trở nên cần thiết nhằm đáp ứng nhu cầu của người dân Vì lý do này, nhóm đã quyết định nghiên cứu và thực hiện đề tài “Thiết kế bãi gửi xe tự động”.
Mục đích của đề tài
Đề tài được thực hiện với mục tiêu:
- Quẹt thẻ cho xe ra/vô dùng RFID
- Nhận diện biển số xe
- Phát hiện chỗ trống trong bãi bằng cảm biến siêu âm
- Thông báo còn hoặc hết chỗ bằng LCD, Led xanh đỏ
- Phần mềm quản lý bãi gửi xe
- Ứng dụng di động để tiện lợi cho người dùng trong việc quan sát còn hay hết chỗ trong bãi
Phương pháp nghiên cứu
- Tổng hợp tài liệu lý thuyết bằng cách thu thập thông tin từ giáo trình, mạng internet, các đồ án của các khóa trước
- Từ những kiến thức nền tảng và ý kiến của giảng viên hưỡng dẫn, thử nghiệm và đưa ra những module tối ưu dành cho đề tài
- Tham khảo ý kiến từ những người có kiến thức chuyên môn để nhận được những lời khuyên hữu ích cho quá trình thực hiện đề tài
- Mô phỏng trên các phần mềm trước khi tiến hành thi công hệ thống
Đối tượng nghiên cứu
Bố cục đồ án
Giới thiệu sơ lược và khái quát về đề tài cũng như mục tiêu và các phương pháp, đối tượng nghên cứu đối với yêu cầu hệ thống.
CƠ SỞ LÝ THUYẾT
Tổng quan về các chuẩn truyền
UART (Universal Asynchronous Receiver/Transmitter) là giao thức truyền thông phần cứng cho phép giao tiếp không đồng bộ giữa các thiết bị Giao tiếp diễn ra qua việc kết nối chân Rx (nhận) và Tx (truyền) của hai thiết bị.
Hình 2 1 Giao diện ghép nối giao thức UART
Do không có tín hiệu xung CLK, hai thiết bị cần thống nhất tốc độ truyền nhận, ví dụ như 9600 bps Khi bên gửi truyền dữ liệu với tốc độ 9600, bên nhận cũng phải nhận ở tốc độ tương tự Bên nhận chỉ cần xác định thời điểm bắt đầu nhận dữ liệu và thống nhất về số bit dữ liệu sẽ được truyền.
Tốc độ truyền của UART được thiết lập ở các mức độ chuẩn như 9600,
Tốc độ truyền dữ liệu như 19200, 115200 và nhiều mức khác được xác định dựa trên số bit truyền mỗi giây, thường được lựa chọn phù hợp với các yêu cầu khác nhau của hệ thống.
Hình 2 2 truyền dữ liệu UART
Dữ liệu truyền và nhận được gửi theo khung:
- Start bit (luôn ở mức thấp): bắt đầu khung dữ liệu
- Data bits (0-8): chứa dữ liệu thông tin gửi hoặc nhận theo truyền nhận LSB
- Parity bit: kiểm tra bit chẵn hay lẻ để kiểm tra xem data có lỗi hay không
- Stop bit (luôn ở mức cao): kết thúc khung dữ liệu
Các loại kênh chuyền dữ liệu nối tiếp:
Chế độ Simplex cho phép truyền dữ liệu theo một chiều duy nhất trên một đường truyền xác định, nghĩa là thông tin chỉ di chuyển từ thiết bị này sang thiết bị khác một cách đơn hướng.
Hình 2 3 Kênh truyền nối tiếp simplex
Chế độ half-duplex cho phép dữ liệu truyền đi theo một hướng duy nhất tại một thời điểm Trong chế độ này, thiết bị có khả năng gửi hoặc nhận dữ liệu, nhưng không thể thực hiện cả hai nhiệm vụ cùng lúc.
Hình 2 4 Kênh truyền nối tiếp half – duplex
Chế độ full-duplex cho phép truyền nhận dữ liệu đồng thời theo hai hướng, sử dụng hai đường truyền dữ liệu riêng biệt.
Hình 2 5 Kênh truyền nối tiếp full – duplex
* Truyền thông đồng bộ và không đồng bộ:
Truyền thông đồng bộ là phương pháp sử dụng một đường dữ liệu kết hợp với một đường xung nhịp để đồng bộ hóa việc gửi và nhận dữ liệu Trong quá trình gửi, thiết bị phát sẽ điều khiển xung nhịp để thông báo cho thiết bị nhận, đảm bảo rằng việc truyền tải dữ liệu diễn ra chính xác.
Truyền thông không đồng bộ sử dụng một đường truyền dữ liệu duy nhất mà không cần xung nhiệp riêng Dữ liệu được truyền qua các khung, bao gồm các phần như Start bit, Data bits và Stop bit.
SPI (Giao thức giao tiếp ngoại vi nối tiếp) là một chuẩn truyền thông tốc độ cao, hoạt động theo kiểu Master-Slave với một chip Master điều phối và các chip Slave được điều khiển bởi Master Truyền thông chỉ diễn ra giữa Master và Slave, cho phép truyền song công (full duplex), nghĩa là quá trình truyền và nhận dữ liệu có thể diễn ra đồng thời.
Hình 2 6 Chuẩn giao tiếp SPI giữa Master và một Slave
Các thành phần của SPI:
SCLK (Serial Clock) là dây tạo tín hiệu xung CLK, được phát sinh bởi Master để đồng bộ hóa dữ liệu Slave chỉ chờ tín hiệu xung từ Master để thực hiện, vì nó không có khả năng tự tạo ra xung Clock.
MISO (Master Input / Slave Output) là giao thức trong đó dữ liệu được truyền từ Slave đến Master Đối với thiết bị Slave, chân MISO hoạt động như chân output, trong khi đối với thiết bị Master, chân này sẽ đóng vai trò là chân input.
MOSI (Master Output / Slave Input) là giao thức truyền dữ liệu, trong đó dữ liệu được gửi từ thiết bị Master đến thiết bị Slave Đối với thiết bị Master, chân này hoạt động như một đầu ra (output), trong khi đối với thiết bị Slave, chân này đóng vai trò là đầu vào (input).
SS (Slave Select) là chân chọn Slave được điều khiển bởi Master Chân này hoạt động ở mức cao, và khi Master muốn giao tiếp với Slave, nó sẽ gửi tín hiệu kéo xuống mức thấp, kích hoạt hoạt động của Slave.
Trong chuẩn truyền thông SPI thì một Master có thể giao tiếp với một hoặc nhiều Slave Có hai cách để Master giao tiếp với nhiều Slave:
- Nối song song các chân Slave select:
Trong kết nối song song giữa Master và các Slave, chân SCLK và MOSI được nối chung từ Master đến tất cả các Slave, trong khi chân MISO được nối từ các Slave về Master Để phân biệt dữ liệu từ từng Slave, mỗi chân SS của Master sẽ được kết nối riêng với từng Slave và tất cả đều ở mức cao, nghĩa là các Slave không hoạt động Khi Master muốn kích hoạt một Slave cụ thể, nó sẽ gửi tín hiệu kéo chân SS của Slave đó về mức thấp, lúc này Slave sẽ bắt đầu hoạt động.
- Nối chuỗi các chân Slave select:
Trong hệ thống nối chuỗi Slave select, Master gửi dữ liệu qua chân MOSI đến Slave đầu tiên, sau khi nhận dữ liệu, Slave này sẽ truyền tiếp qua chân MISO của nó Dữ liệu tiếp tục được chuyển đến MOSI của Slave thứ hai và sau đó ra khỏi qua chân MISO của nó, và quá trình này lặp lại với Slave thứ ba Cuối cùng, dữ liệu từ MISO của Slave thứ ba sẽ được đưa vào chân MISO của Master Tất cả chân SS được nối chung, do đó để các Slave hoạt động, cả ba Slave cần được kéo xuống mức thấp Điều này có thể dẫn đến việc truyền dữ liệu chậm và không nhận được nếu có Slave nào đó bị hư hỏng.
Vì hai gói dữ liệu trên Master và Slave được gửi qua lại đồng thời, quá trình truyền dữ liệu này được gọi là "song công"
Hình 2 9 Truyền dữ liệu SPI
Thư viện xử lý hình ảnh EmguCV
Hiện nay, có nhiều thư viện hỗ trợ xử lý hình ảnh trên các ngôn ngữ lập trình phổ biến như Visual C++ và C# Trong số đó, OpenCV và EmguCV là hai thư viện nổi bật được nhiều lập trình viên ưa chuộng.
OpenCV (Open Source Computer Vision) là một thư viện mạnh mẽ cho xử lý hình ảnh và video, hỗ trợ nhiều ngôn ngữ lập trình như C++, C, Java, và Python, hoạt động trên các hệ điều hành Windows và Linux Được phát triển và tối ưu hóa bằng C/C++, OpenCV cung cấp hàng loạt hàm cho nhận dạng và phân tích video.
EmguCV là thư viện lập trình C# tương tự như OpenCV, nhưng được thiết kế đặc biệt cho môi trường NET Đây là một thư viện cross-platform phổ biến, thường được sử dụng trong các dự án phát triển trên Visual Studio, Xamarin Studio và Unity EmguCV thực chất là một wrapper của OpenCV, cho phép tích hợp OpenCV vào các ứng dụng NET, hỗ trợ nhận dạng cử chỉ hiệu quả.
* Lý do lựa chọn EmguCV cho dự án:
Nhóm phải phát triển phần mềm quản lý và điều khiển bằng ngôn ngữ C# Việc kết hợp OpenCV với C# thường gặp khó khăn và tốn thời gian Tuy nhiên, nhờ vào thư viện EmguCV, người dùng có thể dễ dàng sử dụng các tính năng của OpenCV trong môi trường NET, từ đó tiết kiệm thời gian và công sức.
Qua đó, bộ thư viện EmguCV đã được nhóm lựa chọn để triển khai nghiên cứu và phát triển cho đề tài này
EmguCV, được phát triển hoàn toàn bằng C#, mang lại tính khả dụng đa nền tảng, cho phép chạy trên mọi hệ điều hành hỗ trợ NET, bao gồm iOS, Android, Mac OS 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à IronPython
- Nhận dạng hình ảnh: hỗ trợ các tính năng nhận diện khuôn mặt, nhận diện vật thể, …
- Xử lý hình ảnh ví dụ các chức năng như khử nhiễu, điều chỉnh độ sáng,…
- Tài liệu XML và Intellisence: EmguCV hỗ trợ tài liệu XML và Intellisense, giúp lập trình viên dễ dàng tra cứu và sử dụng các hàm
- Hỗ trợ các tính năng nhận dạng và xử lý cử chỉ
* Các ứng dụng thực tế của EmguCV:
EmguCV được sử dụng rộng rãi trong nhiều ứng dụng thực tế bao gồm:
- Hệ thống an ninh: Nhận dạng khuôn mặt và các vật thể trong giám sát an ninh
- Y tế: Phân tích hình ảnh y tế như ảnh X-quang, MRI
- Công nghiệp: Kiểm tra chất lượng sản phẩm trên dây chuyền sản xuất
- Giáo dục: Phát triển các ứng dụng học máy và xử lý ảnh trong nghiên cứu và giảng dạy.
Cơ sở dữ liệu SQL - SQL Server
SQL (Ngôn ngữ truy vấn có cấu trúc) là công cụ quan trọng để lưu trữ và xử lý dữ liệu trong cơ sở dữ liệu quan hệ, được áp dụng rộng rãi trong nhiều ứng dụng Ngôn ngữ này có khả năng tích hợp hiệu quả với các ngôn ngữ lập trình như Java, Python và C#.
Các hệ thống cơ sở dữ liệu SQL phổ biến bao gồm Oracle và SQL Server SQL dễ học nhờ vào việc sử dụng các từ khóa tiếng Anh quen thuộc như DELETE, INSERT, và UPDATE để thực hiện các thao tác như xóa, lưu trữ và truy xuất thông tin Tuy nhiên, bên cạnh những ưu điểm, SQL cũng có những nhược điểm cần được xem xét.
- Có thể truy xuất nhanh chóng dữ liệu từ cơ sở dữ liệu
- Cú pháp câu truy vấn dễ hiểu có thể dễ dàng học tập mà không cần biết nhiều về lập trình
- Có tính bảo mật cao, có thể mã hóa để ngăn chặn truy cập trái phép
- Có thể quản lý dữ liệu lớn, phù hợp với quy mô dự án lớn
- Tính linh hoạt cao có thể sử dụng trên máy tính, server hay thậm chí ở điện thoại smart phone
- Chi phí đầu tư cho việc triển khai và duy trì dự án cao vì SQL khá phúc tạp và tiêu tốn nhiều tài nguyên
- Khả năng mở rộng bị giới hạn, nếu muốn mở rộng cơ sở dữ liệu thì phải sử dụng nhiều máy chủ hoặc công nghệ khác
Bảng 2 1 Ưu & Nhược điểm của SQL
SQL Server là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) do Microsoft phát triển, nổi bật với tính phổ biến trong các ứng dụng từ quy mô nhỏ đến lớn.
Có thể hoạt động trên cả hệ điều hành Windows và Linux, ứng dụng này hoạt động theo mô hình máy chủ - máy khách, cho phép truy xuất dữ liệu qua các môi trường mạng như LAN, WAN và Internet Ưu điểm của nó là tính linh hoạt và khả năng tương thích cao, trong khi nhược điểm có thể bao gồm độ phức tạp trong việc thiết lập và quản lý.
- Dữ liệu được tổ chức một cách khoa học, giảm thiểu sự trùng lặp không cần thiết
- Dữ liệu có thể được truy vấn và xử lý theo nhiều phương pháp khác nhau, giúp tối ưu hóa việc sử dụng dữ liệu
- SQL Server cho phép nhiều người dùng truy cập và thao tác dữ liệu đồng thời
Cần thiết phải thiết lập cơ chế bảo mật cho cơ sở dữ liệu, vì nó có thể được truy cập bởi nhiều người khác nhau Các biện pháp bảo vệ dữ liệu là rất quan trọng để đảm bảo an toàn và bảo mật thông tin.
- Cần có cơ chế ưu tiên khi truy cập để tránh tranh chấp dữ liệu
- Dữ liệu có thể bị mất do lỗi hệ thống hoặc tấn công từ bên ngoài, cần có các biện pháp sao lưu và khôi phục dữ liệu
Bảng 2 2 Ưu & Nhược điểm của SQL Server.
Cơ sở dữ liệu Firebase – Realtime Database
Firebase là nền tảng phát triển ứng dụng di động và web toàn diện, đóng vai trò quan trọng trong việc xây dựng và quản lý ứng dụng Từ một dịch vụ cơ sở dữ liệu thời gian thực, Firebase đã mở rộng để cung cấp bộ công cụ phong phú hỗ trợ các nhà phát triển trong mọi giai đoạn của quá trình phát triển ứng dụng.
Firebase là nền tảng nổi bật với khả năng đồng bộ hóa dữ liệu thời gian thực giữa các thiết bị, hỗ trợ xác thực người dùng một cách dễ dàng và cung cấp giải pháp lưu trữ tệp an toàn Nền tảng này còn tích hợp các công cụ phân tích mạnh mẽ, giúp theo dõi hành vi người dùng, từ đó tối ưu hóa trải nghiệm và nâng cao hiệu suất ứng dụng.
Firebase cung cấp nhiều dịch vụ khác nhau, trong đó nổi bật bao gồm:
Firebase offers two types of databases: Realtime Database and Cloud Firestore Both enable real-time data storage and synchronization between clients and servers.
Firebase Authentication is a robust service that facilitates user authentication through various methods, including email/password, phone number, and third-party providers such as Google, Facebook, and Twitter.
Firebase Storage là dịch vụ cho phép lưu trữ và phục vụ các tệp như hình ảnh, video và nhiều loại tệp khác Được tích hợp với Google Cloud Storage, dịch vụ này đảm bảo khả năng mở rộng và an toàn cho dữ liệu Tuy nhiên, người dùng cũng cần cân nhắc một số nhược điểm khi sử dụng dịch vụ này.
- Firebase cung cấp SDK đa ngôn ngữ lập trình và nền tảng, giúp việc tích hợp các ứng dụng trở nên đơn giản và nhanh chóng
- Với hạ tầng dựa trên Google Cloud,
Firebase có khả năng mở rộng tốt, hỗ trợ ứng dụng từ giai đoạn khởi đầu đến khi đạt hàng triệu người dùng
Cải thiện thời gian phát triển ứng dụng bằng cách sử dụng các tiện ích đã được xây dựng sẵn, giúp các nhà phát triển tập trung vào việc nâng cao tính năng và giao diện người dùng.
- Firebase cung cấp nhiều công cụ bảo mật và tuân thủ tiêu chuẩn ngành, giúp
Sử dụng Firebase đồng nghĩa với việc phụ thuộc vào hệ sinh thái của Google, điều này có thể tạo ra rủi ro nếu có sự thay đổi về chính sách hoặc dịch vụ.
Mặc dù Firebase mang đến nhiều dịch vụ đa dạng, nhưng khả năng tùy chỉnh sâu của nó có thể bị hạn chế, dẫn đến việc không đáp ứng đầy đủ tất cả các yêu cầu cụ thể của ứng dụng.
Mặc dù Firebase cung cấp nhiều dịch vụ miễn phí, nhưng chi phí có thể tăng đáng kể khi ứng dụng phát triển và cần thêm tài nguyên Do đó, việc bảo vệ dữ liệu người dùng và đảm bảo an toàn thông tin là rất quan trọng.
Bảng 2 3 Ưu & Nhược điểm của Firebase
Realtime Database là một cơ sở dữ liệu NoSQL lưu trữ trên đám mây, cho phép đồng bộ dữ liệu JSON giữa các client trong thời gian thực Mọi thay đổi trong dữ liệu được tự động cập nhật ngay lập tức trên tất cả thiết bị kết nối mà không cần làm mới trang hay thực hiện yêu cầu bổ sung Firebase Realtime Database được thiết kế để đảm bảo tính khả dụng cao và độ trễ thấp, rất phù hợp cho các ứng dụng như trò chuyện trực tuyến, theo dõi vị trí và các ứng dụng tương tác khác.
Đồng bộ thời gian thực đảm bảo rằng mọi thay đổi trong cơ sở dữ liệu được tự động cập nhật ngay lập tức trên tất cả các thiết bị kết nối, giúp duy trì tính nhất quán của dữ liệu giữa các phiên bản ứng dụng.
- Lưu trữ dữ liệu JSON: Dữ liệu được lưu trữ dưới dạng JSON, một định dạng dễ dàng để thao tác và mở rộng
Firebase Realtime Database cung cấp khả năng hoạt động ngoại tuyến, cho phép ứng dụng duy trì chức năng ngay cả khi không có kết nối internet Dữ liệu sẽ tự động được đồng bộ hóa khi kết nối được khôi phục, đảm bảo trải nghiệm người dùng liền mạch.
Realtime Database cung cấp bảo mật mạnh mẽ với các quy tắc dựa trên JSON, cho phép kiểm soát truy cập đọc và ghi dữ liệu một cách chi tiết và linh hoạt Ưu điểm của hệ thống này là khả năng tùy chỉnh cao trong việc quản lý quyền truy cập, trong khi nhược điểm có thể là sự phức tạp trong việc thiết lập và duy trì các quy tắc bảo mật.
- Đơn giản và dễ sử dụng: Realtime
Database tích hợp dễ dàng với các ứng dụng di động và web thông qua các
- Giới hạn của NoSQL: Là một cơ sở dữ liệu NoSQL, Realtime Database có thể không phù hợp cho các ứng dụng
SDK của Firebase, giúp các nhà phát triển triển khai nhanh chóng và hiệu quả
Realtime Database được thiết kế với khả năng mở rộng linh hoạt, cho phép xử lý đồng thời lượng lớn dữ liệu và người dùng, đáp ứng nhu cầu phát triển của ứng dụng.
Thời gian thực cho phép đồng bộ dữ liệu ngay lập tức, mang lại trải nghiệm người dùng mượt mà và tăng cường tương tác Điều này rất quan trọng đối với các ứng dụng yêu cầu phản hồi nhanh, chẳng hạn như trò chuyện trực tuyến và cập nhật trực tiếp, cũng như trong các tình huống cần truy vấn phức tạp hoặc giao dịch ACID mạnh mẽ.
Tổng quan về thuật toán xử lý nhận diện ảnh
OCR (Nhận dạng Ký tự Quang học) là công nghệ cho phép chuyển đổi hình ảnh của chữ viết tay hoặc chữ đánh máy, thường được quét bằng máy scanner, thành các văn bản tài liệu có thể chỉnh sửa.
Thuật toán này được áp dụng rộng rãi trong nhiều lĩnh vực như số hóa tài liệu, nhận dạng biển số xe và đọc mã vạch Tuy nhiên, nó cũng có những ưu điểm và nhược điểm riêng cần được xem xét.
- Tăng hiệu quả làm việc: Giúp chuyển đổi nhanh chóng các tài liệu giấy thành dữ liệu số
- Tiết kiệm thời gian và chi phí: Giảm thiểu công sức và chi phí liên quan đến việc nhập liệu thủ công
- Dễ dàng lưu trữ và tìm kiếm: Các tài liệu số hóa có thể được lưu trữ, tìm kiếm và quản lý dễ dàng hơn
Độ chính xác của công nghệ OCR giảm mạnh khi xử lý hình ảnh có chất lượng kém hoặc bị nhiễu, ảnh hưởng đến khả năng nhận diện văn bản chính xác.
Nhận dạng hình ảnh có nền phức tạp thường gặp khó khăn, đặc biệt khi màu nền và màu chữ tương đồng, hoặc khi xử lý chữ viết tay.
- Hỗ trợ ngôn ngữ hạn chế: OCR chưa hỗ trợ tất cả các ngôn ngữ và ký tự đặc biệt, đặc biệt là những ngôn ngữ phức tạp
Bảng 2 5 Ưu & Nhược điểm của thuật toán OCR
Các thuật toán và kỹ thuật phổ biến trong OCR [2]
Template Matching là phương pháp so khớp các ký tự trong hình ảnh với các mẫu ký tự đã được định nghĩa trước Mặc dù đây là một phương pháp đơn giản, nhưng hiệu quả của nó thường thấp khi áp dụng cho các văn bản phức tạp hoặc hình ảnh có chất lượng kém.
K-Nearest Neighbors (KNN): Một phương pháp học máy dựa trên việc so sánh các đặc trưng của ký tự với các mẫu đã biết để phân loại ký tự
Support Vector Machines (SVM): Một kỹ thuật học máy sử dụng để phân loại các ký tự dựa trên các đặc trưng đã trích xuất
Mạng nơ-ron tích chập (CNN) là một loại mạng nơ-ron sâu được thiết kế để tự động trích xuất đặc trưng và nhận diện ký tự Với khả năng xử lý hình ảnh phức tạp và đa dạng, CNN cho thấy hiệu quả vượt trội trong việc nhận dạng ký tự từ các bức ảnh.
Chuyển đổi tài liệu giấy thành tài liệu số: OCR giúp số hóa các tài liệu giấy, cho phép lưu trữ, tìm kiếm và chỉnh sửa dễ dàng
Nhận dạng văn bản trong hình ảnh và video là một ứng dụng quan trọng của OCR, cho phép nhận diện văn bản từ các hình ảnh chụp hoặc video Công nghệ này được sử dụng để nhận diện biển số xe, văn bản trên bảng hiệu và tài liệu quét, mang lại nhiều tiện ích trong việc xử lý thông tin.
Hỗ trợ người khiếm thị: OCR có thể chuyển đổi văn bản trong sách, báo, và tài liệu thành giọng nói, giúp người khiếm thị tiếp cận thông tin
2.5.2 Thuật toán Canny Edge Detector
Thuật toán Canny là một trong những phương pháp phát hiện biên phổ biến nhất trong lĩnh vực xử lý ảnh và thị giác máy tính Nó giúp xác định các vùng khác nhau trong hình ảnh, tạo ra các biên sắc nét và chính xác, từ đó đóng vai trò quan trọng trong việc phân tích và trích xuất đặc điểm của các đối tượng trong ảnh.
Thuật toán bao gồm 5 bước:
- Loại bớt nhiễu ở trong ảnh
- Tính toán giá trị Gradient độ xám của ảnh
- Theo dõi cạnh bằng độ trễ
Candy Edge Detector có hai điểm chính quan trọng Đầu tiên là độ lỗi, phương pháp này cần phải hiệu quả trong việc phát hiện tất cả các điểm biên mà không bỏ sót bất kỳ biên nào Thứ hai là định vị, khoảng cách giữa các điểm biên được phát hiện bởi thuật toán và các biên thực tế cần phải được tối ưu hóa để càng nhỏ càng tốt.
Hiệu suất: Không được phép chỉ ra nhiều biên trong khi chỉ có một biên tồn tại
Giải thuật Canny Edge Detector [4]:
Nhiễu trong ảnh có thể ảnh hưởng đến quá trình phát hiện cạnh biên, vì vậy việc đầu tiên cần thực hiện là giảm nhiễu hình ảnh Một phương pháp hiệu quả để làm điều này là sử dụng bộ lọc Gaussian nhằm làm mịn ảnh.
Để tính toán giá trị Gradient độ xám của ảnh, chúng ta sử dụng bộ lọc Sobel nhằm phát hiện chính xác các cạnh của ảnh thông qua cường độ sáng và hướng gradient tại từng điểm ảnh.
Bước Non-maximum Suppression giúp loại bỏ các điểm ảnh không phải cực đại của gradient, chỉ giữ lại những điểm có giá trị gradient cao nhất trong các vùng lân cận theo hướng của gradient Tiếp theo, bước ngưỡng kép xác định hai ngưỡng: ngưỡng cao và ngưỡng thấp Ngưỡng cao được sử dụng để xác định các điểm ảnh gradient (pixel mạnh) vượt qua ngưỡng cao, được gọi là biên chắc chắn, trong khi ngưỡng thấp xác định các gradient cao hơn hoặc bằng ngưỡng thấp (pixel yếu), được gọi là biên tiềm năng.
Cuối cùng là nối tất cả các biên chắc chắn với biên tiềm năng để tạo thành đường biên hoàn chỉnh
2.5.3 Quá trình nhận diện ảnh
Hình 2 14 Quy trình nhận diện biển số
Hệ thống nhận diện biển số xe bắt đầu bằng việc thu thập hình ảnh từ các nguồn đầu vào như máy ảnh hoặc camera Những bức ảnh này có thể được chụp từ nhiều góc độ và điều kiện ánh sáng khác nhau, đóng vai trò quan trọng trong việc cung cấp dữ liệu đầu vào cho quá trình nhận dạng.
Sau khi thu thập ảnh, hệ thống sẽ xử lý để xác định khu vực chứa biển số xe Quá trình này bao gồm các bước như lọc ảnh, phát hiện cạnh và phân đoạn hình ảnh nhằm tìm ra vùng chứa biển số xe trong bức ảnh.
Sau khi xác định vùng chứa biển số xe trong ảnh, hệ thống sẽ áp dụng ký tự từ vùng này Thuật toán OCR sẽ chuyển đổi hình ảnh chứa ký tự thành văn bản có thể xử lý được.
Tổng quan về phần cứng
Board Arduino Uno R3 là phiên bản tiêu chuẩn với kích thước 68.6x53.4 mm, sử dụng cáp USB Type-B để lập trình Board này trang bị vi điều khiển ATmega328P, cung cấp đầy đủ chức năng cho các dự án điện tử và lập trình cơ bản Arduino Uno R3 có 14 chân digital (D0-D13) và 6 chân analog (A0-A5), với khả năng sử dụng chân analog như chân digital khi cần thiết.
Vi điều khiển ATmega328P Điện áp hoạt động 5V (cấp qua cổng usb)
Số chân digital I/O 14 chân (6 chân PWM)
Dòng ra tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ Flash 32 KB (ATmega328) với 0.5 KB dùng bởi bootloader
Giao động của thạch anh 16 MHz
Bảng 2 6 Bảng thông số kỹ thuật của Arduino Uno R3 [5]
Chân Chức năng Mô tả
0 Digital I/O Chân Rx cho giao tiếp Serial
1 Digital I/O Chân Tx cho giao tiếp Serial
A0-A5 Analog Input Các chân đầu vào analog cho cảm biển hoặc các thiết bị analog khác 3.3V Power Supply Nguồn ra 3.3V
GND Ground Chân kết nối đất
Vin External Voltage Nguồn điện ngoài từ nguồn vào
5V Power Supply Nguồn ra hoặc nguồn vào 5V
Reset Reset Kích hoạt lại vi điều khiển và khởi động lại chương trình
Bảng 2 7 Bảng chức năng chân của Arduino Uno R3
Arduino Mega 2560 là phiên bản nâng cấp mạnh mẽ của Arduino, có kích thước lớn hơn so với Uno R3 (101.6x53.4 mm) Board này sử dụng vi điều khiển Atmega2560, cung cấp 54 chân digital và 16 chân analog, giúp mở rộng khả năng kết nối và điều khiển cho các dự án điện tử phức tạp.
Về cơ bản thì Arduino Mega 2560 vẫn tương tự như Aruino Uno R3, chỉ khác là có nhiều số lương chân và tích hợp thêm nhiều tính năng mạnh mẽ
Vi điều khiển ATmega2560 Điện áp hoạt động 5V
Dòng ra mỗi chân digital 20 mA
Dòng ra tối đa mỗi chân digital 40 mA
Dòng ra mỗi chân analog 20 mA
Bảng 2 8 Bảng thông số kỹ thuật của Arduino Mega 2560 [11]
Chân Chức năng Mô tả
0 Digital I/O Chân Rx cho giao tiếp Serial
1 Digital I/O Chân Tx cho giao tiếp Serial
A0-A15 Analog Input Các chân đầu vào analog cho cảm biển hoặc các thiết bị analog khác 54-73 PWM Các chân có thể tạo ra tín hiệu PWM
RX0 Serial Chân nhận dữ liệu từ cổng Serial 0
TX0 Serial Chân truyền dữ liệu từ cổng Serial 0 RX1 Serial Chân nhận dữ liệu từ cổng Serial 1
TX1 Serial Chân truyền dữ liệu từ cổng Serial 1 RX2 Serial Chân nhận dữ liệu từ cổng Serial 2
TX2 Serial Chân truyền dữ liệu từ cổng Serial 2 RX3 Serial Chân nhận dữ liệu từ cổng Serial 3
TX3 Serial Chân truyền dữ liệu từ cổng Serial 3
SCK SPI Chân CLK cho SPI
MISO SPI Chân Master In Slave Out
MOSI SPI Chân Master Out Slave In
SS SPI Chân Slave Select
AREF Analog Reference Nguồn tham chiếu analog
GND Ground Chân kết nối đất
Vin External Voltage Nguồn điện ngoài từ nguồn vào
5V Power Supply Nguồn ra hoặc nguồn vào 5V
Reset Reset Kích hoạt lại vi điều khiển và khởi động lại chương trình
Bảng 2 9 Bảng chức năng chân của Arduino Mega 2560
Servo SG90 là một servo motor nhỏ gọn, nhẹ và chi phí thấp, lý tưởng cho các ứng dụng điều khiển vị trí Với độ chính xác và ổn định cao, servo này có khả năng quay từ 0° đến 180°, cho phép điều khiển chuyển động một cách chính xác Nhờ những ưu điểm nổi bật, SG90 trở thành lựa chọn hoàn hảo cho cả người mới bắt đầu và chuyên gia trong lĩnh vực điện tử và robot học, với điện áp hoạt động là 5V.
Dòng điện tiêu thụ 200 mA
Bảng 2 10 Bảng thông số kỹ thuật của Servo SG90
VCC (đỏ) Cấp nguồn cho Servo (5V)
Chân điều khiển (vàng) Nhận tín hiệu điều khiển góc quay của servo
Bảng 2 11 Bảng chức năng chân của Servo SG90
Hình 2 19 Cảm biến siêu âm HC-SR04
Cảm biến siêu âm HC-SR04 có khả năng đo khoảng cách bằng cách phát ra sóng siêu âm Nó gửi một xung âm thanh và ghi lại thời gian mà xung âm đó quay trở lại sau khi phản xạ từ một vật thể Từ thời gian này, khoảng cách đến vật thể được tính toán một cách chính xác.
Cảm biến là thiết bị giá rẻ, dễ sử dụng, thường được tích hợp trong các dự án và ứng dụng nhằm đo khoảng cách hoặc phát hiện vật cản Chúng hoạt động dựa trên một công thức cụ thể.
Khoảng cách = (Tốc độ × Thời gian)/2
Vì sóng âm phải đi từ cảm biến đến vật cản rồi quay lại Điện áp hoạt động 5V
Khoảng cách đo lý thuyết 2cm đến 450cm
Khoảng cách đo thực tế 2cm đến 80cm Độ chính xác 3mm
Góc đo được bao phủ 15°
Bảng 2 12 Bảng thông số kỹ thuật của HC-SR04 [10]
Trigger Chân kích hoạt, nhận tín hiệu điều khiển để bắt đầu đo khoảng cách
Echo Chân phản hồi, gửi tín hiệu phản hồi chứa thông tin khoảng cách
Bảng 2 13 Bảng chức năng chân của HC-SR04
Công nghệ Nhận dạng Tần số Radio (RFID) sử dụng sóng vô tuyến để truyền tải dữ liệu từ thẻ đến thiết bị đọc, giúp nhận diện và theo dõi đối tượng RFID hoạt động không cần tiếp xúc, cho phép truyền dữ liệu mà không cần đường nhìn trực tiếp giữa thẻ và đầu đọc.
Một hệ thống RFID cơ bản gồm ba thành phần chính:
Thẻ chủ động (Active Tag): Có nguồn điện riêng, thường là pin, và có phạm vi đọc xa hơn, nhưng kích thước lớn và chi phí cao hơn
Thẻ thụ động (Passive Tag) không có nguồn điện riêng và nhận năng lượng từ trường do đầu đọc cung cấp Chúng có phạm vi đọc ngắn hơn, kích thước nhỏ gọn và chi phí thấp, là lựa chọn lý tưởng cho nhiều ứng dụng.
Thẻ bán thụ động (Semi-Passive Tag): Có nguồn điện riêng nhưng chỉ sử dụng để cung cấp năng lượng cho vi mạch, không để phát sóng
* Đầu đọc RFID (RFID Reader):
Thiết bị này phát tín hiệu vô tuyến để kích hoạt thẻ và thu thập dữ liệu từ chúng Đầu đọc có thể là cố định hoặc di động, thường được kết nối với một vi điều khiển để xử lý dữ liệu hiệu quả.
Cả thẻ và đầu đọc đều có antenna để truyền và nhận tín hiệu vô tuyến Điện áp sử dụng 5V
Tương thích Thẻ RFID IC Card / Tag
Tần số giao tiếp 13.56MHz
Khoảng cách nhận thẻ 8-15cm
Nhiệt độ hoạt động -40°C - 80°C Độ ẩm hoạt động 5% - 95%
Bảng 2 14 Bảng thông số kỹ thuật của RFID
Chân Chức năng Mô tả
3.3V Power Supply Cấp nguồn cho module (3.3V)
RST Reset Chân reset để khởi động lại module
GND Ground Chân nối đất
IRQ Interrupt Request Chân ngắt (không sử dụng)
MISO/SCL Master In Slave
Chân dữ liệu đầu vào từ module (SPI) / Chân SCL (I2C)
Chân dữ liệu đầu ra từ module (SPI) / Chân SDA (I2C)
SCK Serial Clock Chân đồng hồ cho giao tiếp SPI
SS/SDA Slave Select Chân chọn slave trong giao tiếp SPI
Bảng 2 15 Bảng chức năng chân của RFID
ESP8266 là một module Wi-Fi SoC nhỏ gọn với kích thước 24 x 16 mm, tích hợp khả năng kết nối Wi-Fi và hiệu suất xử lý cao Sản phẩm này được sản xuất bởi một nhà sản xuất nổi tiếng trong lĩnh vực công nghệ.
Espressif Systems được ưa chuộng trong cộng đồng DIY và IoT nhờ vào chi phí hợp lý và tính năng mạnh mẽ, bao gồm vi xử lý tích hợp và nhiều chân I/O đa dạng, phù hợp cho các dự án kết nối mạng.
Vi xử lý Tensilica L106 32-bit RISC
Tốc độ xung nhịp 80 MHz
RAM 64 KB Instruction, 96 KB Data RAM
Wi-Fi 802.11 b/g/n, tích hợp TCP/IP stack
GPIO Lên đến 17 chân I/O Điện áp hoạt động 3.0V - 3.6V
Bảng 2 16 Bảng thông số kỹ thuật của ESP8266 [6]
GPIO14 Chân I/O đa dụng, thường dùng cho SPI_CLK
GPIO12 Chân I/O đa dụng, thường dùng cho SPI_MISO
GPIO13 Chân I/O đa dụng, thường dùng cho SPI_MOSI
EN (CH_PD) Chân kích hoạt, phải kéo lên mức cao
GPIO0, 15 Chân I/O đa dụng, chọn chế độ boot
GPIO3 Chân UART0_RXD, nhận dữ liệu UART
GPIO1 Chân UART0_TXD, truyền dữ liệu UART
ADC0 Chân đầu vào Analog to Digital Converter
SD2 GPIO9, thường dùng cho chức năng SDIO
SD3 GPIO10, thường dùng cho chức năng SDIO
Trong hệ thống SDIO, các chân GPIO đóng vai trò quan trọng trong việc truyền tải dữ liệu Cụ thể, GPIO11 được sử dụng cho chức năng SDIO CMD, trong khi GPIO6 đảm nhiệm vai trò SDIO CLK Các chân GPIO7, GPIO8, GPIO9 và GPIO10 lần lượt phục vụ cho các chức năng SDIO DATA 0, SDIO DATA 1, SDIO DATA 2 và SDIO DATA 3.
3 MTDO GPIO15, thường dùng cho JTAG
MTDI GPIO12, thường dùng cho JTAG
MTMS GPIO14, thường dùng cho JTAG
MTCK GPIO13, thường dùng cho JTAG
Bảng 2 17 Bảng chức năng chân của ESP8266
Hình 2 22 Module LCD 1602 tích hợp I2C
Màn hình LCD 1602 tích hợp I2C đi kèm với một module I2C gắn trên mặt sau, giúp chuyển đổi tín hiệu giao tiếp từ I2C sang tín hiệu mà màn hình LCD có thể hiểu Sự tích hợp này giảm số lượng chân kết nối, giảm độ phức tạp của mạch và tăng tính linh hoạt cho các dự án nhỏ gọn.
Kích thước 16 ký tự x 2 hàng
Giao tiếp I2C Điện áp hoạt động 5V
Số chân I2C 2 (SDA - Data, SCL - Clock)
Dòng tiêu thụ Khoảng 1mA khi hoạt động, 0.2mA khi không hiển thị Độ phân giải 5x8 điểm ảnh cho mỗi ký tự
Công nghệ hiển thị Màn hình LCD TN Đèn nền LED nền trắng hoặc màu xanh dương
Nhiệt độ hoạt động -20°C đến 70°C
Nhiệt độ bảo quản -30°C đến 80°C
Tuổi thọ đèn nền LED Khoảng 100.000 giờ
Bảng 2 18 Bảng thông số kỹ thuật của LCD 1602
Chân Chức năng GND Nối với nguồn đất của hệ thống
SDA Chân dữ liệu của giao tiếp I2C
SCL Chân clock của giao tiếp I2C
Bảng 2 19 Bảng chức năng chân của LCD 1602
Hình 2 23 Webcam chân cắm USB
Camera là thiết bị kết nối với máy tính hoặc các thiết bị điện tử khác, thường được sử dụng để quay video hoặc chụp ảnh.
Phạm vi sử dụng Cho PC hoặc laptop Độ phân giải 720p hoặc 1080p
Kết nối Chân cắm USB Ống kính Tiêu cự thay đổi: 9-22mm hoặc
5-50mm Bảng 2 20 Thông số kỹ thuật webcam
THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG
Giới thiệu chung về hệ thống
3.1.2 Yêu cầu của hệ thống
Hệ thống hoạt động với các tính năng như sau:
Phần mềm quản lý trên máy tính giúp điều khiển barrier cho xe ra vào bằng công nghệ camera và RFID Nó cho phép nhận diện biển số xe và theo dõi thông tin qua màn hình LCD, website hoặc ứng dụng di động Đồng thời, phần mềm cũng tính toán tổng thời gian gửi xe và số tiền phải trả.
- Hệ thống sẽ tự động mở/đóng barrier khi nhận diện mã thẻ RFID và đưa ra kết quả phân tích ký tự biển số xe
- Cho phép quản lý thẻ bằng cách thêm hoặc xóa thẻ sử dụng qua phẩn mềm
- Hệ thống sẽ sử dụng các module như: Arduino Uno R3, Arduino Mega
2560, RC522, Servo SG90, module HC-SR04, LCD tích hợp I2C, led đơn [12]
- Máy tính sẽ cung cấp nguồn cho toàn hệ thống
- Sử dụng ngôn ngữ lập trình C# để thiết kế giao diện quản lý bãi xe
Sử dụng SQL Server để quản lý thông tin thẻ, bao gồm giờ vào ra, thiết lập thông tin thẻ và tài khoản mật khẩu cho việc đăng nhập vào giao diện điều khiển.
- Sử dụng phần mềm Visual Studio Code cùng tiện ích mở rông FatformIO IDE để lập trình các chức năng cho phần cứng
3.1.3 Nguyên lý hoạt động hệ thống bãi gửi xe tự động
Hình 3 1 Nguyên lý hoạt động của bãi gữi xe [19]
Cách hoạt động của hệ thống:
Khi xe vào, nhân viên quẹt thẻ tag tại đầu vào, tín hiệu được đọc và gửi đến vi điều khiển Vi điều khiển chuyển mã thẻ đến máy tính, sau đó máy tính điều khiển camera chụp hình biển số xe Hệ thống phân tích hình ảnh để hiển thị biển số, mã thẻ và thời gian ra/vào trên giao diện quản lý, đồng thời mở barrier.
Khi xe ra khỏi bãi, thẻ tag sẽ được quét tại đầu ra, và tín hiệu sẽ được gửi đến vi điều khiển Sau khi quét thẻ, hệ thống sẽ chụp hình và phân tích biển số xe, sau đó đối chiếu với biển số đã lưu trong cơ sở dữ liệu Nếu biển số trùng khớp, hệ thống sẽ tự động mở barrie.
Sơ đồ khối và chức năng từng khối
Hệ thống được thiết kế bao gồm các khối và chức năng như sau:
Hình 3 2 Sơ đồ khối của hệ thống [13]
Khối xử lý trung tâm nhận tín hiệu từ cảm biến vật cản, từ đó điều khiển động cơ servo và hiển thị thông tin qua khối hiển thị.
- RFID: Đọc tín hiệu thẻ tag gửi về cho vi điều khiển để thực hiện các tác vụ
- Khối động cơ Servo: Điều khiển Servo mở và đóng barrier
- Khối cảm biến vật cản: Có chức năng kiểm tra xem vị trí đó có xe đậu hay không
- Khối hiển thị: Xuất thông tin số lượng chỗ trống, vị trí nào trống của bãi xe
- Khối nguồn: Cung cấp nguồn cho hệ thống
Máy tính tích hợp camera và đầu đọc RFID nhằm quản lý hệ thống hiệu quả, đồng thời phối hợp với khối xử lý trung tâm để điều khiển các tác vụ trong toàn bộ hệ thống.
- Khối truyền dữ liệu: Nhận dữ liệu từ khối trung tâm đưa lên cơ sở dữ liệu, trao đổi thông tin qua lại liên tục.
Thiết kế phần cứng
3.3.1 Sơ đồ nguyên lý toàn hệ thống
Hình 3 3 Sơ đồ khối nguyên lý toàn hệ thống
Module RFID-MFRC522 có chức năng đọc mã UID từ thẻ tag, mã này sẽ được chuyển đổi thành chuỗi số Hex và gửi đến Arduino để xử lý và điều khiển.
Khi chọn phần cứng cho công nghệ này, người dùng nên xem xét các module với tần số như 125KHz hoặc 13.56MHz, tùy thuộc vào khoảng cách sử dụng.
Module RFID-MFRC522, sử dụng IC MFRC522 của Philips, được thiết kế để đọc và ghi dữ liệu ở tần số 13.56MHz Với khoảng cách hoạt động không quá xa, thiết kế nhỏ gọn và giá thành hợp lý, module này là sự lựa chọn phổ biến trong nhiều ứng dụng RFID.
* Chân kết nối Arduino Uno R3:
Bảng 3 1 Sơ đồ kết nối RC522 với Arduino
3.3.3 Khối xử lý trung tâm
- Giao tiếp với module MFRC522 để nhận tín hiệu điều khiển chụp hình
- Giao tiếp với máy tính để gửi dữ liệu thẻ, lưu trữ mã thẻ và hình ảnh biển số xe
- Giao tiếp với Servo để điều khiển đóng/mở servo khi có thẻ quét
- Nhận dữ liệu từ cảm biến siêu âm HC-SR04 để biết số lượng xe ở bãi
- Đưa thông tin về số lượng chỗ trống lên LCD
Khi chọn phần cứng cho mô hình nhỏ, nhóm thực hiện đã lựa chọn các board phổ biến và giá thành rẻ như Arduino Uno R3 và Arduino Mega 2560, thay vì các vi điều khiển như PIC hay PLC.
Lựa chọn này mang lại nhiều lợi ích về lập trình và tiết kiệm thời gian vì các lý do sau:
- Arduino hiện là vi điều khiển được phát triển rộng rãi và sử dụng phổ biến
- Arduino được lập trình dựa trên ngôn ngữ C++, mang lại khả năng xử lý chuỗi mạnh mẽ
- Giá thành của Arduino khá rẻ, phù hợp với sinh viên và các dự án nghiên cứu nhỏ
- Có nhiều module và shield dễ dàng tích hợp và mở rộng, giúp nhanh chóng triển khai và thử nghiệm các ý tưởng mới
- Có rất nhiều tài nguyên, thư viện và diễn đàn hỗ trợ, giúp tiết kiệm thời gian trong quá trình phát triển và khắc phục sự cố
- Arduino có các chân I/O đa dạng, dễ dàng kết nối với nhiều loại cảm biến và thiết bị ngoại vi, đáp ứng yêu cầu phức tạp của hệ thống
* Chức năng: Cấp điện cho toàn hệ thống
Thiết bị Số lượng Điện áp Dòng điện Tổng dòng
Để Arduino hoạt động và điều khiển qua giao diện C#, nó cần được kết nối trực tiếp với máy tính qua cổng USB, nhằm nhận nguồn điện từ máy tính.
Và để các phần cứng khác hoạt động từ các chân digital thì nguồn điều khiển phải là nguồn lấy trực tiếp từ Arduino
* Chức năng: Điều khiển servo để mở/đóng barrie, cho phép xe ra vào bãi gửi xe
* Tiêu chí chọn phần cứng:
Khi nhắc đến rào barrie trong các dự án quy mô nhỏ, Servo SG90 là lựa chọn hàng đầu nhờ vào khả năng điều chỉnh chính xác góc quay, kích thước nhỏ gọn lý tưởng cho mô hình, và mức tiêu thụ điện năng thấp.
* Chân kết nối Arduino Uno R3:
Bảng 3 3 Sơ đồ kết nối chân Servo SG90 với Arduino Uno R3
Hình 3 5 Sơ đồ kết nối RFID
3.3.6 Khối cảm biến vật cản
Xác định khoảng cách giữa cảm biến và xe là cần thiết để phát hiện xem có xe trong chỗ trống hay không Điều này cũng giúp cung cấp thông tin về số lượng xe hiện có trong bãi đỗ cho khối xử lý trung tâm và hiển thị kết quả trên màn hình LCD.
Để xác định xem có xe đậu hay không, cần sử dụng một module phát hiện vật thể, thường là cảm biến hồng ngoại hoặc cảm biến siêu âm.
STT Servo SG90 Arduino Uno R3
Nhóm thực hiện đã lựa chọn dùng cảm biến siêu âm HC-SR04 vì cảm biến siêu âm có những điểm trội hơn như:
- Đo được khoảng cách xa hơn
- Khả năng làm việc trong môi trường ánh sáng mặt trời trong khi đối với cảm biến hồng ngoại điều này bị ảnh hưởng rất nhiều
Cảm biến siêu âm là công nghệ lý tưởng trong ứng dụng bãi gửi xe, giúp phát hiện khoảng cách chính xác đến xe và xác định vị trí đỗ xe hiệu quả Mặc dù cảm biến siêu âm thường được sử dụng để phát hiện chuyển động hoặc sự hiện diện, nhưng khả năng đo khoảng cách chính xác của chúng mang lại lợi ích lớn trong việc tối ưu hóa không gian đỗ xe.
Hình 3 6 Sơ đồ kết nối HC-SR04 với Arduino Mega 2560
Thông tin bãi gửi xe được hiển thị rõ ràng giúp người dùng dễ dàng quan sát Khối hiển thị bao gồm cả Led và LCD, cung cấp cho người gửi xe thông tin về tình trạng chỗ trống và vị trí cụ thể của các chỗ trống trong bãi.
* Tiêu chí chọn phần cứng
Để hiển thị số lượng chỗ trống và vị trí trống, có thể sử dụng nhiều loại khối hiển thị như LED 7 đoạn, LED ma trận hay LCD Trong bài viết này, nhóm thực hiện đã chọn LCD 16x2 tích hợp I2C do số lượng thông tin cần hiển thị ít và sở hữu nhiều ưu điểm vượt trội.
- Hiển thị ký tự đa dạng
- Kết nôi đơn giản với 4 chân bằng phương thức I2C
- Giá thành rẻ và dòng điện tiêu thụ thấp
Ngoài ra nhóm còn sử dụng Led đơn để hiển thị xem vị trí đó của bãi còn trống hay đã có xe
* Chân kết nối LCD với Arduino Mega 2560:
Bảng 3 4 Sơ đồ kết nối LCD với Arduino Mega 2560
* Chân kết nối Led với Arduino Mega 2560
Bảng 3 5 Sơ đồ kết nối LED với Arduino Mega 2560
Hình 3 7 Sơ đồ kết nối led và LCD 16x2 với Arduino Mega 2560
Chức năng của hệ thống là đẩy dữ liệu bãi gửi xe lên cơ sở dữ liệu Firebase, giúp kết nối với các ứng dụng khác như website hoặc ứng dụng di động Điều này cho phép người dùng theo dõi trạng thái chỗ trống của bãi xe từ xa mà không cần phải đến trực tiếp.
* Tiêu chí chọn phần cứng: Hiện nay có rất nhiều module có thể đáp ứng yêu cầu truyền dữ liệu của đề tài ví dụ như:
- Module Wifi (ESP32, ESP8266) phù hợp cho các kiểu truyền dữ liệu không dây
- Module LoRa dành cho các ứng dụng cần truyền dữ liệu ở khoảng cách xa với tiêu thụ năng lượng thấp
Module Bluetooth như HC-05 và HM-10 rất phù hợp cho việc truyền dữ liệu ngắn hạn với mức tiêu thụ năng lượng thấp Nhóm thực hiện đã chọn sử dụng ESP8266 để đáp ứng yêu cầu của đề tài vì tính dễ sử dụng và sự phổ biến trên thị trường với giá cả hợp lý.
* Chân kết nối Arduino Mega 2560:
Bảng 3 6 Sơ đồ kết nối ESP8266 với Arduino Mega 2560
Hình 3 8 Sơ đồ kết nối ESP8266 với Arduino Mega 2560
Chụp lại hình ảnh xe và biển số xe để hệ thống dựa vào hình ảnh đó phân tích ra kết quả biển số xe
Hình chụp sẽ được lưu trữ để quản lý và kiểm tra nếu có lỗi
Tiêu chí chọn phần cứng:
Để phân tích ảnh một cách chính xác, hình ảnh cần phải sắc nét và không bị mờ, do đó nên chọn camera có độ phân giải từ 2MP (1080p) trở lên và khả năng chống chịu thời tiết Tuy nhiên, trong quá trình thực hiện mô hình thực nghiệm, nhóm sinh viên đã sử dụng Webcam máy tính thông thường.
- Camera lắp đặt không vướng vào tầm di chuyển của khách hàng và phương tiện và lắp đặt phải thật chắc chắn, không bị xê dịch vị trí
Khoảng cách và chiều cao lắp đặt camera so với xe là yếu tố quan trọng Nếu camera được lắp quá cao hoặc quá gần đầu xe, phần mềm có thể không nhận diện được biển số hoặc nhận diện không chính xác.
- Camera phải được lắp đặt ở vị trí phù hợp, tránh tình trạng bị ngược sáng, lóe sáng dẫn đến thu được hình ảnh kém chất lượng.
KẾT QUẢ THỰC HIỆN
Phần cứng
4.1.1 Các công cụ sử dụng Đồng hồ VOM
Chuẩn bị các module có sẵn theo thiết kế
Chuẩn bị các phần mềm sử dụng
Nhóm thực hiện đã sử dụng phần mềm Proteus để thiết kế mạch in cho các linh kiện kết nối với vi điều khiển, nhằm đảm bảo tính vững chắc và gọn gàng cho sản phẩm.
Hình 4 1 Mạch in của các linh kiện kết nối với vi điều khiển
Hình 4 2 Mạch in sau khi hoàn thành
4.1.3 Thi công mô hình bãi xe Để minh họa tính ứng dụng của hệ thống trong môi trường thực tế, nhóm đã thiết kế và triển khai một mô hình bãi giữ xe quy mô nhỏ
Mô hình này bao gồm các barrier tự động mở và đóng khi có xe ra vào, cùng với màn hình LCD và LED hiển thị số lượng chỗ trống và vị trí xe trong bãi Hệ thống cảm biến siêu âm được sử dụng để xác định xem vị trí đã có xe đậu hay chưa Nhóm thực hiện đã sắp xếp, bố trí và trang trí các phần cứng của mô hình một cách hợp lý.
Nhóm đã thiết kế và xây dựng một mô hình bãi giữ xe thực tế, nhằm minh họa tính ứng dụng của hệ thống Mô hình này được trang bị các barrier tự động có chức năng đóng mở, giúp mô phỏng quá trình kiểm soát ra vào của các phương tiện.
- Hai khu vực quét thẻ ở cửa ra và vào
- Một màn hình LCD thông báo số chỗ trống trong bãi
- Hai hàng led xanh và hai hàng led đỏ nhằm thông báo tình trạng các chỗ trong bãi gửi xe
- Khu vực để xe chia ra làm 2 dãy A và B, mỗi dãy trong mô hình được làm 5 chỗ
Hình 4 4 Mô hình khi hoạt động
Sau khi được cấp nguồn, mô hình hoạt động như hình 4.2, với khu vực ra vào của bãi gửi xe được trang bị RFID và Servo ở mỗi bên RFID có chức năng truyền thông tin thẻ đến máy tính xử lý, trong khi Servo đảm nhiệm việc mở barrier để xe có thể vào bãi.
Hình 4 5 LCD hiển thị số chỗ trống trong bãi
Màn hình LCD hiển thị số chỗ trống trong bãi đỗ xe, hiện tại còn 7 chỗ trống Nhóm thực hiện đã đặt 3 vật tượng trưng cho 3 xe đã đỗ, bao gồm các chỗ A4, A5 và B1, được báo hiệu bằng đèn LED đỏ Hai dãy LED xanh đỏ đầu tiên thông báo tình trạng các chỗ của dãy A và B, với đèn xanh chỉ ra chỗ còn trống Khu vực đỗ xe có 2 dãy A và B, mỗi dãy có 5 vị trí, và các vị trí này được cảm biến siêu âm ghi nhận liên tục Cảm biến sẽ thông báo có xe nếu khoảng cách dưới 10cm, phù hợp với kích thước mô hình hiện tại; trong thực tế, khoảng cách này sẽ lớn hơn để phù hợp với hệ thống thực tế.
Như vậy mô hình đã hoạt động đúng theo yêu cầu đặt ra.
Phần mềm
4.2.1 Phần mềm quản lý bãi giữ xe trên PC
Theo kế hoạch thiết kế, nhóm chúng tôi đã bắt đầu phát triển phần mềm quản lý bãi xe trên máy tính bằng ngôn ngữ lập trình C# Ứng dụng này sẽ tích hợp nhiều chức năng quan trọng để tối ưu hóa quy trình quản lý bãi xe.
- Liên kết và điều khiển camera ở cổng ngõ vào và ra của bãi xe
- Tín hiệu được nhận từ 2 đầu đọc thẻ sẽ điều khiển camera chụp lại hình ảnh của xe ở cổng vào hoặc cổng ra
Lưu hình ảnh vào máy tính và ghi dữ liệu xe vào thẻ RFID, đồng thời lưu thông tin thời gian vào, ra trên cơ sở dữ liệu SQL Server Khi xe rời bãi, hệ thống sẽ chụp lại ảnh biển số để đối chiếu với hình ảnh trong cơ sở dữ liệu, tính toán số giờ xe ra và tự động tính tiền giữ xe.
Chức năng "Quản lý thẻ" cho phép người dùng thêm mới các thẻ RFID vào cơ sở dữ liệu, đảm bảo rằng chỉ những mã thẻ đã được lưu trữ mới có thể hoạt động trên hệ thống.
Để thuận lợi cho việc phát triển dự án, nhóm đã sử dụng các thư viện hỗ trợ để truy xuất dữ liệu đặt chỗ từ cơ sở dữ liệu MySql.
- Thư viện hỗ trợ hình ảnh AForge.NET
- Thư viện giao tiếp cơ sở dự liệu SQL-Helper
- Thư viện EmguCV và OpenCV
Hình 4 6 Giao diện chính phần mềm quản lý bãi xe
Về giao diện chính nhóm đã thiết kế ra các khung để chứa ảnh chụp từ camera
Sau khi phân tích và xử lý ảnh, khung kết quả biển số sẽ được trả về dưới dạng vùng cắt xén của biển số từ ảnh gốc, cùng với vùng cắt xén biển số đã được làm mờ và kết quả chuyển đổi.
Khung thời gian cho biết thời gian thực và tính toán tổng gian gửi xe và kết luận số tiền cần phải trả sau khi sử dụng dịch vụ
Khung dữ liệu cho phép hiển thị các thông tin cần thiết như biển số xe, mã thẻ, ngày giờ vào ra của xe hệ thống
Thanh menu cho phép truy cập vào giao diện Setting để có thể quản lý thẻ
Giao diện đăng nhập phần mềm quản lý bãi xe đã được nhóm chúng em thiết kế, cho phép người dùng với tài khoản đã có trên SQL Server dễ dàng truy cập vào phần quản lý thẻ.
Nếu bạn nhập sai tài khoản hoặc mật khẩu, hệ thống sẽ hiển thị thông báo “Tài khoản hoặc mật khẩu không chính xác” trên giao diện đăng nhập.
Hình 4 8 Giao diện đăng nhập nếu đăng nhập lỗi
Nếu đăng nhập đúng tài khoản với mật khẩu thì sẽ chuyển qua giao diện setup camera và giao diện quản lý thẻ
Giao diện kết nối thiết bị hiển thị sau khi đăng nhập thành công, yêu cầu người dùng chọn camera và xác định cổng COM cho kết nối RFID.
Giao diện quản lý thẻ trên phần mềm quản lý bãi xe được thiết kế với một textbox để nhập mã thẻ qua RFID Nếu thẻ chưa được cài đặt trong hệ thống, người dùng sẽ nhận được thông báo “Thẻ không có trong hệ thống”.
Hình 4 11 Giao diện quản lý thẻ khi quét thẻ không có trong hệ thống
Khi thêm thẻ, thông tin sẽ được cập nhật vào bảng bao gồm số thứ tự, mã thẻ và ngày nhập thẻ Tất cả dữ liệu này sẽ được lưu trữ trên cơ sở dữ liệu SQL Server.
Còn nếu chọn 1 thẻ trong hệ thống và nhất nút xóa thì thẻ đó sẽ mất dữ liệu trong hệ thống và SQL Server
Hình 4 12 Giao diện chính phần mềm khi có xe vào bãi
Khi xe vào bãi, hệ thống tự động cập nhật mã thẻ, thời gian vào và phân tích biển số để xác định biển số xe Tất cả thông tin này sẽ được lưu trữ trong bảng xe vào bãi.
Hình 4 13 Giao diện chính phần mềm khi có xe ra bãi với thẻ không có trong hệ thống
Nếu thẻ chưa được thêm vào hệ thống trong quá trình thiết lập và quét tại ngõ ra, hệ thống sẽ hiển thị thông báo "Thẻ không có trong hệ thống".
Khi hệ thống hoạt động đúng, nếu thẻ được quét chính xác và dữ liệu biển số xe trùng khớp với thông tin trên SQL Server tại cổng ra, phần mềm sẽ hiển thị hình ảnh biển số xe và chuỗi ký tự biển số Đồng thời, kết quả sẽ thông báo “Trùng biển số” và in ra tổng thời gian sử dụng bãi cùng với số tiền cần thanh toán, đồng thời cập nhật mã thẻ, biển số và thời gian ra vào vào bảng “Xe bãi ra”.
Hình 4 15 Giao diện phần mềm khi biển số xe bãi ra sai
Khi hệ thống hoạt động, nếu thẻ được quét đúng nhưng dữ liệu biển số xe không khớp với thông tin trên SQL Server, hệ thống sẽ trả về hình ảnh biển số xe được chụp lúc ra vào cùng với chuỗi ký tự biển số từ hình ảnh Kết quả sẽ hiển thị thông báo “Sai biển số”.
Hình ảnh biển số xe và ảnh chụp khi xe vào bãi sẽ được lưu trữ trong hai thư mục riêng biệt Tên file sẽ bao gồm mã thẻ cùng với ngày và giờ ra vào bãi, giúp thuận tiện cho việc kiểm tra và truy xuất thông tin.
Hình 4 16 Folder lưu hình ảnh cắt xén biển số xe
Hình 4 17 Folder lưu hình khi xe vào
4.2.2 Phần mềm cơ sở dữ liệu SQL Server