Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Parking WiFi One-Camera RFID LPR

Hệ thống giữ xe thông minh dùng 1 ESP32-CAM, 1 NodeMCU/ESP8266 + RC522 + servo, và laptop chạy YOLO + PaddleOCR offline. Khi chạy thật, ESP32-CAM và NodeMCU giao tiếp với laptop hoàn toàn qua WiFi; USB chỉ dùng lúc nạp firmware.

Tính năng chính

  • Một camera dùng chung cho cổng vào/ra.
  • RFID quyết định hướng xử lý:
    • UID chưa có trong database laptop → xe vào → chụp biển số → lưu UID + biển số.
    • UID đã có trong database laptop → xe ra → chụp/OCR lại biển số → so khớp → xoá record nếu hợp lệ.
  • YOLOv8 detect/crop biển số, PaddleOCR đọc biển số offline.
  • SQLite lưu phiên gửi xe và lịch sử sự kiện.
  • ESP8266 lưu hàng đợi thẻ RFID, nên quét thẻ xong có thể lấy thẻ ra ngay.
  • Servo safe boot: không tự quay khi cấp nguồn, tự detach sau khi mở/đóng để tránh kẹt/rít.

Kiến trúc

RFID card
   ↓
NodeMCU/ESP8266 + RC522 + Servo  ← HTTP/WiFi →  Laptop Python app
                                                 ↓
ESP32-CAM WiFi camera            ← HTTP/WiFi →  YOLO + PaddleOCR
                                                 ↓
                                           SQLite database

Phần cứng

  • ESP32-CAM AI Thinker 2MP OV2640.
  • NodeMCU ESP8266 / ESP8266MOD.
  • RC522 RFID reader.
  • Servo SG90/MG90S hoặc tương đương.
  • Nguồn tổ ong + buck 5V cho servo/NodeMCU nếu chạy độc lập.
  • Laptop Windows chạy Python.

Đấu dây NodeMCU

RC522:

RC522 NodeMCU
SDA/SS D2
RST D1
SCK D5
MISO D6
MOSI D7
3.3V 3V3
GND GND

Servo:

Servo Nối vào
Đỏ 5V buck/nguồn ngoài
Nâu/đen GND buck/nguồn ngoài
Cam/vàng D4 NodeMCU

Bắt buộc nối chung GND:

GND nguồn ngoài/buck ↔ GND NodeMCU ↔ GND servo ↔ GND RC522

RC522 chỉ dùng 3.3V, không cấp 5V vào RC522.

Cài đặt trên Windows

Máy mới chỉ cần có Arduino IDE. Giải nén source rồi chạy:

00_RUN_ME_FIRST.bat

Script sẽ cài/tạo:

  • Python 3.11 x64 nếu chưa có.
  • .venv.
  • NumPy 1.26.4, OpenCV, Torch CPU, Ultralytics, PaddlePaddle 3.2.2, PaddleOCR 3.6.0.
  • Runtime flags chống lỗi OpenMP/Paddle trên Windows.

Nếu Arduino IDE chưa có board core/libraries, chạy thêm:

01_SETUP_ARDUINO_BOARDS_AND_LIBS.bat

Cấu hình WiFi/IP

  1. Copy .env.example thành .env.
  2. Sửa .env:
CAMERA_BASE_URL=http://192.168.1.60
BOARD_BASE_URL=http://192.168.1.61
  1. Sửa WiFi/IP trong firmware trước khi nạp:
firmware/esp32_cam_wifi_capture/wifi_config.h
firmware/board_rfid_servo_esp8266_wifi/wifi_config.h

Không commit mật khẩu WiFi thật lên GitHub.

Nạp firmware

ESP32-CAM

Mở Arduino IDE và nạp:

firmware/esp32_cam_wifi_capture/esp32_cam_wifi_capture.ino

Board thường dùng: AI Thinker ESP32-CAM. Sau khi nạp, tháo IO0-GND nếu có, reset lại camera, rồi cấp nguồn bằng sạc dự phòng/5V.

NodeMCU/ESP8266

Mở Arduino IDE và nạp:

firmware/board_rfid_servo_esp8266_wifi/board_rfid_servo_esp8266_wifi.ino

Board: NodeMCU 1.0 (ESP-12E Module). Khi nạp, nên rút RC522/servo nếu upload khó.

Test nhanh

test_wifi_camera.bat

Chụp ảnh từ ESP32-CAM, detect/crop biển số, OCR và in kết quả.

test_wifi_board.bat

Kiểm tra NodeMCU + RC522, quét thẻ để xem UID.

test_wifi_servo.bat

Gọi endpoint mở servo trên NodeMCU.

Chạy hệ thống

run_wifi_parking.bat

Tuỳ chọn không OCR lúc xe ra:

run_wifi_parking_no_exit_ocr.bat

URL debug hữu ích

Camera status : http://<CAMERA_IP>/status
Camera capture: http://<CAMERA_IP>/capture
Board status  : http://<BOARD_IP>/status
Board card    : http://<BOARD_IP>/pop_card
Board open    : http://<BOARD_IP>/open?dir=IN&plate=TEST&conf=1.00
Servo test    : http://<BOARD_IP>/servo?angle=90&hold=1000
Servo config  : http://<BOARD_IP>/set_servo?closed=40&open=135&min=35&max=135

Cấu trúc thư mục

firmware/    Arduino sketches cho ESP32-CAM và NodeMCU
server/      Python package xử lý LPR, database và WiFi workflow
tools/       Script test/diagnose
models/      YOLO .pt detector
samples/     Ảnh test không chứa dữ liệu cá nhân
captures/    Ảnh runtime, không commit nội dung thật
data/        SQLite database runtime, không commit database thật
logs/        Log runtime

Lưu ý khi đưa lên GitHub

  • Không commit .env, data/*.db, captures/*.jpg, logs/*, .venv/, .tools/.
  • models/license_plate_detector.pt khoảng vài MB, có thể commit được. Nếu thay bằng model lớn hơn 100 MB, hãy dùng Git LFS hoặc hướng dẫn tải riêng.
  • Cấu hình WiFi trong wifi_config.h đang là placeholder. Mỗi máy cần sửa SSID/password trước khi nạp firmware.

Xử lý lỗi thường gặp

  • NumPy 2.x / Torch báo _ARRAY_API not found: chạy fix_numpy2_error.bat.
  • PaddleOCR OpenMP libiomp5md.dll conflict: project đã dùng OCR subprocess/persistent worker. Nếu vẫn lỗi, chạy fix_omp_error.bat.
  • Paddle PIR/oneDNN inference error: dùng PaddlePaddle 3.2.2 như trong requirements; chạy fix_paddle_pir_error.bat.
  • ESP8266 không nạp được qua CH340: rút servo/RC522, đổi cáp USB data, chọn NodeMCU 1.0, upload speed 57600.
  • Servo quay quá tay: chỉnh SERVO_CLOSED_ANGLE, SERVO_OPEN_ANGLE, SERVO_MIN_ANGLE, SERVO_MAX_ANGLE trong wifi_config.h hoặc gọi /set_servo.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages