5.2.1 Hệ thống bãi giữ xe thông minh:
Hệ thống bãi giữ xe thông minh có cổng vào và ra phân biệt.
Khi xe vào nhân viên và khách hàng khi vào đề phải quét thẻ RFID, lấy card id và thời gian lưu vào server
Chụp 2 hình trước và sau xe và nhận dạng biển số xe
Khi xe vào phần mềm nhận dạng sẽ chụp 2 bức ảnh. Một ảnh biển số xe vào và một ảnh chủ nhân xe lưu vào server
Phần mềm nhận dạng làm nhiệm vụ nhận diện biển số xe tử ảnh, tách kí tự rồi chuyển ảnh kí tự từ dạng ảnh sang dạng text lưu vào server
Khi xe ra nhân viên và khách quét thẻ RFID, lấy thời gian ra lưu vào server (để kiểm tra sau này)
Phần mềm nhận dạng ở ngõ ra sẽ lấy ảnh chủ nhân xe, biến số và card id lúc xe vào từ server so sánh với biển số nhận được, ảnh chủ nhân xe và card id lúc xe ra.
Nếu hợp lệ cho xe ra
5.2.2 Hệ thống access control:
Bộ access control gồm module Raspberry Pi và reader RFID RDM880
Trên module Raspberry Pi chứa một cơ sở dữ liệu ngay trên nó (local database) đã khi báo sẵn thông tin nhân viên được phép ra vào phòng và thời gian nhân viên được phép ra vào (ví dụ: công ty làm việc từ 7h đến 18h thì nhân viên chỉ được ra – vào trong khoảng thời gian này).
Khi nhân viên quét thẻ RFID (lúc vào) bộ access control đọc mã thẻ và kiểm tra trong cơ sở dữ liệu dữ liệu local, nếu card id phù hợp thì điều khiển mở cửa. Đồng thời bộ access control cũng lấy thời điểm nhân viên vào cơ sở dữ liệu local và gửi về server (remote database).
Khi nhân viên quét thẻ RFID (lúc ra) bộ access control thực hiện chức năng tương tự, lưu thời điểm nhân viên ra vào cơ sở dữ liệu local và gửi về server (remote database). Bộ access control còn được nhúng web để điều khiển thiết bị (thay đổi khoảng thời gian ra vào); thêm – xóa – sửa – tìm kiếm nhanh nhân viên trong từng phòng; xuất file thông tin local database trong trường hợp server bị hỏng.
5.2.3 Server:
Chứa toàn bộ thông tin của hệ thống
Có chương trình quản lý nhân viên để thêm nhân viên tùy ý vào từng phòng ở hệ thống access control. Chương trình cũng cho phép lấy dữ liệu thời gian ra – vào của nhân viên để kiểm tra nhân viên có đúng giờ hay không, tính tiền lương nhân viên và điểu chỉnh giá giữ xe.
5.3 Phần cứng hệ thống: 5.3.1 Phần cứng bộ access control: 5.3.1 Phần cứng bộ access control: Chú thích: (1) Raspberry Pi (2) Reader RDM880 (3) Anten reader RDM880
(4) Module thời gian thực (RTC) DS1307
(5) Mạch chuyển đổi giao tiếp giữa UART và TTL
Raspberry Pi
Ở đây, nhóm xin trình bày về phần cứng của Raspberry Pi phiên bản B+, đây là phiên bản mới nhất và được sử dụng phổ biến nhất hiện nay.
Raspberry Pi có cấu tạo giống như một máy tính thu nhỏ. Cấu tạo của Raspberry Pi dựa vào hình sau:
- Tổng quan phần cứng của Raspberry Pi:
Hình 5.4 Phần cứng bộ access control
(1)
(4) (3)
(5)
Hình 5.5 Cấu tạo Raspberry Pi model B+ (mặt trên)
Hình 5.6 Cấu tạo Raspberry Pi model B và model B+ (mặt dưới)
Vi xử lý: “trái tim” của Raspberry Pi giống như vi xử lý cỉa Iphone 3G hay Kindle 2; như vậy từ việc nhìn vào 2 sản phẩm kia, ta có thể hình dung được “khả năng” của Raspberry Pi. Chip xử lý này được xây dựng trên kiến trúc ARM11 có thông số 32 bit, 700MHz và tích hợp RAM 512MB.
Khe cắm thẻ nhớ: Có thể nhận thấy sẽ không có ổ cứng trên Raspberry Pi và thay vào đó là thẻ nhớ. Tất cả dữ liệu được lưu trên thẻ nhớ này. Điểm khác biệt giữa model B và model B+ là model B dùng thẻ nhớ SD còn model B+ dùng thẻ micro SD.
Cổng USB: model B có 2 cổng USB, model B+ có 4 cổng USB. Cổng Ethernet: chuẩn RJ45.
Cổng HDMI: dùng để truyền tín hiệu video và audio số. Có tới 14 chuẩn video được hỗ trợ và tín hiệu HDMI có thể dễ dàng chuyển thành các chuẩn khác như DVI, RCA hoặc SCART.
Các led trạng thái: có 5 led trạng thái:
Led Màu sắc Trạng thái
ACT Xanh Sáng khi thẻ nhớ
truy cập thành công
PWR Đỏ Cấp nguồn 3.3V
thành công
FDX Xanh Sáng nếu network
adapter truyền nhận song công toàn phần
LNK Xanh Báo trạng thái
network
100 Vàng Sáng nếu tốc độ
network là 100Mbps Bảng 5.1 trạng thái led của Raspberry Pi
Ngõ ra analog audio: ngõ ra này là giác cắm chuẩn 3.5mm, hỗ trợ cho người dùng không có điều kiện sở hữu màn hình HDMI. Âm thanh lấy từ cổng này có chất lượng kém hơn một chút so với từ cổng HDMI.
Ngõ ra composite video: đây là giắc theo tiêu chuẩn RCA, cung cấp tín hiệu video loại NTSC hoặc PAL. Tín hiệu video lấy từ ngõ ra này có chất lượng thấp hơn so với từ cổng HDMI.
Cổng cấp nguồn: một trong những điều nhận thấy là Raspberry Pi không có nút nguồn. Micro USB được chọn làm cổng cấp nguồn.
Hình 5.7 GPIO và Header của Raspberry Pi
GPIO:
(General Purpose Input and Output): giống như các chân của vi điều khiển, các IO của Raspberry Pi cũng được sử dụn để xuất tín hiệu ra led, thiết bị hoặc đọc tín hiệu từ các nút nhấn, công tắc….Ngoài ra còn có các IO tích hợp các chuẩn truyền dữ liệu UART, I2C và SPI.
Hình 5.8 Sơ đồ chân GPIO của Raspberry Pi
Chú ý, Raspberry Pi có hai cách đánh số chân GPIO. Cần xác định rõ đang chọn cách đánh số chân nào để viết code lập trình cho chính xác.
HEADER:
Cổng DSI (Display Serial Interface): cổng này dùng để kết nối với LCD hoặc màn hình OLED.
Cổng CSI (Camera Serial Interface): cổng này dùng để kết nối module riêng của Raspberry Pi.
(6) Reader RDM880
Giới thiệu Reader RDM880:
Hình 5.9 Reader RFID RDM880 - Thông số kỹ thuật:
Model No. RDM880
R/W chip MFRC 500
Tiêu chuẩn ISO/IEC14443 - A Loại card hỗ
trợ
Mifare One S50, Mifare One Ultralight, Mifare One S70, Mifare Pro, AT88RF020, 66CL160S, SR176….
Tần số 13.56MHz
Tốc độ baud 9600 – 115200 bit/s (default 9600) Nguồn cung cấp 5 VDC (5%) Dòng <70mA Tầm hoạt động 10 – 300 mm Chuẩn giao tiếp TTL/RS232 Nhiệt độ hoạt động -10 đến 70oC Nhiệt độ bảo quản -20 đến 80oC
Bảng 5.2 Thông số kỹ thuật RDM 880 - Giao thức hoạt động: 1) Data format: Default setting là: Baud rate Data bits Start bit Stop bit Parity 9600 8 1 1 None Bảng 5.3 Data format 2) Packet format:
Có hai loại gói tin là:
Gói tin gửi từ host (PC, MCU) đến reader RDM880 gọi là command message
Gói tin gửi từ reader RDM880 trở lại host gọi là reply message
Mô tả thành phần cấu trúc gói tin:
Trường Độ dài Miêu tả Chú ý
STX 1 0xAA – “start of text”. Mở đầu gói tin data
DADD 1 Địa chỉ của thiết bị dùng ở mode multi – drop. Chỉ những reader nào phù hợp với địa chỉ cài đặt trước mới trả lời gói tin command message
Địa chỉ 0x00 là địa chỉ đặc biệt cho giao tiếp điểm – điểm. Reader sẽ trả lời tất cả gói dữ liệu có địa chỉ “0” Data length
1 Chiều dài byte của gói dữ liệu Length = Number_of_byte (TIME/STATUS + DATA[0..N])
Chiều dài bao gồm
TIME/STATUS và trường data, không chứa BCC CDM 1 Trường lệnh chứa 1 byte lệnh
STATUS 1 Trạng thái trả lời từ reader đến máy chủ
Chỉ được dùng cho gói tin reply DATA
[0..N]
0 – 255 Trường dữ liệu có chiều dài thay đổi phụ thuộc vào lệnh
Nếu trường data của gói tin command hoặc reply dài hơn 80 bytes thì reader sẽ không trả lời mà xem như là lỗi hoặc chờ lệnh tiếp theo
BCC 1 8 bit kiểm tra check sum. Việc kiểm tra sẽ bao gồm tất cả các byte trong gói tin trừ STX và ETX
ETX 1 0xBB : “end of text” chỉ ra kết thúc của gói tin
3) Đọc thẻ RFID:
Để đọc card ID thì phải gửi chuỗi AA 00 03 25 26 00 00 BB (dạng hex) qua Uart đến Reader RDM880. Reader sẽ trả lời một chuỗi chứa Card ID.
4) Set buzzer:
- Dùng để báo hiệu khi đọc thẻ. Trong file protocol kèm theo của reader RDM880 muốn phát âm thanh ra loa ta dùng chuỗi AA 00 03 89 18 0A 98 BB (chuỗi hex). Tuy nhiên chuỗi này sẽ phát khoảng 10 tiếng bip liên tục. Nếu chỉ muốn phát một tiếng, chúng ta phải tính lại chuỗi
- Trong đề tài luận văn này để phát một tiếng píp ra loa chúng em dùng chuỗi
Module thời gian thực (RTC) DS1307
Hình 5.10 Module thời gian thực DS1307
- DS 1307 Board: sử dụng giao thức I2C cho phép đếm giây, phút, giờ, ngày trong tuần, ngày trong tháng và năm. Có sẵn pin backup, cho phép duy trì thời gian ngay cả khi mất điện.
- Sử dụng module này kèm theo Raspberry Pi thì ngay cả khi tắt Pi hoặc không có Internet chúng ta vẫn có được thời gian chính xác.
- Kết nối dây:
VCC trên DS1307 nối với GPIO 5V của Pi GND trên DS1307 nối với GPIO GND của Pi SDA trên DS1307 nối với GPIO SDA0 của Pi SCL trên DS1307 nối với GPIO SCL0 trên Pi
Mạch chuyển đổi giao tiếp giữa UART và TTL
Hình 5.11 Sơ đồ nguyên lý mạch chuyển RS232 -TTL
Hình 5.12 layout Mạch RS232-TTL D1 LED 0 RX VCC JP1 HEADER 4 1 2 3 4 D2 LED VCC Q2 NPN BCE 1 2 3 VCC R7 1k + C5 10u U2 RDM 880 1 2 3 4 5 6 7 8 9 10 11 12 AT+ AT- buz ledR ledG nc nc RS RX TX gnd VCC R4 R TX R2 JP3 HEADER 2X2 1 2 3 4 VCC SU1 BUZZER 0 0 + C3 0.1u 0 + C1 0.1u G N D JP2 HEADER 2 1 2 + C4 0.1u GND D3 LED R6 5.1k U3 MAX2323 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 C1+ VS+ C1- 4 5 6 out in vcc gnd 1_out 1_in T2_out T1_in T_in T_out VC C + C2 0.1u GND R3 R5 10 C6 100nf
Hình 5.14 Camera A4tech
5.3.2 Phần cứng tại bãi giữ xe:
Bộ máy tính gồm màn hình chuột bàn phím, có kết nối vối máy chủ qua Lan; ở luận
văn này tôi dùng lap top:
Hình 5.13 Laptop Asus X550Lb
Dùng 4 camera cho 2 ngõ ra, vào. Logitech, A4tech, 2 webam laptop.
Đầu đọc thẻ RFID.
Hình 5.16 Đầu Đọc Thẻ RFID
1. Thiết bị đọc thẻ RFID
2. Thẻ RFID
3. Cáp nối đầu đọc với máy tính. Thiết bị đọc thẻ gồm có:
- Đầu đọc thẻ RDM 880
- IC max 232 chuyển chuẩn RS232 từ đầu đọc sang TTL kết nối vớiFTDI Adapter Kit( chuyển từ chuẩn TTL sang USB)
Sơ đồ kết nối
3 2
Hình 5.17 Sơ đồ nguyên lý reader RFID
Hình 5.18 Layout reader RFID JP2 HEADER 2 1 2 0 R5 10 R2 R3 + C4 0.1u 0 C6 100nf TX VCC GND + C5 10u D2 LED RX + C1 0.1u GND VCC Q2 NPN BCE 1 2 3 VCC U2 RDM 880 1 2 3 4 5 6 7 8 9 10 11 12 AT+ AT- buz ledR ledG nc nc RS RX TX gnd VCC R7 1k + C3 0.1u VCC R6 5.1k 0 GND D3 LED U4 FTDI 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 TX RX GN D GND 10 11 VCC 0 D1 LED RX TX SU1 BUZZER + C2 0.1u R4 R U3 MAX2323 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 C1+ VS+ C1- 4 5 6 out in vcc gnd 1_out 1_in T2_out T1_in T_in T_out JP3 HEADER 2X2 1 2 3 4 GND VCC
5.3 Lưu đồ giải thuật hệ thống:
5.3.1 Lưu đồ giải thuật hệ thống access control
Bắt đầu
Gửi chuỗi yêu cầu đọc Card ID
Có thẻ?
Đúng
Đọc giá trị thẻ Card ID
Chuỗi Card ID khác chuỗi loa và chuỗi không thẻ?
Đúng
Phát loa kêu
Sai
Card ID tồn tại trong bảng cho phép vào phòng?
Đúng
Thời gian lúc quét thẻ nằm trong khoảng thời gian cho phép ra/vào?
Sai
Đúng Sai
Không mở cửa phòng
Card ID không tồn tại trong bảng tt_control? (chưa vào lần nào)
Đúng
Mở cửa phòng
Lưu Card ID và thời gian
vào local database Lưu thời gian ra vào vị trí Card
ID tương ứng trong local database
Kết nối được với server?
SET Ket_noi = 1
Add Card ID và thời gian vào vào server (remote database) SET Ket_noi = 0 Kết nối được với server? Sai Đúng
Add thời gian ra vào SERVER
Card ID = Card ID +1
(local + remote database)
Sai Card ID = Card ID +1 (local database) Reconnect server? Send tất cả các hàng có Ket_noi = 0 đến SERVER SET Ket_noi =1 Sai Đúng Sai Đúng
5.3.2 Lưu đồ giải thuật bãi giữ xe: 5.3.2.1 Lưu đồ chính:
End Chụp 2 hình biển số xe và người đi xe.
Xử lý ảnh nhận dạng biển số xe Lưu card ID, bản số, thời gian vào
Xuất thông báo mời xe ra
Start (quét thẻ)
Kiểm tra có phải nhân viên không
Kiểm tra Xe đang vào hay ra
Xuất ảnh xe lúc vào, lên màn hình máy tính Chụp ảnh xe ra , và người ngồi trên xe.
Xử lý ảnh nhận dạng biển số xe ra
Bản số vào = Bản số ra
Xuất tín hiệu cảnh báo, nhầm xe ( tiếng còi hú, đèn đò nhấp nháy …)
Xuất thông báo mời xe ra Xuất giá tiền giữ xe
Đ Ra Đ S Vào S
Hình 5.23 Ảnh bản xố chụp từ camera
Hình 5.22 Ảnh chứa vùng bản số xe
5.3.2.2 Lưu đồ giải thuật xử lý ảnh bản số xe:
Lưu đồ chính: Chụp ảnh từ camera Tách vùng chứa biển số xe Tách vùng ảnh chứa từng ký tự Nhận dạng ký tự
Hình 5.21 Lưu đồ giải thuật xử lý ảnh
Tách vùng chứa bản số Tách vùng chứa từng ký tự Nhận diện ký tự 63X4 - 3345
Chụp ảnh từ camera
Lọc nhiễu (SmoothMedian, SmoothGaussian)
Chuyển sang ảnh xám
Chuyển sang ảnh nhị phân (ThresholdBinary)
Dùng dilation, erosion loại bỏ nhiễu làm rõ bản số
Tìm cạnh của các đối tượng trong ảnh (dùng bộ lọc canny) + Tìm đường bao
(findContours) Tìm hình chữ nhật chứa các
đối tượng
Hình chữ nhật thỏa điều kiện bản số
Cắt vùng ảnh chứa bản số Đ
S
- Lưu đố giải thuật chương trình con :
Tách vùng chứa bản số. Dựa trên đặt điểm bảng số xe Việt Nam, là nền trắng chữ đen và các tỷ lệ dài rộng như đã nêu trên ta có thể dễ dàng tách vùng chứa bản số. Như sau
-
Hình 5.26 Ảnh xám
Hình 5.28 Sau erosion and dilation Hình 5.25 Ảnh chụp từ camera
Hình 5. 30 Tìm hình chữ nhật phù hợp
Hình 5.31 Ảnh vùng ảnh chứa biển số Hình 5. 29 Tìm cạnh (canny)
- Tách từng ký tự:
Tương tự như tách bản số. Do chữ và nền bản số có 2 màu khác biệt nên ta có thể tìm được đường biên bao từng ký tự, từ đó tách chúng ra.
Ảnh bản số sau khi cắt ra
Resize
Chuyển sang ảnh nhị phân (ThresholdBinaryInv)
Dùng dilation, erosion loai bỏ nhiễu làm rõ bản số
Tìm cạnh của các đối tượng trong ảnh (dung bộ lọc canny) +
Tìm đường bao (findContours)
Tìm hình chữ nhật chứa từng ký tự Hình chữ nhật thỏa điều kiện là ký tự Cắt vùng ảnh chứa bản số Đ S Sắp xếp các ký tự cho đúng thứ tự
Hình 5.34 Biển số sau khi ThresholdBinary Erosion Tìm hình chữ nhật bao các ký tự Hình 5.36 Hình chữ nhật bao các ký tự Cắt từng ký tự sắp xếp lại theo thứ tự: Nhận dạng ký tự:
Nhận dạng ký tự với chương trình mã nguồn mở Tesseract OCR được tích hợp vào trong EmguCV, hỗ trợ nhận dạng các file ảnh ký tự thành các ký tự ACSII. Chương trình OCR cần phải được huấn luyện với các mẫu ý tự cụ thể để có thể nhận dạng thành công các ký tự ở dạng ảnh.
Hình 5.33 Hình bản số ban đầu
Hình 5.35 Biển số sau khi Erosion