Cuối cùng kết quả đạt được là một mô hình bãi xe hoạt động với phần mềm quản lí dữ liệu trên PC, ứng dụng công nghệ RFID đọc mã thẻ, sử dụng các thuật toán để xử lí ảnh nhận diện biển số
TỔNG QUAN
ĐẶT VẤN ĐỀ
Ngày nay, sự phát triển mạnh mẻ của công nghệ 4.0 với sự tăng trưởng kinh tế và đô thị hóa nhanh chóng Điển hình là ngành công nghiệp điện tử đã được vận dụng rất nhiều trong cuộc sống… Do đó nhu cầu của con người ngày càng tăng về sự tiện lợi cũng như hiện đại
Trong khi ngành công nghiệp điện tử đang phát triển mạnh mẽ, đáp ứng nhiều từ các lĩnh vực công nghiệp, nông nghiệp, lâm nghiệp, ngư nghiệp cho đến các nhu cầu hàng ngày Sự gia tăng về mật độ dân số cùng với nhu cầu di chuyển của cư dân ngày càng cao dẫn đến sự gia tăng về phương tiện xe cộ cũng đã phản ánh được rõ điều đó, các bãi giữ xe truyền thống không còn phù hợp với các trung tâm thương mại, hội nghị, chung cư, và các bệnh viện lớn [1] Việc sử dụng bãi giữ xe truyền thống gặp phải những vấn đề như mất xe, mất vé gửi xe, hỏng vé giữ xe, gây rắc rối và phiền toái [2] Vì vậy, để đảm bảo dịch vụ giữ xe chất lượng và phục vụ tốt cho con người trong cuộc sống, cần xây dựng bãi giữ xe áp dụng kỹ thuật
Trong bối cảnh trình độ khoa học kỹ thuật ngày càng phát triển, các vấn đề này có thể được giải quyết nhanh chóng và hiệu quả với sự hỗ trợ của công nghệ điện tử và tự động hóa Hệ thống giữ xe bằng thẻ từ kết hợp camera đã được sử dụng để giải quyết gần như toàn bộ các vấn đề liên quan Với sự tiến bộ này, đã tạo ra nhu cầu nghiên cứu và ứng dụng công nghệ RFID và xử lý ảnh trong hệ thống giữ xe Sử dụng công nghệ RFID giúp đảm bảo tính an toàn và bảo mật trong việc quản lý bãi giữ xe Thông tin về xe được mã hóa và lưu trữ trong tag RFID, giúp hạn chế rủi ro mất mát thông tin và truy cập trái phép vào thông tin của xe Thêm vào đó, xử lý ảnh để nhận diện biển số xe giúp tăng cường an ninh bãi giữ xe Kiểm soát chặt chẽ thông qua việc xác định và lưu trữ thông tin về các phương tiện, giúp tối ưu hóa quá trình gửi xe và trả xe [4]
Dựa trên những thực tế đã được đề cập trên và kiến thức, nhận thức có được qua quá trình học tập trên ghế nhà trường, em đã quyết định chọn đề tài: “Thiết kế, thi công mô hình bãi giữ xe thông minh”.
MỤC TIÊU
Thiết kế, thi công mô hình bãi giữ xe thông minh gồm phần mềm quản lý dữ liệu người gửi xe ứng dụng công nghệ RFID đọc mã thẻ từ và kết hợp các thuật toán xử lý ảnh để nhận diện biển số xe từ ảnh chụp qua camera Hình ảnh biển số xe sẽ được lưu lại vào một thư mục, sau đó sẽ được truy xuất và so sánh với biển số xe ra trong cùng một mã thẻ Dữ liệu mã thẻ thu thập được từ xe gửi được lưu trữ trong cơ sở dữ liệu SQL, khi xe ra thì mã thẻ sẽ được xóa khỏi SQL Ngoài ra, khi trời tối thì mô hình phải tự động bật đèn để cung cấp ánh sáng và hệ thống cảnh báo cháy khi có sự cố.
NỘI DUNG NGHIÊN CỨU
Trong thời gian thực hiện đề tài: “Thiết kế, thi công mô hình bãi giữ xe thông minh”, em đã thực hiện những nội dung sau:
• NỘI DUNG 1: Tìm hiểu về tình trạng thực tế các bãi xe trên thị trường
• NỘI DUNG 2: Tìm hiểu về Arduino UNO R3, công nghệ RFID, module RC522, module I2C LCD, cảm biến vật cản E18-D80NK, cảm biến lửa, cảm biến ánh sáng dùng quang trở, ngôn ngữ lập trình C#, xử lí ảnh, cơ sở dữ liệu SQL
• NỘI DUNG 3: Kết nối, nghiên cứu lập trình Arduino với các module và các thiết bị ngoại vi khác
• NỘI DUNG 4: Nghiên cứu lập trình xây dựng giao diện quản lý xe bằng ngôn ngữ C#
• NỘI DUNG 5: Nghiên cứu và tạo cơ sở dữ liệu SQL để lưu trữ thông tin hệ thống
• NỘI DUNG 6: Thiết kế thi công mô hình bãi xe và mạch điều khiển
• NỘI DUNG 7: Chạy thử nghiệm mô hình và hiệu chỉnh
• NỘI DUNG 8: Viết báo cáo khóa luận
• NỘI DUNG 9: Bảo vệ khóa luận.
GIỚI HẠN
Phạm vi giới hạn của đề tài:
• Chỉ sử dụng 2 camera để nhận diện biển số xe ngõ vào và ngõ ra, nên chưa thể xác định vị trí của xe khi ở trong bãi
• Đề tài chỉ là mô hình nhỏ mô phỏng
• Hệ thống chỉ nhận dạng được biển số rõ, không nghiêng và ánh sáng đủ Những trường hợp khác sẽ ảnh hưởng đến độ chính xác của hệ thống
BỐ CỤC
Giới thiệu sơ lược vấn đề, các lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn của đề tài và bố cục của đồ án
• Chương 2: Cơ Sở Lý Thuyết
Giới thiệu về các các linh kiện chính, chuẩn giao tiếp truyền/nhận dữ liệu, tổng quan công nghệ RFID, tổng quan về xử lý ảnh dùng C# và các thuật toán nhận diện biển số xe, tổng quan về cơ sở dữ liệu SQL
• Chương 3: Thiết Kế và xây dựng mô hình
Vẽ sơ đồ khối và chức năng của từng khối và toàn mạch Giải thích nguyên lý hoạt động Tính toán các linh kiện sử dụng cho đề tài
Chương 4: Thi Công Hệ Thống
Vẽ mạch PCB Thi công mạch in Xây dựng mô hình cho hệ thống Vẽ lưu đồ giải thuật và giải thích lưu đồ
• Chương 5: Kết Quả, Nhận Xét và Đánh Giá Đưa ra kết quả thực nghiệm Nhận xét và đánh giá chung cho để tài về và tìm hướng khắc phục các lỗi còn mắc phải
• Chương 6: Kết Luận và Hướng Phát Triển
Kết luận về những thành quả thực hiện được, đưa ra hướng phát triển đề tài để áp dụng vào thực tế trong tương lai.
CƠ SỞ LÝ THUYẾT
ĐẶC ĐIỂM HỆ THỐNG BÃI GIỮ XE
Ở hai đề tài “Vũ Tiến Trình, Lê Vũ Khanh, 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ố, Đồ án tốt nghiệp, trường ĐHSPKT, Tp.HCM, 2018” và đề tài “Nguyễn Đăng Việt, Trần Trí Đạt, Thiết kế và thi công bãi giữ xe ứng dụng công nghệ RFID và xử lý ảnh, Đồ án tốt nghiệp, trường ĐHSPKT, Tp.HCM, 2019.” đã sử dụng công nghệ như xử lí ảnh, nhận diện biển số xe và công nghệ RFID để tối ưu được quá trình gửi và lấy xe, gia tăng an ninh trong việc quản lí bãi xe Thẻ RFID rất bền hoạt động tốt trong điều kiện môi trường không thuận lợi như trời mưa, bụi bẩn, hay có sự va chạm… Khả năng đọc và ghi lại dữ liệu được nhiều lần của hệ thống Ngoài ra, giải quyết được vấn đề đánh tráo thẻ xe trong bãi xe truyền thống trước đó Tuy nhiên, cũng còn nhiều hạn chế của hai đề tài trên ở mô hình bãi xe như: hệ thống vận hành chưa ổn định, nhận diện biển số còn khá nhiều lỗi cũng như hệ thống RFID có thời gian trễ cao, chưa áp dụng được các hệ thông IOT trong hệ thống, chưa có hệ thống cảnh báo khi có sự cố cháy nổ cũng như các sự cố khác
Từ những ưu nhược điểm đó thì em đã tối ưu hệ thống và phát triển hệ thống báo cháy đi cùng với cũng như hệ thống đèn tự động giúp mô hình hoàn thiện thêm Để tiến hành thực hiện phần cứng cũng như phần mềm của đề tài thì em đã nghiên cứu một số kiến thức sau:
GIỚI THIỆU LINH KIỆN
Arduino Uno R3 là một bo mạch vi điều khiển được phát triển dựa trên vi điều khiển ATmega328P Arduino là bộ não cho nhiều dự án điện tử lớn và nhỏ, được sử dụng nhiều trong các đề tài khoa học từ dễ cho đến phức tạp
Arduino UNO được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với điện áp là 7-12V DC và giới hạn là 6-20V Sử dụng nguồn bằng pin 9V là thích hợp nhất Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, sẽ làm hỏng Arduino UNO
Hình 2 2: Sơ đồ chân Arduino R3
Arduino Uno R3 có 14 chân dùng để ghi hoặc xuất tín hiệu Nó chỉ có 2 mức điện áp là 5V và 0V với dòng vào/ra tối đa trên mỗi chân là 40mA Mỗi chân đều có các điện trở pull-up được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở không được kết nối) Arduino Uno có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác
Bảng 2 1 Thông số kỹ thuật Arduino Uno R3
Vi điều khiển ATmega328 họ 8bit Điện áp hoạt động 5V DC (cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng 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.5KB dùng bởi bootloader
Là mạch dùng IC MFRC522 để đọc các loại thẻ không dây như NFC, thẻ từ (loại thẻ như thẻ thành viên, thẻ thư viện…) Hoạt động ở dải tần 13.56 MHz dựa trên bộ điều khiển MFRC522 từ chất bán dẫn NXP bao gồm một đầu đọc RFID và thẻ RFID
Hình 2 3: Module RFID- RC522 Dùng giao tiếp SPI kết nối với ARDUINO, kết nối qua 4 chân: SCK, MISO, MOSI, SS
Bảng 2 2 Thông số kỹ thuật của module RFID-RC522 Điện áp hoạt động 3.3 VDC
Tần số hoạt động 13.56 MHz
Khoảng cách hoạt động 0~6 mm
Tốc độ tối đa 10 Mbps
Thẻ RFID có kích thước 85.5 x 54 x 0.87 mm (dài x rộng x dày), tương thích với module RFID RC522, có bộ nhớ 8 Kbits và được phân ra 16 vùng hoạt động với tần số 13.56 MHz
Hiện nay, trong các bãi giữ xe thông minh, camera đóng vai trò quan trọng và không thể thiếu trong quá trình hoạt động Hệ thống camera giám sát bãi giữ xe, hình ảnh xe vào và ra, giúp người gửi xe yên tâm hơn về vấn đề an toàn xe
Bảng 2 3 Thông số kỹ thuật Webcam USB 2.0 Độ phân giải tối đa 1280x720
Tốc độ khung hình 30 fps
• Kích thước: 23mmX12.5mmX29.5mm
• Tốc độ không tải: 0,12 giây / 60 độ (4,8V)
• Mô-men xoắn chặn: 1,2-1,4 kg / cm (4,8V)
• Nhiệt độ hoạt động: -30 độ C ~ + 60 độ C
Màn hình LCD1602 xanh lá sử dụng driver HD44780, có khả năng hiển thị 2 dòng với mỗi dòng 16 ký tự, nó có độ bền cao, được sử dụng nhiều
Hình 2 6: Động cơ Servo SG90
• Chữ đen, nền xanh lá
• Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với board
• Có tên chân được ghi ở LCD hổ trợ việc đi dây và kết nối
• Có đèn led nền, dùng biến trở hoặc PWM có thể điều chình độ sáng thích hợp
• Có thể được điều khiển với 6 dây tín hiệu
2.2.6 Cảm biến vật cản hồng ngoại E18-D80NK Đây là cảm biến dùng ánh sáng hồng ngoại để xác định vật cản với thời gian xử lý nhanh và độ nhiễu rất ít do dùng tần số riêng biệt để phát và nhận tia hồng ngoại
Có thể điều chỉnh phạm vi phát hiện vật thông qua biến trở
Cấu tạo bên trong của cảm biến này là một công tắc đóng hoặc mở phụ thuộc vào tín hiệu phát hiện vật cản
Hình 2 9: Sơ đồ cấu tạo cảm biến
Khi vật cản nằm trong khoảng cách phát hiện thì đèn LED của cảm biến sẽ sáng, tín hiệu ngõ ra bằng 0
Khi vật cản nằm ngoài khoảng cách phát hiện thì đèn LED của cảm biến sẽ tắt, tín hiệu ngõ ra bằng 1
Bảng 2 4 Thông số kỹ thuật của cảm biến E18-D80NK Điện áp hoạt động 5 VDC
Khoảng cách phát hiện 3 ~ 80 cm
Thời gian đáp ứng Gần 2 ms
TỔNG QUAN CÁC CHUẨN TRUYỀN
2.3.1 Tổng quan về chuẩn UART
UART (Universal Asynchronous Receiver-Transmitter) là một bộ truyền/nhận dữ liệu nối tiếp bất đồng bộ được sử dụng trong nhiều thiết bị giao tiếp như Wifi, Bluetooth, RFID Reader Trong chuẩn UART, các cổng UART được kết nối trực tiếp với nhau Cổng UART truyền chuyển đổi dữ liệu từ dạng song song thành dạng nối tiếp để truyền đến cổng UART nhận Cuối cùng, cổng UART nhận sẽ chuyển đổi dữ liệu từ dạng nối tiếp thành dạng song song để thiết bị nhận có thể xử lý UART là một trong những chuẩn giao tiếp thông dụng trong vi điều khiển vì tính tiện lợi và hiệu quả của nó
Hình 2 10: Giao tiếp giữa các UART
Chuẩn UART dùng 2 chân để truyền và nhận dữ liệu:
• TX – Chân truyền dữ liệu
• RX – Chân nhận dữ liệu
Phương thức hoạt động của chuẩn UART:
UART truyền nhận dữ liệu thông qua một data bus CPU, vi điều khiển sử dụng data bus để gửi dữ liệu tới UART Dữ liệu được truyền từ data bus đến UART dưới dạng song song Khi UART truyền dữ liệu, nó sẽ thêm một bit bắt đầu, một bit chẵn lẻ và một bit kết thúc vào dữ liệu để tạo thành một gói dữ liệu Gói dữ liệu sau đó được xuất qua chân TX dưới dạng nối tiếp Khi UART nhận dữ liệu, nó sẽ nhận từng bit của gói dữ liệu qua chân RX, sau đó chuyển đổi dữ liệu từ dạng nối tiếp thành dạng song song và bỏ đi bit bắt đầu, bit chẵn lẻ và bit kết thúc Cuối cùng, UART nhận sẽ truyền dữ liệu dạng song song đến data bus để hướng tới chân nhận
Hình 2 11: Giao tiếp giữa các UART
Trong UART, dữ liệu truyền sắp xếp tạo thành các gói dữ liệu Mỗi gói sẽ có chứa một bit bắt đầu, 5 - 9 bit dữ liệu, một bit chẵn lẻ và 1 - 2 bit kết thúc
Hình 2 12: Gói dữ liệu của UART
Start bit (bit bắt đầu):
Hình 2 13: Bit bắt đầu Đường giao tiếp UART, khi không làm việc thì dữ liệu thường ở mức điện áp cao Khi bắt đầu làm việc, trong một chu kì xung clock thì UART truyền kéo điện áp từ mức cao xuống mức thấp
Khi UART nhận nhận thấy có sự thay đổi điện áp, nó sẽ đọc các bit ở trong data frame với tần số của baud rate (tốc độ truyền)
Data Frame (khung dữ liệu):
Data Frame chứa dữ liệu đang được truyền, có thể chứa từ 5 - 8 bit khi dùng bit chẵn lẻ Khi không dùng loại bit này, data frame có thể chứa lên đến 9 bit Dữ liệu thường gửi đi với bit đầu tiên là bit LSB (bit trọng số thấp nhất)
Parity bit (bit chẵn lẻ):
Bit chẵn lẻ diễn tả tính chất chẵn lẻ của một số, đây chính là đặc điểm mà UART cho thấy có hoặc không sự thay đổi của dữ liệu nào đó bất kì Loại bit này có thể bị thay đổi do tốc độ truyền chưa được tốt hoặc truyền ở phạm vi xa… Khi mà UART nhận đọc data frame, nó sẽ đếm tổng số bit 1 và xét tính chẵn lẻ của kết quả đếm được
Stop bit (bit kết thúc):
Hình 2 14: Bit kết thúc Để gói dữ liệu báo sự kết thúc, trong khoảng thời gian hai bit thì UART truyền sẽ điều khiển đường truyền dữ liệu từ mức điện áp thấp lên mức điện áp cao
Quy trình truyền dữ liệu của UART:
• UART truyền nhận từ data bus dữ liệu dưới dạng song song: ở đầu vào là dữ liệu dưới dạng song song và chuyển đổi thành dạng nối tiếp để truyền ở dây TX
Hình 2 15: UART truyền song song tại đầu vào
UART truyền sẽ truyền thêm các bit bắt đầu, chẵn lẻ và kết thúc vào data frame
Hình 2 16: Truyền thêm các bit điều khiện vào khung truyền
• UART truyền gửi tất cả các gói dữ liệu nối tiếp đến UART nhận, sau đó UART nhận thực hiện quá trình lấy mẫu với tốc độ truyền đã thiết lập trước đó:
Hình 2 17: Truyền dữ liệu giữa hai UART
Lúc này lần lượt các bit trong data frame được lấy lên chân TX của UART truyền và gửi tới chân RX của UART nhận
• UART nhận sẽ loại bỏ đi các bit bắt đầu, chẵn lẻ và kết thúc ra khỏi data frame:
Hình 2 18: Loại các bit điều kiện trong data frame Giai đoạn này, loại bỏ các bit bắt đầu, chẵn lẻ và kết thúc Sau cùng, trong Slave dữ liệu cần truyền đi được tiếp tục xử lý
• UART nhận sẽ chuyển dữ liệu thành dạng song song và được chuyển đến data bus
Hình 2 19: Chuyển dữ liệu từ nối tiếp thành song song Ưu điểm, nhược điểm của UART:
• Chỉ dùng hai chân (TX,RX) để truyền và nhận dữ liệu
• Không dùng đến xung CLK
• Có thể kiểm tra lỗi bằng cách dùng bit chẵn lẻ
• Thay đổi được cấu trúc của gói dữ liệu
• Giới hạn khung dữ liệu tối đa 9 bit
• Không thể dùng cho nhiều hệ thống chính hoặc phụ
• Tốc độ truyền nằm trong khoảng 10% của mỗi UART
2.3.2 Tổng quan về chuẩn SPI
SPI là chuẩn giao tiếp nối tiếp đồng bộ, nó truyền dữ liệu theo dạng song công toàn phần Có thể truyền và nhận dữ liệu cùng lúc tại một thời điểm SPI là giao thức theo kiểu Master và Slave Master là thiết bị điều khiển, còn Slave tiếp nhận lệnh của Master Cấu hình của SPI thường là một cặp Master và Slave Một Master có thể điều khiển một hoặc nhiều Slave
Hình 2 20: Chuẩn giao tiếp SPI
Giao tiếp SPI sử dụng 4 dây:
• MOSI: đường truyền dữ liệu từ Master đến Slave
• MISO: đường truyền dữ liệu từ Slave đến Master
• SCLK: đường truyền xung nhịp, chỉ do Master tạo ra
• SS/CS: đường truyền để Master chọn Slave gửi tín hiệu đến Các Slave đường tín hiệu SS thường ở mức cao, nếu Master kéo chân SS của Slave bất kì xuống mức thấp thì sự giao tiếp giữa Master và Slave đó sẽ xảy ra Mỗi Slave chỉ có một chân
SS, nhưng tùy vào mong muốn của người dùng thì Master sẽ có một hoặc nhiều chân
Hình 2 21: Sơ đồ ghép nối SPI dạng bus
I2C là một loại bus nối tiếp được phát triển bởi hãng sản xuất linh kiện điện tử Philips Lúc đầu, loại bus này chỉ được dùng trong các linh kiện của Philips Về sau, vì tính thuận tiện và đơn giản của nó, I2C đã được chuẩn hóa và trở thành một chuẩn giao tiếp thông dụng trong các module truyền thông nối tiếp của vi mạch tích hợp hiện nay
I2C có hai đường truyền tín hiệu: đường xung nhịp đồng hồ (SCL) và đường dữ liệu (SDA) Cả SCL và SDA được kéo lên nguồn thông qua một điện trở kéo lên có giá trị xấp xỉ 4,7 KOhm hai chế độ hoạt động của I2C như sau:
• Chế độ chuẩn (standard mode): hoạt động ở tốc độ 100 Kbit/s
• Chế độ tốc độ thấp (low-speed mode): hoạt động ở tốc độ 10 Kbit/s
TỔNG QUAN VỀ CÔNG NGHỆ RFID
Công nghệ RFID là một cách thức giao tiếp không dây sử dụng điện từ hoặc tĩnh điện trong phạm vi tần số vô tuyến của phổ điện từ để nhận dạng đối tượng, động vật hoặc người Nó sử dụng công nghệ thu phát sóng radio để truyền và nhận thông tin mà không cần tiếp xúc trực tiếp RFID có thể được đọc xuyên qua nhiều vật liệu như nhựa, gỗ, sơn
Hệ thống RFID gồm phần cứng và phần mềm:
• Thẻ RFID (RFID Tags): được cấu tạo gồm: chip là mạch tích hợp dùng để lưu trữ thông tin cần thiết, ăng-ten để đọc và truyền dữ liệu cho thiết bị đọc và lớp nền là màng nhựa giữ chắc chắn cả chip và ăng-ten
• Đầu đọc (RFID Reader): là thiết bị cung cấp năng lượng cho các thẻ RFID thông qua ăng-ten Nó thu thập dữ liệu của thẻ, giải mã và truyền dữ liệu đó đến phần mềm tương ứng để xử lý
• Máy chủ: Là máy tính hay các thiết bị dùng để thực hiện các phần mềm trung gian và phần mềm ứng dụng
• Phần mềm trung gian (Middleware): là phần mềm nhận dạng tần số vô tuyến (RFID), nằm giữa đầu đọc và ứng dụng quản lý, đóng vai trò quan trọng trong quản lí và vận hành hệ thống
• Phần mềm ứng dụng (Application Software): là phần mềm đưa ra những hoạt động chi tiết, nhận dữ liệu để phân tích từ Middleware trước đó
Hệ thống RFID dùng nhiều tần số khác nhau, thường có ba mức:
• Tần số thấp (khoảng 125 đến 134,2 KHz): dùng cho các hệ thống cửa bảo mật, chấm công…
• Tần số cao (13.56 MHz): dùng cho vận chuyển, quản lý hàng, bãi giữ xe…
• Tần số siêu cao (khoảng 860 đến 960 MHz): dùng cho hệ thống quản lý kho hàng, kiểm soát dây chuyển sản xuất…
TỔNG QUAN VỀ XỬ LÝ ẢNH
2.5.1 Tổng quan về thư viện xử lý ảnh
EmguCV, OpenCV… là hai thư viện chính hỗ trợ xử lý ảnh cho các ngôn ngữ lập trình C++, Python, C#
OpenCV là một thư viện thị giác máy tính đa nền tảng miễn phí để xử lý hình ảnh, được viết bằng ngôn ngữ C/C++ Có khả năng xử lý hình ảnh toàn diện hỗ trợ xử lý luồng video, ghép ảnh (có thể kết hợp nhiều camera), hiệu chỉnh camera và các tác vụ tiền xử lý hình ảnh đa dạng Một số ứng dụng của nó như: phát hiện lỗi, sai xót trong sản xuất và một số công dụng khác, nhận dạng đối tượng, phân tích y tế
EmguCV là thư viện hỗ trợ dành cho ngôn ngữ “.NET” Tương thích với các ngôn ngữ lập trình: VB, C#, VC++… Chạy được hầu hết các hệ điều hành như: Windows, Android, iOS và Linux
Một số ưu điểm của EmguCV:
• Dùng được cho nhiều ngôn ngữ khác nhau
• Dùng được trên bất kì hệ điều hành như: Windows, Android, iOS và Linux…
• Nhận dạng được hành động, cử chỉ, khuôn mặt, vật thể Có thể khử nhiễu và điều chỉnh độ sáng
• Hỗ trợ tài liệu XML và intellisense
2.5.2 Tổng quan về thuật toán nhận diện và xử lý ảnh
OCR là thuật toán dùng để phát hiện và đọc văn bản trong hình ảnh thông qua thị giác máy tính Thuật toán này chuyên được sử dụng để đọc văn bản từ hình ảnh để nhận dạng các ký tự Thêm vào đó, OCR còn có khả năng nhận dạng nhiều dạng tài liệu khác nhau như hộ chiếu, danh thiếp, hóa đơn…
Phương thức hoạt động của OCR:
• Thu nhận hình ảnh: đọc tài liệu và chuyển nó thành ảnh nhị phân Sau đó phân tích ảnh nhị phân đã quét và phân loại vùng tối làm văn bản còn vùng sáng làm nền
• Tiền xử lý: OCR làm sạch hình ảnh và loại bỏ các lỗi
• Nhận dạng văn bản: có hai cách
+ Nhận dạng mẫu: OCR được cung cấp các mẫu văn bản ở nhiều phông chữ và định dạng khác nhau, và sử dụng để so sánh và nhận dạng các ký tự trong tài liệu được quét từ hình ảnh
+ Phát hiện đặc điểm: OCR áp dụng các quy tắc phát hiện đặc điểm của một chữ cái hoặc số cụ thể để nhận dạng các ký tự trong tài liệu được quét từ hình ảnh Các đặc điểm bao gồm số lượng đường góc cạnh, đường chéo hoặc đường cong trong một ký tự để so sánh
• Hậu xử lý: Qua quá trình phân tích, OCR sẽ chuyển đổi văn bản đã nhận dạng từ hình ảnh trước đó thành tệp trên máy tính
Thuật toán Canny được dùng để tìm ra các cạnh trong hình ảnh Gồm 4 bước chính:
• Giảm nhiễu: Loại bỏ nhiễu trong ảnh đầu vào Áp dụng Gaussian Filter để làm mịn ảnh
• Tính toán đạo hàm của bộ lọc Gaussian: tính toán độ dốc của các pixel ảnh để thu được độ lớn theo chiều x và y
• Xem xét một nhóm các lân cận cho bất kỳ đường cong nào theo hướng vuông góc với cạnh đã cho, loại bỏ các điểm pixel không có giá trị tối đa để làm mỏng các cạnh hình ảnh
• Cuối cùng, dùng phương pháp ngưỡng độ trễ để bảo toàn các pixel có giá trị cao hơn cường độ gradient và bỏ qua những pixel thấp hơn giá trị ngưỡng thấp
2.5.3 Quy trình nhận dạng và xử lý ảnh
Hình 2 23: Quy trình tổng quát Ảnh chứa biển số xe được chụp từ camera làm đầu vào Kế tiếp, ảnh sẽ được xử lý để tìm vùng có kí tự biển số xe Tiếp theo, dùng thuật toán xử lý ảnh OCR để nhận diện ký tự biển số xe Xuất kết quả biển số xe và lưu trữ các thông tin đó vào hệ thống
Hình 2 24: Các công đoạn xử lý ảnh Ảnh đầu vào chứa biển số xe được chuyển thành ảnh nhị phân dạng byte Sau đó, dùng thuật toán xử lý ảnh Canny để tìm sườn của ảnh, bước này giảm thiểu dữ liệu của ảnh một cách đáng kể, lọc những điểm ảnh không cần thiết và và giữ lại những thuộc tính quan trọng của hình ảnh
Kế tiếp, tạo đường biên (counters), sau khi các đường biên được tìm thấy sẽ được sắp xếp theo trình tự nhất định, ta có thể nhận biết được mối quan hệ của chúng
Ta xem xét cách sắp xếp các đường biên theo dạng cây như sau:
Hình 2 25: Minh họa tổ chức dạng cây đường biên
Xét ảnh biển số được sắp xếp dưới dạng cây với đỉnh là biên C0 và có các nhánh con đầu tiên lần lượt các biên C1, C2, C3, C4, C5, C6 và C7 Trong đó, nhánh con C2, C4, C5 còn có các nhánh con thứ hai gồm C21 là nhánh con của C2, C41 và C42 là nhánh con của C4, C51 là nhánh con của C5 như ảnh bên dưới:
Hình 2 26: Mô hình sắp xếp dạng cây
Muốn tìm được vùng chứa biển số thì phải phụ thuộc vào tỉ lệ kích thước và số lượng các kí tự của biển số xe Trong mỗi biển số xe thường có từ 5 đến 9 kí tự gồm chữ và số Dựa vào đó ta tìm được đường biên vùng chứa biển số xe có tối thiểu
3 nhánh con Từ những điều kiện trên ta tìm được vùng có chứa biển số.
TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU SQL
Cơ sở dữ liệu SQL là một tập hợp các bảng có cấu trúc cao, trong đó mỗi hàng đại diện cho một thực thể dữ liệu và mỗi cột xác định một trường thông tin cụ thể Cơ sở dữ liệu này được xây dựng bằng ngôn ngữ truy vấn có cấu trúc (SQL) để tạo, lưu trữ, cập nhật và truy xuất dữ liệu Vì vậy, SQL được coi là ngôn ngữ lập trình cơ bản cho hầu hết các hệ thống quản lý cơ sở dữ liệu quan hệ như MySQL, Oracle và Sybase
Máy chủ cơ sở dữ liệu SQL lưu trữ và tổ chức dữ liệu trong các bảng Trong cơ sở dữ liệu, các bảng là các đối tượng cơ sở dữ liệu cơ bản được thiết kế để thu thập dữ liệu theo định dạng hàng và cột Trong đó, các hàng phản ánh các thực thể, các cột xác định các thuộc tính của từng thực thể
• Cột: Mỗi cột chứa thông tin thuộc tính cụ thể và thuộc tính cột xác định loại dữ liệu và phạm vi mà cột có thể chấp nhận
• Hàng: Có thể thêm dữ liệu, thực hiện các truy vấn SQL để truy xuất dữ liệu
Lợi tích của việc sử dụng SQL:
• Tính linh hoạt cao: Cơ sở dữ liệu SQL cho phép người dùng thực hiện các thao tác thêm bảng, cột, đổi tên và các thay đổi khác mà không cần dừng hoạt động của cơ sở dữ liệu
• Dự phòng tối thiểu: Cơ sở dữ liệu giảm dự phòng dữ liệu bằng cách thực hiện chuẩn hóa, sắp xếp dữ liệu để loại bỏ các điểm bất thường liên quan đến chèn, cập nhật và xóa dữ liệu
• Tối ưu hóa hiệu suất: Cơ sở dữ liệu đảm bảo thực hiện nhanh chóng các thao tác với tính dễ dàng và dùng bộ nhớ tối thiểu, giảm chi phí lưu trữ và tăng tốc độ xử lý
• Dễ bảo trì: Các công cụ tự động hóa tích hợp trong cơ sở dữ liệu giúp các hoạt động sửa chữa, kiểm soát và bảo trì cơ sở dữ liệu SQL trở nên dễ đơn giản và thuận tiện.
TÍNH TOÁN VÀ THIẾT KẾ
GIỚI THIỆU
3.1.1 Yêu cầu chung của hệ thống
Em đã tìm hiểu và thi công mô hình bãi giữ xe với những tính năng sau:
• Phần mềm giao diện quản lý bãi giữ xe trên máy tính, theo dõi xe vào/ra dùng camera chụp ảnh biển số xe và ứng dụng công nghệ RFID
• LCD hiển thị thông báo bãi đỗ xe
• Hệ thống báo cháy cho mô hình
• Hệ thống ánh sáng tự động khi trời tối
• Hệ thống barrier đóng/mở cho phép xe vào/ra khi mã thẻ RFID hợp lệ
• Cho phép thêm hoặc xóa thẻ RFID trong hệ thống bãi xe thông qua phần mềm
Theo yêu cầu đặt ra, em đưa ra các phương án xây dựng mô hình như sau:
• Khối nguồn: lấy từ máy tính và vi điều khiển Arduino
• Khối xử lý: dùng module Arduino UNO R3
• Khối tín hiệu và điều khiển: dùng module RC522, cảm biến vật cản, động cơ servo, module cảm biến lửa, cảm biến ánh sáng…
Về phần mềm, em đưa ra các phương án như sau:
• Sử dụng ngôn ngữ lập trình C# cho việc thiết kế giao diện quản lý bãi xe
• Sử dụng cơ sở dữ liệu SQL cho việc lưu trữ thông tin thẻ
• Dùng phần mềm Aruino IDE hỗ trợ lập trình cho vi điều khiển Arduino UNO R3.
THI CÔNG HỆ THỐNG
GIỚI THIỆU
Qua quá trình tính toán và thiết kế, em đã thi công hệ thống với mô hình bãi giữ xe Mô hình gồm có module phần cứng như:
• Hai Arduino UNO R3 lần lượt kết nối với hai module RFID - RC522 để đọc mã thẻ
• Có camera được đặt ở vị trí ngõ vào và ngõ ra để chụp ảnh biển số
• Hai cảm biến vật cản E18-D80NK ở hai ngõ vào và ra
• LCD hiển thị thông tin của bãi xe
• Có cảm biến và còi báo cháy
• Hệ thống đèn tự động
• Hệ thống barrier của hai ngõ vào và ra được trang bị động cơ servo có nút nhấn điều khiển
THI CÔNG HỆ THỐNG
4.2.1 Thi công mô hình bãi giữ xe thông minh
Bảng 4 1 Danh sách các linh kiện
STT Tên linh kiện Chất liệu Kích thước
1 Hộp cảm biến, barrier Bìa fomex 8x6x4 cm
2 Thanh barrier Bìa fomex 10cm
3 Hộp quẹt thẻ Bìa fomex 14x12x5cm
4 Bảng hiệu Bìa fomex 38x17cm
5 Hộp LCD, báo cháy, đèn Bìa fomex 11x7x5cm
6 Cây trang trí Nhựa 7x7x7cm
7 Nền bãi xe Bìa fomex 40x45 cm
Hình 4 1: Lắp ráp mô hình
4.2.2 Thi công mạch Đầu tiên, em tiến hành vẽ mạch PCB trên phần mềm EasyEDA
Hình 4 2: Thiết kế mạch PCB
Sau đó làm được mạch in như bên dưới
4.2.3 Phần mềm quản lý mô hình bãi xe trên PC
Dựa trên những yêu cầu đặt ra của đề tài, em đã viết phần mềm giao diện quản lý bãi giữ xe bằng ngôn ngữ lập trình C# trên Visual Studio và được chạy trên hệ điều hành Windows trên PC
Chức năng của phần mềm:
• Kết nối với camera và đầu đọc thẻ RFID để chụp ảnh xe
• Hình ảnh được lưu trữ trong bộ nhớ
• Dữ liệu mã thẻ và giờ gửi sẽ được lưu vào SQL Server
• Thêm và xóa thẻ RFID trong hệ thống Chỉ mã thẻ RFID đã được thêm vào mới hoạt động được trên hệ thống
• Có tính năng bảo mật cao, đăng nhập để vào hệ thống bằng tài khoản được thiết lập trước
Hình 4 4: Giao diện quản lý bãi xe
Hình 4 5: Giao diện đăng nhập
Hình 4 6: Giao diện kết nối với Camera và Arduino
Hình 4 7: Giao diện quản lý thẻ
Hình 4 8: Giao diện quản lý giá tiền
Hình 4 9: Giao diện tra cứu xe
THI CÔNG MÔ HÌNH
4.3.1 Đóng gói bộ điều khiển
Hình 4 10: Đóng gói hộp quét thẻ
Hình 4 11: Đóng gói hộp barrier
Hình 4 12: Đóng gói hộp báo cháy, LCD, còi báo…
Hình 4 13: Bố trí mô hình hệ thống
LẬP TRÌNH HỆ THỐNG
4.4.1 Lưu đồ giải thuật phần mềm quản lý trên PC
Hình 4 14: Lưu đồ giải thuật phần mềm quản lý trên PC
Ban đầu, khai báo các thư viện cần dùng và khởi tạo các biến Tiếp theo, tiến hành kết nối với Arduino để đọc mã thẻ từ RFID, camera Sau đó, ta thực hiện vòng lặp: Đọc dữ liệu từ đầu đọc RFID, chụp hình ảnh, lưu mã thẻ và ảnh chụp biển số xe
Xử lý nhận diện biển số, gửi tín hiệu về Arduino Lấy ảnh so sánh với biển số xe vào và tính tiền Hệ thống tự động xóa mã thẻ khi thẻ đó hợp lệ ở ngõ ra Sau đó quay lại vòng lặp ban đầu
4.4.2 Lưu đồ chương trình nhận diện biển số
Hình 4 15: Lưu đồ nhận diện biển số xe
Ban đầu, hệ thống sẽ truy xuất ảnh biển số xe chụp được, sau đó tiến hành tách vùng chứa biển số Tiếp theo, tách các kí tự chữ và số có trong biển số và qua thuật toán xử lý ảnh nhận dạng kí tự và đưa kết quả các kí tự tìm được
4.4.3 Lưu đồ giải thuật của vi điều khiển
Hình 4 16: Lưu đồ giải thuật của vi điều khiển
Ban đầu, khai báo các thư viện và khởi tạo giá trị ban đầu, cấu hình chân ngõ vào và ngõ ra của vi điều khiển Arduino UNO R3
Ta thực hiện vòng lặp: đọc tín hiệu từ Serial, thực hiện chương trình đọc dữ liệu RFID và điều khiển động cơ servo, điều khiển hiển thị LCD Sau đó, quay trở lại vòng lặp ban đầu
4.4.4 Lưu đồ chương trình con đọc dữ liệu RFID
Hình 4 17: Lưu đồ giải thuật chương trình con RFID
Ban đầu, khởi tạo các thư viện, cấu hình các chân được dùng, thiết lập kết nối chuẩn giao tiếp SPI Kiểm tra tín hiệu quét thẻ Nếu có tín hiệu quét thẻ thì gửi UID kèm theo mã “ci” nếu là xe vào hoặc mã “co” nếu là xe ra Sau đó delay 500ms để tránh trường hợp nhận tín hiệu quét thẻ liên tục
4.4.5 Lưu đồ giải thuật chương trình con điều khiển động cơ servo
Hình 4 18: Lưu đồ giải thuật chương trình con điều khiển động cơ servo
Ban đầu khai báo các thư viện, cấu hình các chân được sử dụng và đặt giá trị ban đầu Thực hiện chu trình kiểm tra có xe vào/ra hay không, nếu có thì hệ thống điều khiển động cơ servo quay mở thanh barrier cho xe vào/ra, nếu không có xe vào/ra thì tiếp tục kiểm tra, sau khi có xe vào/ra thì tiếp tục kiểm tra cảm biến vật cản, nếu có thì hệ thống điều khiển động cơ servo quay đóng thanh barrier và kết thúc, nếu không thì tiếp tục kiểm tra
4.4.6 Lưu đồ giải thuật chương trình con nút nhấn và động cơ servo
Hình 4 19: Lưu đồ giải thuật chương trình con nút nh điều khiển động cơ Servo
Ban đầu, khai báo các thư viện và khởi tạo các port, sau đó gắn giá trị ban đầu cho động cơ servo, tiến hành kiểm tra có nhấn nút lần 1 hay không Nếu có thì gắn giá trị mới cho động cơ servo, nếu không thì tiếp tục kiểm tra Sau khi có nhấn lần 1 thì tiếp tục kiểm tra xem có nhấn nút lần 2 hay không Nếu có thì gắn giá trị ban đầu cho servo, nếu không thì tiếp tục kiểm tra
4.4.7 Lưu đồ giải thuật chương trình hiển thị LCD
Hình 4 20: Lưu đồ giải thuật chương trình hiển thị LCD
Ban đầu, khai báo các thư viện và khởi tạo các port, sau đó gắn giá trị ban đầu cho LCD, tiến hành kiểm tra có xe vào/ra hay không Nếu có thì hiển thị LCD
“WELCOME MOI XE VAO/RA” Nếu không thì hiển thị LCD là “WELCOME MOI QUET THE”
4.4.8 Lưu đồ giải thuật chương trình báo cháy
Hình 4 21: Lưu đồ giải thuật chương trình báo cháy
Ban đầu, khai báo các thư viện và khởi tạo các port, sau đó kiểm tra giá trị của cảm biến lửa, nếu có lửa thì còi báo hoạt động đồng thời mở barrier cho xe ra, sau đó delay 5s để tắt còi cũng như đóng barrier Nếu không thì tiếp tục kiểm tra
4.4.9 Lưu đồ giải thuật chương trình tự động sáng đèn khi trời tối
Hình 4 22: Lưu đồ giải thuật chương trình tự động sáng đèn
Ban đầu, khai báo các thư viện và khởi tạo các port, sau đó kiểm tra giá trị của cảm biến ánh sáng dùng quang trở, nếu trời tối thì tự động bật đèn Nếu không thì tiếp tục kiểm tra.
HƯỚNG DẪN SỬ DỤNG
Bước 1: Kết nối camera, đầu đọc thẻ với PC
Bước 2: Mở phần mềm quản lý trên PC, thực hiện đăng nhập vào hệ thống Bước 3: Sau khi hoàn tất đăng nhập, phần mềm chuyển qua phần thiết lập các camera, cổng COM RFID
Bước 4: Mở phần quản lý thẻ để thực hiện thêm và xóa thẻ (nếu cần) Nếu muốn thêm thẻ cần quét thẻ mới vào đầu đọc thẻ ở ngõ vào, khi đó mã thẻ sẽ được hiển thị trên thanh “mã thẻ”, bấm nút “Thêm thẻ” để thêm thẻ mới được quét vào hệ thống Nếu muốn xóa thẻ thì ta chọn mã thẻ muốn xóa ở trong danh sách, sau đó bấm nút “Xóa thẻ”
Bước 5: Mở phần quản lý giá tiền để cài đặt giá tiền cho bãi xe bao gồm giá tiền gửi mỗi giờ và tiền phạt Sau đó ta bấm vào dấu X trên khung cửa sổ thiết lập để thoát và quay về giao diện chính
Bước 6: Khi có xe vào, ta tiến hành quét thẻ ở đầu đọc của ngõ vào, nếu biển số đã được nhận diện thì hệ thống barrier sẽ tự mở thanh gạt cho xe vào Sau khi xe qua khỏi barrier thì cảm biến sẽ gửi tín hiệu cho hệ thống đóng thanh barrier lại
Bước 7: Khi có xe ra, ta cũng tiến hành quét thẻ ở đầu đọc của ngõ ra, nếu biển số đã được nhận diện trùng với biển số ban đầu có cùng mã thẻ thì hệ thống barrier sẽ tự mở thanh gạt cho xe ra, sau khi xe qua khỏi barrier thì cảm biến sẽ gửi tín hiệu cho hệ thống đóng thanh barrier lại Nếu biển số được nhận diện khác với biển số ban đầu với cùng mã thẻ thì hệ thống sẽ phát tiếng còi cảnh báo và hệ thống barrier sẽ không mở thanh gạt
Bước 8: Mô hình sẽ tự động mở đèn khi mà trời tối đồng thời khi có sự có cháy nổ thì hệ thống sẽ cảnh báo bằng chuông và hai barrier sẽ tự động mở để xe ra vào, ngoài ra trong trường hợp đặc biệt thì có thể sử dụng nút nhấn để mở barrier.
KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
KẾT QUẢ CHẠY MÔ HÌNH
Sau thời gian thi công hệ thống, em đã hoàn thành giao diện phần mềm quản lý trên PC và mô hình chạy thử nghiệm
Hình 5 1: Giao diện quản lý trên máy tính và mô hình
Khi bắt đầu phần mềm quản lý, ta tiến hành đăng nhập để vào hệ thống quản lý
Hình 5 2: Giao diện đăng nhập
Sau đó, ta tiến hành chọn các camera và cổng COM
Hình 5 3: Giao diện chọn camera và cổng COM
Kế tiếp, ta cài đặt giá tiền cho bãi xe và lưu thay đổi (nếu có)
Hình 5 4: Giao diện cài đặt giá tiền Sau khi hoàn tất, trong giao diện mới này chỉ có hai camera hoạt động, không có thông tin của xe vì chưa có xe vào bãi
Hình 5 5: Giao diện sau khi hoàn tất thiết lập ban đầu
Khi có xe vào bãi, ta quét thẻ và camera sẽ chụp ảnh biển số xe ở ngõ vào, hệ thống hiển thị biển số xe sau khi đã được nhận dạng và lưu dữ liệu của xe vào trong máy tính
Hình 5 6: Giao diện khi có xe vào
Khi có xe ra, ta quét thẻ và camera sẽ chụp ảnh biển số xe ở ngõ ra và sẽ truy xuất dữ liệu trong máy tính tương ứng với mã thẻ được quét trước đó để so sánh biển số xe ra có trùng với biển số xe vào hay không, nếu trùng biển số thì hệ thống mở thanh barrier cho xe ra khỏi bãi
Hình 5 7: Giao diện khi có xe ra hợp lệ
Trường hợp quét thẻ khác hoặc biển số xe ra không trùng với dữ liệu được lưu trong máy tinh của xe vào thì hệ thống sẽ không mở thanh barrier
Hình 5 8: Giao diện khi có xe ra không hợp lệ
Trường hợp khi trời tối hoặc thiếu ánh sáng thì hệ thống sẽ tự động sáng đèn
Hình 5 9: Mô hình tự động bật đèn khi trời tối
Khi cảm biến phát hiện có sự cố cháy nổ thì sẽ bật chuông báo động đồng thời mở 2 thanh barrier
Hình 5 10: Mô hình tự động cảnh báo khi có sự cố cháy
Bảng 5 1 Bảng kiểm thử nhận diện các loại biển số
STT Biển số Số lần nhận diện
Ký tự nhận diện được
Tỉ lệ nhận diện chính xác
NHẬN XÉT - ĐÁNH GIÁ
Sau khi tìm hiểu, nghiên cứu và thực hiện khóa luận, hệ thống bãi xe đã được hoàn thành và thỏa mãn được các yêu cầu ban đầu đề ra:
• Giao diện phần mềm quản lý được trình bày gọn gàng, dễ quan sát
• Mô hình bãi xe hoạt động khá ổn định, có thể thực hiện được các thao tác cơ bản
• Hệ thống điều khiển các thiết bị ngoại vi khá chính xác, thời gian phản hồi nhanh, cập nhật dữ liệu dễ dàng
Sau khi hoàn thành đề tài, đã đưa ra đánh giá khách quan như sau:
• Nhận diện biển số xe khá tốt nhưng vẫn còn một số biển nhận diện chưa chính xác
• Giao diện quản lý trình bày đầy đủ, rõ ràng các thông tin cần thiết
• Hệ thống camera chụp ảnh trong môi trường thiếu sáng chưa được tốt
• Thời gian phản hồi của các thiết bị ngoại vi khá nhanh và chính xác
• Dữ liệu được lưu trữ đầy đủ và có thể trích xuất dễ dàng.
DỰ TOÁN CỦA ĐỀ TÀI
Dưới đây là bảng thống kê chi phí của đề tài sau khi em thi công và hoàn thành mô hình đã thiết kế:
Bảng 5 2 Bảng dự toán chi phí
STT Linh kiện/Vật liệu Số lượng Đơn giá
3 Cảm biến vật cản E18-D80NK 2 220.000 440.000
Theo như ước tính, chi phí cho toàn bộ hệ thống khoảng 3.375.000 đồng, thêm vào còn phát sinh các chi phí khác khoảng 1.000.000 đồng, tổng cộng 4.375.000 đồng.