1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án tốt nghiệp CNKT Điện tử viễn thông: Thiết kế và thi công giám sát bãi giữ xe máy chung cư

102 8 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế và thi công giám sát bãi giữ xe máy chung cư
Tác giả Nguyễn Đăng Bảo Long, Lê Nhật Quang
Người hướng dẫn ThS. Nguyễn Ngô Lâm
Trường học Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Chuyên ngành Công nghệ kỹ thuật Điện tử - Viễn thông
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 102
Dung lượng 11,41 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN (15)
    • 1.1. GIỚI THIỆU (15)
    • 1.2. TÍNH CẤP THIẾT CỦA ĐỀ TÀI (15)
    • 1.3. MỤC TIÊU NGHIÊN CỨU (16)
    • 1.4. NHIỆM VỤ NGHIÊN CỨU (17)
    • 1.5. ĐỐI TƯỢNG NGHIÊN CỨU (17)
    • 1.6. PHƯƠNG PHÁP NGHIÊN CỨU (17)
    • 1.7. BỐ CỤC ĐỒ ÁN (17)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT LIÊN QUAN (18)
    • 2.1. TỔNG QUAN VỀ CƠ CHẾ NHẬN DIỆN CỦA YOLO (18)
      • 2.1.1. Định nghĩa YOLO (18)
      • 2.1.2. Cách thức ứng dụng và training YOLO (20)
        • 2.1.2.1. Giới thiệu về Google Colab (20)
        • 2.1.2.2. Làm việc với Google Colab (21)
        • 2.1.2.3. Train mô hình YOLOv8 với Google Colab (22)
      • 2.1.3. Ứng dụng vào việc nhận diện biển số (23)
    • 2.2. TỔNG QUAN VỀ OPTICAL CHARACTER RECOGNITION (OCR) 10 1. Định nghĩa Optical Character Recognition (OCR) (24)
      • 2.2.2. Ứng dụng OCR vào việc nhận diện ký tự (24)
    • 2.3. TỔNG QUAN VỀ FIREBASE (25)
    • 2.4. TỔNG QUAN VỀ CHUẨN GIAO TIẾP UART (26)
    • 2.5. TỔNG QUAN VỀ CÁC PHẦN MỀM HỖ TRỢ LẬP TRÌNH (28)
      • 2.5.1. Phần mềm Arduino IDE (28)
      • 2.5.2. Phần mềm Visual Studio Code (29)
      • 2.5.3. Phần mềm Kodular (30)
    • 2.6. CƠ SỞ LÝ THUYẾT PHẦN CỨNG (32)
      • 2.6.1. Webcam Micro Rapoo XW180 [1] (32)
      • 2.6.2. Cảm biến cháy Module IR Flame Sensor [2] (33)
      • 2.6.3. Cảm biến dòng ACS712 20A [3] (35)
      • 2.6.4. Cảm biến vật cản hồng ngoại [4] (36)
      • 2.6.5. Động cơ Servo SG90 [5] (38)
      • 2.6.6. Chuông Buzzer [6] (39)
      • 2.6.7. Led 2 chân [7] (40)
      • 2.6.8. Module relay 5V [8] (41)
      • 2.6.9. Vi xử lý ESP32 [9] (43)
  • CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG (46)
    • 3.1. YÊU CẦU VÀ SƠ ĐỒ KHỐI HỆ THỐNG (46)
      • 3.1.1. Yêu cầu của hệ thống (46)
      • 3.1.2. Sơ đồ khối và chức năng mỗi khối (46)
      • 3.1.3. Hoạt động của hệ thống (47)
    • 3.2. THIẾT KẾ PHẦN CỨNG (48)
      • 3.2.1. Thiết kế khối cảm biến cháy, quá dòng (48)
        • 3.2.1.1. Cảm biến cháy (48)
        • 3.2.1.2. Cảm biến quá dòng (50)
      • 3.2.2. Thiết kế khối cảm biến đậu xe (51)
      • 3.2.3. Thiết kế khối nút nhấn (52)
      • 3.2.4. Thiết kế khối chấp hành (53)
        • 3.2.4.1. Khối cơ cấu servo (53)
        • 3.2.4.2. Khối cơ cấu chuông (55)
        • 3.2.4.3. Khối cơ cấu hiển thị (56)
        • 3.2.4.4. Khối Relay (57)
      • 3.2.5. Thiết kế khối xử lý trung tâm (58)
      • 3.2.6. Thiết kế khối nguồn (60)
    • 3.3. THIẾT KẾ PHẦN MỀM VÀ LƯU ĐỒ GIẢI THUẬT (62)
      • 3.3.1. Thiết kế chương trình cho nhận diện biển số (62)
      • 3.3.2. Thiết kế chương trình để giao tiếp, vận hành hệ thống (66)
      • 3.3.3. Thiết kế giao diện người dùng (71)
        • 3.3.3.1 Thiết kế giao diện App người dùng (71)
        • 3.3.3.2. Thiết kế giao diện GUI giám sát (76)
      • 3.3.4. Thiết kế phần IoT (Firebase) (77)
  • CHƯƠNG 4: KẾT QUẢ THỰC HIỆN HỆ THỐNG VÀ NHẬN XÉT (79)
    • 4.1. KẾT QUẢ THỰC HIỆN PHẦN CỨNG (79)
    • 4.2. KẾT QUẢ THỰC HIỆN PHẦN MỀM (81)
      • 4.2.1. Giao diện GUI giám sát (81)
      • 4.2.2. Giao diện App người dùng (83)
      • 4.2.3. Giao diện lưu trữ dữ liệu Firebase (88)
    • 4.3. KẾT QUẢ TỔNG QUAN TOÀN HỆ THỐNG (90)
  • CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (97)
    • 5.1. KẾT LUẬN TỔNG QUAN (97)
    • 5.2. ƯU ĐIỂM VÀ HẠN CHẾ (97)
      • 5.2.1. Ưu điểm (97)
      • 5.2.2. Hạn chế (97)
    • 5.3. HƯỚNG PHÁT TRIỂN (98)
  • TÀI LIỆU THAM KHẢO (99)
  • PHỤ LỤC (101)

Nội dung

Ở đồ án tốt nghiệp lần này, nhóm sẽ quyết định thiết kế và thi công một bãi giữ xe máy dành riêng cho chung cư, nhóm quyết định tìm hiểu các kiến thức cũng như là nghiên cứu các quá tr

TỔNG QUAN

GIỚI THIỆU

Việt Nam là một trong những quốc gia có mật độ xe máy cao nhất thế giới Theo thống kê của Tổng cục Đường bộ Việt Nam, tính đến cuối năm 2020, cả nước có khoảng 49,5 triệu xe máy đăng ký lưu hành Số lượng này không ngừng tăng theo thời gian, đặc biệt tại các thành phố lớn như Hà Nội và TP.HCM

Xe máy đã trở thành phương tiện giao thông chính cho đa số người dân Việt Nam Xe máy không chỉ là phương tiện di chuyển hàng ngày mà còn là một đầu tư đáng kể và một phần không thể thiếu trong cuộc sống của nhiều người Đây là phương tiện linh hoạt, tiết kiệm và phổ biến, giúp người dân di chuyển dễ dàng trong các khu vực đô thị và nông thôn Vậy nên mà việc bảo vệ xe máy luôn là mối quan tâm sâu sắc của các chủ sở hữu

Trên thực tế, tình hình an ninh tại các bãi giữ xe chung cư vẫn và đang tồn tại rất nhiều thử thách và thực trạng cần được quan tâm Trong nhiều trường hợp, các bãi giữ xe chung cư chỉ được trang bị một số camera an ninh hạn chế hoặc không có camera hoàn toàn Điều này tạo ra một môi trường thuận lợi cho các hoạt động phạm pháp như trộm cắp xe, mất cắp tài sản cá nhân và xâm nhập trái phép Thứ hai, việc kiểm soát và quản lý lối vào và ra khỏi bãi giữ xe chưa đạt hiệu quả Trong nhiều trường hợp, không có sự kiểm soát nghiêm ngặt hoặc không có hệ thống quản lý thông minh để theo dõi và ghi lại thông tin xe ra vào Điều này dẫn đến việc người ngoài có thể dễ dàng tiếp cận các khu vực bãi xe và thực hiện các hành vi phạm pháp mà không gặp khó khăn.

TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Không những thế tình trạng các bãi giữ xe trong chung cư không có phân chia khu vực dành cho các loại xe như xe máy và xe điện có thể gây ra một số vấn đề liên quan đến an toàn và phòng chống cháy nổ

Việc không có phân chia rõ ràng giữa các khu vực đỗ xe cho xe máy và xe điện có thể tạo ra một môi trường không an toàn Xe máy và xe điện thường có các yếu tố khác nhau liên quan đến an toàn cháy nổ Ví dụ, xe điện có hệ thống pin và điện tử bên trong, trong khi xe máy sử dụng nhiên liệu và động cơ đốt trong Một sự cháy nổ hay rò rỉ từ một xe có thể lan ra và ảnh hưởng đến các xe khác và môi trường xung quanh nếu chúng được đỗ cùng nhau mà không có sự phân chia

Thêm vào đó, việc không có sự phân chia khu vực đỗ xe cũng làm cho việc di chuyển và quản lý các xe trở nên khó khăn Việc có quá nhiều xe máy và xe điện đỗ chung một khu vực có thể tạo ra sự hỗn loạn và cản trở giao thông trong trường hợp khẩn cấp Điều này có thể ảnh hưởng đến việc di chuyển của các phương tiện cứu hỏa và cứu thương trong trường hợp xảy ra sự cố

Hình 1.1: Bãi giữ xe tại các chung cư

Chính vì tính cấp thiết này mà không khó để có thể bắt gặp được những mô hình bãi giữ xe thông minh tập trung vào việc bảo vệ tài sản của con người Điển hình ngay trong môi trường giảng đường là đồ án tốt nghiệp “Thiết kế và thi công mô hình bãi giữ xe tại sân bay” của anh chị Nguyễn Minh Tiền và Châu Thị Ngọc Châu ngành Công nghệ kỹ thuật Điện tử - Viễn Thông Hay bên ngoài ta cũng có thể dễ dàng thấy được những bãi giữ xe thông minh của công ty Vinaparking, Vietnamsmart, quản lý thông qua việc nhận diện biển số bằng Camera và kiểm soát thông qua thẻ RFID

Tuy nhiên việc sử dụng thẻ từ cũng mang đến một số rủi ro nhất định Với bối cảnh các bãi giữ xe ngày càng cần được mở rộng dẫn đến việc phải tốn thêm chi phí cho việc mua thêm các thẻ RFID và việc xác minh danh tính của chủ sở hữu cũng rất mất thời gian mỗi khi người sử dụng làm mất thẻ Vì thế mà việc tích hợp thông tin người sử dụng thông qua việc xác minh thẻ CCCD và không cần sử dụng thẻ từ RFID sẽ là một ý tưởng mang lại chiều hướng mới và mang tính hiệu quả cao hơn Với những lý do trên, nhóm quyết định thực hiện đề tài đồ án tốt nghiệp “Thiết kế và thi công giám sát bãi giữ xe máy chung cư” để nghiên cứu cũng như tạo ra những giải pháp để có thể tối ưu, nâng cao chất lượng, tính an toàn và tăng hiệu quả cho việc quản lý và bảo vệ tài sản tại chung cư.

MỤC TIÊU NGHIÊN CỨU

Sử dụng các ngôn ngữ lập trình C, Python để thiết kế phần mềm, truyền nhận dữ liệu lên Firebase cũng như thực hiện việc giao tiếp giữa các thiết bị phần cứng với nhau thông qua các giao thức, nhóm thực hiện mong muốn áp dụng những kiến thức đã học cũng như nghiên cứu thêm các giao thức khác ứng dụng vào cuộc sống thực tế Việc xây dựng hệ thống bãi xe tại chung cư đã giúp cho nhóm thực hiện đề tài có thêm nhiều kiến thức mới cũng như định hướng rõ hơn về ngành nghề mà nhóm đang theo đuổi

NHIỆM VỤ NGHIÊN CỨU

Nghiên cứu về cách thức hoạt động của bãi xe, từ đó phát hiện được những vấn đề còn tồn động nhằm đưa ra các hướng giải quyết kịp thời cho từng vấn đề Thi công phần cứng, mô hình thực tế để kiểm nghiệm những cơ sở lý thuyết đã nghiên cứu được Thống kê các số liệu, chạy thử hệ thống, đánh giá tính chính xác, độ ổn định và khả năng áp dụng vào thực tế của mô hình từ đó rút ra bài học, kinh nghiệm, đưa ra các giải pháp cải tiến, nâng cao khả năng hoạt động mà nhóm thực hiện còn thiếu hoặc chưa thực hiện được.

ĐỐI TƯỢNG NGHIÊN CỨU

• Thiết kế hệ thống giám sát tại bãi giữ xe sử dụng ngôn ngữ Python

• Xây dựng mô hình nhận dạng biển số xe sử dụng YOLO

• Xây dựng ứng dụng điện thoại sử dụng…

• Sử dụng ngôn ngữ C để lập trình điều khiển cho vi điều khiển

• Giao tiếp các bãi xe thông qua Firebase

• Sử dụng ESP32 để điều khiển các thiết bị ngoại vi, giao tiếp với máy tính thông qua giao thức UART và truyền nhận dữ liệu trên Firebase.

PHƯƠNG PHÁP NGHIÊN CỨU

Để thực hiện đề tài, cần phải nắm vững các kiến thức nền tảng về vi điều khiển, quy tắc hoạt động của phần cứng, các module, có nền tảng kiến thức về ngôn ngữ lập trình C, Python, các quy tắc về truyền nhận dữ liệu Kiến thức về thiết kế, thi công hệ thống, chạy thử nghiệm và kiểm thử.

BỐ CỤC ĐỒ ÁN

Chương 1: Tổng quan: Đưa ra tình hình tại các bãi giữ xe chung cư hiện nay, tính cấp thiết của đề tài Từ đó trình bài được những lý do chọn đề tài và ứng dụng thực tế của đề tài trong đời sống

Chương 2: Cơ sở lý thuyết liên quan: Giới thiệu chi tiết cơ sở lý thuyết, các khái niệm sẽ vận dụng trong đề tài

Chương 3: Thiết kế và xây dựng hệ thống: Trình bày được sơ đồ khối hệ thống, thiết kế của từng khối trong hệ thống, lựa chọn linh kiện, tính toán, xây dựng lưu đồ giải thuật và đưa ra cách vận hành hợp lý của hệ thống dựa trên những lý thuyết có sẵn

Chương 4: Kết quả thực hiện hệ thống và nhận xét: Biểu thị, vận hành phần cứng thực tế, đánh giá độ ổn định của hệ thống, những nhược điểm còn tồn tại

Chương 5: Kết luận và hướng phát triển: Nêu ra những kết quả đã thực hiện được và hướng phát triển đề tài trong tương lai

CƠ SỞ LÝ THUYẾT LIÊN QUAN

TỔNG QUAN VỀ CƠ CHẾ NHẬN DIỆN CỦA YOLO

YOLO (You Only Look Once) là một mô hình phát hiện đối tượng trong lĩnh vực học sâu (deep learning) Nó được phát triển bởi nhóm nghiên cứu tại Đại học Washington vào năm 2016 và đã trở thành một trong những phương pháp phổ biến nhất trong việc xác định và phân loại đối tượng trong ảnh và video

Một số điểm nổi bật của YOLO so với các mô hình khác:

• Tính nhanh và thời gian thực: YOLO có khả năng xử lý ảnh và video với tốc độ cao Thay vì áp dụng một mạng neural cho nhiều vùng quan tâm (regions of interest) như các phương pháp truyền thống, YOLO nhìn vào toàn bộ ảnh một lần duy nhất và dự đoán các khung chứa đối tượng cùng với xác suất và lớp tương ứng của chúng Điều này giúp YOLO đạt được tốc độ cao hơn so với các phương pháp khác

• Tính chính xác và phân loại đa lớp: YOLO không chỉ phát hiện các đối tượng mà còn phân loại chúng vào các lớp khác nhau Mô hình YOLO sử dụng một mạng neural để dự đoán xác suất và lớp của mỗi đối tượng trong khung Điều này cho phép YOLO xử lý các tác vụ phát hiện và phân loại đối tượng cùng một lúc

• Độ chính xác không phụ thuộc vào kích thước đối tượng: YOLO có khả năng phát hiện và phân loại đối tượng ở nhiều kích thước khác nhau mà không cần phải thay đổi kích thước ảnh đầu vào Điều này giúp YOLO hoạt động tốt trên các đối tượng có kích thước khác nhau, từ những đối tượng nhỏ như con người đến những đối tượng lớn như ô tô

• Xử lý đối tượng chồng chéo (overlapping objects): YOLO có khả năng xử lý các đối tượng chồng chéo trong ảnh một cách hiệu quả Nó sử dụng một hàm mất mát (loss function) đặc biệt để đo lường sự chồng chéo của các đối tượng và đảm bảo rằng chúng được phát hiện một cách chính xác và không bị bỏ sót

Mạng YOLO được kiến trúc gồm những mạng lưới (Base Network) là mạng tích chập có khả năng trích xuất đặc trưng và những lớp thêm vào (Extra Layers) có khả năng nhận diện vật thể nhờ vào các đặc trưng sau khi trải qua các lớp tích chập Các mạng lưới của YOLO chủ yếu sử dụng các mạng tích chập và các lớp kết nối đầy đủ

Hình 2.1: Cấu trúc của mạng YOLO

Thành phần Darknet Architechture được gọi là base network, đây là mạng tích chập sâu được sử dụng để trích xuất đặc trưng từ ảnh đầu vào Output của base network là một feature map có kích thước 7x7x1024 sẽ được sử dụng làm input cho các Extra layers có tác dụng dự đoán nhãn và tọa độ bounding box của vật thể YOLO bắt đầu làm việc bằng cách chia ảnh thành các lưới ô thường sẽ là 3x3, 7x7, 9x9, Mỗi ô trong lưới sẽ chịu trách nhiệm phát hiện các đối tượng nằm trong phạm vi của nó Việc này giúp xác định vị trí đối tượng một cách cụ thể hơn trong ảnh và tăng độ chính xác

Mỗi ô trong lưới sẽ dự đoán một hoặc nhiều bounding boxes để bao quanh các đối tượng trong ô đó Ngoài ra, mỗi bounding box sẽ được gán một xác suất phân loại cho biết đối tượng trong bounding box là gì Điều này giúp tạo ra một mô hình linh hoạt với khả năng nhận diện nhiều đối tượng khác nhau trong cùng một ảnh Các xác suất phân loại được tính bằng cách kết hợp xác suất phân loại từ tất cả các bounding boxes trong lưới ô Điều này giúp tránh việc tạo ra nhiều bounding boxes trùng lặp cho cùng một đối tượng

Cuối cùng là áp dụng ngưỡng và loại bỏ hộp định vị cùng với quá trình Non-Maximum Suppression (NMS) được áp dụng để loại bỏ các bounding boxes trùng lặp và chỉ giữ lại những bounding boxes tốt nhất Kết quả cuối cùng của YOLO là danh sách các bounding boxes, xác suất phân loại và các thông tin liên quan đến các đối tượng được phát hiện trong ảnh đầu vào

Hình 2.2: Ví dụ trong việc sử dụng YOLO nhận diện đối tượng

2.1.2 Cách thức ứng dụng và training YOLO

2.1.2.1 Giới thiệu về Google Colab

Google Colab (Colaboratory) là một dịch vụ miễn phí của Google giúp người dùng thực hiện các tác vụ liên quan đến lập trình và máy học trong môi trường trực tuyến, cung cấp cả GPU để huấn luyện mô hình

Colab là một dịch vụ miễn phí được cung cấp bởi Google, cho phép bạn sử dụng các tài nguyên máy học, bao gồm cả GPU, mà không cần chi trả bất kỳ chi phí nào

Colab tích hợp sâu với Google Drive, cho phép bạn lưu trữ sổ ghi chú (notebooks) và dữ liệu trực tiếp trong tài khoản Google Drive của bạn

Colab cung cấp môi trường máy học với GPU (Graphics Processing Unit)và TPU (Tensor Processing Unit), giúp gia tăng tốc độ huấn luyện mô hình machine learning

Sổ ghi chú Colab (Colab notebooks) sử dụng ngôn ngữ lập trình Python và kết hợp mã nguồn, văn bản định dạng Markdown, và đồ họa Điều này tạo ra một môi trường tương tác phong phú cho việc thực hiện và chia sẻ công việc lập trình

Colab cho phép bạn chia sẻ sổ ghi chú với người khác qua liên kết và hỗ trợ hợp tác trực tuyến nhanh chóng

Colab không chỉ hỗ trợ machine learning mà còn cho các dự án lập trình khoa học dữ liệu, xử lý ảnh, xử lý ngôn ngữ tự nhiên, và nhiều lĩnh vực khác.

Hình 2.3: Giao diện YOLOv8 trong Google Colab

2.1.2.2 Làm việc với Google Colab Để bắt đầu sử dụng Google Colab, đầu tiên hãy mở trình duyệt web và truy cập Google Colab Đảm bảo rằng bạn đã đăng nhập vào tài khoản Google của mình Nếu bạn chưa đăng nhập, Colab sẽ yêu cầu bạn đăng nhập trước khi tiếp tục

Tiếp theo, chọn "File" (Tệp) ở thanh menu, sau đó chọn "New Notebook" (Sổ Ghi Chú Mới) để tạo một sổ ghi chú mới Sau khi tạo sổ ghi chú, bạn có thể đặt tên cho nó bằng cách nhấp vào tiêu đề ở phía trên và nhập tên mong muốn

TỔNG QUAN VỀ OPTICAL CHARACTER RECOGNITION (OCR) 10 1 Định nghĩa Optical Character Recognition (OCR)

Optical Character Recognition (OCR) là một công nghệ cho phép máy tính nhận dạng và chuyển đổi văn bản từ hình ảnh hoặc file PDF thành dữ liệu văn bản có thể chỉnh sửa và tìm kiếm được OCR giúp máy tính "đọc" và hiểu được nội dung của các tài liệu văn bản không chỉ bằng cách nhìn vào các hình ảnh, mà còn bằng cách xử lý và phân tích các ký tự trong hình ảnh đó

Hình 2.7: Ứng dụng của OCR trong việc nhận diện ký tự

2.2.2 Ứng dụng OCR vào việc nhận diện ký tự

Công nghệ OCR sử dụng một loạt các thuật toán và kỹ thuật xử lý hình ảnh để nhận dạng các ký tự từ hình ảnh Quá trình OCR bao gồm các bước sau:

Tiền xử lý hình ảnh: Ở bước này, hình ảnh được chuẩn bị và xử lý trước khi tiến hành nhận dạng ký tự Các bước tiền xử lý có thể bao gồm xoay, cắt, điều chỉnh độ tương phản và độ sáng của hình ảnh để tăng cường khả năng nhận dạng

Nhận dạng ký tự: Trong bước này, các thuật toán OCR sẽ phân tích các đặc trưng của các ký tự trong hình ảnh và so khớp với các mẫu ký tự đã được huấn luyện trước Kỹ thuật nhận dạng ký tự có thể sử dụng các phương pháp như nhận dạng mẫu, nhận dạng dựa trên quy tắc, mạng nơ-ron nhân tạo (artificial neural networks) và machine learning

Xử lý kết quả: Sau khi ký tự được nhận dạng, quá trình xử lý kết quả có thể bao gồm việc kiểm tra và sửa lỗi chính tả, xử lý các định dạng và cấu trúc văn bản, và chuyển đổi kết quả sang định dạng tương thích với ứng dụng hoặc hệ thống.

TỔNG QUAN VỀ FIREBASE

Là một nền tảng đám mây toàn diện, cung cấp nhiều tính năng như lưu trữ dữ liệu thời gian thực, xác thực người dùng, push notification, hosting web và nhiều tính năng khác

Hỗ trợ tích hợp dễ dàng với các ứng dụng di động thông qua các SDK (Software Development Kit) cho các nền tảng di động phổ biến như Android, IOS và cả Flutter

Cung cấp tính năng realtime database, cho phép đồng bộ dữ liệu thời gian thực giữa các thiết bị IOT và ứng dụng di động, giúp đồng bộ dữ liệu nhanh chóng và chính xác

Cung cấp tính năng lưu trữ tệp (file storage) cho phép lưu trữ và quản lý các tệp dữ liệu như hình ảnh, âm thanh, video,…

Tích hợp với các dịch vụ khác của Google, chẳng hạn như Google Analytics, Google Cloud Messaging (GCM) và Google AdMob, giúp tăng cường khả năng phát triển ứng dụng và phân tích dữ liệu

Hình 2.8: Tổng quan về Firebase

Cơ sở dữ liệu thời gian thực (Realtime Database): là cơ sở dữ liệu NoSQL nơi dữ liệu được lưu trữ dưới dạng tệp JSON lớn dựa trên đám mây quản lý dữ liệu với tốc độ rất nhanh tính bằng mili giây Có thể lưu trữ và đồng bộ dữ liệu giữa các ứng dụng di động, web trong thời gian thực Khi có sự thay đổi hoặc thêm mới trong cơ sở dữ liệu, các thiết bị/ứng dụng sẽ tự động cập nhật

Hình 2.9: Cơ sở dữ liệu Realtime Database

TỔNG QUAN VỀ CHUẨN GIAO TIẾP UART

UART là một giao thức truyền thông phần cứng dùng để giao tiếp nối tiếp không đồng bộ và có thể cấu hình được tốc độ Là một giao thức đơn giản và phổ biến bao gồm hai đường truyền dữ liệu độc lập là TX (truyền) và RX (nhận) Dữ liệu được truyền và nhận qua các đường truyền này dưới dạng các khung dữ liệu (data frame) có cấu trúc chuẩn, với một bit bắt đầu (start bit), một số bit dữ liệu (data bits), một bit kiểm tra chẵn lẻ (parity bit) và một hoặc nhiều bit dừng (stop bit)

Hình 2.10: Khung dữ liệu giao tiếp UART

Là giao thức truyền thông được ứng dụng rộng rãi trong việc thực hiện giao tiếp với các module: Wifi, Arduino, Bluetooth, hoặc là giao tiếp với các vi điều khiển phổ biến mà nhóm đã quyết định lựa chọn sử dụng giao thức truyền thông UART để truyền nhận thông tin giữa máy tính và ESP32

Các thành phần chính của UART bao gồm thiết bị phát, thiết bị thu và tốc độ truyền Thiết bị phát thu thập dữ liệu từ một nguồn, định dạng dữ liệu thành các bit nối tiếp và gửi dữ liệu thông qua chân TX (truyền) Thiết bị thu nhận thông tin qua

13 chân RX (nhận), xử lý dữ liệu nối tiếp đến và chuyển đổi nó thành dữ liệu song song Tốc độ baud quyết định đến tốc độ truyền dữ liệu giữa hai thiết bị phát và thu

Tốc độ Baud: là một tham số cơ bản trong giao tiếp UART dùng để xác định tốc độ truyền nhận dữ liệu Tốc độ baud được chỉ định bằng bit/giây (bps) và biểu thị số bit được truyền trong một giây Trong UART, cả thiết bị phát và thu đều phải có cùng tốc độ truyền để đảm bảo liên lạc thành công

Tầm quan trọng của tốc độ baud là nó ảnh hưởng trực tiếp đến tốc độ truyền dữ liệu Tốc độ truyền cao hơn cho phép truyền dữ liệu nhanh hơn nhưng cũng đòi hỏi sự đồng bộ về thời gian chính xác hơn giữa người gửi và người nhận Mặt khác, tốc độ truyền thấp hơn có thể phù hợp với các ứng dụng mà độ chính xác về thời gian ít quan trọng hơn nhưng lại dẫn đến việc truyền dữ liệu chậm hơn Khi lập trình tốc độ truyền thông thường cho ESP32 là 9600, 115200, 4800 và 57600

Bit bắt đầu: bit bắt đầu duy nhất được truyền ở đầu mỗi khung UART Đường truyền dữ liệu UART thường được giữ ở mức điện áp cao khi nó không truyền dữ liệu Để bắt đầu truyền dữ liệu, UART truyền sẽ kéo đường truyền từ mức cao xuống mức thấp trong một chu kỳ đồng hồ Khi UART nhận phát hiện sự chuyển đổi điện áp cao xuống thấp, nó sẽ đọc các bit trong khung dữ liệu ở tần số của tốc độ truyền

Bit dữ liệu: là thành phần cơ bản của giao tiếp UART vì các bits mang thông tin thực tế được truyền đi Số lượng bit dữ liệu trong khung UART có thể khác nhau, nhưng cấu hình phổ biến và được sử dụng rộng rãi là 8 bit Tuy nhiên, UART hỗ trợ nhiều ký tự kích thước khác nhau, bao gồm cấu hình 7 bit và 6 bit, tùy thuộc vào yêu cầu ứng dụng cụ thể

Bit Parity: ngoài các bit dữ liệu, giao tiếp UART có thể bao gồm một bit chẵn lẻ như một phần của khung dữ liệu Tính chẵn lẻ là một cơ chế kiểm tra lỗi có thể giúp phát hiện lỗi truyền dữ liệu Nếu bit parity là 0 (even parity - parity chẵn), thì tổng số bit 1 trong khung dữ liệu phải luôn là một số chẵn Nếu bit parity là 1 (odd parity - parity lẻ) thì số tổng bit 1 trong khung dữ liệu là một số lẻ Khi bit chẵn lẻ khớp với dữ liệu, UART biết rằng quá trình truyền không có lỗi Nhưng nếu bit chẵn lẻ là 0 và tổng là số lẻ, hoặc bit chẵn lẻ là 1 và tổng số là chẵn, thì UART biết rằng các bit trong khung dữ liệu đã thay đồi

Bit dừng: có thể có một hoặc nhiều bit dừng được gửi sau các bit dữ liệu trong mỗi khung UART Các bits dừng báo hiệu sự kết thúc của byte dữ liệu và dùng để biểu thị kết thúc truyền dữ liệu Cấu hình phổ biến nhất là sử dụng một bit dừng, nhưng trong những trường hợp cần độ tin cậy cao hơn, có thể sử dụng hai bit dừng Độ phân cực của các bits dừng có thể khác nhau, với một số hệ thống sử dụng bit dừng cao và các hệ thống khác sử dụng bit dừng thấp dựa trên cấu hình UART cụ thể

TỔNG QUAN VỀ CÁC PHẦN MỀM HỖ TRỢ LẬP TRÌNH

Arduino IDE là một phần mềm với một mã nguồn mở, được sử dụng chủ yếu để viết và biên dịch mã vào module Arduino Nó bao gồm phần cứng và phần mềm Phần cứng chứa đến 300,000 board mạch được thiết kế sẵn với các cảm biến, linh kiện Phần mềm giúp bạn có thể sử dụng các cảm biến, linh kiện ấy của Arduino một cách linh hoạt phù hợp với mục đích sử dụng

Arduino IDE sử dụng ngôn ngữ lập trình C/C++ rất phổ biến trong giới lập trình Bất kỳ đoạn code nào của C/C++ thì Arduino IDE đều có thể nhận dạng, giúp các lập trình viên thuận tiện trong việc thiết kế chương trình lập cho các bo mạch Arduino

Với việc hỗ trợ đa dạng nhiều loại board mạch khác nhau cũng như tích hợp với hơn 700 thư viện mà nhóm đã chọn phần mềm Arduino IDE trong việc lập trình cho ESP32 giao tiếp với các phần cứng liên quan

Hình 2.15: Giao diện phần mềm Arduino IDE

1) Menu lệnh: dùng để thêm thư viện, lưu, tạo dự án,

2) Kiểm tra chương trình: phần mềm sẽ biên dịch chương trình và thông báo cho người dùng biết chương trình có lỗi hay không

3) Nạp chương trình: nạp chương trình vào vi điều khiển Người dùng cần biên dịch chương trình trước khi thực hiện thao tác nạp chương trình vào vi điều khiển

2.5.2 Phần mềm Visual Studio Code

Visual Studio Code (VS Code) là một trình soạn thảo mã nguồn mở và miễn phí, được phát triển bởi Microsoft Nó được thiết kế để hỗ trợ phát triển ứng dụng trên nhiều nền tảng như Windows, macOS và Linux VS Code là một trong những trình soạn thảo mã nguồn phổ biến nhất và được sử dụng rộng rãi trong cộng đồng phát triển phần mềm

Với việc có thể hoạt động với nhiều nền tảng khác nhau nên VS Code hỗ trợ một loạt ngôn ngữ lập trình phổ biến như JavaScript, TypeScript, Python, C#, Java,

Go, và nhiều ngôn ngữ khác Nó cung cấp các tính năng như kiểm tra cú pháp, gợi ý mã, định dạng mã tự động và gỡ lỗi

VS Code có một cộng đồng phát triển đông đảo và năng động Bạn có thể tìm kiếm hỗ trợ, chia sẻ ý tưởng và tìm kiếm các tài liệu hữu ích trong việc mở rộng và tuỳ chỉnh cho dự án của bản thân

Visual Studio Code là một công cụ mạnh mẽ và linh hoạt cho các nhà phát triển phần mềm Với tính năng đa dạng, khả năng mở rộng và sự hỗ trợ từ cộng đồng, nó đã trở thành một lựa chọn phổ biến cho việc phát triển ứng dụng trên nhiều nền tảng

Hình 2.16: Phần mềm Visual Studio Code

Kodular là một nền tảng phát triển ứng dụng di động dựa trên ngôn ngữ lập trình visual (visual programming), giúp người dùng tạo ra các ứng dụng di động mà không cần biết về việc lập trình truyền thống

Kodular cho phép người dùng thiết kế giao diện ứng dụng bằng cách kéo và thả các thành phần (components) trên giao diện người dùng Các thành phần này có thể là các khung (frames), nút (buttons), hộp văn bản (text boxes), danh sách (lists), và nhiều hơn nữa Người dùng có thể tùy chỉnh các thành phần này bằng cách thay đổi thuộc tính và sự kiện của chúng

Việc lập trình logic của ứng dụng trong Kodular được thực hiện thông qua việc kết nối các khối (blocks) với nhau Mỗi khối đại diện cho một hành động hoặc một phần của logic Người dùng có thể kéo và thả các khối để tạo thành một chuỗi logic hoàn chỉnh cho ứng dụng của mình Kodular cung cấp một số lượng lớn các khối có sẵn để người dùng tạo ra các chức năng như xử lý sự kiện, truy cập vào cơ sở dữ liệu, gửi thông báo và nhiều hơn nữa

Một điểm mạnh của Kodular là khả năng tích hợp các tính năng và dịch vụ bên ngoài vào ứng dụng Người dùng có thể sử dụng các thành phần mở rộng (extensions) để thêm chức năng đặc biệt vào ứng dụng của mình Các thành phần mở rộng này có thể được tạo bởi cộng đồng người dùng Kodular hoặc bởi bên thứ ba

Kodular cũng hỗ trợ việc kiểm thử và xem trước ứng dụng trên các thiết bị di động thông qua ứng dụng companion (Kodular Companion) Điều này cho phép người dùng kiểm tra ứng dụng của mình trong quá trình phát triển và thấy kết quả ngay lập tức trên điện thoại di động

CƠ SỞ LÝ THUYẾT PHẦN CỨNG

Webcam Micro Rapoo XW180 là một thiết bị thu hình nhỏ gọn có thể đáp ứng được cho người dùng Webcam được tích hợp micro cùng với độ phân giải cao nên được sử dụng cho nhiều mục đích từ việc gọi điện trực tiếp cho đến việc học thông qua mạng, … Webcam được thiết kế nhỏ gọn và sử dụng kết nối cổng USB

2.0 cũng như là tương thích với nhiều hệ điều hành, ứng dụng nên được người sử dụng rất ưa chuộng

Hình 2.19: Webcam Micro Rapoo XW180

Bảng 2.1 Bảng thông số kỹ thuật của Webcam Micro Rapoo XW180

STT Thông số Giá trị

2 Kết nối MacOS, ChromeOS, Android 5 trở lên, Win

(https://cellphones.com.vn/webcam-tich-hop-micro-rapoo-xw180-1080p.html)

2.6.2 Cảm biến cháy Module IR Flame Sensor [2]

Cảm biến phát hiện lửa hay Module IR Flame Sensor là một loại module dùng cho việc phát hiện lửa dựa theo nguyên lý hồng ngoại Đây là loại cảm biến thường được sử dụng rộng rãi và thường xuyên do giá thành rẻ mà lại mang đầy đủ chức năng vừa có khả năng phát hiện lửa hoặc nguồn sáng có bước sóng tương đương nhau, đồng thời có độ nhạy cao và tốc độ đáp ứng nhanh, được sử dụng nhiều trong xe chữa cháy, cảm biến lửa, …

Hình 2.20: Module IR Flame Sensor và ký hiệu

Bảng 2.2 Bảng thông số kỹ thuật của Module IR Flame Sensor

STT Thông số Giá trị

5 Đầu ra Analog và Digital 3.3V – 5V DC

6 Bước sóng phát hiện 760nm – 1100nm

Bảng 2.3 Bảng chức năng chân của Module IR Flame Sensor

STT Tên chân Chức năng

Hình 2.21: Sơ đồ mạch Module IR Flame Sensor [10]

Dựa vào sơ đồ mạch phía trên, Module IR Flame Sensor gồm có các photodiode dùng để nhận diện cường đồ ánh sáng, IC LM393 dùng để so sánh hiệu điện thế được cấp từ chân đảo nối với biến trở để điều chỉnh điện áp tham chiếu và chân không đảo được nối với photodiode, nếu điện áp ở chân không đảo > chân đảo thì đầu ra sẽ là mức cao, ngược lại thì đầu ra sẽ là mức thấp

Khi có lửa, photodiode sẽ thu ánh sáng và được phân cực, từ đó điện áp cấp vào chân đảo > điện áp tham chiếu đặt ra ở chân không đảo → đầu ra DO mức thấp

Khi không có lửa, photodiode sẽ không thu ánh sáng và không được phân cực, từ đó điện áp vào chân đảo < điện áp tham chiếu đặt ra ở chân không đảo → đầu ra DO mức cao

Giá trị Analog của chân AO sẽ được lấy trực tiếp từ chân đảo của LM393

Cảm biến dòng điện hay cảm biến dòng ACS712 20A là cảm biến dựa trên hiện tượng hiệu ứng Hall để có thể đo dòng điện DC hoặc AC Cảm biến được sử dụng do có kích thước nhỏ gọn, dễ kết nối với đầu ra là giá trị điện thế tuyến tính theo dòng điện phụ thuộc vào độ nhạy, thích hợp với nhiều ứng dụng cần đo dòng điện cần độ chính xác cao

Hình 2.22: Cảm biến dòng ACS712 20A và ký hiệu

Bảng 2.4 Bảng thông số kỹ thuật của Cảm biến dòng ACS712 20A

STT Thông số Giá trị

Bảng 2.5 Bảng chức năng chân của Cảm biến dòng ACS712 20A

STT Tên chân Chức năng

(https://dientutuyetnga.com/products/acs712-cam-bien-dong-20a)

Hình 2.23: Sơ đồ mạch của cảm biến dòng ACS712 20A [11]

Dựa vào sơ đồ trên, mạch sẽ gồm các chân IP+ và IP- để nối với tải, cảm biến Hall dùng để phát hiện dòng điện chạy trong từ trường từ đó tạo ra điện áp theo tỉ lệ với dòng điện, tín hiệu điện áp sẽ được thông qua bộ lọc và điều chỉnh, phục hồi tín hiệu do điện áp được tạo ra tương đối nhỏ, tiếp đến sẽ qua một mạch khuếch đại đơn để tăng cường tín hiệu điện áp chêch lệch giữa 2 ngõ vào, có một tụ lọc để lọc tín hiệu trước khi qua một mạch khuếch đại không đảo cuối cùng để tăng cường tín hiệu trước khi cho ra giá trị Analog ở đầu cuối VIOUT

2.6.4 Cảm biến vật cản hồng ngoại [4]

Cảm biến vật cản hồng ngoại hay Infrared Obstacle Avoidance Module là một cảm biến hoạt động dựa trên việc thu phát tia hồng ngoại, cảm biến được sử dụng để nhận diệt vật cản bằng ánh sáng của hồng ngoại, với giá thành rẻ cũng như là kích thước nhỏ gọn nên được sử dụng rộng rãi trong thực tế, phục vụ cho nhiều

23 ứng dụng như báo trộm, cửa tự động, … Có thể điều chỉnh độ nhạy thông qua một biến trở trên module cảm biến cùng với ngõ ra dạng digital làm cho cảm biến dễ sử dụng

Hình 2.24: Cảm biến vật cản hồng ngoại và ký hiệu

Bảng 2.6 Bảng thông số kỹ thuật của Cảm biến vật cản hồng ngoại

STT Thông số Giá trị

2 Dòng tiêu thụ 23mA – 43mA

5 Đầu ra Digital – Low khi có vật cản, High khi không có vật cản

Bảng 2.7 Bảng chức năng chân của Cảm biến vật cản hồng ngoại

STT Tên chân Chức năng

(https://hshop.vn/products/cam-bien-vat-can-hong-ngoai-v1-2)

Hình 2.25: Sơ đồ mạch của cảm biến vật cản hồng ngoại [12]

Dựa vào sơ đồ trên có thể thấy mạch sẽ gồm IR led dùng để phát tín hiệu hồng ngoại, photodiode dùng để thu tín hiệu hồng ngoại, một IC LM358 có tác dụng so sánh điện áp giữa đầu đảo và không đảo, đầu đảo được kết nối với một biến trở để điều chỉnh điện áp tham chiếu, đầu không đảo đươc nối với Anode của photodiode

Khi có vật phản xạ lại tia hồng ngoại, photodiode sẽ được phân cực và điện áp trên chân không đảo > điện áp tham chiếu của chân đảo → tín hiệu ra là mức cao

Khi không có vật phản xạ lại tia hồng ngoại, photodiode sẽ không được phân cực và điện áp trên chân không đảo < điện áp tham chiếu của chân đảo → tín hiệu ra là mức thấp Đối với cảm biến có kích hoạt mức thấp thì trình tự sẽ diễn ra ngược lại, chân đảo sẽ được nối với Anode của photodiode và chân không đảo sẽ được nối biến trở

Khi có vật thì điện áp trên chân đảo > điện áp tham chiếu trên chân không đảo → tín hiệu ra là mức thấp

Khi không có vật thì điện áp trên chân đảo < điện áp tham chiếu trên chân không đảo → tín hiệu ra là mức cao

2.6.5 Động cơ Servo SG90 [5] Động cơ Servo SG90 là một động cơ Servo có kích thước nhỏ, với góc quay

180 độ cùng tốc độ phản ứng nhanh, giá thành rẻ khiến cho linh kiện được ưa chuộng trong các dự án mô hình lớn, nhỏ trong thực tế Ngoài ra còn được tích hợp

25 driver điều khiển bên trong nên có thể dùng phương pháp điều khiển độ rộng xung PWM để điều khiển góc quay của động cơ

Hình 2.26: Động cơ Servo SG90 và ký hiệu

Bảng 2.8 Bảng thông số kỹ thuật của Động cơ Servo SG90

STT Thông số Giá trị

Bảng 2.9 Bảng chức năng chân của Động cơ Servo SG90

STT Tên chân Chức năng

(https://dientutuyetnga.com/products/dong-co-servo-sg90)

Chuông Buzzer là loại chuông dùng để báo hiệu có tuổi thọ lâu dài cùng với chất lượng ổn định và hiệu suất cao, giá thành rẻ nên được sử dụng rộng rãi trong thực tế cho nhiều ứng dụng lớn nhỏ như là mạch báo động, …

Hình 2.27: Chuông Buzzer và ký hiệu

Bảng 2.10 Bảng thông số kỹ thuật của Chuông Buzzer

STT Thông số Giá trị

Bảng 2.11 Bảng chức năng chân của Chuông Buzzer

STT Tên chân Chức năng

(https://hshop.vn/products/coi-buzzer-5vdc)

Led 2 chân thường được sử dụng và thấy nhiều trong thực tế do dễ kết nối và lắp đặt, đồng thời giá thành rẻ có thể ứng dụng vào việc hiển thị cho các mô hình lớn nhỏ, làm led quảng cáo, …

Hình 2.28: Led 2 chân và ký hiệu

Bảng 2.12 Bảng thông số kỹ thuật của Led 2 chân

STT Thông số Giá trị

2 Dòng tiêu thụ 10mA – 20mA

Bảng 2.13 Bảng chức năng chân của Led 2 chân

STT Tên chân Chức năng

(https://nshopvn.com/product/led-duc-5mm-xanh-la-xanh-duong-do-trang-vang/)

THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG

YÊU CẦU VÀ SƠ ĐỒ KHỐI HỆ THỐNG

3.1.1 Yêu cầu của hệ thống

Sau quá trình thu thập kiến thức và thực hiện thi công thì hệ thống sẽ có các chức năng sau:

− Hệ thống sẽ nhận diện biển số xe máy và tự động đóng mở rào chắn thông qua camera

− Hệ thống sẽ có các cảm biến để phát hiện các trường hợp cháy và quá dòng

− Hệ thống sẽ có thông báo nếu như xe vào không đúng vị trí loại xe đã đăng ký

− Hệ thống sẽ lưu trữ thông tin dữ liệu khách hàng ở trên Firebase

3.1.2 Sơ đồ khối và chức năng mỗi khối

Hình 3.1: Sơ đồ khối của hệ thống

• Khối camera: khối này sẽ gồm có camera dùng để thu thập dữ liệu hình ảnh biển số xe, nếu có xe vào trong khung hình thì sẽ bắt ảnh của xe và gửi về khối xử lý ảnh

• Khối xử lý ảnh: khối này sẽ gồm có máy tính được liên kết với camera để nhận dữ liệu hình ảnh về, tiếp đến sẽ phát hiện biển số xe, đọc ký tự có trên biển số xe và gửi về khối xử lý trung tâm

• Khối giao diện người dùng: khối này sẽ gồm có ứng dụng trên điện thoại, người dùng có thể sử dụng ứng dụng này để đăng ký dữ liệu biển số xe vào database theo như được hướng dẫn Thông tin sẽ được chuyển tới khối dữ liệu thông qua khối Internet

• Khối dữ liệu: chức năng của khối dữ liệu là thực hiện việc chứa dữ liệu được gửi từ khối giao diện người dùng thông qua khối Internet Ở khối này dữ liệu sẽ được sắp xếp theo cấu trúc của người quản lý đã đặt ra

• Khối Internet: là một khối mạng trung gian dùng cho việc truyền dữ liệu giữa các khối giao diện người dùng, khối dữ liệu cũng như là khối xử lý trung tâm thông qua khối Wifi

• Khối Wifi: là khối mà khối xử lý trung tâm sẽ kết nối, từ đó khối trung tâm sẽ thực hiện việc lấy dữ liệu từ khối dữ liệu thông qua khối Internet

• Khối cảm biến cháy, quá dòng: khối này sẽ bao gồm cảm biến lửa được dùng đễ phát hiện cháy, nếu có thì sẽ gửi tín hiệu về cho khối xử lý trung tâm cũng như là sẽ bao gồm cảm biến dòng điện, giá trị đo được sẽ được gửi về khối xử lý trung tâm mỗi khoảng thời gian nhất định

• Khối cảm biến đậu xe: khối này sẽ gồm có các cảm biến vật cản hồng ngoại, các cảm biến hồng ngoại có tác dụng phát hiện có xe ở tại vị trí đó hay không, nếu có thì sẽ gửi tín hiệu về khối xử lý trung tâm

• Khối nút nhấn: khối này sẽ bao gồm nút nhấn dùng để điều khiển đóng mở servo, nếu còn giữ nút trong 1 khoảng thời gian nhất định thì servo vẫn sẽ mở, ngược lại nếu không giữ nút thì servo sẽ đóng

• Khối chấp hành: khối này sẽ bao gồm 3 thành phần là led, servo và chuông Chuông sẽ kêu khi mà có phát hiện cháy và được khối xử lý trung tâm gửi tín hiệu tới để bật, servo sẽ mở nếu như khối xử lý trung tâm nhận diện đúng xe hoặc là có nhấn giữ nút, led sẽ hiển thị theo loại xe của xe đi vào, nếu vị trí của loại xe đó không có xe thì led vẫn giữ bật sáng cho đến khi có loại xe mới vào, ngược lại thì led sẽ tắt

• Khối xử lý trung tâm: khối này sẽ gồm có vi xử lý trung tâm để có thể nhận tín hiệu từ cảm biến cũng như là dữ liệu từ khối xử lý ảnh và khối dữ liệu để tiến hành so sánh biển số xe, từ đó truyền tín hiệu đến khối cơ cấu để thực hiện nhiệm vụ

• Khối nguồn: khối này sẽ bao gồm bộ nguồn có chức năng cung cấp nguồn điện ổn định cho hệ thống chạy bao gồm các khối như khối xử lý trung tâm, khối nút nhấn, khối cảm biến cháy, quá dòng, khối cảm biến đậu xe và khối chấp hành

3.1.3 Hoạt động của hệ thống

Dưới đây sẽ là chức năng hoạt động của toàn hệ thống sau khi thi công:

− Bước 1: Người dùng sẽ thực hiện việc đăng ký thông tin người dùng cũng như là thông tin biển số xe trên app đã được thiết kế theo hướng dẫn, tất cả thông tin này sẽ được lưu trữ trên Database của Firebase và sẽ được khối xử lý trung tâm thực hiện lấy dữ liệu thông qua mạng Wifi, Internet

− Bước 2: Khi cấp nguồn toàn bộ mạch thì các led sẽ tắt, servo sẽ đóng, giao diện cho để nhận biết biển số xe sẽ được thể hiện thông qua trên màn hình máy tính để theo dõi, quan sát Khi có xe vào tầm nhìn của camera thì biển số xe sẽ được phát hiện và tiến hành xử lý để có thể phát hiện ra các ký tự có trong biển số xe, từ đó biến các ký tự có trong biển số thành 1 chuỗi và gửi về khối xử lý trung tâm theo chuẩn truyền thông UART

− Bước 3: Tiếp đến khối xử lý trung tâm hay ESP32 sẽ có chức năng như sau:

• Đối với khối ESP32 của phần quá trình xe vào thì sẽ chia làm 2 phần, phần đầu tiên sẽ là đo giá trị từ cảm biến dòng mỗi 1s và thực hiện so sánh mỗi 5s, nếu giá trị vượt ngưỡng đặt ra thì sẽ ngắt relay, phần thứ hai sẽ xét đến các cảm biến vật cản hồng ngoại, nếu có xe tại vị trí của cảm biến đó thì sẽ tắt, tiếp đến sẽ xem xét nút nhấn có nhấn giữ nút không, nếu có thì sẽ mở servo, ngược lại thì đóng servo, sau đó sẽ là coi có nhận dữ liệu nối tiếp từ khối xử lý ảnh không, nếu có thì sẽ tiến hành so sánh dữ liệu nhận được với các dữ liệu đã được đăng ký trên Firebase, nếu trùng khớp thì sẽ tiến hành mở servo trong khoảng thời gian nhất định và sẽ bật đèn led tương đương với loại xe, sau khoảng thời gian đó mà không có xe tại vị trí cảm biến tương ứng thì đèn sẽ tiếp tục sáng cho đến khi có loại xe mới vào, ngược lại nếu không có nhận dữ liệu nối tiếp thì sẽ quay trở lại từ đầu

THIẾT KẾ PHẦN CỨNG

3.2.1 Thiết kế khối cảm biến cháy, quá dòng

Chức năng của khối này sẽ là dùng cảm biến để phát hiện xem có hiện tượng cháy hay không, nếu có thì sẽ tiến hành gửi tín hiệu về khối xử lý trung tâm để có thể báo hiệu có sự cố cháy Đối với cảm biến cháy thì trên thị trường hiện nay có rất nhiều cảm biến với đa dạng mẫu mã cũng như là giá thành phù hợp cho mọi tình hình tài chính có thể kể đến như các loại cảm biến MQ hoạt động dựa trên đo nồng độ khí hay các loại cảm biến có thể phát hiện lửa thông qua bước sóng ánh sáng Đối với đồ án lần này thì nhóm sẽ chọn Module IR Flame Sensor Do vừa mang lại hiệu quả kinh tế cũng

35 như là hữu ích về giá trị, đáp ứng đủ nhu cầu của đồ án Module này có khả năng phát hiện ra ánh sáng hoặc lửa có bước sóng như nhau đồng thời được tích hợp cảm biến hồng ngoại YG1006 với độ nhạy cao, ngoài ra còn có biến trở có thể dùng để điều chỉnh độ nhạy sao cho thích hợp với dự án đang làm, có cả 2 ngõ ra là Analog và Digital Đối với kết nối phần cứng thì sẽ sử dụng 3 chân của cảm biến, lần lượt là VCC, GND và DO Module sẽ tiêu thụ nguồn 5V DC để có thể hoạt động nên sẽ tiến hành cấp nguồn tương ứng, dòng tiêu thụ trung bình của module sẽ đạt giá trị 15mA đủ để cho module hoạt động Ở hệ thống này, sẽ sử dụng 2 con module như trên để tăng khả năng giám sát sự cố hỏa hoạn Cho nên việc kết nối sẽ như sau:

− Chân VCC của 2 module sẽ được nối vào nguồn 5V DC

− Chân GND của 2 module sẽ được nối vào GND chung

− Chân DO của module thứ 1 và của module thứ 2 sẽ được nối lần lượt vào chân G2 và G15 của ESP32 Các chân này sẽ gửi tín hiệu digital về cho ESP32 để có thể xử l, bình thường sẽ ở mức cao, nếu có lửa sẽ ở mức thấp

Hình 3.2: Kết nối 2 Module IR Flame Sensor

Khối này sẽ có thực hiện chức năng đo giá trị điện áp và sẽ tiến hành gửi giá trị đo được về khối xử lý trung tâm để thực hiện xử lý và đưa về giá trị dòng điện, dùng để theo dõi giá trị dòng điện có vượt qua ngưỡng đã đặt ra hay chưa

Trên thị trường hiện nay có nhiều loại cảm biến được sử dụng như là cảm biến dòng điện DC/AC Hall 35A hay cảm biến dòng điện ZMCT103C 5A Ở khối này thi nhóm quyết định sử dụng cảm biến dòng ACS712 20A để đo dòng điện chạy qua tải, với tính chất đặc thù của linh kiện cho nên cảm biến này phù hợp với yêu cầu đề tài, không những thế còn có rất là kinh tế và được sử dụng rộng rãi trong nhiều dự án Giá trị dòng đo sẽ dao động từ -20A – 20A Đối với kết nối phần cứng thì cảm biến sẽ có 5 chân lần lượt là VCC, OUT, GND và Ip+, Ip- Cảm biến sẽ thực hiện tiêu thụ dòng 5V DC nên sẽ cấp nguồn tương ứng để có thể đạt được giá trị dòng tiêu thụ trên module là 10mA

Kết nối của cảm biến sẽ được tiến hành như sau:

− VCC sẽ được nối vào nguồn 5V DC

− GND sẽ được nối vào GND chung

− OUT sẽ được nối với chân G33 của ESP32

− Ip+ sẽ nối vào nguồn AC

− Ip- sẽ nối vào 1 đầu tải

Hình 3.3: Kết nối của cảm biến dòng ACS712 20A

Cách tính toán dòng điện:

− Bước 1: Tìm điện áp đỉnh đỉnh theo công thức

Vp-p = giá trị đo x Vref độ phân giải (1) Với 4096 là giá trị độ phân giải của ESP32, 3,3 là điện áp tham chiếu Vref của ESP32

− Bước 2: Tìm điện áp hiệu dụng

− Bước 3: Tìm dòng điện hiệu dụng

Irms = (Vrms x 1000 độ nhạy ) − hệ số điều chỉnh (3) Với độ nhạy = 100mV/A, 0,35 là hệ số điều chỉnh của cảm biến

3.2.2 Thiết kế khối cảm biến đậu xe

Khối này sẽ có chức năng nhận diện xe tại vị trí của các cảm biến hồng ngoại, nếu có xe tại vị trí đó thì sẽ gửi tín hiệu về khối xử lý trung tâm để xử lý Đối với yêu cầu của đề tài thì hệ thống cần một loại cảm biến có thể nhận diện có sự hiện diện của vật thể, các phương án có thể sử dụng bao gồm sử dụng cảm biến âm thanh, cảm biến khoảng cách, cảm biến vật cản hồng ngoại, trong số đó thì nhóm đã quyết định chọn cảm biến vật cản hồng ngoại để có thể đáp ứng được chức năng của khối Việc chọn cảm biến này vừa đáp ứng được nhu cầu của đề tài dưới góc độ mô hình đồng thời phù hợp với kinh tế Cảm biến có 1 cặp truyền nhận tín hiệu hồng ngoại, tia hồng ngoại sẽ được phát ra, khi gặp vật cản sẽ dội về và sẽ làm đèn màu trên cảm biến sáng lên và đầu ra Digital sẽ là đầu ra thấp nếu có vật cản Đối với kết nối phần cứng thì mỗi cảm biến sẽ có 3 chân lần lượt OUT, GND và VCC Các cảm biến sẽ sử dụng nguồn 5V DC nên sẽ tiến hành cấp nguồn tương ứng sao cho dòng tiêu thụ trên mỗi cảm biến đạt xấp xỉ giá trị 43mA, từ đó cảm biển có thể hoạt động được Đối với hệ thống thì sẽ cần 4 con cảm biến cho 4 khu vực của bãi xe nên kết nối của 4 cảm biến như sau:

− Chân VCC sẽ được nối lên nguồn 5V DC

− Chân GND sẽ được nối vào GND chung

− Chân OUT của các cảm biến 1, 2, 3, 4 sẽ lần lượt được nối vào chân G14, G27, G26 và G25 Bình thường sẽ ở mức cao, nếu có vật cản thì sẽ ở mức thấp

Hình 3.4: Kết nối của 4 cảm biến vật cản hồng ngoại

3.2.3 Thiết kế khối nút nhấn

Khối nút nhấn sẽ có chức năng cho phép người giám sát đóng, mở rào chắn bằng tay Nếu còn giữ nhấn nút thì còn mở rào, buông ra thì rào sẽ đóng lại Trên thị trường hiện nay có rất nhiều loại nút chân với nhiều loại kích cỡ như nút nhấn 4 chân, nút nhấn nhả R13, ở đây thì sẽ sử dụng nút nhấn 2 chân cắm vì vừa đủ đáp ứng chức năng của khối lại vừa kinh tế Đối với kết nối phần cứng thì ở đây sẽ sử dụng 2 nút nhấn cho 2 cổng vào và ra của hệ thống Khối nút nhấn sẽ được tiến hành kết nối như sau:

− 1 chân của nút nhấn sẽ được nối với điện trở 10kΩ dùng để làm điện trở treo và nối lên nguồn 5V DC Từ đó ta có được dòng vào chân ESP32 theo công thức:

Từ công thức (4) tính được:

10kΩ = 0.5mA ➔ Đảm bảo an toàn cho ESP32

− Chân còn lại sẽ được nối đất

− Chân tín hiệu sẽ được nối giữa nút nhấn và điện trở với chân G32 cho rào chắn vào và G27 cho rào chắn ra

Hình 3.5: Kết nối nút nhấn cho rào chắn vào

Hình 3.6: Kết nối nút chân cho rào chắn ra

3.2.4 Thiết kế khối chấp hành

Khối này sẽ có chức năng là sẽ đóng mở servo tùy thuộc vào tín hiệu được gửi từ khối trung tâm xử lý, tín hiệu nhận được sẽ là góc quay của servo và từ đó servo sẽ thực hiện quay 1 góc như đã được lập trình thông qua tín hiệu được truyền đi

Trên thị trường hiện nay có rất nhiều loại servo có thể kế đến như là động cơ

RC Servo MG996R hay động cơ servo MG995 Khối cơ cấu servo sẽ bao gồm 2 động cơ Servo SG90, có tác dụng sẽ nhận tín hiệu từ khối xử lý trung tâm để đóng, mở rào chắn Đây là loại servo khá là phổ biến và được sử dụng rộng rãi trong thực tế, đáp ứng đủ cho nhu cầu của mô hình hệ thống đồng thời giá thành cũng phải chăng Đối với kết nối phần cứng thì như đã đề cập, ở đây mô hình sẽ sử dụng 2 động cơ servo Mỗi động cơ servo sẽ gồm 3 dây tương ứng với các màu nâu, đỏ, cam lần lượt là GND, VCC và SIGNAL Mỗi động cơ servo cần nguồn 5V DC nên sẽ cấp nguồn tương ứng để có thể đạt được giá trị tiêu thụ dòng tương đương 10mA để cho servo có thể hoạt động

Vì vậy phần cứng sẽ được kết nối như sau:

− Chân VCC sẽ được nối với nguồn 5V DC

− Chân GND sẽ được nối với GND chung

− Chân SIGNAL của rào chắn vào sẽ được nối với G13 của ESP32, của rào chắn ra sẽ được với chân G26 của ESP32

Ta có Vout = 3,3V và điện áp cần cấp cho chân SIG Vin = 5V nhưng mà do

Vout > Vthreshold để mà điều khiển chân SIG của servo cùng với việc Iout của ESP32 40mA > Iin = 10mA của servo cho nên nguồn 3,3V vẫn đủ để có thể truyền tín hiệu điều khiển cho servo

Hình 3.7: Kết nối động cơ Servo SG90 rào chắn ra

Hình 3.8: Kết nối động cơ Servo SG90 rào chắn vào

3.2.4.2 Khối cơ cấu chuông Đối với khối cơ cấu chuông thì chức năng của khối sẽ là dùng một chuông Buzzer đơn giản để phát ra âm thanh khi mà nhận được tín hiệu từ khối xử lý trung tâm cho biết rằng cảm biến lửa phát hiện có lửa Đối với kết nối phần cứng thì chuông Buzzer sẽ có 2 chân:

− 1 chân sẽ được nối với chân GND chung

− Chân còn lại sẽ được nối với chân G13 của ESP32

Theo như lý thuyết thì chuông cần cung cấp nguồn Vin = 5V để có thể hoạt động ở trạng thái tốt nhất nhưng hiện tại Vout của ESP32 chỉ cung cấp 3,3V Mặc dù là do Vout < Vin nhưng do chuông buzzer không có yêu cầu quá khắt khe về việc cung cấp nguồn cùng với việc Iout của ESP32 = 40mA là đủ để cấp, dù nguồn cấp là bé hơn so với lý thuyết nhưng chuông vẫn có thể rung và hoạt động với âm thanh bé hơn so với âm thanh có thể đạt được ở mức nguồn cấp 5V

Hình 3.9: Kết nối của chuông Buzzer

3.2.4.3 Khối cơ cấu hiển thị

Khối này sẽ có chức năng dùng led để hiển thị loại xe đã vào, nếu xe vào thuộc loại xe tương ứng nào thì led tương ứng sẽ sáng và sẽ chỉ tắt khi có loại xe khác vào hoặc khu vực đó đã có xe vào

Trên thị trường hiện nay có rất là nhiều loại led lớn nhỏ cùng với đa số màu sắc như xanh, vàng, … Khối hiển thị ở đây sẽ sử dụng 4 led đỏ hiển thị thay cho 4 khu vực đỗ xe trong mô hình của hệ thống Đối với kết nối phần cứng thì ở đây sẽ sử dụng 4 led và 4 điện trở hạn dòng 100Ω Việc kết nối sẽ tiến hành như sau:

− Chân Anode của các led sẽ được nối lần lượt với chân G15, G2, G4, G16 của

− Chân Cathode của các led sẽ nối với điện trở 100Ω và với GND chung Việc tính toán để chọn ra điện trở được thực hiện như sau:

I led (5) Với việc Vout = 3,3V, Vled = 2,1V với led đỏ và Iled là = 10mA tới = 20mA

Hình 3.10: Kết nối của 4 led 2 chân

THIẾT KẾ PHẦN MỀM VÀ LƯU ĐỒ GIẢI THUẬT

3.3.1 Thiết kế chương trình cho nhận diện biển số Ở phần này sẽ thiết kế chương trình nhận diện biển số bắt đầu từ việc training YOLOv8 để tiến hành nhận biển số, tiếp đến là tiến hành xử lý hình ảnh đã nhận diện và đọc ký tự thông qua OCR

Hình 3.15: Lưu đồ giải thuật của chương trình nhận diện biển số

Khởi tạo thư viện, biến,

Khởi tạo giao diện giám sát

Hiển thị hình ảnh trực tiếp từ camera

Chuyển đổi hình ảnh, nhận diện biển số, gửi kết quả

Hiển thị biển số, chữ biển số, gửi dữ liệu nối tiếp

− Khi vừa bắt đầu chương trình thì sẽ khởi tạo thư viện cũng như là các biến, kết nối cần thiết Sau đó sẽ là khởi tạo giao diện GUI

− Khi có biển số xe vào tầm nhìn của camera thì biển số sẽ được hệ thống phát hiện và đem đi xử lý Nếu không có phát hiện biển số thì tiếp tục chạy bình thường

− Ký tự trên biển số xe sẽ được đọc thông qua OCR và sẽ hiển thị theo dạng text trên giao diện đã tạo cũng như là sẽ được xâu chuỗi và gửi về ESP để tiến hành so sánh dữ liệu Xong rồi sẽ tiếp tục chạy lại bình thường

Trong đó quá trình huấn luyện cho máy tính nhận biết được đối tượng là biển số xe cần phải tạo một dữ liệu là các hình ảnh chứa biển số xe đã có sẵn để ứng dụng trong quá trình huấn luyện cho máy tính Quá trình tạo ra dữ liệu bao gồm các bước sau:

Tạo nhãn dán cho ảnh: để model có thể nhận diện được chính xác hình dạng cũng như vị trí của biển số xe cần phải đưa vào model một tệp dữ liệu đã chứa sẵn hình ảnh cũng như vị trí và hình dạng của biển số xe đó Bằng việc sử dụng MAKE SENSE – một trang web miễn phí giúp tạo nhãn dán và xuất ra file chứa các tọa độ của đối tượng mong muốn một cách chính xác

Hình 3.16: Trang web hỗ trợ MAKE SENSE

Hình 3.17: Quá trình tạo nhãn dán cho biển số xe

Sau khi đã tiến hành xong cho tất cả hình ảnh, trang web cho phép người dùng export ra file txt chứa tất cả các tọa độ của biển số xe vừa tạo và lưu về máy Ở đề tài này, nhóm đã sử dụng MAKE SENSE để thực hiện dán nhãn cho hơn 200 hình ảnh chứa biển số xe

Hình 3.18: File ảnh, file text chứa tọa độ biển số xe trong ảnh

Train model YOLOv8: Sau khi đã có được dữ liệu mẫu đã gán nhãn, nhóm tiến hành sử dụng Google Colab để huấn luyện sử dụng YOLOv8

Hình 3.19: Thông số kết quả sau khi huấn luyện

Sau 50 lần huấn luyện thì giá trị trung bình của độ chính xác phát hiện biển số xe trên 0.6 và cho thấy rằng hệ thống đã có thể sẵn sàng cho quá trình phát hiện biển số xe trong ảnh

Qua quá trình huấn luyện ta có được file weight chứa kết quả train là file best.pt Đây là file quan trọng chứa tất cả kết quả của quá trình train model trên

Hình 3.20: Kết quả nhận diện biển số

Sau khi sử dụng model YOLO để phát hiện biển số xe, tiến hành cắt hình ảnh biển số thông qua thư viện Open-CV và OCR để nhận diện ký tự trên biển số xe vừa cắt được để hiển thị trên giao diện giám sát của chương trình

Hình 3.21: Kết quả nhận diện biển số và hiển thị trên giao diện GUI

3.3.2 Thiết kế chương trình để giao tiếp, vận hành hệ thống Ở phần này, thì sẽ thiết kế chương trình cho 2 ESP32 – 1 ESP32 để điều khiển quá trình xe vào và 1 ESP32 để điều khiển quá trình xe ra

• Đối với phần ESP32 điều khiển quá trình xe ra thì chúng ta có lưu đồ giải thuật như sau:

Hình 3.22: Lưu đồ giải thuật của chương trình ESP32 dành cho bãi xe ra

− Khi vừa bắt đầu chương trình thì sẽ khởi tạo các kết nối của ESP32 với các linh kiện cần thiết cũng như là khởi tạo kiểu truyền thông, liên kết với Wifi, Firebase

− Tiếp đến chương trình sẽ bắt đầu chạy với cảm biến lửa có phát hiện lửa hay không, nếu một trong 2 cảm biến có phát hiện lửa thì chuông sẽ cảnh báo, ngược lại thì không

− Sau đó sẽ là tiếp tục xét đến việc nhấn nút, nếu có giữ nút nhấn thì servo sẽ mở, ngược lại thì servo sẽ đóng

− Tiếp sau sẽ là có nhận dữ liệu nối tiếp (ký tự biển số xe) về hay không, nếu có thì sẽ tiến hành so sánh dữ liệu nhận được với dữ liệu lấy theo đường tới Database trên Firebase, nếu trùng khớp thì sẽ mở servo và chờ 5s, ngược lại thì sẽ thoát ra

• Đối với phần ESP32 điều khiển quá trình xe vào thì chúng ta có lưu đồ giải thuật như sau:

Hình 3.23: Lưu đồ giải thuật của chương trình ESP32 dành cho bãi xe vào

− Khi vừa bắt đầu thì sẽ khởi tạo các kết nối giữa ESP32 với các linh kiện cũng như là kiểu truyền thông, kết nối Wifi, Firebase

− Sau đó thì sẽ thực hiện Task 1 và Task 2 thông qua FreeRTOS

55 o Đối với Task 1 ta có lưu đồ giải thuật như sau:

Hình 3.24: Lưu đồ giải thuật của Task 1

− Khi tiến hành task 1, ESP32 sẽ đọc giá trị cảm biến dòng 1 lần/s và sẽ hiển thị 1 kết quả duy nhất mỗi 5s

− Tiếp đến sẽ lấy giá trị đo được tiến hành so sánh ngưỡng đã đặt trước, nếu như vượt ngưỡng thì relay sẽ ngắt mạch, ngược lại thì relay sẽ đóng mạch bình thường

− Sau đó sẽ quay trở lại từ đầu Task và tiến hành lại bình thường

56 o Đối với Task 2 ta có lưu đồ giải thuật như sau:

Hình 3.25: Lưu đồ giải thuật của Task 2

KẾT QUẢ THỰC HIỆN HỆ THỐNG VÀ NHẬN XÉT

KẾT QUẢ THỰC HIỆN PHẦN CỨNG

Ở phần này sẽ thể hiện kết quả thực hiện phần cứng của hệ thống

Hình 4.1: Kết quả mặt trước mạch in của phần bãi xe vào

Hình 4.1 trên cho thấy kết quả mặt trước của mạch in dành cho phần bãi xe vào, mạch in sẽ gồm các linh kiện như 1 domino 2 cổng để kết nối nguồn, 1 hàng rào cắm servo dùng để kết nối với servo đóng mở cổng, 4 hàng rào dùng để kết nối với 4 cảm biến vật cản hồng ngoại có tác dụng phát hiện có xe vào vị trí hay không, một nút nhấn dùng để đóng mở servo bằng tay, 1 hàng rào dùng để kết nối với module relay 5V dùng để đóng ngắt relay, 1 hàng rào dùng để kết nối với cảm biến dòng có tác dụng đo dòng điện, 4 led dùng để hiển thị khu vực xe tương ứng cũng như là vi xử lý trung tâm ESP32 dùng để xử lý thông tin và đưa ra tín hiệu điều khiển

Hình 4.2: Kết quả mặt sau mạch in của phần bãi xe vào

Hình 4.2 trên thể hiện mặt sau của mạch in của phần bãi xe vào, ở đây cho thấy đường đồng kết nối giữa các linh kiện cũng như là các hàng rào để mạch có thể hoạt động

Nhận xét: từ hình 4.1 và hình 4.2 trên đã thể hiện 2 mặt của mạch in của phần bãi xe vào, tuy rằng mối hàn và đi dây đồng vẫn còn chưa được đẹp mắt và tối ưu nhưng mạch vẫn mang đầy đủ chức năng đã đạt ra và hoạt động như mong muốn để có thể điều khiển servo, led, relay cũng như là nhận tín hiệu từ cảm biến hồng ngoại, cảm biến dòng, nút nhấn, nhận nguồn cấp cho toàn mạch từ domino 2 cổng

Hình 4.3: Kết quả mặt trước mạch in của phần bãi xe ra

Hình 4.3 cho thấy kết quả mặt trước của mạch in phần bãi xe ra, mạch in phần này sẽ bao gồm các linh kiện như chuông buzzer dùng để báo cháy, 1 hàng rào servo dùng để kết nối với servo thực hiện đóng mở cổng , một nút nhấn dùng để đóng mở servo bằng tay, một domino 2 cổng dùng để kết nối nguồn cấp cho toàn mạch, 2 hàng rào dùng để kết nối với 2 cảm biển lửa có chức năng phát hiện lửa trong khu vực bãi giữ xe, 1 vi xử lý trung tâm ESP32 có tác dụng xử lý thông tin nhận về và đưa ra tín hiệu điều khiển

Hình 4.4: Kết quả mặt sau mạch in của phần bãi xe ra

Hình 4.4 trên thể hiện mặt sau của mặt in dành cho phần bãi xe ra, hình cho thấy các mối nối và đường đồng kết nối của mạch sau khi đã được thi công để mạch có thể hoạt động như yêu cầu đã đề ra

Nhận xét: cũng như hình 4.1 và 4.2, hình 4.3 và 4.4 thể hiện kết quả 2 mặt của mạch in dành cho phần bãi xe ra của hệ thống Tuy vẫn còn hơi thô về đường mạch cũng như là mối hàn như mạch nhưng mạch vẫn chứa đầy đủ các năng bao gồm nhận nguồn cấp từ domino 2 cổng, nhận tín hiệu từ 2 cảm biến dòng, nút nhấn, điều khiển servo, chuông buzzer theo yêu cầu đã đề ra.

KẾT QUẢ THỰC HIỆN PHẦN MỀM

4.2.1 Giao diện GUI giám sát Đầu tiên sẽ là kết quả thực hiện giao diện GUI phát hiện biển số xe khi có xe ra vào và ra Giao diện sẽ tiến hành hiển thị 2 luồng camera, khi có phát hiện biển số xe vào tầm nhìn của camera thì sẽ tiến hành cắt khung hình biển số và bắt đầu hiện ký tự được ghi trên biển thành một chuỗi như hình, đồng thời chương trình cũng sẽ hiển thị thời gian mà nhận diện được biển số hiển thị ở khung tiếp theo bên dưới Quá trình thực hiện được mô tả tại hình 4.5

Hình 4.5: Hình giao diện phát hiện biển số xe vào

Hình 4.5 cho thấy ký tự biển số xe 59-CA 032 18 đã được phát hiện hệ thống phát hiện, từ đó hệ thống tiến hành chụp khung hình của biển số để tiến hành nhận diện ký tự có trên biển số, sau khi đã nhận diện được thì ký tự sẽ được viết ra và thể hiện như trên khung hình cùng với thời gian khi biển số được phát hiện từ đó ta có thời gian xe vào

Hình 4.6: Hình giao diện phát hiện biển số xe ra

Hình 4.6 cho thấy ký tự biển số xe 59-CA 032 18 đã được phát hiện hệ thống phát hiện là xe ra, từ đó hệ thống sẽ tiến hành chụp khung hinh của biển số để tiến hành nhận diện ký tự có trên biển số như hình 4.5, sau đó thì ký tự sẽ được viết ra và thể hiện như trên khung hình cùng với thời gian khi biển số được phát hiện từ đó ta có thời gian xe ra như các bước đã thực hiện ở hình 4.5

Nhận xét: hình 4.5 và 4.6 cho thấy quá trình nhận diện biển số cũng như là các hình ảnh nhận diện ký tự trên biển cùng với dòng ký tự được viết ra thành một dãy và dòng thời gian khi biển được phát hiện ở cả 2 quá trình xe vào và xe ra Tuy là hệ thống còn khá thô và đôi khi vẫn nhầm lẫn các ký tự như B và 8, D và 0, Z và

2, X và K, M và N nhưng đã thực hiện được các yêu cầu như mong muốn và cần thiết để có thấy được quá trình có được dữ liệu ký tự biển số xe

4.2.2 Giao diện App người dùng

Phần thứ hai sẽ là kết quả thực hiện phần app dùng để đăng ký thông tin biển số xe của người dùng thông qua Kodular cùng với phần thực hiện, lưu trữ dữ liệu trên Firebase

Hình 4.7: Giao diện thiết kế Login

Hình 4.7 cho thấy phần thiết kế giao diện app ở phần đăng nhập tài khoản, tại đây người dùng sẽ tiến hành đăng nhập tài khoản và mật khẩu đã đăng ký để tiến vào màn hình chính Nếu người dùng chưa có tài khoản sẽ chọn vào mục Create Account để tiến hành đăng ký tài khoản của mình

Hình 4.8 Hình ảnh thực tế khi sử dụng tại màn hình Login

Hình 4.8 cho thấy phần giao diện đăng nhập của app, ở đây người dùng sẽ tiến hành đăng nhập tài khoản và mật khẩu đã đăng ký để có thể login vào màn hình chính, nếu chưa có tài khoản người dùng chọn đăng ký tài khoàn bằng cách ấn vào Create account để tiến vào màn hình Sign Up

Hình 4.9: Giao diện thiết kế Create Account

Hình 4.9 cho thấy thiết kế phần đăng ký thông tin người dùng cũng như là biển số xe cùng với thông tin loại xe để hệ thống có thể nhận được thông tin có xe mới và người dùng mới vừa đăng ký để có thể cập nhập thêm vào hệ thống

Hình 4.10: Hình ảnh thực tế khi sử dụng tại màn hình Create Account

Hình 4.10 cho thấy phần giao diện Create Account của app, ở phần này người dùng sẽ có thể đăng ký thông tin của người dùng cùng với biển số, loại xe để cập nhập thông tin lên nơi lưu trữ dữ liệu Thông tin ở đây sẽ được lưu vào Firebase và hệ thống có thể lấy thông tin để cập nhập cũng như là người dùng có thể dùng thông tin đã đăng ký để đăng nhập vào ở màn hình Login Người dùng có thể sử dụng nút Return để quay trở lại màn hình Login và nút Sign Up để có thể đăng ký thông tin, người dùng bắt buộc phải nhập đầy đủ các thông tin cũng như là thỏa mãn các điều kiện về trùng lặp thông tin quan trọng để có thể đăng ký được thông tin

Hình 4.11: Hình ảnh khi tra cứu thời gian của xe

Hình 4.11 cho thấy hình ảnh của màn hình chính sau khi tiến hành đăng nhập ở màn hình Login của app, nếu như các thông tin đăng nhập trùng khớp với thông tin đã đăng ký thì người dùng sẽ được đưa đến màn hình này Ở tại màn hình này người đăng nhập có thể sử dụng app để tra cứu thông tin thời gian vào IN TIME và thời gian ra OUT TIME xe của mình đã đăng ký bằng cách nhập vào đúng biển số xe và nhấn nút Search Khi người dùng nhất nút Search thì thông tin IN TIME và OUT TIME sẽ hiện lên từ đó người dùng có thể dễ dàng quan sát lịch sử ra vào của xe mình đã đăng ký Người dùng có thể nhấn nút Return để thoát ra và quay lại màn hình đăng nhập Login để đăng nhập tài khoàn khác nếu cần thiết

Hình 4.12: Giao diện code block của app

Hình 4.12 cho thấy phần giao diện code block dùng để lập trình app, ở đây các block sẽ được kéo vào từ đó người thiết kế có thể lập trình app theo như ý muốn của bản thân để có thể tạo ra app ứng dụng được mà ở đây sẽ là phần đăng ký và đăng nhập thông tin người dùng, biển số cũng như là loại xe để hệ thống có thể kịp thời cập nhập thông tin đã đăng ký lên Firebase

Nhận xét: với các hình trên thì đã có thể tạo ra một ứng dụng tuy đơn giản nhưng vẫn có thể dành cho người dùng đăng ký thông tin của bản thân cũng như là loại xe, biển số xe để hệ thống có thể nhận biết, ngoài ra người dùng có thể sử dụng app để đăng nhập vào, tìm kiếm biển số xe của bản thân để có thể biết được lịch sử ra vào của xe đó

4.2.3 Giao diện lưu trữ dữ liệu Firebase

Hình 4.13: Phần Authentication của Firebase

Hình 4.13 thể hiện phần Authentication tức là nơi người dùng đã đăng ký tài khoản và mật khẩu thông qua app đã được thiết kế, thông tin sẽ được lưu trữ ở đây và sẽ được quản lý, người dùng có thể sử dụng thông tin này để có thể đăng nhập vào ở màn hình Login

Hình 4.14: Phần Database của Firebase Ở phần được thể hiện trong 4.14, các dữ liệu như biển số và loại xe cũng như tên người dùng sẽ được lưu trữ ở phần Realtime Database của Firebase Hệ thống sẽ dựa vào các dữ liệu được lưu ở đây để tiến hành so sánh, hoạt động từ đó đưa ra các tín hiệu đến các linh kiện thực hiện hành động đã được lập trình sẵn nếu như có xe đã đăng ký đi vào trong hệ thống

Hình 4.15: Thời gian vào/ra của xe

KẾT QUẢ TỔNG QUAN TOÀN HỆ THỐNG

Hình 4.16: Mô hình hệ thống sau khi thi công

Hình 4.16 cho xem hình ảnh của mô hình hệ thống sau khi đã được thi công và lắp ráp, hệ thống sẽ mang đầy đủ các chức năng như phát hiện biển số xe vào, xe ra, mở servo nếu như đúng biển số đã đăng ký hoặc có thể nhấn mở servo bằng nút nhấn, mở led tương ứng khi có loại xe đã đăng ký vào và tắt led khi có xe đã đậu tại vị trí đó, ngoài ra còn có hệ thống phát hiện cháy, khi cháy sẽ có chuông kêu và hệ thống hạn dòng ở phần sạc điện, nếu như dòng vượt qua định mức đã đặt ra thì sẽ tự động ngắt nguồn điện và sẽ bật lại nếu như thấy đã ở dưới ngưỡng

Hình 4.17: Kết quả khi có lửa

Trong hình 4.17, khi có lửa phát hiện trong bãi giữ xe của hệ thống, cảm biến lửa sẽ nhận biết được, sáng đèn led trên cảm biến và truyền tín hiệu vi xử lý ESP32, ESP32 sẽ nhận thông tin từ cảm biến và thực hiện việc truyền tín hiệu về chuông buzzer để phát hiện ra cảnh báo

Hình 4.18: Kết quả khi nhấn nút để đóng/mở servo bãi xe vào

Hình 4.18 cho kết quả của servo mở khi nhấn giữ nút ở bãi xevào, điều tương tự cũng sẽ xảy ra với servo ở bãi xe ra nếu như giừ nút nhấn của bãi xe còn lại Vì có chống dội nên việc nhấn nút phải được giữ một lúc, nếu còn giữ thì servo sẽ còn mở, nếu nhả ra thì servo sẽ đóng lại

Hình 4.19: Kết quả khi nhấn nút để đóng/mở servo bãi xe ra

Hình 4.19 cho kết quả của servo mở khi nhấn giữ nút ở bãi xe ra, điều tương tự cũng sẽ xảy ra với servo ở bãi xe vào nếu như giừ nút nhấn của bãi xe còn lại Vì có chống dội nên việc nhấn nút phải được giữ một lúc, nếu còn giữ thì servo sẽ còn mở, nếu nhả ra thì servo sẽ đóng lại

Hình 4.20: Kết quả khi phát hiện biển số xe vào Ở hình 4.20, camera sẽ tiến hành nhận diện biển số có trong khung hình của camera, các ký tự trên biển số sẽ được xử lý và gửi về vi xử lý ESP32 của bãi vào, ESP32 sẽ tiến hành so sánh dữ liệu nhận được với dữ liệu đã được lưu trữ trên Firebase, ở đây dữ liệu đã trùng khớp và hệ thống tiến hành mở servo đồng thời cũng nhận biết được loại xe theo như biển đã đăng ký, tiến hành bật led tương ứng Khi xe đã vào đúng vị trí của loại xe thì led sẽ tắt

Hình 4.21: Kết quả khi phát hiển biển số xe ra Ở hình 4.21, camera sẽ tiến hành bắt hình ảnh biển số xe nằm trong khung hình của camera, các ký tự sẽ được đọc và chuyển về ESP32, ESP32 sẽ tiến hành so sánh dữ liệu nhận được với dữ liệu đo đươc, ở đây là dữ liệu trùng khớp thì sẽ tiến hành mở servo trong một khoảng thòi gian nhất định để cho xe ra

Hình 4.22: Kết quả đo được của cảm biến dòng

Hình 4.22 cho thấy kết quả dòng điện đo được từ cảm biến dòng, quá trình đo được thực hiện mỗi 1s và quá trình chuyển đổi và so sánh được thực hiện mỗi 5s từ đó có thể thấy được khi không có tải cắm sạc thì nguồn điện chỉ ở mức xấp xỉ 0A

Hình 4.23: Kết quả khi thực hiện việc quá dòng

Hình 4.23 cho thấy việc tiến hành cắm tải vào để tăng giá trị dòng điện đo được để có thể làm cho relay ngắt với giá trị đo được vượt quá ngưỡng đã đặt ra 1A, khi dòng điện trở lại dưới mức thì sẽ đóng lại relay và điện sẽ chạy lại bình thường

Hình 4.24: Giá trị đọc được khi tiến hành tăng dòng điện

Hình 4.24 cho thấy giá trị đọc được đã vượt ngưỡng đặt ra, từ đó sẽ tiến hành ngắt relay và chỉ đóng lại để kết nối điện khi dòng đo được đã xuống ngưỡng đặt ra từ đó có thể đảm bảo an toàn điện cho việc cắm tải Mà tải ở đây là ấm đun sôi siêu tốc, giá trị công suất có thể đạt từ 600W - 2500W, giá trị đo được ở đây là khoảng 785W nằm trong khoảng đã đề cập, tuy nhiên khi đo lại cũng dùng chính ấm đun sôi đó thì giá trị bị dao động chênh lệch khoảng 10% giá trị 785W đã đo (706W - 863W) cũng như là việc khi chưa có tải thì cảm biến vẫn đo được giá trị từ 5W - 15W ➔ Từ đó rút ra được kết luận, cảm biến đo dòng vẫn chưa hoàn toàn được ổn định, vẫn còn bị nhiễu dẫn đến kết quả đo vẫn còn sai lệch, chưa hoàn toàn đúng 100%

Nhận xét: thông qua các hình kết quả trên, có thể thấy là mô hình hệ thống bãi giữ xe đã được dựng lên với các yêu cầu đã đặt ra như là đăng ký thông tin biển số xe, phát hiện biển số xe khi ra/vào bãi, quan sát thời gian ra vào của xe, tiến hành so sánh dữ liệu hình ảnh với dữ liệu đã được đăng ký và lưu trữ trên Firebase để tiến hành mở servo cũng như là hệ thống phát hiện cháy cho toàn bộ bãi, phát hiện hiện tượng quá dòng khi cắm sạc dành cho khu vực xe điện từ đó có thể đảm bảo được an toàn cho bãi xe Mặt khác, việc nhận diện ký tự vẫn còn bị nhầm lẫn, cảm biến cháy vẫn phát hiện lửa với ánh sáng bước sóng tương tự mặc dù không có cháy, giá trị cảm biến dòng đo được chưa hoàn toàn ổn định

Ngày đăng: 19/11/2024, 08:59

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w