Skip to content

HyHonCuTe/Parking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚗 Parking Manager

Hệ thống quản lý bãi đỗ xe thông minh với nhận diện biển số tự động (LPR), quản lý thẻ NFC và báo cáo thống kê.

.NET Framework SQL Server License

📋 Tổng quan

Parking Manager là ứng dụng Windows Forms quản lý bãi đỗ xe toàn diện với các tính năng:

  • 🎯 Nhận diện biển số xe tự động (LPR) sử dụng YOLO + ONNX Runtime
  • 📹 Hỗ trợ 4 camera (2 cổng vào + 2 cổng ra) với preview realtime
  • 💳 Quản lý thẻ NFC - Gán thẻ cho xe, kiểm soát vào/ra
  • 💰 Tính phí tự động theo thời gian gửi và loại xe
  • 📊 Báo cáo thống kê doanh thu, lưu lượng xe
  • 👥 Phân quyền người dùng (Admin, Operator, Viewer)
  • 🗄️ Lưu trữ SQL Server với stored procedures

🏗️ Cấu trúc dự án

ParkingManager/
├── 📁 Database/                    # SQL Scripts
│   ├── 01_CreateDatabase.sql       # Tạo database và tables
│   ├── 02_StoredProcedures.sql     # Stored procedures
│   └── 03_SampleData.sql           # Dữ liệu mẫu
│
├── 📁 ParkingManager/              # Source Code
│   ├── 📁 Core/                    # Các module lõi
│   │   ├── Business/               # XuLyLuotGuiXe - Logic nghiệp vụ
│   │   ├── CameraManager/          # QuanLyCamera, CameraStream
│   │   ├── LPR/                    # NhanDienBienSo - ONNX inference
│   │   └── NFC/                    # QuanLyTheNFC - PC/SC reader
│   │
│   ├── 📁 Data/                    # Data Access Layer
│   │   ├── DatabaseHelper.cs       # SQL connection helper
│   │   └── Repositories/           # Repository pattern
│   │       ├── BangGiaRepository.cs
│   │       ├── CameraRepository.cs
│   │       ├── CauHinhRepository.cs
│   │       ├── LuotGuiXeRepository.cs
│   │       ├── NguoiDungRepository.cs
│   │       ├── TheNFCRepository.cs
│   │       └── XeRepository.cs
│   │
│   ├── 📁 Models/                  # Data Models
│   │   ├── BangGia.cs, Camera.cs, CauHinh.cs
│   │   ├── LuotGuiXe.cs, NguoiDung.cs
│   │   ├── TheNFC.cs, Xe.cs
│   │   └── LPR_Result.cs, Face_Result.cs
│   │
│   ├── 📁 UI/                      # Windows Forms
│   │   ├── FormDangNhap.cs         # Đăng nhập
│   │   ├── FormDashboard.cs        # Dashboard chính
│   │   ├── FormCauHinhCamera.cs    # Cấu hình camera
│   │   ├── FormDanhSachXe.cs       # Quản lý xe
│   │   ├── FormQuanLyThe.cs        # Quản lý thẻ NFC
│   │   ├── FormLuotGuiXe.cs        # Lịch sử gửi xe
│   │   ├── FormBangGia.cs          # Quản lý bảng giá
│   │   ├── FormNguoiDung.cs        # Quản lý người dùng
│   │   ├── FormBaoCaoDoanhThu.cs   # Báo cáo doanh thu
│   │   └── FormBaoCaoLuuLuong.cs   # Báo cáo lưu lượng
│   │
│   ├── 📁 Utilities/               # Helper Classes
│   │   ├── PasswordHelper.cs       # PBKDF2 hashing
│   │   ├── ImageHelper.cs          # Xử lý ảnh
│   │   └── Logger.cs               # Ghi log
│   │
│   ├── App.config                  # Configuration
│   └── packages.config             # NuGet packages
│
├── 📁 packages/                    # NuGet packages (local)
└── ParkingManager.sln              # Solution file

💻 Yêu cầu hệ thống

Thành phần Yêu cầu
OS Windows 10/11 (64-bit)
Framework .NET Framework 4.8
Database SQL Server 2016+
IDE Visual Studio 2019/2022
Camera Webcam USB hoặc IP Camera (RTSP)
NFC Reader PC/SC compatible (tùy chọn)

🚀 Cài đặt

Bước 1: Thiết lập Database

  1. Mở SQL Server Management Studio
  2. Kết nối đến SQL Server instance của bạn
  3. Chạy các script theo thứ tự:
-- 1. Tạo database và tables
01_CreateDatabase.sql

-- 2. Tạo stored procedures  
02_StoredProcedures.sql

-- 3. Insert dữ liệu mẫu
03_SampleData.sql

Bước 2: Cấu hình Connection String

Sửa file ParkingManager/App.config:

<connectionStrings>
  <add name="ParkingDB" 
       connectionString="Server=YOUR_SERVER;Database=ParkingDB;Trusted_Connection=True;TrustServerCertificate=True;" 
       providerName="System.Data.SqlClient" />
</connectionStrings>

💡 Thay thế YOUR_SERVER bằng tên SQL Server của bạn (VD: localhost, .\SQLEXPRESS, DESKTOP-ABC)

Bước 3: Model ONNX (LPR)

Đảm bảo 2 file model có trong thư mục bin/Debug/:

  • LP_detector_nano_61.onnx - Phát hiện biển số
  • LP_ocr_nano_62.onnx - Đọc ký tự

⚠️ Lưu ý: Hiện tại project sử dụng placeholder model. Để LPR hoạt động thực tế, cần thay bằng model đã train.

Bước 4: Build và Chạy

Cách 1: Visual Studio

  1. Mở ParkingManager.sln
  2. Nhấn F5 hoặc Ctrl+F5 để build và chạy

Cách 2: Command Line

# Restore packages
nuget restore ParkingManager.sln

# Build
msbuild ParkingManager.sln /p:Configuration=Debug

# Chạy
.\ParkingManager\bin\Debug\ParkingManager.exe

🔐 Tài khoản mặc định

Tài khoản Mật khẩu Vai trò Quyền hạn
admin 123456 Admin Toàn quyền quản lý
operator1 123456 Operator Xử lý vào/ra, xem báo cáo

📖 Hướng dẫn sử dụng

Dashboard chính

Phím tắt Chức năng
F1 Xử lý xe VÀO
F2 Xử lý xe RA
F5 Làm mới danh sách
Esc Đóng form

Menu chức năng

  • 📋 Quản lý

    • Danh sách xe - Quản lý xe đăng ký
    • Quản lý thẻ - Gán/khóa thẻ NFC
    • Lịch sử gửi xe - Tra cứu lượt gửi
  • 💰 Tài chính

    • Bảng giá - Thiết lập giá theo loại xe
    • Báo cáo doanh thu - Thống kê thu nhập
  • 📊 Thống kê

    • Lưu lượng xe - Biểu đồ vào/ra
  • ⚙️ Cấu hình

    • Camera - Thiết lập 4 camera
    • Người dùng - Quản lý tài khoản (Admin)

Cấu hình Camera

Hỗ trợ nhiều loại nguồn:

Loại Ví dụ
USB Webcam 0, 1, 2 (index)
IP Camera RTSP rtsp://admin:password@192.168.1.100:554/stream1
HTTP Stream http://192.168.1.100:8080/video

💲 Bảng giá mẫu

Loại xe Giá/giờ Nửa ngày Cả ngày Qua đêm Tháng
Ô tô 10,000đ 50,000đ 80,000đ 100,000đ 1,500,000đ
Xe máy 3,000đ 15,000đ 25,000đ 30,000đ 200,000đ

📝 Có thể tùy chỉnh trong Quản lý → Bảng giá

🔧 NuGet Packages

Package Version Mục đích
Microsoft.ML.OnnxRuntime 1.21.0 ONNX model inference
OpenCvSharp4 4.10.0 Computer vision
OpenCvSharp4.Extensions 4.10.0 Bitmap conversion
OpenCvSharp4.runtime.win 4.10.0 Native libraries
System.Drawing.Common 9.0.4 GDI+ graphics

🛠️ Kỹ thuật

Mã hóa mật khẩu

  • Thuật toán: PBKDF2 (RFC 2898)
  • Iterations: 10,000
  • Salt: 32 bytes random
  • Hash: 32 bytes

LPR Pipeline

  1. Capture frame từ camera (OpenCvSharp)
  2. Preprocess resize 640x640, letterbox padding
  3. Detect biển số với YOLOv8 ONNX model
  4. Crop vùng biển số
  5. OCR đọc ký tự với CTC decoding

Character Mapping (OCR)

Index: 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Char:  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  G  H  K  L  M  N  P  S  T  U  V  X  Y  Z  0

Multi-threading

  • Mỗi camera stream chạy trên background thread
  • Sử dụng ConcurrentQueue<Mat> để buffer frames
  • UI update qua Control.BeginInvoke()
  • Proper Dispose() cho Mat và Bitmap

📝 Database Schema

Tables chính

Table Mô tả
NguoiDung Tài khoản người dùng
Xe Thông tin xe đăng ký
TheNFC Thẻ NFC
LuotGuiXe Lịch sử gửi xe
BangGia Bảng giá
Camera Cấu hình camera
CauHinh Cấu hình hệ thống
AuditLog Nhật ký hoạt động

🐛 Troubleshooting

Lỗi kết nối database

❌ Login failed for user 'xxx'

→ Kiểm tra connection string và quyền truy cập SQL Server

Lỗi thiếu DLL

❌ Could not load file or assembly 'OpenCvSharp...'

→ Copy thư mục runtimes từ packages vào bin/Debug

Camera không hiển thị

→ Kiểm tra URL camera trong Cấu hình → Camera

📄 License

MIT License - Copyright © 2024

👨‍💻 Phát triển

Dự án được phát triển với sự hỗ trợ của GitHub Copilot.


Parking Manager - Giải pháp quản lý bãi đỗ xe thông minh 🚗

About

Parking

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published