Ứng dụng công nghệ mã nguồn mở

Một phần của tài liệu Báo cáo nghiên cứu khoa học hệ thống giữ xe tự động (Trang 55)

CHƯƠNG 3 : CHƯƠNG TRÌNH GIỮ XE TỰ ĐỘNG

3.1Ứng dụng công nghệ mã nguồn mở

Có nhiều phương pháp, giải pháp nhận dạng biển số xe như sử dụng mạng nơron, phương pháp Bayes, dùng bảy mômen bất biến… Tuy nhiên, để tiết kiệm thời gian và tiện lợi chúng tôi đã ứng dụng công nghệ mã nguồn mở vào chương trình để nhận dạng biển số.

3.1.1 Điều kiện cơ bản

Địi hỏi máy tính chạy Windows XP hoặc hệ điều hành mới hơn, chạy Visual Studio 2010 C + + và MSXML 6.0 XML. Về phần cứng, yêu cầu duy nhất là một CPU hỗ trợ SSE2 phần mở rộng.

Bất kỳ máy tính 5 tuổi hoặc mới hơn được cập nhật thường xuyên với các bản vá lỗi của Microsoft và các gói dịch vụ nên đã đáp ứng được các yêu cầu nêu trên. Tuy nhiên, điều kiện yêu cầu phần mềm trên có thể được tải về từ Microsoft.

1. Visual Studio 2010 C + + chạy có thể được tải về từ

http://www.microsoft.com/download/en/details.aspx?id=5555

2. MSXML 6.0can be installed from

http://www.microsoft.com/downloads/details.aspx?FamilyID=D21C292C-368B- 4CE1-9DAB-3E9827B70604&displaylang=en

3. Để kiểm tra xem một bộ xử lý cụ thể hỗ trợ SSE2

http://en.wikipedia.org/wiki/SSE2

3.1.2 Nhận dạng biển số xe Gồm 3 bƣớc chính: Gồm 3 bƣớc chính:

- Phát hiện biển số xe bằng biểu đồ phân tích đa phân giải (Multiresolution): Bộ lọc chấp nhận, tìm các vùng phù hợp trong hình ảnh dựa trên biểu đồ phân phối của thuật toán.

- Thresholding, phân đoạn và phân nhóm hình dạng: Tìm thấy một ngưỡng tối ưu cho khu vực biển số ứng cử viên bằng cách phân tích các thơng tin biểu đồ của nó. Phân đoạn hình dạng và tìm các cụm ký tự của ứng cử viên phù hợp.

- Xác định ký tự bởi tập mẫu phù hợp và xác minh biển số xe: Đối với mỗi hình dạng, tìm giá trị tương quan của nó với tất cả các thành viên trong tập xác định trước các mẫu ký tự. Thiết lập này bao gồm các mẫu của tất cả các ký tựcó thể được tìm thấy trong biển số xe.

3.2 Ứng dụng cơng nghệ RFID vào chƣơng trình.

Máy đọc thẻ RFID được kết nối với máy chủ qua cổng USB yêu cầu máy cài Driver điều khiển thiết bị (Sẽ được đính kèm chương trình).

Cài đặt đặt RFID vào chương trình:

Chương trình cần được sử dụng thư viện:

“AxInterop.VITAMINDECODERLib.dll”. Cài đặt chương trình:

- Thêm một serialPort từ Tools Box. - Mã chương trình.

- Sự kiện nút bấm kết nối máy đọc thẻ RFID qua cổng COM private void btnRFID_Click(object sender, EventArgs e) { if (portstatus == 0) { try { btnRFID.Text = "Ngắt kết nối"; labelX9.Text = "Đã kết nối, RS232"; labelX9.ForeColor = Color.Red; portstatus = 1; serialPort1.PortName = cbbComPort.Text; serialPort1.Open(); ptbThietLap.Image = Presentation.Properties.Resources.credit_card;

cbbComPort.Enabled = false; } catch { } } else { try {

if (portstatus == 1 && serialPort1.IsOpen) {

btnRFID.Text = "Kết nối";

labelX9.Text = "Ngưng kết nối, RS232"; labelX9.ForeColor = Color.Green; portstatus = 0; serialPort1.Close(); ptbThietLap.Image = Presentation.Properties.Resources.Administrative_Tools; cbbComPort.Enabled = true; } } catch { } } } - Hàm serialPort

{

SerialPort sp = (SerialPort)sender; serialPort1 = (SerialPort)sender;

string indata = serialPort1.ReadExisting(); display(indata);

}

- Hàm hiển thị mã số thẻ lên Text Box

//Ham DlDisplay the hien du lieu khi doc RS232 private delegate void DlDisplay(string s); (adsbygoogle = window.adsbygoogle || []).push({});

private void display(string s) {

if (txtMaSoThe.InvokeRequired) {

DlDisplay sd = new DlDisplay(display); txtMaSoThe.Invoke(sd, new object[] { s }); } else { txtMaSoThe.Clear(); txtMaSoThe.Text = s; } }

3.3 Giao tiếp với cổng chắn

Phương thức giao tiếp truyền nhận dữ liệu giữa phần mềm và cổng chắn là truy xuất trực tiếp thông qua cổng COM. Khi máy chủ truyền tín hiệu 1 thì cổng chắn mở, truyền tín hiệu 2 thì cổng chắn đóng.

Và đây là đoạn chương trình truyền nhận dữ liệu giữa máy chủ và cổng chắn: private void updatePorts()

{

string[] ports = SerialPort.GetPortNames(); foreach (string port in ports)

{

cbbBarrier.Items.Add(port); }

}

private SerialPort ComPort = new SerialPort();

private void connect() {

bool error = false;

if (cbbBarrier.SelectedIndex != -1) {

ComPort.PortName = cbbBarrier.Text; ComPort.BaudRate = 9600;

ComPort.Parity = (Parity)Enum.Parse(typeof(Parity), "None"); ComPort.DataBits = 8; ComPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), "1"); try { ComPort.Open(); }

catch (UnauthorizedAccessException) { error = true; } catch (System.IO.IOException) { error = true; }

if (error) MessageBox.Show(this, "Không thể kết nối đến cổng chắn", "Kết nối cổng chắn", MessageBoxButtons.OK, MessageBoxIcon.Stop);

} else {

MessageBox.Show("Chọn cổng chắn để kết nối", "Cấu hình thơng số cổng chắn", MessageBoxButtons.OK, MessageBoxIcon.Stop); } if (ComPort.IsOpen) { btnBarrier.Text = "Ngắt kết nối"; cbbBarrier.Enabled = false; } }

private void disconnect() {

ComPort.Close();

btnBarrier.Text = "Kết nối"; cbbBarrier.Enabled = true; }

private void sendData(int dataSTT) { if (ComPort.IsOpen) { ComPort.Write(dataSTT.ToString()); } else

{

MessageBox.Show("Kết nối tới cổng chắn đã đóng!", "Cổng chắn", MessageBoxButtons.OK, MessageBoxIcon.Stop);

} }

3.4 Giới thiệu hệ thống giữ xe tự động 3.4.1 Chức năng chính 3.4.1 Chức năng chính

Hệ thống giữ xe tự động cho phép tự động: (adsbygoogle = window.adsbygoogle || []).push({});

- Phát hiện, nhận dạng biển số xe thông qua camera.

- Chụp ảnh biển số xe của khách ra vào và lưu vào cơ sở dữ liệu.

- Đọc mã số thẻ khi khách quét thẻ qua máy đọc thẻ RFID và truy xuất dữ liệu từ máy chủ.

- Lưu lại thông tin biển số xe vào hoặc ra thông qua công nghệ phát hiện và nhận dạng các kí tự trên biển số xe.

- Mở cổng chắn cho xe qua khi thỏa mãn đầy đủ yêu cầu của hệ thống.

- Thông báo cho khách các trường hợp lỗi phát sinh lên bảng thông báo điện tử để khách nhanh chóng có biện pháp xử lý kịp thời.

Quá trình thực hiện chỉ diễn ra trong vịng 2 đến 5s. Mơ hình hệ thống được mô tả như sau:

3.4.2 Mô tả các thiết bị cần có trong hệ thống

Sơ đồ 3.1. Sơ đồ hệ thống giữ xe tự động có cửa vào và ra khác vị trí

Ở mỗi cổng ra và vào sẽ có những thiết bị sau đây:

- 1 máy chủ dùng để truy xuất thông tin từ mã số thẻ của khách ra vào bãi giữ xe. Cũng như dùng để lưu trữ thông tin xe ra vào bãi giữ xe qua đó có thể thống kê số lượng xe có trong bãi, số lượng xe được ra vào trong ngày, tuần, tháng, từ ngày này đến ngày kia.

- 1 đầu đọc thẻ RFID dùng để đọc thông tin trên thẻ của khách hàng khi khách ra hoặc vào bãi giữ xe.

- 1 Camera dùng để tự động phát hiện ra biển số xe, chụp ảnh và nhận dạng thông tin trên biển số xe.

- 1 cổng chắn để điều tiết luồng lưu thông từng xe trong quá trình ra vào cổng của bãi giữ xe.

- 1 bảng thông báo điện tử đèn led và bộ loa dùng để thơng báo các tình huống trong quá trình khách ra vào bãi giữ xe để khách hoặc nhân viên quản lý kịp thời xử lý.

- Các thiết bị phụ khác như bậc giảm tốc, rào chắn phân luồng… Dùng để định vị trí xe ra vào bãi giữ xe làm cho khoảng cách camera đến biển số xe theo đúng chuẩn của hệ thống nhằm tránh trường hợp sai xót.

- 2 máy chủ ở 2 đầu ra vào được kết nối với nhau qua mạng Lan để trao đổi thông tin xe ra vào một cách nhanh nhất.

3.4.3 Xây dựng cơ sở dữ liệu

Qua yêu cầu hoạt động của hệ thống giữ xe tự động chúng tôi đã xây dựng lên cơ sở dữ liệu đủ để đáp ứng các yêu cầu lưu trữ thơng tin mà hệ thống cần có.

Hình 3.2. Cơ sở dữ liệu

- Cơ sở dữ liệu gồm các bảng sau đây:

+ Bảng TaiKhoan: Dùng để lưu trữ thông tin của người quản lý hệ thống gồm các thông tin sau:

. MaTaiKhoan: Mỗi người quản lý sẽ có một mã tài khoản riêng. . TaiKhoan: Tên để đang nhập vào hệ thống.

. MatKhau: Mật khẩu dùng để đăng nhập vào hệ thống. . HoTen: Họ tên của người quản trị.

. DiaChi: Địa chỉ của người quản trị.

. DienThoai: Số điện thoại của người quản trị. . Hinh: Hình ảnh của người quản trị.

. NgaySinh: Ngày tháng năm sinh của người quản trị.

. TinhTrang: Trạng thái tài khoản của người quản trị được hoạt động hay không. + Bảng NguoiDung: Dùng để lưu trữ thông tin của người sử dụng:

. MaNguoiDung: Đây cũng chính là mã số thẻ dùng để phân biệt người dùng khi xe ra vào bãi giữ xe.

. Ho: Họ và tên đệm của người dùng. . Ten: Ten người dùng. (adsbygoogle = window.adsbygoogle || []).push({});

. NgaySinh: Ngày tháng năm sinh của người dùng. . DiaChi: Địa chỉ của người dùng.

. SoDienThoai: Số điện thoại của người dùng. . Email: Thư điện tử của người dùng.

. MaLoai: Mã loại thẻ của người dùng được quy định ở bảng LoaiThe. . TienDu: Số tiền còn lại của người dùng, dùng để trả phí ra vào bãi giữ xe.

. TrangThai: Tình trạng hoạt động của người dùng. Quy định người dùng được

hoạt động hay không.

+ Bảng NapTien: Dùng để quản lý quá trình nạp tiền vào tài khoản của người

dùng và gồm những thông tin sau:

. MaNguoiDung: Được liên kết từ bảng NguoiDung

. ThoiGianNap: Dùng để ghi lại thời mỗi lần nạp tiền của mỗi Mã người dùng.

. SoTien: Số tiền mỗi lần nạp của người dùng và số tiền này được cập nhật vào

TienDu bảng NguoiDung.

+ Bảng LoaiThe: Dùng để quy định loại thẻ của người dùng, phân biệt các loại thẻ và giá tiền phải tra khi gửi xe.

. MaLoai: Được kết nối với MaLoai từ bảng NguoiDung. Mỗi loại thẻ có mỗi mã loại khác nhau.

. GiaGuiXe: Là giá tiền mà loại thẻ đó phải trả trong mỗi lần gửi xe.

+ Bảng CapNhatGiaGui: Dùng để quy định lại giá tiền mà mỗi loại thẻ phải trả

khi ra vào bãi gửi xe.

. MaLoai: Được kết nối với bảng LoaiThe.

. NgayCapNhat: Dùng để ghi lại thời gian mỗi lần cập nhật giá tiền của mỗi loại thẻ.

. GiaGuiXe: Là giá tiền mà loại thẻ đó phải trả trong mỗi lần gửi xe.

+ Bảng GuiXe: Dùng để lưu trữ thông tin ra vào bãi giữ xe của người dùng.

. MaNguoiDung: Được liên kết từ bảng NguoiDung và được truy xuất khi người dùng quét thẻ lên máy đọc RFID để truy xuất tồn bộ thơng tin bên bảng NguoiDung của người dùng mang mã số thẻ này.

. GioVao: Được hệ thống lưu lại khi xe vào bãi.

. MaTaiKhoanVao: Là mã tài khoản người quản trị lúc xe vào. . GioRa: Được cập nhật sau khi xe ra khỏi bãi giữ xe.

. MaTaiKhoanRa: Là mã tài khoản người quản trị khi xe ra.

. BienSoXe: Được hệ thống lưu lại khi xe vào và dùng để so sánh khi xe ra. . HinhBienSoXe: Được hệ thống chụp lại khi xe vào dùng để so sánh khi xe ra.

. GiaGuiXe: Được truy xuất dựa vào mã loại thẻ và giá gửi dùng để thanh tồn

tiền phí phải trả.

. TrangThai: Dùng để phân biệt xe đang ở trong bãi hay ở ngoài bãi giữ xe. .GhiChu: Dùng để ghi lại nhưng thông tin cần lưu ý.

Các bảng được ràng buộc với nhau bằng các khóa như trên hình vẽ.

3.4.4 Hoạt động của hệ thống giữ xe tự động (adsbygoogle = window.adsbygoogle || []).push({});

Giả lập hệ thống được lắp đặt ở một trường Đại học, mỗi nhân viên, sinh viên đều có một thẻ mifare (thẻ từ) với một mã số phân biệt và một tài khoản cá nhân để tiện thanh toán.

3.4.4.1 Tại cửa vào

- Khi khách hàng đến cổng bãi giữ xe sẽ đi vào luồng vào có bậc giảm tốc dùng để cố định vị trí của xe vào đúng tầm hoạt động của Camera và đầu đọc thẻ RFID.

- Sau đó khách hàng dùng thẻ quét qua máy đọc thẻ RFID để máy đọc thẻ lấy thơng tin là mã số trên thẻ sau đó được gửi về máy chủ.

- Từ mã số thẻ đó máy chủ truy xuất thơng tin chủ sở hữu và kết hợp với thông tin nhận dạng biển số xe từ camera gửi về, máy chủ thực hiện lưu vào cơ sở dữ liệu thông tin biển số xe, thời gian vào bãi, hình ảnh chụp được. Và thông tin này được truy cập tự do từ máy chủ của cổng ra.

- Quá trình lưu lại thơng tin xe vào bãi thành cơng thì máy chủ bắt đầu phát tín hiệu ra bảng thơng báo điện tử và âm thanh trên loa cho khách đi qua cổng chắn đồng thời cổng chắn được mở lên để cho khách đi qua.

- Ở cổng chắn có bộ cảm biến để nhận biết xe đã đi qua cổng chắn hẳn hay chưa để đóng cổng chắn.

- Sau khi cổng chắn đóng lại máy chủ phát tín hiệu cho xe tiếp theo vào vị trí bằng bảng thơng báo và âm thanh trên loa.

- Quá trình vào bãi xe của khách diễn ra liên tục qua các quá trình như trên.

3.4.4.2 Tại cửa ra

- Khi khác thực hiện việc lấy xe từ bãi giữ xe và bắt đầu đi ra qua cổng ra của hệ thống.

- Máy chủ của cổng ra được nhận thông tin xe vào từ máy chủ ở cổng vào thông qua cơ sở dữ liệu chung đã được lưu lại.

- Khi khách ra tiến vào cổng ra dừng lại tại bậc giảm tốc dùng để cố định vị trí xe trong tầm hoạt động của camera và máy đọc thẻ RFID.

- Sau khi khách hàng quét thẻ qua máy RFID để máy đọc thẻ lấy thông tin là mã số thẻ, mã số này được gửi về máy chủ sau đó máy chủ thực hiện tìm kiếm thơng tin xe đã vào trong bãi từ máy chủ ở cổng vào.

- Camera thực hiện phát hiện ra biển số xe và chụp hình nhận dạng để lấy thơng tin biển số xe để so sánh với dữ liệu xe vào được truy xuất từ cơ sở dữ liệu.

- Nếu thông tin biển số xe và mã số thẻ trùng khớp máy chủ sẽ thực hiện tính tốn số tiền phải trả dựa vào thời gian khách ra. Và mọi thông tin về thời gian ra và số tiền phải trả được lưu lại hệ thống, máy chủ thực hiện trừ tiền trong tài khoản của khách hàng.

- Sau khi quá trình thực hiện xong máy chủ sẽ phát tín hiệu thơng báo lên bảng điện tử và loa để cho khách hàng ra đồng thời cổng chắn sẽ mở để khách hàng đi ra.

- Ở cổng ra thanh chắn cũng có bộ cảm biến giống như ở cổng vào, sau khi khách ra hồn tồn cổng ra sẽ đóng lại và trả thông tin về máy chủ.

- Máy chủ sẽ phát ra tín hiệu sẵn sàng để mời xe tiếp theo vào vị trí.

- Q trình ra bãi xe của khách sẽ được liên tục diễn ra theo tuần tự như trên.

3.4.5 Chƣơng trình đã xây dựng 3.4.5.1 Giao diện chính

Hình 3.3. Giao diện chính của chương trình

Giao diện chính sẽ hiển thị tên người quản lý và các nút chức năng dùng để kết nối với các thiết bị Camera, cổng chắn, máy đọc thẻ RFID, và các chức năng phụ khác.

Giao diện chức năng chính của chương trình là khi người dùng qt thẻ lên máy đọc thẻ RFID, thông tin sẽ được truy xuất từ máy chủ và hiển thị lên trên giao diện chính các thơng tin được hiển thị bao gồm: Mã số thẻ, tên chủ xe, loại thẻ, thời gian vào, thời gian ra, mã tài khoản, biển số xe, đơn giá và thành tiền phải thanh tốn, và ơ nhập biển số xe cho người quản lý nếu biển số xe không thể được nhận dạng bằng camera.

 Ảnh biển số được chụp từ khoảng cách 0.5 – 2m tính từ vị trí đặt camera đến biển số xe.

 Định dạng ảnh (jpg, bmp, tif, gif, png, ppm, pgm).  Kích thước ảnh chuẩn 640x480 pixel.

 Hướng chụp từ máy ảnh (hay camera) so với biển số xe trong khoảng 0 đến 45 độ.

3.4.5.2 Quản lý ngƣời dùng

Hình 3.4. Giao diện quản lý người dùng

Chức năng cho phép người quản trị thêm, sửa, xóa thơng tin người dùng gồm: mã người dùng, họ, tên, ngày sinh, địa chỉ, mã loại, số điện thoại, tiền dư, email, trạng thái(hoạt động hay ngừng). (adsbygoogle = window.adsbygoogle || []).push({});

3.4.5.3 Quản lý ngƣời quản lý hệ thống

Hình 3.5. Giao diện quản lý người quản lý hệ thống

Chức năng cho phép người quản trị thêm, sửa, xóa thơng tin người dùng gồm: mã tài khoản, họ tên, tài khoản, mật khẩu, ngày sinh, địa chỉ, số điện thoại, trạng thái (hoạt động hay ngừng) và chức năng chọn hình đại diện cho người quản lý.

3.4.5.4 Quản lý nạp tiền

Chức năng cho phép người dùng nạp thêm tiền vào hệ thống gồm: mã tài khoản,

Một phần của tài liệu Báo cáo nghiên cứu khoa học hệ thống giữ xe tự động (Trang 55)