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

Đồ án tốt nghiệp Công nghệ kỹ thuật điều khiển và tự động hóa: Thiết kế và thi công smartkey-Iot tích hợp công nghệ xử lý ảnh và trí tuệ nhân tạo (AI) để nhận diện khuôn mặt

96 0 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 SmartKey-IoT Tích Hợp Công Nghệ Xử Lý Ảnh Và Trí Tuệ Nhân Tạo (AI) Để Nhận Diện Khuôn Mặt
Tác giả Huỳnh Tuấn Kiệt
Người hướng dẫn TS. Nguyễn Văn Thái
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ều Khiển Và Tự Động Hóa
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 96
Dung lượng 4,98 MB

Cấu trúc

  • CHƯƠNG 1. TỔNG QUAN (17)
    • 1.1 ĐẶT VẤN ĐỀ (17)
    • 1.2 MỤC TIÊU (17)
    • 1.3 PHƯƠNG PHÁP NGHIÊN CỨU (17)
    • 1.4 NỘI DUNG NGHIÊN CỨU (17)
    • 1.5 GIỚI HẠN ĐỀ TÀI (18)
    • 1.6 BỐ CỤC BÁO CÁO (18)
  • CHƯƠNG 2. CƠ SỞ LÝ THUYẾT (20)
    • 2.1 GIỚI THIỆU VỀ IOT (INTERNET OF THING) (20)
      • 2.1.1 Tổng quan về IoT (20)
      • 2.1.2 Các thành phần của IoT (21)
      • 2.1.3 Ứng dụng của IoT (21)
      • 2.1.4 Thách thức của IoT (22)
    • 2.2 GIỚI THIỆU CÁC CÔNG CỤ THIẾT KẾ APP (23)
      • 2.2.1 React Native (23)
      • 2.2.2 Expo (24)
      • 2.2.3 Node.js (26)
      • 2.2.4 Express (27)
    • 2.3 GIỚI THIỆU VỀ XỬ LÝ ẢNH (29)
      • 2.3.1 Tổng quan (29)
      • 2.3.2 Ứng dụng (29)
    • 2.4 GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO AI (31)
    • 2.5 NGÔN NGỮ LẬP TRÌNH PYTHON (32)
      • 2.5.1 Giới thiệu về python (32)
      • 2.5.2 Giới thiệu về Threading (Đa luồng) trong Python (33)
      • 2.5.3 Giới thiệu về thư viện OpenCV (35)
      • 2.5.4 Giới thiệu về thư viện face-recognition (36)
    • 2.6 GIỚI THIỆU VỀ PORT FORWARDING (37)
    • 2.7 NHỮNG PHẦN MỀM VÀ WEB ĐƯỢC SỬ DỤNG TRONG ĐỀ TÀI (37)
      • 2.7.1 Visual Studio Code (VS Code) (37)
      • 2.7.2 Arduino IDE (38)
      • 2.7.3 KiCAD (39)
      • 2.7.4 balenaEtcher (40)
      • 2.7.5 SD Card Formatter (41)
      • 2.7.6 XAMPP (42)
      • 2.7.7 DWIN DGUS (43)
      • 2.7.8 SOLIDWORKS (43)
      • 2.7.9 FIGMA (44)
  • CHƯƠNG 3. THIẾT KẾ HỆ THỐNG (45)
    • 3.1 YÊU CẦU HỆ THỐNG (45)
    • 3.2 THIẾT KẾ PHẦN CỨNG (46)
      • 3.2.1 LỰA CHỌN THIẾT BỊ (46)
      • 3.2.2 SƠ ĐỒ NGUYÊN LÝ BOARD MẠCH (53)
      • 3.2.3 LAYOUT PCB (58)
      • 3.2.4 HỘP CHỨA CHO BOARD VÀ MÀN HÌNH (59)
    • 3.3 THIẾT KẾ PHẦN MỀM (61)
      • 3.3.1 THIẾT KẾ VÀ LẬP TRÌNH MOBILE APP (61)
      • 3.3.2 LẬP TRÌNH GIAO DIỆN CHO MÀN HÌNH DWIN (70)
      • 3.3.3 LẬP TRÌNH CHO ESP32 (72)
      • 3.3.4 CÀI ĐẶT HỆ ĐIỀU HÀNH CHO JETSON NANO (79)
      • 3.3.5 LẬP TRÌNH TRÊN JETSON NANO (81)
  • CHƯƠNG 4. KẾT QUẢ (87)
    • 4.1 KẾT QUẢ PHẦN CỨNG (87)
    • 4.2 KẾT QUẢ PHẦN MỀM (89)
      • 4.2.1 Mobile App (89)
      • 4.2.2 Màn hình DWIN (90)
      • 4.2.3 Jetson nano (91)
  • CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (93)
    • 5.1 KẾT LUẬN (93)
    • 5.2 HƯỚNG PHÁT TRIỂN (93)
  • TÀI LIỆU THAM KHẢO (0)

Nội dung

Đề tài "Thiết kế và thi công SmartKey-IoT tích hợp công nghệ xử lý ảnh và trí tuệ nhân tạo AI để nhận diện khuôn mặt" đặt mục tiêu tạo ra một hệ thống khóa cửa tiên tiến, hiện đại, phù h

TỔNG QUAN

ĐẶT VẤN ĐỀ

Trong thời đại công nghệ 4.0, ứng dụng IoT và trí tuệ nhân tạo đang đóng vai trò quan trọng trong việc cải thiện chất lượng cuộc sống Hệ thống khóa thông minh (SmartKey) là một ví dụ tiêu biểu, tích hợp công nghệ xử lý ảnh và nhận diện khuôn mặt, mang lại sự tiện lợi và an toàn cho người sử dụng.

SmartKey-IoT là một hệ thống khóa cửa tiên tiến, hiện đại, được thiết kế và thi công với công nghệ xử lý ảnh và trí tuệ nhân tạo (AI) nhằm nhận diện khuôn mặt, đáp ứng xu hướng phát triển của xã hội.

Trong bối cảnh tội phạm và đột nhập ngày càng gia tăng, nhu cầu về giải pháp an ninh hiệu quả trở nên cấp thiết Hệ thống SmartKey với tính năng nhận diện khuôn mặt mang lại lớp bảo vệ bổ sung, tăng cường an ninh cho nhà ở và văn phòng Bên cạnh đó, việc sử dụng khóa thông minh giúp tiết kiệm thời gian và công sức so với chìa khóa truyền thống, đồng thời tích hợp công nghệ IoT cho phép quản lý và giám sát từ xa qua thiết bị di động.

MỤC TIÊU

Nghiên cứu và thiết kế hệ thống khóa cửa thông minh kết hợp nhận diện khuôn mặt, mật khẩu trên màn hình và mở khóa qua ứng dụng di động Hệ thống này mang lại sự tiện lợi và an toàn tối ưu cho người dùng.

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

Đề tài sử dụng kết hợp những phương pháp nghiên cứu:

− Phương pháp nghiên cứu lý thuyết

NỘI DUNG NGHIÊN CỨU

− Tìm hiểu về công nghệ IoT

− Tìm hiểu về nhận diện khuôn mặt, xử lý ảnh và thực hiện nhận diện khuôn mặt trên Jetson nano

− Nghiên cứu cách tạo một mobile app bằng React Native và Expo

− Nghiên cứu cách tạo một server và giao tiếp giữa client và server

− Nghiên cứu cách giao tiếp giữa những thiết bị với nhau

− Nghiên cứu cách quản lý cơ sở dữ liệu

− Kiểm tra, sửa chữa và hoàn thiện toàn bộ hệ thống

GIỚI HẠN ĐỀ TÀI

- Giới hạn về tính chính xác của xử lý ảnh

- Độ trễ của camera khi quan sát trên ứng dụng

- Chưa triển khai chức năng gửi mã xác nhận qua email

- Chưa tính toán lượng năng lượng các thiết bị sử dụng

- Chưa có tính năng đặt wifi ban đầu cho esp32 trên app

- Dùng những thiết bị sẵn có nên phạm vi ứng dụng chưa cao

BỐ CỤC BÁO CÁO

Bài viết này sẽ cung cấp cái nhìn tổng quan về đề tài nghiên cứu, bao gồm lý do lựa chọn, mục tiêu nghiên cứu, nội dung chính và các giới hạn liên quan đến đề tài.

Chương 2: Cơ sở lý thuyết

Phần này trình bày các lý thuyết cơ bản liên quan đến đề tài, bao gồm các khái niệm và định nghĩa thiết yếu Việc nắm vững những lý thuyết này sẽ mang lại cái nhìn tổng quan về kiến thức cần thiết cho nghiên cứu Bên cạnh đó, bài viết cũng sẽ mô tả sơ bộ về các phần mềm được sử dụng trong đề tài, giúp người đọc hiểu rõ hơn về công cụ hỗ trợ cho quá trình thực hiện.

Chương 3: Thiết kế hệ thống

Trong phần này, chúng tôi sẽ trình bày các quy trình thiết kế hệ thống nhằm đáp ứng các mục tiêu của đề tài Điều này bao gồm việc lựa chọn thiết bị phù hợp, thiết kế sơ đồ nguyên lý mạch phần cứng, cũng như phát triển ứng dụng giao diện người dùng và các lưu đồ giải thuật trong phần mềm.

Phần này sẽ trình bày những đề tài đã hoàn thành được Nhìn nhận kết quả có đúng với mục tiêu đã đề ra của đề tài không

Chương 5: Kết luận và hướng phát triển

Hệ thống đã đạt được nhiều kết quả tích cực, tuy nhiên vẫn còn một số hạn chế cần khắc phục Để phát triển sản phẩm trong tương lai, cần xem xét các ý tưởng cải tiến nhằm tối ưu hóa hiệu suất và nâng cao trải nghiệm người dùng Việc đánh giá các kết luận từ hệ thống sẽ giúp định hướng cho các bước phát triển tiếp theo.

CƠ SỞ LÝ THUYẾT

GIỚI THIỆU VỀ IOT (INTERNET OF THING)

Internet of Things (IoT) là một khái niệm ngày càng phổ biến trong thời đại công nghệ hiện nay, đề cập đến một mạng lưới rộng lớn cho phép các thiết bị thông minh giao tiếp qua internet IoT giúp thu thập, chia sẻ và phân tích dữ liệu nhằm tối ưu hóa các hoạt động hàng ngày và nâng cao chất lượng cuộc sống Các thiết bị trong hệ thống này đa dạng, từ điện thoại thông minh, tivi, đồng hồ thông minh đến các hệ thống phức tạp như cảm biến công nghiệp, xe tự lái, thiết bị y tế và hệ thống tưới tiêu tự động trong nông nghiệp.

IoT tạo ra một môi trường kết nối liền mạch, cho phép thông tin được trao đổi tự động và hiệu quả Điều này hỗ trợ giám sát và quản lý từ xa, tối ưu hóa quy trình và tiết kiệm nguồn lực Trong lĩnh vực y tế, thiết bị IoT theo dõi tình trạng sức khỏe bệnh nhân và cung cấp thông tin kịp thời cho bác sĩ Trong công nghiệp, máy móc được giám sát liên tục để dự báo và ngăn ngừa sự cố.

Hình 2.1 Internet of thing (Nguồn: https://www.freepik.com/free-photos-vectors/iot-devices)

2.1.2 Các thành phần của IoT

Thiết bị thông minh là các thiết bị có khả năng thu thập dữ liệu và giao tiếp thông tin qua internet, bao gồm điện thoại thông minh, máy tính bảng, thiết bị y tế, đồng hồ thông minh, cảm biến, actuator, và các thiết bị gia đình thông minh như máy giặt, tủ lạnh, đèn chiếu sáng, v.v.

Mạng kết nối trong IoT sử dụng nhiều công nghệ như Wi-Fi, Bluetooth, Zigbee, LoRa, LTE và Ethernet, cho phép các thiết bị giao tiếp hiệu quả với nhau cũng như với hệ thống điều khiển từ xa.

Phần mềm và nền tảng IoT là các công cụ quan trọng giúp quản lý và điều khiển thiết bị, cũng như thu thập và phân tích dữ liệu Chúng cung cấp giải pháp cho việc phát triển ứng dụng IoT, quản lý thiết bị, bảo mật và quản lý dữ liệu Một số nền tảng nổi bật bao gồm AWS IoT, Google Cloud IoT, Azure IoT, cùng với các nền tảng mã nguồn mở như Arduino và Raspberry Pi.

IoT tạo ra một khối lượng lớn dữ liệu từ các thiết bị thu thập thông tin về môi trường và hoạt động xung quanh Dữ liệu này đóng vai trò quan trọng trong việc cung cấp thông tin hữu ích để hỗ trợ ra quyết định, nâng cao hiệu quả và tối ưu hóa quy trình.

Người dùng cuối và các ứng dụng IoT đóng vai trò quan trọng trong việc nâng cao chất lượng cuộc sống và hiệu quả công việc hàng ngày Những ví dụ điển hình bao gồm hệ thống nhà thông minh, chăm sóc sức khỏe từ xa, quản lý thông minh, giao thông thông minh, và nông nghiệp thông minh.

IoT được ứng dụng trong rất nhiều lĩnh vực:

Nhà thông minh cho phép người dùng điều khiển thiết bị gia đình như đèn, TV, máy giặt và tủ lạnh từ xa thông qua điện thoại thông minh Hệ thống này cũng giúp giám sát và quản lý nhiệt độ, độ ẩm, cùng với an ninh của ngôi nhà nhờ vào camera và cảm biến hiện đại.

Thiết bị đeo thông minh đang ngày càng trở nên phổ biến trong lĩnh vực y tế và chăm sóc sức khỏe, giúp theo dõi nhịp tim, hoạt động vận động và chất lượng giấc ngủ Ngoài ra, việc giám sát và điều khiển các thiết bị y tế từ xa, bao gồm máy xạ trị và máy chụp cắt lớp, cũng đang được cải thiện, mang lại nhiều tiện ích cho người dùng.

Công nghiệp hiện đại sử dụng cảm biến và mạng IoT để giám sát hệ thống sản xuất và quản lý chuỗi cung ứng, nhằm tối ưu hóa quy trình sản xuất và giảm thiểu sự cố Bên cạnh đó, việc áp dụng bảo trì dự đoán giúp phát hiện sớm các sự cố trên máy móc và thiết bị, từ đó giảm thiểu thời gian dừng máy và nâng cao hiệu quả sản xuất.

Nông nghiệp hiện đại đang áp dụng công nghệ tự động hóa để quản lý hệ thống tưới tiêu và môi trường trồng trọt, bao gồm độ ẩm, nhiệt độ và độ phơi sáng Việc sử dụng drone và cảm biến giúp giám sát diện tích nông trại cũng như phân bố nước và phân bón một cách hiệu quả.

Internet of Things (IoT) đang phát triển mạnh mẽ nhưng cũng đối mặt với nhiều thách thức lớn, bao gồm:

Bảo mật và quyền riêng tư là vấn đề quan trọng đối với dữ liệu từ các thiết bị IoT, vì chúng thường chứa thông tin nhạy cảm có nguy cơ bị tấn công Nếu không có các biện pháp bảo mật thích hợp, thông tin cá nhân có thể bị lộ Nhiều thiết bị IoT có tính năng bảo mật yếu, dễ dàng bị xâm nhập, tạo ra lỗ hổng cho các cuộc tấn công mạng quy mô lớn.

Quản lý và cập nhật phần mềm cho các thiết bị IoT là rất quan trọng để duy trì tính bảo mật và hiệu suất Tuy nhiên, việc này thường gặp khó khăn do sự phân tán của các thiết bị và sự khác biệt giữa các nhà sản xuất.

Xử lý và phân tích dữ liệu lớn từ IoT là một thách thức lớn, đặc biệt trong việc thực hiện các phân tích thời gian thực để đưa ra quyết định nhanh chóng.

Các thiết bị IoT thường gặp hạn chế về năng lượng và độ bền do hoạt động liên tục và khó tiếp cận nguồn năng lượng Vì vậy, cần thiết phải có các giải pháp tiết kiệm năng lượng Ngoài ra, thiết bị IoT thường được sử dụng trong môi trường khắc nghiệt và yêu cầu khả năng hoạt động lâu dài mà không cần bảo trì, điều này đặt ra yêu cầu cao về thiết kế chịu lực và độ bền.

GIỚI THIỆU CÁC CÔNG CỤ THIẾT KẾ APP

React Native là framework phát triển ứng dụng di động do Facebook giới thiệu vào năm 2015, nhanh chóng trở thành công cụ phổ biến nhờ khả năng viết mã nguồn một lần và chạy trên cả iOS và Android Được xây dựng trên nền tảng React, một thư viện JavaScript nổi tiếng cho việc xây dựng giao diện người dùng, React Native mang lại hiệu suất cao và trải nghiệm người dùng tốt.

React Native ra đời từ nhu cầu của Facebook trong việc phát triển ứng dụng di động hiệu quả hơn Trước đó, đội ngũ phát triển phải duy trì hai mã nguồn riêng biệt cho iOS và Android, gây khó khăn trong quản lý và phát triển tính năng đồng nhất Nhận thấy tiềm năng của React, một thư viện JavaScript do Facebook phát triển, họ đã quyết định tạo ra React Native để giải quyết vấn đề này.

Năm 2013, nhóm phát triển đã bắt đầu nghiên cứu cách áp dụng các nguyên lý của React để xây dựng giao diện người dùng hiệu quả trong phát triển ứng dụng di động.

Dự án React Native được khởi động vào năm 2013 và ra mắt lần đầu tại hội nghị React.js Conf vào năm 2015 Mục tiêu chính của React Native là tạo ra một công cụ phát triển ứng dụng di động cho phép chia sẻ mã nguồn giữa iOS và Android, đồng thời đảm bảo hiệu suất tương đương với ứng dụng gốc.

Hình 2.2 React Native (Nguồn: https://worldvectorlogo.com/logo/react-native-1) Ưu điểm của React Native:

React Native mang lại khả năng tái sử dụng mã nguồn vượt trội giữa hai nền tảng iOS và Android, cho phép các nhà phát triển viết các thành phần giao diện và logic ứng dụng chỉ một lần Điều này không chỉ tiết kiệm thời gian mà còn giảm thiểu công sức trong quá trình phát triển, với tỷ lệ mã nguồn tái sử dụng có thể đạt từ 70% đến 90%.

React Native phát triển nhanh chóng nhờ tính năng Hot Reloading, cho phép lập trình viên quan sát ngay các thay đổi trong mã code mà không cần phải biên dịch lại nhiều lần Điều này không chỉ tăng tốc quá trình phát triển mà còn giúp phát hiện lỗi một cách nhanh chóng và hiệu quả hơn.

React Native sở hữu một cộng đồng lớn mạnh và nhiệt huyết, cung cấp nhiều thư viện và tài liệu hỗ trợ Sự phong phú này giúp lập trình viên dễ dàng tìm kiếm giải pháp cho các vấn đề gặp phải.

Tiết kiệm chi phí là một lợi ích lớn khi chỉ cần một đội ngũ phát triển duy nhất để viết mã cho cả hai nền tảng, giúp giảm thiểu chi phí nhân lực và nâng cao hiệu quả công việc.

Nhược điểm của React Native

Mặc dù React Native mang lại hiệu suất tốt cho nhiều ứng dụng, nhưng khi đối mặt với các yêu cầu xử lý đồ họa phức tạp hoặc tác vụ tính toán nặng, hiệu suất của nó không thể sánh bằng các ứng dụng gốc được phát triển bằng các ngôn ngữ như Swift hoặc Kotlin.

React Native có hạn chế về tính năng gốc, khi một số chức năng đặc trưng của từng nền tảng không được hỗ trợ đầy đủ Điều này buộc lập trình viên phải viết mã gốc để bổ sung, dẫn đến sự giảm tính đồng nhất của mã nguồn và tăng độ phức tạp trong quá trình phát triển.

• Hỗ trợ không đồng đều: Một số thư viện và công cụ mới nhất trên iOS và Android có thể không được hỗ trợ kịp thời trong React Native [2]

Expo là nền tảng phát triển ứng dụng di động đa nền tảng mạnh mẽ, sử dụng React Native, giúp lập trình viên dễ dàng xây dựng và quản lý ứng dụng trên iOS và Android mà không cần kiến thức sâu về từng nền tảng Với bộ công cụ phong phú, Expo cung cấp các API như camera, vị trí địa lý và thông báo, cùng với môi trường phát triển tích hợp tiện lợi Nền tảng này rút ngắn thời gian phát triển, đảm bảo tính nhất quán và hiệu quả, giúp nâng cao chất lượng và trải nghiệm người dùng cho các dự án di động.

Hình 2.3 Expo (Nguồn : https://www.svgrepo.com/svg/353722/expo) Lợi ích của Expo

Expo giúp đơn giản hóa quá trình thiết lập môi trường phát triển, cho phép bạn bắt đầu ngay lập tức với một dự án mới mà không cần cài đặt và cấu hình nhiều công cụ hay SDK khác nhau.

Tính năng hot reloading của Expo cho phép bạn xem ngay các thay đổi trong ứng dụng mà không cần phải xây dựng lại từ đầu, từ đó giúp tăng tốc độ phát triển và thử nghiệm hiệu quả.

Expo cung cấp một bộ thư viện đa dạng với nhiều API sẵn có, giúp lập trình viên dễ dàng truy cập các tính năng thiết bị như máy ảnh, vị trí, thông báo và lưu trữ cục bộ Điều này cho phép tích hợp các tính năng phổ biến mà không cần viết mã gốc, tiết kiệm thời gian và công sức cho các nhà phát triển.

Ứng dụng Expo Go trên iOS và Android cho phép người dùng chạy và thử nghiệm ứng dụng trực tiếp trên thiết bị di động một cách dễ dàng, không cần trải qua quy trình build và cài đặt phức tạp Chỉ cần quét mã QR, bạn sẽ ngay lập tức thấy ứng dụng của mình hoạt động.

GIỚI THIỆU VỀ XỬ LÝ ẢNH

Xử lý ảnh là một lĩnh vực trong khoa học máy tính và kỹ thuật điện tử, tập trung vào việc thao tác, phân tích và trích xuất thông tin từ hình ảnh và video Mục tiêu chính của xử lý ảnh không chỉ là cải thiện chất lượng hình ảnh mà còn là hiểu và diễn giải nội dung một cách chính xác Điều này bao gồm việc áp dụng các thuật toán và phương pháp để xử lý dữ liệu hình ảnh từ nhiều nguồn khác nhau như camera, cảm biến và các tệp ảnh lưu trữ.

Mục tiêu chính của xử lý ảnh là trích xuất thông tin hữu ích từ dữ liệu hình ảnh, giúp các hệ thống tự động và ứng dụng phần mềm nhận diện, phân tích và hiểu các yếu tố trong môi trường xung quanh Quy trình xử lý ảnh bao gồm từ các bước cơ bản như nâng cao chất lượng hình ảnh đến các công đoạn phức tạp hơn như nhận dạng, phân loại đối tượng, phân tích hành vi và tạo ra các mô hình nhận diện.

− Y tế: Xử lý ảnh hỗ trợ trong chẩn đoán bệnh, theo dõi tiến triển bệnh, phẫu thuật robot và hình ảnh y tế chẩn đoán như MRI, CT

− An ninh và giám sát: Nhận dạng khuôn mặt, phân tích hành vi, giám sát giao thông, nhận diện biển số xe

− Ô tô tự động và robot: Xử lý ảnh giúp xe tự động phân biệt vật thể, nhận dạng biển báo giao thông, và dự đoán môi trường

− Công nghiệp và kiểm tra chất lượng: Kiểm tra chất lượng sản phẩm, phát hiện lỗi sản xuất, và tự động hóa quy trình kiểm tra

− Quảng cáo và giải trí: Tạo hiệu ứng hình ảnh, chỉnh sửa ảnh, nhận diện thương hiệu và phân tích hành vi người dùng

− Khoa học và nghiên cứu: Phân tích hình ảnh thiên văn, hình ảnh y sinh học, và nghiên cứu môi trường

Dưới đây sẽ mô tả về các bước trong xử lý ảnh

Thu nhận ảnh Tiền xử lý Phân đoạn ảnh Biểu diễn và mô tả

Nhận dạng và nội suy

Hình 2.6 Các bước trong xử lý ảnh

Thu thập ảnh là bước đầu tiên trong quy trình, nơi hình ảnh được lấy từ các nguồn như máy ảnh kỹ thuật số, camera giám sát hoặc các tập tin hình ảnh có sẵn Độ phân giải, ánh sáng và chất lượng của hình ảnh ban đầu đóng vai trò quan trọng trong việc đảm bảo hiệu quả cho các bước xử lý tiếp theo.

Tiền xử lý là giai đoạn quan trọng trong việc chuẩn bị hình ảnh cho các bước xử lý phức tạp hơn Các kỹ thuật phổ biến trong tiền xử lý bao gồm việc làm sạch, chuẩn hóa và tăng cường hình ảnh để cải thiện chất lượng và độ chính xác của các bước tiếp theo.

• Làm sạch Nhiễu (Noise Reduction): Sử dụng các thuật toán lọc để giảm thiểu các nhiễu trong hình ảnh

• Điều Chỉnh Độ Sáng và Tương Phản: Điều chỉnh độ sáng và tương phản để làm nổi bật các chi tiết quan trọng trong ảnh

• Cân Bằng Màu Sắc: Điều chỉnh các kênh màu để làm cho hình ảnh có màu sắc tự nhiên hơn

• Phân Cắt (Cropping): Cắt bỏ các phần không cần thiết của hình ảnh để tập trung vào khu vực quan tâm

Phân đoạn ảnh là quá trình chia hình ảnh thành các vùng hoặc đối tượng riêng biệt dựa trên các đặc tính như màu sắc, độ sáng và hình học Mục tiêu chính của phân đoạn ảnh là tách biệt các đối tượng hoặc khu vực quan trọng, nhằm tạo điều kiện thuận lợi cho việc phân tích và xử lý tiếp theo.

Representation and Description involve converting image objects into numerical features or vectors to capture their characteristics Techniques such as Histogram of Oriented Gradients (HOG), Scale-Invariant Feature Transform (SIFT), and Convolutional Neural Networks (CNN) are commonly employed for feature extraction.

Nhận dạng và nội suy là giai đoạn quan trọng nhất trong việc sử dụng thuật toán học máy và trí tuệ nhân tạo để nhận diện và phân loại các đối tượng hoặc sự kiện trong hình ảnh Các phương pháp như học sâu, mạng nơ-ron nhân tạo, và học máy được áp dụng để phát triển các mô hình nhận dạng và phân tích hiệu quả.

GIỚI THIỆU VỀ TRÍ TUỆ NHÂN TẠO AI

Trí tuệ nhân tạo (AI) là lĩnh vực khoa học máy tính chuyên phát triển hệ thống và máy tính có khả năng thực hiện các nhiệm vụ đòi hỏi trí thông minh của con người Những nhiệm vụ này bao gồm nhận thức, học hỏi, lập luận, giải quyết vấn đề, hiểu ngôn ngữ tự nhiên và sáng tạo nghệ thuật.

Các lĩnh vực chính của AI

Học máy (Machine Learning - ML) là một nhánh quan trọng của trí tuệ nhân tạo (AI), chuyên phát triển các thuật toán giúp máy tính tự học từ dữ liệu và cải thiện hiệu suất theo thời gian mà không cần lập trình chi tiết cho từng nhiệm vụ Các phương pháp học máy phổ biến bao gồm học có giám sát, học không giám sát và học tăng cường.

Học sâu, một nhánh quan trọng của học máy, áp dụng các mạng nơ-ron nhân tạo với nhiều lớp để rút ra kiến thức từ dữ liệu Phương pháp này đã mang lại nhiều thành tựu nổi bật trong các lĩnh vực như nhận diện hình ảnh, xử lý ngôn ngữ tự nhiên và phát triển trí tuệ nhân tạo trong trò chơi.

Xử lý ngôn ngữ tự nhiên (NLP) là lĩnh vực nghiên cứu giúp máy tính hiểu và tương tác với ngôn ngữ của con người một cách tự nhiên Các ứng dụng của NLP rất đa dạng, bao gồm dịch máy, phân tích cảm xúc và phát triển chatbots, mang lại trải nghiệm giao tiếp hiệu quả hơn giữa con người và máy móc.

Thị giác máy tính (Computer Vision) cho phép máy tính "nhìn thấy" và hiểu hình ảnh cũng như video Ứng dụng của công nghệ này rất đa dạng, bao gồm nhận diện khuôn mặt, phân loại hình ảnh và hỗ trợ trong việc tự lái xe.

Một số ứng dụng của AI trong đời sống và công nghiệp

• Y tế: AI được sử dụng để chẩn đoán bệnh, dự đoán kết quả điều trị và hỗ trợ nghiên cứu y học

• Giao thông: Công nghệ tự lái xe, tối ưu hóa luồng giao thông và quản lý vận tải thông minh

• Giáo dục: Cá nhân hóa trải nghiệm học tập, đánh giá và phản hồi tự động

• Tài chính: Dự đoán thị trường, phát hiện gian lận và quản lý tài sản tự động

• Giải trí: Đề xuất nội dung, tạo ra nội dung số và tương tác với người dùng qua trò chơi và thực tế ảo.

NGÔN NGỮ LẬP TRÌNH PYTHON

Hình 2.7 Ngôn ngữ lập trình Python (Nguồn: https://en.m.wikipedia.org/wiki/File:Python-logo-notext.svg)

Python là ngôn ngữ lập trình thông dịch nổi bật, được thiết kế để đơn giản hóa lập trình với mã nguồn dễ đọc và hiểu Ra đời vào những năm 1990, Python đã nhanh chóng trở thành một trong những ngôn ngữ phổ biến nhất toàn cầu Với cú pháp ngắn gọn, linh hoạt và dễ học, Python là lựa chọn lý tưởng cho cả lập trình viên mới bắt đầu và chuyên gia Ngôn ngữ này có ứng dụng rộng rãi trong nhiều lĩnh vực như phát triển web, khoa học dữ liệu, máy học, tự động hóa và game Cộng đồng lập trình Python lớn mạnh và chuyên nghiệp, cung cấp nhiều thư viện và công cụ hỗ trợ, giúp tăng cường hiệu quả và tiết kiệm thời gian trong phát triển phần mềm.

Python là một ngôn ngữ lập trình được yêu thích vì nhiều ưu điểm nổi bật:

Python có cú pháp đơn giản và gần gũi với ngôn ngữ tự nhiên, giúp người mới bắt đầu dễ dàng tiếp cận và viết mã hiệu quả Điều này không chỉ giảm thời gian học tập so với các ngôn ngữ lập trình khác mà còn nâng cao năng suất làm việc.

Python là một ngôn ngữ lập trình đa năng và linh hoạt, có thể được áp dụng trong nhiều lĩnh vực như phát triển web, khoa học dữ liệu, máy học, tự động hóa và tính toán khoa học Sự đa dạng trong ứng dụng của Python khiến nó trở thành công cụ lý tưởng cho lập trình viên và nhà khoa học.

Python sở hữu một cộng đồng lớn và nhiệt tình, cùng với nhiều thư viện và framework miễn phí, giúp tăng tốc độ và hiệu quả trong phát triển phần mềm Các thư viện nổi bật bao gồm NumPy và Pandas cho khoa học dữ liệu, TensorFlow và PyTorch cho máy học, cũng như Django và Flask cho phát triển web.

Python là một ngôn ngữ lập trình có tính tương thích và di động cao, hoạt động trên nhiều hệ điều hành như Windows, macOS và Linux, giúp việc triển khai phần mềm trở nên dễ dàng và thuận tiện Bên cạnh đó, Python còn hỗ trợ tích hợp với nhiều ngôn ngữ lập trình và công nghệ khác nhau.

Python cung cấp một bộ công cụ phát triển mạnh mẽ, bao gồm các môi trường phát triển tích hợp (IDE) như PyCharm, VS Code, và Jupyter Notebook Ngoài ra, các công cụ gỡ lỗi như PDB giúp lập trình viên dễ dàng quản lý mã nguồn và tối ưu hóa quy trình phát triển.

2.5.2 Giới thiệu về Threading (Đa luồng) trong Python

Threading là kỹ thuật lập trình cho phép thực hiện nhiều tác vụ đồng thời trong ứng dụng, tận dụng khả năng đa luồng của CPU Trong Python, mô-đun threading cung cấp các công cụ hữu ích để tạo và quản lý các luồng (threads), giúp tối ưu hóa hiệu suất và khả năng xử lý của chương trình.

Một luồng là đơn vị nhỏ nhất trong một tiến trình, cho phép thực thi độc lập Mỗi tiến trình có thể bao gồm nhiều luồng, và các luồng này có khả năng chạy song song với nhau.

Python sử dụng GIL (Global Interpreter Lock), một cơ chế khóa giúp đảm bảo chỉ một luồng thực thi Python bytecode tại một thời điểm Điều này có nghĩa là, mặc dù có thể tạo ra nhiều luồng, nhưng chúng không thực sự hoạt động đồng thời trên các lõi CPU khác nhau trong Python tiêu chuẩn.

Hình 2.8 Sử dụng đơn luồng (Nguồn: https://websitehcm.com/thread-trong-python/)

Hình 2.9 Sử dụng đa lường (Nguồn: https://websitehcm.com/thread-trong-python/)

So Sánh Threading với Thực Hiện Bình Thường

• Tính Tuần Tự: Các tác vụ được thực hiện một cách tuần tự, nghĩa là một tác vụ phải hoàn thành trước khi tác vụ tiếp theo bắt đầu

Khi thực hiện nhiều tác vụ I/O như đọc/ghi tệp hoặc kết nối mạng một cách tuần tự, có thể dẫn đến thời gian chờ kéo dài và làm giảm hiệu suất sử dụng tài nguyên hệ thống.

Lập trình tuần tự thường dễ dàng hơn do không cần quản lý đồng bộ hóa, giúp tránh các tình trạng đua và giảm độ phức tạp của mã nguồn.

• Tính Đồng Thời: Nhiều tác vụ có thể được thực hiện đồng thời, giúp giảm thời gian chờ đợi trong các tác vụ I/O

Threading có thể nâng cao hiệu năng trong các tác vụ I/O hoặc những tác vụ cần thời gian chờ, nhưng hiệu quả cải thiện có thể hạn chế trong các tác vụ tiêu tốn nhiều CPU do sự tồn tại của GIL.

Lập trình đa luồng có độ phức tạp cao do yêu cầu quản lý đồng bộ hóa và tránh tình trạng đua (race conditions), điều này làm gia tăng sự khó khăn trong việc viết và duy trì mã nguồn.

2.5.3 Giới thiệu về thư viện OpenCV

Hình 2.10 Thư viện OpenCV (Nguồn: https://en.wikipedia.org/wiki/File:OpenCV_Logo_with_text.png)

Thư viện OpenCV (Open Source Computer Vision Library) là một công cụ mã nguồn mở quan trọng cho xử lý hình ảnh và thị giác máy tính, được phát triển bởi Intel vào năm 1999 Với sự hỗ trợ mạnh mẽ từ cộng đồng và liên tục cải tiến qua các phiên bản, OpenCV đã nhanh chóng trở thành một trong những thư viện hàng đầu trong lĩnh vực này.

Những Điểm Nổi Bật của OpenCV:

OpenCV là một thư viện đa năng và mạnh mẽ, cung cấp nhiều công cụ và thuật toán phong phú cho việc xử lý hình ảnh và video Thư viện này hỗ trợ từ các tác vụ đơn giản như xử lý màu sắc và cắt ghép ảnh đến những nhiệm vụ phức tạp hơn như nhận dạng đối tượng, phân đoạn ảnh và theo dõi chuyển động.

− Hỗ trợ đa nền tảng: OpenCV hỗ trợ trên nhiều hệ điều hành như Windows,

Linux, macOS, Android và iOS, giúp cho việc phát triển ứng dụng dễ dàng và linh hoạt trên các nền tảng khác nhau

GIỚI THIỆU VỀ PORT FORWARDING

Port Forwarding là kỹ thuật định tuyến gói dữ liệu từ thiết bị bên ngoài vào mạng nội bộ, cho phép truy cập các dịch vụ và ứng dụng nội bộ Kỹ thuật này chuyển tiếp yêu cầu kết nối từ một cổng trên thiết bị mạng này sang cổng khác trên thiết bị mạng khác, ví dụ như chuyển tiếp yêu cầu đến cổng 80 (HTTP) của router đến cổng 8080 của máy chủ web nội bộ Port Forwarding giúp quản lý và điều hướng kết nối, cho phép kiểm soát và định tuyến các yêu cầu kết nối theo nhu cầu.

Port Forwarding có thể được cấu hình để chuyển tiếp kết nối TCP

Giao thức TCP (Transmission Control Protocol) và UDP (User Datagram Protocol) hỗ trợ nhiều ứng dụng và dịch vụ như máy chủ web và máy chủ game Tuy nhiên, nếu không được cấu hình đúng cách, chúng có thể gây ra lỗ hổng bảo mật Do đó, cần thực hiện các biện pháp bảo mật như giới hạn địa chỉ IP nguồn, sử dụng tường lửa và thường xuyên cập nhật firmware của router Việc chuyển tiếp cổng (Port Forwarding) thường được thực hiện qua giao diện quản lý của router, yêu cầu người dùng hoặc quản trị viên có quyền truy cập và kiến thức về cách cấu hình các thông số liên quan.

NHỮNG PHẦN MỀM VÀ WEB ĐƯỢC SỬ DỤNG TRONG ĐỀ TÀI

2.7.1 Visual Studio Code (VS Code)

Visual Studio Code (VS Code) là trình soạn thảo mã nguồn mở miễn phí do Microsoft phát triển, ra mắt lần đầu vào tháng 4 năm 2015 Kết hợp giữa sự đơn giản của một trình soạn thảo văn bản và tính năng mạnh mẽ của một môi trường phát triển tích hợp (IDE), VS Code đã nhanh chóng trở thành công cụ ưa chuộng trong cộng đồng lập trình viên Điểm nổi bật của VS Code là khả năng hỗ trợ đa nền tảng, hoạt động mượt mà trên Windows, macOS và Linux, giúp lập trình viên thuận tiện làm việc trên nhiều hệ điều hành khác nhau.

VS Code là một công cụ lập trình mạnh mẽ với nhiều tính năng nổi bật như hỗ trợ gỡ lỗi, điều hướng mã nguồn và tích hợp Git Hệ thống tiện ích mở rộng phong phú cho phép người dùng tùy chỉnh và mở rộng chức năng của VS Code cho nhiều ngôn ngữ lập trình và khung làm việc khác nhau Thêm vào đó, tính năng IntelliSense cung cấp gợi ý mã, hoàn thành tự động và kiểm tra lỗi cú pháp, giúp nâng cao hiệu suất làm việc và giảm thiểu lỗi lập trình.

Giao diện hiện đại và thân thiện của VS Code cho phép lập trình viên tùy chỉnh môi trường làm việc với nhiều lựa chọn về màu sắc, giao diện và phím tắt Ngoài ra, VS Code hỗ trợ làm việc nhóm hiệu quả thông qua tính năng Live Share, cho phép nhiều lập trình viên cùng chỉnh sửa mã nguồn trong thời gian thực, từ đó nâng cao sự hợp tác và giao tiếp trong các dự án phát triển phần mềm.

Visual Studio Code đã trở thành công cụ thiết yếu cho lập trình viên toàn cầu nhờ sự kết hợp hoàn hảo giữa tính linh hoạt, hiệu suất và khả năng mở rộng, phục vụ cho cả người mới học lập trình lẫn các chuyên gia công nghệ thông tin.

(Nguồn:https://commons.wikimedia.org/wiki/File:Visual_Studio_Code_1.35_icon.s vg)

Arduino IDE là phần mềm thiết kế để lập trình và tải mã lên vi điều khiển của bo mạch Arduino Với giao diện thân thiện, phần mềm này giúp người dùng, kể cả những người không chuyên, dễ dàng thực hiện lập trình các bo mạch Arduino.

Arduino IDE sở hữu giao diện người dùng thân thiện và dễ dàng sử dụng, bao gồm trình soạn thảo mã nguồn, bảng điều khiển và các công cụ cần thiết để biên dịch và tải mã lên bo mạch Người dùng có thể lập trình bằng ngôn ngữ dựa trên Wiring, một phiên bản đơn giản hóa của C++ được tối ưu hóa cho vi điều khiển Sau khi hoàn tất việc viết và biên dịch mã, người dùng có thể dễ dàng tải mã lên bo mạch Arduino qua cổng USB.

Một trong những điểm mạnh của Arduino IDE là thư viện phong phú và cộng đồng người dùng đông đảo Thư viện này cung cấp nhiều đoạn mã mẫu và các thư viện hỗ trợ cho cảm biến, động cơ, màn hình và nhiều thiết bị khác, giúp lập trình trở nên dễ dàng và hiệu quả Cộng đồng người dùng Arduino toàn cầu thường xuyên chia sẻ dự án, hướng dẫn và hỗ trợ kỹ thuật, tạo điều kiện thuận lợi cho việc học tập và phát triển ứng dụng sáng tạo.

Arduino IDE hỗ trợ nhiều loại bo mạch, không chỉ các bo mạch chính hãng mà còn cả bo mạch tương thích, mang lại sự linh hoạt và đa dạng cho các dự án Với tính dễ sử dụng, tính linh hoạt và sự hỗ trợ từ cộng đồng, Arduino IDE đã trở thành công cụ quan trọng trong giáo dục, nghiên cứu và phát triển ứng dụng nhúng, giúp hiện thực hóa ý tưởng sáng tạo một cách nhanh chóng và hiệu quả.

(Nguồn: https://commons.wikimedia.org/wiki/File:Arduino_IDE_logo.svg)

KiCAD là phần mềm hỗ trợ thiết kế mạch điện tử, từ sơ đồ nguyên lý đến bảng mạch in (PCB) Phần mềm này cung cấp một bộ công cụ toàn diện, bao gồm Eeschema cho việc tạo sơ đồ nguyên lý và Pcbnew cho thiết kế PCB Eeschema sở hữu giao diện trực quan giúp người dùng dễ dàng vẽ sơ đồ, trong khi Pcbnew cung cấp tính năng mạnh mẽ cho việc thiết kế và chỉnh sửa PCB với độ chính xác cao, hỗ trợ nhiều lớp và công cụ kiểm tra lỗi.

KiCAD nổi bật với tính linh hoạt và khả năng tùy chỉnh cao, cho phép người dùng cá nhân hóa phần mềm theo nhu cầu cụ thể Người dùng có thể tải về, tạo mới hoặc chỉnh sửa các thư viện linh kiện và footprints để đáp ứng yêu cầu dự án Ngoài ra, KiCAD hỗ trợ nhiều định dạng xuất, bao gồm Gerber, giúp quy trình sản xuất PCB trở nên dễ dàng và thuận tiện hơn.

Cộng đồng người dùng và nhà phát triển đông đảo của KiCAD đóng vai trò quan trọng trong việc cải tiến và mở rộng phần mềm Sự hỗ trợ từ cộng đồng này giúp KiCAD liên tục cập nhật các tính năng mới và cải tiến, đồng thời cung cấp tài liệu hướng dẫn và diễn đàn thảo luận hữu ích cho người dùng.

KiCAD là công cụ thiết yếu cho kỹ sư điện tử, từ người mới bắt đầu đến chuyên gia, nhờ vào tính năng mạnh mẽ, tính linh hoạt và cộng đồng hỗ trợ nhiệt tình, giúp thiết kế và phát triển mạch điện tử chất lượng cao.

(Nguồn: https://en.m.wikipedia.org/wiki/File:KiCad-Logo.svg)

BalenaEtcher là phần mềm mã nguồn mở miễn phí do Balena phát triển, giúp người dùng tạo USB boot hoặc thẻ nhớ SD từ các tập tin ảnh ISO hoặc IMG Với giao diện thân thiện và dễ sử dụng, BalenaEtcher cho phép thực hiện quá trình ghi chỉ trong ba bước đơn giản: chọn tập tin ảnh, chọn thiết bị đích và bắt đầu ghi Điều này khiến phần mềm trở thành lựa chọn lý tưởng cho cả những người không có nhiều kinh nghiệm kỹ thuật Hỗ trợ đa nền tảng, BalenaEtcher hoạt động mượt mà trên Windows, macOS và Linux, giúp người dùng dễ dàng tạo USB boot hoặc thẻ nhớ.

BalenaEtcher là phần mềm ghi hình ảnh đáng tin cậy trên nhiều hệ điều hành, nổi bật với tính năng kiểm tra sau khi ghi (validation) giúp đảm bảo dữ liệu được ghi chính xác và toàn vẹn Phần mềm hỗ trợ nhiều định dạng tập tin ảnh phổ biến như ISO, IMG và ZIP, mang lại sự linh hoạt cho người dùng Với tốc độ ghi nhanh và độ tin cậy cao, BalenaEtcher trở thành công cụ quan trọng cho những ai làm việc với hệ điều hành hoặc hệ thống nhúng như Raspberry Pi và Jetson Nano.

(Nguồn: https://commons.wikimedia.org/wiki/File:Etcher-icon.png)

SD Card Formatter là công cụ tối ưu để định dạng thẻ SD, SDHC và SDXC, giúp nâng cao hiệu suất lưu trữ và truy cập dữ liệu Công cụ này tuân thủ tiêu chuẩn định dạng của Hiệp hội SD, đảm bảo thẻ nhớ hoạt động ổn định và hiệu quả Hỗ trợ cả Windows và macOS, SD Card Formatter mang lại trải nghiệm người dùng mượt mà với giao diện đơn giản, cho phép thực hiện định dạng nhanh chóng và dễ dàng, đồng thời giảm thiểu rủi ro hỏng dữ liệu so với các phương pháp thông thường.

(Nguồn: https://roaringapps.com/app/sd-card-formatter)

THIẾT KẾ HỆ THỐNG

YÊU CẦU HỆ THỐNG

Hệ thống phải đảm bảo các yêu cầu sau:

• Có thể mở cửa bằng nhận diện khuôn mặt,nhập mật khẩu trên màn hình DWIN, mở bằng app trên điện thoại

• Có thể xem camera trên điện thoại

• Có thể điều chỉnh mật khẩu màn hình trên điện thoại

• Tính năng đăng ký, đăng nhập trên app

Hình sau thể hiện sự giao tiếp qua lại của các thành phần trong hệ thống

Cảm biến Camera Động cơ khóa

Hình 3.1 Sơ đồ hoạt động của hệ thống

− Mobile app sẽ gửi các giá trị người dùng thay đổi đến server đồng thời hiển thị trạng thái cửa và xem camera từ server

− ESP32 và server thực hiện POST và GET dữ liệu qua lại với nhau

− Jetson nano khi nhận diện được khuôn mặt sẽ gửi tín hiệu qua cho ESP32 bằng UART

− Jetson nano gửi video lên server để mobile app có thể lấy và hiển thị

− Màn DWIN giao tiếp UART với ESP32 để nhập và hiển thị mật khẩu

− Cảm biến gửi tính hiệu về cho ESP32

− Camera lấy khung hình về cho Jetson

− ESP32 đưa tính hiệu điều khiển động cơ

THIẾT KẾ PHẦN CỨNG

3.2.1.1 ESP32 ESP-WROOM-32E a) Tổng quan

ESP32 ESP-WROOM-32E là một module vi điều khiển mạnh mẽ từ Espressif Systems, nổi bật với khả năng hỗ trợ kết nối Wi-Fi và Bluetooth Với hiệu suất cao và tính linh hoạt vượt trội, ESP32 ESP-WROOM-32E thường được ứng dụng trong nhiều dự án khác nhau.

− IoT (Internet of Things): văn phòng, nhà thông minh, đồng hồ thông minh

− Tự động hóa: Điều khiển các thiết bị gia dụng, hệ thống công nghiệp

− Giáo dục và nghiên cứu: Dễ dàng lập trình và sử dụng trong các dự án học thuật và nghiên cứu

(Nguồn: https://www.amazon.com/Espressif-ESP32-WROOM-32E-Module-

Antenna-ESP-32E/dp/B09BRK6DQQ) b) Thông số kỹ thuật

− WiFi: hỗ trợ các chuẩn 802.11

− Bluetooth v4.2 EDR/ER and BLE specification

− WiFi chế độ softAP / SoftAP/Station + P2P/station

Hình 3.3 Sơ đồ khối chức năng của ESP32

(Nguồn:https://www.exploreembedded.com/wiki/Overview_of_ESP32_features._Wh at_do_they_practically_mean%3F)

Hình 3.4 Sơ đồ chân của ESP32 (Nguồn: https://fr.aliexpress.com/item/1005006040003052.html)

3.2.1.2 Màn hình DWIN a) Tổng quan

Màn hình DWIN là giải pháp hiển thị tiên tiến, lý tưởng cho hệ thống nhúng và công nghiệp, nhờ vào khả năng hiển thị sắc nét và độ bền cao Với tính tùy biến linh hoạt, màn hình này đáp ứng yêu cầu của nhiều lĩnh vực khác nhau Được trang bị các giao diện phổ biến như UART, RS232, RS485 và SPI, màn hình DWIN dễ dàng kết nối với nhiều hệ thống Khả năng thiết kế và sửa chữa giao diện qua phần mềm DGUS cùng với độ bền vượt trội giúp màn hình DWIN trở thành lựa chọn hàng đầu trong nhiều ứng dụng.

(Nguồn: https://roboticsdna.in/product/4-3inch-800x480-ips-industrial-hmi-uart- lcd-display-without-touch/) b) Thông số kỹ thuật

− Kích thước màn : 4.3inch (93.60mm (W) ×56.16mm (H))

− Độ phân giải: 800x480 Pixels (Hỗ trợ xoay 0°/90°/180°/270° )

− Màu sắc: hổ trợ hiển thị 262K(262144 màu)

− Loại màn hình: TFT LCD

Hình 3.6 Cấu tạo màn hình DWIN 4.3 inch

(Nguồn: https://roboticsdna.in/product/4-3inch-800x480-ips-industrial-hmi-uart- lcd-display-without-touch/)

− RTC: Đồng hồ thời gian thực

− PGT05 Interface: Giao diện PGT05

− Reserved Module Interface: Giao diện dự trữ cho module

− SD Card: Khe cắm thẻ SD

− Expand FLASH: Khe mở rộng bộ nhớ FLASH

− ON=TTL, OFF=RS232: Công tắc chuyển đổi giữa chế độ TTL và RS232

− TP Interface: Giao diện cảm ứng (Touch Panel)

− LCM Interface: Giao diện màn hình tinh thể lỏng

− User Interface: Giao diện người sử dụng

3.2.1.3 Cảm biến tiệm cận LJ12A3-4-Z/BX a) Tổng quan

Cảm biến LJ12A3-4-Z/BX là một thiết bị công nghiệp phổ biến, sử dụng trong hệ thống tự động hóa và điều khiển, hoạt động theo nguyên lý cảm biến từ để phát hiện vật thể kim loại mà không cần tiếp xúc Với thiết kế nhỏ gọn và độ bền cao, cảm biến này có khả năng phát hiện ở khoảng cách lên đến 4mm, thường được ứng dụng trong kiểm tra vị trí, phát hiện đối tượng và điều khiển tự động trong dây chuyền sản xuất Đặc biệt, với vỏ thép không gỉ và chuẩn bảo vệ IP67, LJ12A3-4-Z/BX đảm bảo hoạt động ổn định trong môi trường công nghiệp khắc nghiệt, mang lại hiệu suất và độ tin cậy cao.

Hình 3.7 Cảm biến tiệm cận LJ12A3-4-Z/BX

(Nguồn: https://linhkienviet.vn/cam-bien-tiem-can-lj12a3-4-z-bx-npn-thuong-mo) b) Thông số kỹ thuật

− Điện áp cung cấp : 6-36 VDC

− Ngõ ra: NPN cực thu để hở

− Đường kính của đầu dò: 12mm

− Khoảng cách hoạt động: 0 đến 4mm

3.2.1.4 Camera Xiaomi Xiaovv- XVV-6320S a) Tổng quan

Hình 3.8 Camera Xiaomi Xiaovv- XVV-6320S

(Nguồn: https://www.kimlong.vn/webcam-may-tinh-xiaomi-xiaovv-xvv-6320s)

Xiaomi Xiaovv XVV-6320S là một webcam thông minh, lý tưởng cho việc bảo mật và tiện ích trong văn phòng và gia đình Với độ phân giải cao, sản phẩm này mang lại hình ảnh chi tiết, giúp người dùng dễ dàng quan sát mọi góc độ của không gian Công nghệ hồng ngoại thông minh cho phép camera hoạt động hiệu quả vào ban đêm mà không cần ánh sáng phụ trợ, đảm bảo giám sát liên tục và không bỏ sót bất kỳ chi tiết nào.

− Nhiệt độ hoạt động: từ -10°C đến 50°C

− Định dạng video hỗ trợ: H.264, H.265, MJPG, NV12, YUY2

− Hỗ trợ hệ điều hành: Linux 2.4.6, trở lên Mac OS 10.5 và Windows 7,8,10

Jetson Nano là nền tảng điện toán hiệu suất cao của NVIDIA, lý tưởng cho ứng dụng AI và học máy Nó cung cấp giải pháp mạnh mẽ và tiết kiệm chi phí, hỗ trợ các nhà phát triển, nhà nghiên cứu và người đam mê công nghệ trong việc xây dựng và triển khai dự án AI tại nhà hoặc trong môi trường công nghiệp.

NVIDIA cung cấp tài liệu học tập đa dạng, từ hướng dẫn cơ bản đến các dự án nâng cao, giúp người dùng nhanh chóng bắt đầu và phát triển các dự án của mình Cộng đồng Jetson là nguồn tài liệu quý giá, nơi các thành viên chia sẻ kiến thức, kinh nghiệm và hỗ trợ lẫn nhau trong việc giải quyết các vấn đề kỹ thuật.

(Nguồn: https://www.hwlibre.com/vi/nvidia-jetson-nano-sbc/)

Cấu hình và tính năng

• Bộ xử lý (CPU): Quad-core ARM Cortex-A57 MPCore processor

• Bộ xử lý đồ họa (GPU): 128-core NVIDIA Maxwell

• Lưu trữ: Khe cắm thẻ nhớ microSD (khuyến nghị sử dụng thẻ nhớ 32GB hoặc lớn hơn)

• Kết nối: 4x USB 3.0, HDMI 2.0, Ethernet Gigabit và DisplayPort 1.2, Camera Serial Interface (CSI), GPIO, I2C, I2S, SPI, UART

• Hệ điều hành: Ubuntu dựa trên NVIDIA JetPack SDK Ưu điểm của Jetson Nano

Jetson Nano mang lại hiệu suất cao với khả năng tính toán mạnh mẽ trong kích thước nhỏ gọn, lý tưởng cho các ứng dụng cần xử lý dữ liệu lớn và yêu cầu thời gian thực.

NVIDIA JetPack SDK cung cấp các công cụ và thư viện thiết yếu, giúp việc triển khai dự án AI trở nên dễ dàng hơn Bên cạnh đó, tài liệu hướng dẫn và cộng đồng hỗ trợ mạnh mẽ cũng là điểm cộng lớn cho người dùng.

• Đa dạng kết nối: có nhiều giao thức kết nối cho phép dễ dàng kết nối với các thiết bị và cảm biến

3.2.2 SƠ ĐỒ NGUYÊN LÝ BOARD MẠCH Ở đây em sử dụng một ổ khóa cũ có cấu tạo như hình:

Ổ khóa bao gồm một động cơ có chức năng đẩy một thanh kim loại nhỏ vào rãnh của bộ phận khóa, từ đó giúp mở khóa một cách hiệu quả.

Hình 3.11 Cấu tạo bộ phận khóa

Động cơ sẽ hoạt động khi được cấp nguồn 5VDC, ngừng hoạt động khi nguồn về 0VDC, và thu lại khi được cấp -5VDC, sau đó cũng ngừng khi về 0VDC Do đó, trong thiết kế mạch, tôi sẽ sử dụng mạch cầu H để điều khiển động cơ này hiệu quả.

Màn hình DWIN hoạt động ở điện áp 5V, trong khi cảm biến và ESP32 yêu cầu điện áp 3.3V Do đó, tôi sẽ sử dụng nguồn điện 220V, sau đó chuyển đổi thành 5V và tiếp tục hạ xuống 3.3V để cung cấp cho các thiết bị.

Hình 3.12 Sơ đồ nguyên lý nguồn 220VAC thành 5VDC

Để đảm bảo bo mạch vẫn hoạt động trong trường hợp mất điện, tôi đã bổ sung một nguồn pin và lắp đặt một công tắc để chuyển đổi giữa nguồn 220VAC và nguồn pin.

Hình 3.13 Sơ đồ nguyên lý nguồn Pin thành 5VDC

Trong sơ đồ trên điện áp từ Pin sẽ qua IC ổn áp LM2596S-5 để áp ra ổn định ở mức 5VDC và có một đèn led để báo hiệu

Hình 3.14 Sơ đồ nguyên lý nguồn 5VDC thành 3.3VDC

Điện áp 5VDC được chuyển đổi thành 3.3VDC thông qua IC ổn áp AMS117, cung cấp nguồn cho ESP32 và có đèn LED báo hiệu.

Hình 3.15 Sơ đồ nguyên lý mạch ESP32

Trước khi điện áp 3.3V vào ESP thì sẽ qua hai tụ để lọc để lọc nhiễu trước khi đưa vào để cấp vào nuôi cho ESP

Hình 3.16 Sơ đồ nguyên lý các chân nạp cho ESP

Trong sơ đồ, các chân ESP_TX và ESP_RX được sử dụng để nạp mã cho ESP32 thông qua USB TTL Nút BOOT cho phép chuyển ESP32 vào chế độ flash để tải mã, trong khi nút RESET giúp đưa ESP về trạng thái ban đầu khi xảy ra lỗi.

Hình 3.17 Sơ đồ nguyên lý các chân terminal

Trong sơ đồ trên là các chân terminal ra để kết nối với các thiết bị là cảm biến màn DWIN và giao tiếp UART với jetson nano

Hình 3.18 Lớp Top của board mạch

Hình 3.19 Lớp Bottom của board mạch

Hình 3.20 Các đường mạch của board

3.2.4 HỘP CHỨA CHO BOARD VÀ MÀN HÌNH

Hình 3.21 Hộp chưa màn hình và board

Với kích thước hộp là 170 x 124.5 x 50 mm với độ dày là 3mm

Hình 3.22 Bản vẽ 2D của hộp mặt trước và sau

Hình 3.23 Bản vẽ 2D của hộp các mặt xung quanh

THIẾT KẾ PHẦN MỀM

3.3.1 THIẾT KẾ VÀ LẬP TRÌNH MOBILE APP a) Phần font-end

❖ Bước 1: Tạo trước giao diện để lập trình

Khi sử dụng Figma, người dùng có thể thiết kế các tính năng và giao diện của ứng dụng từ góc nhìn của người sử dụng, trước khi bắt đầu lập trình chính thức.

Thiết kế trước là bước quan trọng giúp xác định rõ ràng các tính năng của ứng dụng Qua đó, chúng ta có thể dễ dàng phác thảo các màn hình khác nhau, bao gồm các thành phần như nút bấm, menu và các khu vực tương tác của người dùng.

Thiết kế trước giúp kiểm tra và đánh giá chi tiết các tính năng trước khi lập trình, từ đó phát hiện và khắc phục lỗi sớm Điều này không chỉ tiết kiệm thời gian mà còn giảm chi phí trong quá trình phát triển sau này.

Hình 3.24 Giao diện được thiết kế trước bằng figma

❖ Bước 2: Tạo dự án React Native mới

Mở Command Prompt tại vị trí mong muốn để tạo thư mục cho dự án bằng lệnh npx create-expo-app Smartkey template blank và chờ hệ thống tải về các gói tài nguyên cần thiết.

Hình 3.25 Thông báo đã tạo thành công dự án Expo

Dùng VS Code mở thư mục dự án mới tạo được ta sẽ có được các file

Hình 3.26 Các file sau khi khởi tạo

Thư mục vscode/ lưu trữ các cài đặt đặc thù cho dự án trong Visual Studio Code, bao gồm cấu hình môi trường phát triển, các phần mở rộng cần thiết và thiết lập gỡ lỗi.

• assets/: Thư mục này thường chứa các tài nguyên tĩnh như hình ảnh, biểu tượng, fonts, hoặc các file media khác cần thiết cho ứng dụng

• node_modules/: Thư mục này chứa các gói và thư viện mà dự án của phụ thuộc vào, được cài đặt thông qua npm (Node Package Manager)

File gitignore đóng vai trò quan trọng trong việc xác định các tệp và thư mục mà Git sẽ bỏ qua, không theo dõi Nó thường được sử dụng để loại trừ các tệp tạm thời hoặc các thư mục không cần thiết, giúp giữ cho kho mã nguồn trên GitHub gọn gàng và dễ quản lý.

• App.js: File này có thể là file chính của ứng dụng, chứa mã JavaScript hoặc React để khởi động và quản lý ứng dụng

• app.json: File này được sử dụng để cấu hình các thiết lập của ứng dụng như tên ứng dụng, biểu tượng, và các quyền cần thiết

File babel.config.js chứa cấu hình cho Babel, một công cụ biên dịch JavaScript hiện đại Babel chuyển đổi mã JavaScript mới nhất (ES6+) thành phiên bản tương thích với các môi trường cũ hơn.

File package-lock.json được tạo tự động bởi npm khi cài đặt các gói, ghi lại chính xác các phiên bản của các gói đã cài đặt, nhằm đảm bảo sự nhất quán trong các lần cài đặt sau.

File package.json là tài liệu quan trọng trong dự án, chứa thông tin về tên dự án, phiên bản, và các gói phụ thuộc cần thiết để chạy dự án Nó bao gồm các thuộc tính như script để thực thi các lệnh npm và nhiều thông tin cấu hình khác, giúp quản lý và duy trì dự án hiệu quả.

❖ Bước 3: Lập trình giao diện

Trong thiết kế giao diện, chúng ta sẽ chia các trang thành các phần như Header, Footer và Icon Mỗi phần này sẽ được phân chia thành hai phần nhỏ hơn để lập trình, giúp việc quản lý mã nguồn trở nên dễ dàng hơn.

Nơi đây sẽ thực hiện thêm các tính năng bằng cách sử dụng các components có sẵn hoặc thư viện bên ngoài, kết hợp với các hook của React Native để tạo ra những trang đáp ứng yêu cầu Khi sử dụng components, cần phải import chúng vào dự án, và nếu sử dụng nhiều components, chúng sẽ được phân cách bởi dấu phẩy.

Một số components được dùng

View là thành phần cơ bản nhất trong React Native, tương tự như thẻ trong HTML Nó được sử dụng để chứa các thành phần khác và tạo ra các bố cục giao diện người dùng hiệu quả.

• Text: là phần hiển thị văn bản Nó có thể chứa các đoạn văn bản

• TextInput: là phần cho phép nhập văn bản vào

• Image: dùng để hiển thị hình ảnh Nó hỗ trợ các nguồn ảnh từ cả URL và các tập tin cục bộ

ScrollView là một thành phần quan trọng trong việc tạo ra các khu vực cuộn, cho phép hiển thị nội dung lớn hơn kích thước màn hình Người dùng có thể dễ dàng cuộn để xem thêm nội dung, với khả năng hỗ trợ cả cuộn ngang và cuộn dọc, giúp nâng cao trải nghiệm người dùng.

• TouchableOpacity: dùng tạo ra các nút bấm với hiệu ứng làm mờ khi người dùng nhấn vào

Alert là công cụ hiển thị thông báo đơn giản cho người dùng, cho phép cung cấp thông tin, cảnh báo hoặc yêu cầu ý kiến từ người dùng thông qua các nút tương tác.

Để sử dụng một thư viện, bạn cần tải nó bằng cách mở terminal và sử dụng lệnh `npm install ` Sau khi quá trình tải hoàn tất, bạn có thể kiểm tra các thư viện cùng với phiên bản của chúng trong file package.json.

Một số thư viện được dùng

KẾT QUẢ

KẾT QUẢ PHẦN CỨNG

Hình 4.1 Board sau khi hàn xong

Sau khi hoàn tất quá trình hàn, tôi đã kiểm tra vị trí nguồn và thử nạp mã cho ESP32 trên board Kết quả cho thấy ESP32 có khả năng nạp mã và hoạt động bình thường, đồng thời có thể giao tiếp với màn hình cảm biến và Jetson Nano.

Hình 4.2 Mô hình hộp mica chứa board và màn hỉnh

Hình 4.3 Mặt trước và sau của khóa

KẾT QUẢ PHẦN MỀM

Giao diện các trang của mobile app sau khi đã xuất file apk

Hình 4.5 Giao diện của mobile app

Khi người dùng đăng ký tài khoản, thông tin sẽ được lưu trữ trong cơ sở dữ liệu, và mật khẩu sẽ được mã hóa để đảm bảo an toàn Người dùng có thể dễ dàng đăng nhập bằng tài khoản đã đăng ký.

Hình 4.6 Dữ liệu trên database khi đăng ký

Trang hỗ trợ vẫn có dữ liệu được lưu vào database khi người dùng điền thông tin vào trang Support

Hình 4.7 Dữ liệu trên database khi điền form hỗ trợ

Hình 4.8 Màn hình DWIN sau khi nạp chương trình

Giao diện trước đây trên phần mềm DWIN DGUS đã hiển thị thành công trên màn hình DWIN, với các nút nhấn và phần hiển thị hoạt động bình thường Các giá trị nhập vào được thể hiện dưới dạng ký tự ‘*’.

Hình 4.9 Màn hình DWIN sau khi nhập mật khẩu

− Phần kiểm tra riêng ảnh thật và ảnh giả

Hình 4.10 Kết quả nhận diện ảnh thật giả

Mô hình đã đạt được tỷ lệ chính xác 70% trong việc phân biệt giữa ảnh thật và ảnh chụp từ màn hình điện thoại, sau khi thực hiện 10 lần kiểm tra với nhiều hình ảnh khác nhau.

− Kết quả kiểm tra riêng nhận diện khuôn mặt

Hình 4.11 Kết quả nhận diện khuôn mặt

Mô hình đã đạt được độ chính xác 75% trong việc nhận diện người trước camera, qua 20 lần thử nghiệm với nhiều người và hình ảnh khác nhau.

Kiểm tra kết quả trên terminal của Jetson nano

Hình 4.12 Kết quả nhận diện khuôn mặt trên Jetson nano

Khi xác nhận ảnh là thật, hệ thống sẽ so sánh với số lượng ảnh đã được huấn luyện Nếu số lượng khớp đủ, hệ thống sẽ in ra "Huynh Tuan Kiet" và giao tiếp UART với ESP32 để thực thi lệnh mở cửa Ngược lại, nếu không khớp đủ số lượng ảnh, hệ thống sẽ in ra "Unknown Person" Trong trường hợp ảnh là giả, hệ thống sẽ in ra "Fake".

Ngày đăng: 19/12/2024, 14:31

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

TÀI LIỆU LIÊN QUAN