TỔNG QUAN VỀ ĐỀ TÀI
Tính cấp thiết của đề tài
Thời đại Công nghiệp 4.0, IoT đang thu hút sự quan tâm đặc biệt từ nhiều lĩnh vực.
Là sinh viên Kỹ thuật Điện - Điện tử, việc nắm bắt xu hướng này không chỉ mở ra cơ hội nghề nghiệp mà còn đóng góp cho sự phát triển toàn cầu của lĩnh vực Bằng cách này, chúng ta không chỉ tiếp cận kiến thức mới mà còn góp phần vào sự đổi mới và tiến bộ của ngành.
Ngày nay, việc phát triển với sự gia tăng đáng kể của dịch vụ giao hàng, chia sẻ vận chuyển và nhu cầu gửi đồ ở nơi công cộng rất nhiều, theo đó việc bị trộm cắp, hay mất đồ ở nơi công cộng xãy ra thường xuyên nên việc sử dụng tủ khóa thông minh ngày càng trở nên cấp thiết Điều này không chỉ tăng tính tiện ích trong quá trình giao nhận hàng hóa, bảo vệ vật phẩm cá nhân mà còn đảm bảo an toàn và bảo mật cho người dùng
An ninh và an toàn: Smart locker cần đảm bảo tính bảo mật cao để ngăn chặn việc truy cập trái phép, mất mát tài sản Hệ thống cần có cơ chế xác thực mạnh mẽ, bảo vệ dữ liệu cá nhân.
Quản lý từ xa: Một tính năng quan trọng của smart locker là khả năng quản lý từ xa. Người dùng cần có thể kiểm soát, theo dõi trạng thái locker từ xa thông qua ứng dụng di động hoặc trình duyệt web.
Hiệu suất và tiết kiệm năng lượng: Smart locker cần được thiết kế để tiết kiệm năng lượng, tối ưu hóa hiệu suất Điều này đặc biệt quan trọng khi triển khai hàng loạt locker trên quy mô lớn.
Giao diện người dùng thân thiện: Giao diện người dùng phải dễ sử dụng, thân thiện để thu hút người dùng và giúp họ sử dụng dịch vụ một cách dễ dàng.
Kết nối và tích hợp hệ thống: Smart locker cần có khả năng kết nối và tích hợp với các hệ thống khác như hệ thống quản lý kho, hệ thống quản lý khách hàng và hệ thống thanh toán.
Pháp lý và tuân thủ: Cần tuân thủ các quy định về quyền riêng tư, bảo vệ dữ liệu cá nhân và các quy định pháp lý liên quan đến việc lưu trữ và giao nhận hàng hóa.
Nghiên cứu thị trường và tiềm năng thương mại: Trước khi triển khai, cần thực hiện nghiên cứu thị trường để đảm bảo rằng có nhu cầu cho sản phẩm hoặc dịch vụ smart locker trong khu vực hoặc ngành cụ thể.
Mục tiêu đề tài
Thiết kế giao diện trên Qt creator Application.
Hiểu các giao thức kết nối bằng WebSocket và giao thức TCP/IP.
Kết nối giao tiếp giữa ESP8266 với Qt Application bằng phương thức WebSocket và Web Server để điều khiển đóng mở khóa qua trên giao diện Qt Application.
Đối tượng và phạm vi nghiên cứu
Nghiên cứu và thiết kế phần cứng gồm: thiết kế tủ khóa, vi điều khiển ESP 8266.
Nghiên cứu và thiết kế phần mềm gồm: Code giao diện trên Qt creator application và điều khiển trên Arduino IDE.
Quá trình nghiên cứu sẽ bao gồm phân tích yêu cầu, thiết kế hệ thống, xây dựng prototype, kiểm thử và đánh giá.
Máy tính bảng chạy hệ điều hành Window10.
Cách tiếp cận – Phương pháp nghiên cứu
Để đảm bảo sự hiệu quả và độ chính xác của đề tài, tôi sẽ kết hợp giữa phương pháp nghiên cứu kỹ thuật và thực nghiệm.
Tiếp cận từ nhu cầu thực tiễn, nghiên cứu lý thuyết, từ đó đưa ra các giải pháp để giải quyết vấn đề.
Thiết kế, thi công, mô phỏng trên máy tính.
Xây dựng các sơ đồ khối, lưu đồ thuật toán, viết chương trình, kiểm thử.
Xây dựng mô hình, kiểm thử và đưa vào áp dụng thực tế.
Thiết bị trên thị trường
Hiện nay, mô hình Smart Locker đang được ứng dụng rộng rãi trên thế giới với đa dạng mục đích sử dụng như giao nhận hàng hóa, lưu trữ tư trang và quản lý tài sản Tại Việt Nam, phát triển mô hình vận hành cùng Smart Locker đang dần trở thành một xu hướng mới được nhiều tập đoàn lớn chú trọng đầu tư như Sun Group, Becamex, Mitsubishi, TNH Holdings, nhằm chiếm lĩnh ưu thế cạnh tranh trên thị trường.
Nhưng chỉ đang tiếp cận những nơi đông dân cư hoặc những công ty lớn, doanh nghiệp lớn đặt hàng với mức phí cài đặt và lắp tủ khá cao Và chưa hướng đến được những nơi ít dân cư, công ty nhỏ và những nơi có nhu cầu sử dụng nhưng không đủ chi phí lắp đặt do chi phí cao
Hình 1 1 Tủ khóa thông minh của công ty cổ phần công nghệ TSE
Với nền tảng công nghệ hiện đại và sử dụng các phương thức xác thực đa dạng – Smart Locker giúp xóa bỏ sự bất tiện của chìa khóa vật lý và thời gian xếp hàng chờ đợi trong việc lưu trữ, bảo quản tư trang của khách hàng tại các siêu thị, trung tâm thương mại, khu vui chơi, mang đến sự an tâm khi sử dụng dịch vụ và nâng cao hình ảnh chuyên nghiệp của thương hiệu.
Các doanh nghiệp tiên phong đã ứng dụng Smart Locker trong quy trình vận hành
Hình 1 2 Một trong những dự án thực tế từ các tập đoàn tiên phong đã đưa Smart
Cấu trúc của báo cáo
Chương 1: Tổng quan về đề tài.
Chương 2: Cơ sở lý thuyết và các linh kiện sử dụng trong tủ khóa thông minh. Chương 3: Thiết kế, thi công hệ thống tủ khóa thông minh.
Chương 4: Kiểm thử, tổng kết và đánh giá.
CƠ SỞ LÝ THUYẾT VÀ CÁC LINH KIỆN ĐƯỢC SỬ DỤNG
Giới thiệu về Internet of Things
Mạng lưới vạn vật kết nối Internet hoặc là Mạng lưới thiết bị kết nối Internet viết tắt là IoT (tiếng Anh: Internet of Things) là một kịch bản của thế giới khi mà mỗi đồ vật, con người được cung cấp một định danh của riêng mình và tất cả có khả năng truyền tải, trao đổi thông tin, dữ liệu qua một mạng duy nhất mà không cần đến sự tương tác trực tiếp giữa người với người, hay người với máy tính IoT đã phát triển từ sự hội tụ của công nghệ không dây, công nghệ vi cơ điện tử và Internet Nói đơn giản là một tập hợp các thiết bị có khả năng kết nối với nhau, với Internet và với thế giới bên ngoài để thực hiện một công việc nào đó - Theo định nghĩa của Wikipedia.
Hay hiểu một cách đơn giản IoT là tất cả các thiết bị có thể kết nối với nhau Việc kết nối thì có thể thực hiện qua Wi-Fi, mạng viễn thông băng rộng (3G, 4G), Bluetooth, ZigBee, hồng ngoại.
Mục đích sử dụng trong đề tài:
- Bảo mật và Mã hóa: Sử dụng giao tiếp an toàn qua Internet để đảm bảo dữ liệu và thông tin truyền tải an toàn.
- Tạo Web Server để giao tiếp trong địa chỉ mạng và cổng port thông qua WebSocket và Web Server để truyền tải yêu cầu, dữ liệu chuỗi thông qua để thực hiện chức năng đóng/mở khóa trên một thiết bị khác
2.1.1 Đặc tính cơ bản của “Internet of thing”
- Tính kết nối liên thông(interconnectivity): với IoT, bất cứ điều gì cũng có thể kết nối với nhau thông qua mạng lưới thông tin và cơ sở hạ tầng liên lạc tổng thể.
- Những dịch vụ liên quan đến “Things”: hệ thống IoT có khả năng cung cấp các dịch vụ liên quan đến “Things”, chẳng hạn như bảo vệ sự riêng tư và nhất quán giữa Physical Thing và Virtual Thing.
- Tính không đồng nhất: Các thiết bị trong IoT là không đồng nhất vì nó có phần cứng khác nhau và network khác nhau Các thiết bị giữa các network có thể tương tác với nhau nhờ vào sự liên kết của các network.
- Thay đổi linh hoạt: Status của các thiết bị tự động thay đổi, ví dụ, ngủ và thức dậy, kết nối hoặc bị ngắt, vị trí thiết bị đã thay đổi và tốc độ đã thay đổi… Hơn nữa, số lượng thiết bị có thể tự động thay đổi.
- Quy mô lớn: Sẽ có một số lượng rất lớn các thiết bị được quản lý và giao tiếp với nhau Số lượng này lớn hơn nhiều so với số lượng máy tính kết nối Internet hiện nay.
Tổng quan về giao thức sử dụng trong đề tài
Giao thức TCP (Transmission Control Protocol) là một trong hai giao thức chính của bộ giao thức Internet (IP), được sử dụng rộng rãi trong mô hình TCP/IP TCP là một giao thức mức kết nối, có nghĩa là nó thiết lập và duy trì một kết nối liên tục giữa hai đầu giao tiếp trong khi truyền dữ liệu
Dưới đây là một tổng quan ngắn gọn về TCP:
TCP được thiết kế để cung cấp giao tiếp đáng tin cậy giữa các thiết bị trên mạng.
Đảm bảo truyền dữ liệu một cách có thứ tự, đáng tin cậy và không trùng lặp.
Quản lý luồng dữ liệu: TCP sử dụng cơ chế kiểm soát luồng để điều chỉnh tốc độ truyền dữ liệu giữa các thiết bị
Kết nối điểm-điểm: TCP hỗ trợ mô hình kết nối điểm-điểm, trong đó hai thiết bị thiết lập một kết nối trực tiếp với nhau.
Kết nối Được Thiết lập:
Trước khi truyền dữ liệu, hai thiết bị cần thiết lập một kết nối thông qua quá trình "bắt tay" (three-way handshake).
Kết nối được duy trì cho đến khi cả hai bên kết thúc truyền dữ liệu và đóng kết nối.
TCP sử dụng các phương pháp như xác nhận và tái tạo để đảm bảo rằng dữ liệu được gửi và nhận một cách đáng tin cậy.
Nếu một gói tin bị mất hoặc hỏng, nó sẽ được yêu cầu gửi lại.
Mỗi ứng dụng trên một thiết bị được xác định bằng một số cổng.
Giao tiếp TCP sử dụng số cổng để xác định ứng dụng mà dữ liệu nên được gửi đến.
Đóng Kết Nối An Toàn:
Quá trình đóng kết nối được thực hiện thông qua một bước "bắt tay" (four-way handshake) để đảm bảo việc đóng kết nối an toàn và không làm mất dữ liệu.
Dữ liệu Dung Lượng Lớn:
TCP có khả năng truyền dữ liệu lớn bằng cách chia thành các đoạn nhỏ để truyền và gửi xác nhận.
Gói tin TCP bao gồm một phần header chứa các trường như số cổng nguồn và đích, số thứ tự, số cửa sổ và kiểm tra nỗi (checksum).
TCP được sử dụng rộng rãi trong các ứng dụng như trình duyệt web (HTTP), truyền tệp tin (FTP), email (SMTP) và nhiều dịch vụ mạng khác.
Có các cơ chế điều chỉnh hiệu năng như cửa sổ trượt (sliding window) để tối ưu hóa tốc độ truyền dữ liệu.
2.2.2 Giới thiệu về Qt creator
Qt Creator là một môi trường phát triển tích hợp (IDE) được thiết kế đặc biệt để phát triển ứng dụng sử dụng framework Qt Qt creator là một framework đa nền tảng được sử dụng để phát triển ứng dụng đồ họa người dùng (GUI) và các ứng dụng chạy trên nhiều nền tảng như Windows, macOS, Linux, iOS và Android
Hình 2 3 Phần mềm Qt creator
Dưới đây là một giới thiệu về Qt Creator:
Editor Dựa trên C++ và QML:
Qt Creator cung cấp một trình soạn thảo mã nguồn cho ngôn ngữ lập trình C++ và QML (Qt Meta-Object Language) cho phát triển ứng dụng GUI.
Hỗ trợ tính năng debug và profiling giúp nhà phát triển xác định và sửa lỗi hiệu suất trong mã nguồn.
Thiết Kế Giao Diện Đồ Họa:
Qt Creator cung cấp một công cụ thiết kế giao diện đồ họa để dễ dàng tạo và chỉnh sửa các thành phần GUI.
Hỗ trợ quản lý dự án và tạo các dự án Qt mới với các mẫu (templates) sẵn có.
Chức năng Auto-Completion và Syntax Highlighting:
Trình soạn thảo Qt Creator hỗ trợ auto-completion giúp nhanh chóng hoàn thành mã và syntax highlighting để làm cho mã nguồn dễ đọc.
Hỗ trợ Nền tảng Đa Dạng:
Qt Creator hỗ trợ phát triển ứng dụng cho nhiều nền tảng bao gồm Windows, macOS, Linux, Android và iOS.
Integrations với Git và CMake:
Qt Creator tích hợp với các công cụ quản lý mã nguồn như Git và hỗ trợ Cmake, Qmake để quản lý dự án.
Cho phép nhóm và phân loại các thành phần trong dự án, giúp tổ chức và quản lý mã nguồn một cách hiệu quả.
Tích hợp với Qt Libraries:
Qt Creator được tối ưu hóa để làm việc chặt chẽ với các thư viện Qt, giúp nhà phát triển dễ dàng sử dụng và tận dụng các tính năng của framework.
Qt Creator có sự hỗ trợ từ cộng đồng đông đảo và có tài liệu chi tiết, đồng thời được Qt Company hỗ trợ và cập nhật thường xuyên
Qt Creator là một công cụ mạnh mẽ cho việc phát triển ứng dụng sử dụng Qt, giúp nhà phát triển tận dụng khả năng đa nền tảng và các tính năng đồ họa của framework này.
2.2.3 Qt creator ứng dụng cho đề tài
Sử dụng thư viện WebSocket để thiết lập kết nối giữa máy chủ và ứng dụng Các ví dụ về mã nguồn mà bạn đã cung cấp có sử dụng WebSocket để giao tiếp giữa máy chủ và máy khách.
Sử Dụng Qt Creator cho Phát Triển Ứng Dụng Giao Diện:
Sử dụng Qt Creator để phát triển giao diện người dùng cho ứng dụng Có thể tận dụng tính năng thiết kế GUI kéo và thả của nó để tạo ra giao diện người dùng trực quan.
Thêm Chức Năng Công Tắc Hành Trình:
Tích hợp đoạn mã điều khiển công tắc hành trình vào ứng dụng Khi cửa đóng, công tắc hành trình sẽ kích hoạt và tắt nguồn điện.
Kích Hoạt Khóa Mở và Đóng:
Khi nhập đúng mật khẩu, kích hoạt khóa mở để cho phép cửa mở Khi cửa đóng hoặc khi công tắc hành trình được kích hoạt, tắt khóa để ngăn chặn mở cửa.
Sử Dụng Timer Để Quản Lý Thời Gian:
Thêm timer để theo dõi thời gian và thực hiện các hành động sau một khoảng thời gian nhất định Ví dụ, sau khi mở cửa, có thể sử dụng timer để tự động đóng cửa sau một khoảng thời gian.
Cải Thiện UI và Giao Diện Người Dùng:
Tối ưu hóa và làm đẹp giao diện người dùng của bạn để nó trở nên thân thiện và dễ sử dụng.
Quản Lý Dự Án và Debugging:
Sử dụng Qt Creator để quản lý dự án và thực hiện các bước debugging để kiểm tra và sửa lỗi trong mã nguồn.
Thêm Chức Năng Đa Nhiệm và Quản Lý Trạng Thái:
Tùy chỉnh chương trình của bạn để xử lý nhiều tác vụ cùng một lúc và quản lý trạng thái của hệ thống khóa mở/cửa đóng.
Tìm hiểu về Web Socket
WebSocket là một giao thức truyền tải dữ liệu hai chiều (full-duplex) trên web, cho phép truyền tải dữ liệu trong thời gian thực giữa trình duyệt web và máy chủ. WebSocket cho phép một kết nối duy trì giữa máy khách và máy chủ, vì vậy các thông tin có thể được gửi đi và nhận lại một cách hiệu quả và nhanh chóng mà không cần phải thiết lập kết nối mới mỗi khi truyền tải thông tin.
Các sự kiện chính trong WebSocket:
- Mở kết nối (Open): Khi một kết nối WebSocket được thiết lập giữa trình duyệt và máy chủ, sự kiện "open" được kích hoạt.
- Nhận dữ liệu (Message): Khi trình duyệt hoặc máy chủ nhận được dữ liệu mới, sự kiện "message" được kích hoạt.
- Gửi dữ liệu (Send): Khi trình duyệt hoặc máy chủ gửi dữ liệu, sự kiện "send" được kích hoạt.
- Đóng kết nối (Close): Khi kết nối WebSocket bị đóng, sự kiện "close" được kích hoạt.
- Lỗi (Error): Nếu có lỗi trong quá trình thiết lập hoặc sử dụng kết nối WebSocket, sự kiện "error" được kích hoạt.
Các thuộc tính của WebSocket:
ReadyState: biểu diễn trạng thái kết nối Dưới đây là các giá trị của thuộc tính này:
- WebSocket.CONNECTING: Giá trị 0 chỉ rằng kết nối vẫn chưa được thành lập.
- WebSocket.OPEN: Giá trị 1 chỉ ra rằng kết nối đã thành lập và có thể giao tiếp
- WebSocket.CLOSING: Giá trị 2 chỉ rằng kết nối đang qua handshake đóng
- WebSocket.CLOSED: Giá trị 3 chỉ rằng kết nối đã được đóng hoặc không thể được mở.
Buffered Amount: là thuộc tính chỉ đọc biểu diễn số byte của UTF-8 mà đã được xếp hàng bởi sử dụng phương thức send của websocket.
WebSocket là giao thức mạng cho phép truyền tải dữ liệu thời gian thực giữa ứng dụng web và máy chủ, giúp tăng tính tương tác, giảm tải tài nguyên hệ thống và hỗ trợ ứng dụng đa truy cập. Ưu điểm:
- Thời gian đáp ứng nhanh hơn.
- Kích thước dữ liệu nhỏ hơn, giảm lưu lượng mạng.
- Phù hợp cho ứng dụng web thời gian thực.
- Không cần gửi yêu cầu mới để nhận dữ liệu mới.
- Tốn nhiều tài nguyên hệ thống.
- Không được hỗ trợ đầy đủ trên các trình duyệt cũ.
- Thiếu một số tính năng bảo mật.
Phương thức giao tiếp giữa Qt creator Application với NodeMCU ESP 8266
2.4.1 Viết Chương Trình NodeMCU ESP8266
Chương trình này cần lắng nghe kết nối từ máy chủ (Qt Creator) và thực hiện các hành động tương ứng.
Tạo Web Server và WebSocket trên ESP8266 để điều khiển trạng thái của khóa bằng Qt Application bằng cách khởi tạo “port” để giao tiếp.
Thiết lập kết nối với ESP8266 bằng phương thức WebSocket ở Qt Application
Sử dụng Qt Application để phát triển ứng dụng giao diện người dùng Sử dụng thư viện
Qt Network để thiết lập kết nối với NodeMCU ESP8266 qua giao thức sử dụng WebSocket.
Setup WebSocket Client để giao thức với ESP8266 qua phương thức Websocket.
m_webSocket: Đối tượng QWebSocket được sử dụng để thiết lập và quản lý kết nối WebSocket.
m_url: Đối tượng QUrl chứa URL của máy chủ WebSocket mà WSClient sẽ kết nối đến.
onConnected(): Khe (slot) được gọi khi kết nối WebSocket được thiết lập Có thể đặt mã logic xử lý cho sự kiện kết nối thành công trong khe này.
onTextMessageReceived(QString message): Khe (slot) được gọi khi nhận được một tin nhắn văn bản từ máy chủ WebSocket Có thể đặt mã logic xử lý cho việc nhận và xử lý tin nhắn trong khe này.
onLockerChanged(QString color): Khe (slot) được gọi khi có sự thay đổi về locker và nhận một chuỗi màu Có thể đặt mã logic xử lý cho thay đổi locker và màu sắc mới trong khe này.
onDisconnected(): Khe (slot) được gọi khi kết nối WebSocket bị mất Có thể đặt mã logic xử lý cho sự kiện mất kết nối WebSocket trong khe này.
Trong ứng dụng Qt Application, sử dụng các sự kiện và cổng port kết nối với Qt Application để gửi và nhận dữ liệu giữa ứng dụng và NodeMCU ESP8266.
WSClient client(QUrl(QStringLiteral("ws://192.168.4.1:81")));
QObject::connect(&client, &WSClient::closed, &app, &QCoreApplication::quit);
Khởi tạo một đối tượng WSClient mới với địa chỉ URL máy chủ WebSocket là
("ws://192.168.4.1:81") để thiết lập kết nối.
Sau đó thiết lập một kết nối giữa tín hiệu closed với phương thức quit của đối tượngQcoreApplication Điều này có nghĩa là tín hiệu đó sẽ thoát khỏi ứng dụng khiWebSocket bị đóng.
Các lý thuyết liên quan
2.5.1 Giới thiệu chung về ESP 8266
ESP8266 là một vi mạch dạng SoC (System-on-a-chip) do hãng ESPRESSIF của Trung Quốc sản xuất và đã trở nên phổ biến trên toàn thế giới khi tích hợp được module WiFi vào vi mạch với giá rẻ Với ESP8266, việc đưa kết nối WiFi vào các hệ thống nhúng trở nên vô cùng dễ dàng.
Bảng 1.1: Thông số kỹ thuật của ESP8266
CPU Tensilica L106 32-bit RISC processor, xung nhịp mặc định 80 Mhz, xung nhịp tối đa 160 MhzRAM Tùy thuộc vào ứng dụng, dung lượng RAM còn lại vào khoảng 50kBytes
ROM Dùng bộ nhớ ngoài để lưu chương trình thực thi, hỗ trợ bộ nhớ Flash giao tiếp SPI dung lượng đến 16MB Ngoại vi GPIO (17), SDIO (01), SPI (01), Slave HSPI (01), I2C (01), I2S (01)
UART (02), PWM (04), IR (01), ADC (01) Chế độ quản lý năng lượng
Wi-Fi Mode: Station/SoftAP/SoftAP+Station
Encryption: WEP/TKIP/AES Cập nhật
Bảng 1 Thông Số Kỹ Thuật Của ESP 8266 2.5.2 NodeMCU ESP8266
Mạch phát triển (KIT) ESP8266 là mạch điện giúp chúng ta dễ dàng tìm hiểu cách lập trình ESP8266 Ngoài module ESP8266, mạch phát triển sẽ được tích hợp thêm các chức năng cấp nguồn, chức năng cổng COM ảo dùng để download firmware, nút nhấn và Khóa Một số mạch phát triển còn được tích hợp thêm các linh kiện chuyên dụng như module GSM/GSP, module LoRa, module OLED…
Phần cứng của mạch phát triển NodeMCU gồm:
- Module ESP-12, bộ nhớ Flash dung lượng 4Mbytes
- Sử dụng IC giao tiếp máy tính CP2102 hoặc CH340 Nguồn cấp DC 5V thông. qua cổng Micro-USB hoặc thông qua chân Vin, GND.
- Tích hợp sẵn 2 nút nhấn trên mạch phát triển.
Sơ đồ chân của mạch phát triển ESP8266
Tất cả các GPIO đều có trở kéo lên nguồn bên trong (ngoại trừ GPIO16 có trở kéo xuống GND) Người dùng có thể cấu hình kích hoạt hoặc không kích hoạt trở kéo này.
GPIO1 và GPIO3: hai GPIO này được nối với TX và RX của bộ UART0, NodeMCU nạp code thông qua bộ UART này nên tránh sử dụng 2 chân GPIO này.
GPIO0, GPIO2, GPIO15: đây là các chân có nhiệm vụ cấu hình mode cho ESP8266 điều khiển quá trình nạp code nên bên trong NodeMCU (có tên gọi là strapping pins) có các trở kéo để định sẵn mức logic cho chúng như sau: GPIO0: HIGH, GPIO2: HIGH, GPIO15: LOW Vì vậy khi muốn sử dụng các chân này ở vai trò GPIO cần phải thiết kế một nguyên lý riêng để tránh xung đột đến quá trình nạp code
GPIO9, GPIO10: hai chân này được dùng để giao tiếp với External Flash của ESP8266 vì vậy cũng không thể dùng được.
Các linh kiện được sử dụng trong đề tài
ESP8266 là một vi mạch dạng SoC, nổi bật với tính năng thu phát wifi được tích hợp sẵn bên trong vi mạch ESP8266 dùng CPU 32-bit với xung nhịp bình thường 80Mhz cung cấp khả năng xử lý mạnh mẽ Số lượng ngoại vi của ESP8266 không quá nhiều, nhưng cũng đủ dùng cho các ứng dụng nhỏ Để ESP8266 hoạt động phải cần kết nối chip với bộ nhớ Flash bên ngoài và cần một thiết kế antena tốt Do đó, module tích hợp ESP8266 được sử dụng phổ biến hơn vi mạch ESP8266 đơn lẻ Các module phổ biến hiện nay là module có tên dạng ESP-WROOM-
XX của nhà sản xuất ESPRESSIF và module có tên ESP-XX của nhà sản xuất AI- Thinker
Mạch phát triển ESP-8266 được tích hợp module ESP8266 cùng với các chức năng cấp nguồn, giao tiếp máy tính và kết nối ngoại vi Để dễ dàng học cách lập trình ESP8266, mạch phát triển thường được ưu tiên sử dụng Có thể kể đến các mạch phát triển phổ biến như ESP8266 NodeMCU, ESP8266 Wemos D1, ESP8266 - IoT WiFi Uno.
2.6 Các linh kiện được sử dụng trong đề tài
Relay hay còn được gọi là rơ – le là tên gọi theo tiếng Pháp Nó là một công tắc (khóa K) điện từ và được vận hành bởi một dòng điện tương đối nhỏ có thể bật hoặc tắt một dòng điện lớn hơn rất nhiều Bản chất của relay là một nam châm điện và hệ thống các tiếp điểm đóng cắt có thiết kế module hóa giúp dễ dàng lắp đặt.
Sử dụng điện áp nuôi DC 5V.
Relay mỗi Relay tiêu thụ dòng khoảng 80mA.
Điện thế đóng ngắt tối đa: AC250V ~ 10A hoặc DC30V ~ 10A.
Có đèn báo đóng ngắt trên mỗi Relay.
Có thể chọn mức tín hiệu kích 0 hoặc 1 qua jumper.
Kích thước: 1.97 in x 1.02 in x 0.75 in (5.0 cm x 2.6 cm x 1.9 cm)
Khi có dòng điện chạy qua rơ le, dòng điện sẽ chạy qua cuộn dây bên trong, kích hoạt nam châm điện và tạo ra một từ tường hút Từ trường hút sẽ tác động lên một đòn bẩy bên trong làm mở hoặc đóng các tiếp điểm điện và làm thay đổi trạng thái của rơ le (mở hoặc đóng) Số tiếp điểm có thể thay đổi là 1 hoặc nhiều tuỳ vào từng thiết kế của rơ le.
Mục đích sử dụng trong đề tài
Dùng Relay để chuyển mạch chiều dòng điện, điện áp sang các tải khác nhau bằng cách sử dụng một tín hiệu điều khiển Và ở đây relay dùng để tự động kích đóng và mở khóa điện từ khi người dùng nhập đúng mật khẩu tủ khóa.
2.6.2 Khóa Chốt Điện Từ LY-01 12VDC
Nó có chức năng hoạt động như một ổ khóa cửa sử dụng Solenoid để kích đóng mở bằng điện, được sử dụng nhiều trong nhà thông minh hoặc các loại tủ, cửa phòng, cửa kho khóa sử dụng điện áp 12VDC.
Hình 2 8 Khóa chốt điện từ 12VDC
Vật liệu: Thép không gỉ
Yêu cầu nguồn cấp: 12VDC/2A
Thời gian cấp nguồn: Nhỏ hơn 5s
Khi nam châm điện được cấp năng lượng, tấm phần cứng bị hút vào nó Từ trường mạnh đến mức lực giữ chặt cửa và giữ cho nó không bị mở.
Mục đích sử dụng trong đề tài:
Dùng để kích đóng, mở khóa cửa tủ khóa được điều khiển bằng ESP8266.
Hình 2 9 Cảm biến ánh sáng(quang trở)
Loại: Cảm Biến Ánh Sáng 5539 / Quang trở
Trở Khác Ánh Sáng: 30 – 90 Kilo Ohms
Cảm biến ánh sáng hoạt động dựa trên nguyên lý của hiệu ứng quang điện Hiệu ứng quang điện là hiện tượng một số chất đặc biệt sau khi hấp thụ ánh sáng sẽ chuyển đổi năng lượng ánh sáng thành năng lượng điện.
Mục đích sử dụng trong đề tài:
Đo cường độ ánh sáng.
Tổng kết chương
Chương này cung cấp cơ sở lý thuyết về giao thức TCP, giới thiệu về môi trường phát triển Qt Creator Application và tổng quan về vi mạch ESP8266 và các linh kiện được sử dụng trong dự án.
THIẾT KẾ VÀ THI CÔNG HỆ THỐNG
Sơ đồ khối chi tiết hệ thống
Hình 3 1 Sơ đồ khối Chức năng của từng hệ thống:
-Khối nguồn: Một nguồn 5V sẽ cung cấp trực tiếp từ ngoài vào cho bộ vi xử lý trung tâm và các khối sẽ lấy nguồn trực tiếp từ bộ vi xử lý trung tâm này để hoạt động.
Có nhiệm vụ đọc yêu cầu từ Qt application qua giao thức Internet và sau đó gửi dữ liệu qua khối điều khiển.
Cung cấp trang web cho người dùng để tương tác với thiết bị Sử dụng thư viện ESP8266 WebServer của Arduino để xử lý các yêu cầu HTTP.
Thực hiện sự kiện WebSocket để tương tác realtime với ứng dụng Qt Sử dụng thư viện WebSocketsServer.
Gửi yêu cầu thông qua WebSocket để điều khiển trạng thái của ESP8266.
Server được thực thi trên ESP8266, xử lý yêu cầu từ người dùng và cập nhật trạng thái thiết bị.
Ứng dụng Qt Application tương tác với người dùng và gửi yêu cầu đến ESP8266 thông qua WebSocket.
Xử lý giao tiếp qua HTTP và WebSocket giữa ESP8266 và ứng dụng Qt.
Được phát triển bằng Qt Creator Application, là nơi người dùng tương tác với hệ thống.
Sơ đồ mạch của hệ thống
Hình 3 2 Sơ đồ nối mạch
- Board mạch ESP8266 được cấp nguồn 5V Khóa điện từ sẽ được kết nối với ESP8266 thông qua Relay có 3 chân gồm: 1 chân nguồn Vcc, 1 chân đất gnd và chân digital D1.
- Cảm biến ánh sáng sẽ đọc tín hiệu analog A0
- ESP 8266 kết nối vào mạng, thiết lập giao tiếp với Qt application để thực hiện truyền dữ liệu.
- Ứng dụng Qt được lập trình trên máy tính và xây dựng trên nền tảng Windows, khi được kết nối với mạng Web Server thì có thể thao tác điều khiển bằng giao diện để thực hiện đóng/mở khóa và in kết quả ra màn hình.
Lưu đồ thuật toán
3.4.1.Lưu đồ thuật toán đóng/mở cửa trên ESP 8266
Hình 3 3 Lưu đồ thuật toán đóng mở cửa trên ESP 8266
Giải thích lưu đồ thuật toán của ESP8266:
Khởi tạo chân tín hiệu
Khởi tạo mạng “wifi” và “Access Point” để kết nối vào mạng
Khởi tạo “WebSocket”, “Web Server” và “mDNS” để thực hiện giao tiếp
Với WebServer tạo kết nối ở cổng 80 (HTTP).
Với WebSocket tạo kết nối ở cổng 81 (HTTP).
Chung một địa chỉ IP: “192.168.4.1”
Chức năng của “mDNS” cho phép truy cập tên máy chủ bằng địa chỉ IP.
Sơ đồ 1 Điều khiển trạng thái mở cửa
Khi yêu cầu sự kiện từ Qt Application được gửi lên Web Server và ESP8266 nhận được yêu cầu, ESP8266 sẽ xử lý và so sánh chuỗi Sau khi xác nhận chuỗi bằng 0 là đúng thông qua lệnh so sánh “strcmp()” thì ESP 8266 sẽ thực hiện mở cửa và gửi thông báo qua WebSocket Server tới giao diện rồi kết thúc yêu cầu Ngược lại, nếu so sánh chuỗi là chuỗi sai bằng 1, thì ESP8266 sẽ gửi thông báo trực tiếp qua WebSocket Server tới giao diện và không thực hiện thêm lệnh nào hết.
Sơ đồ 2 Điều khiển trạng thái đóng cửa
Khi yêu cầu sự kiện từ Qt Application được gửi lên Web Server và ESP8266 nhận được yêu cầu, ESP8266 sẽ xử lý và so sánh chuỗi Khi xác nhận chuỗi là đúng bằng 0 qua lệnh so sánh “strcmp()” thì cảm biến ánh sáng sẽ đọc giá trị khi giá trị bé hơn hoặc bằng
150 lux thì cửa khóa, còn nếu khi ánh sáng lớn hơn 150 lux thì cửa sẽ bị treo, sau đó cảm biến quang sẽ đo cho tới khi nào ánh sáng bé hơn hoặc bằng 150 lux thì cửa sẽ khóa Ngược lại, nếu so sánh chuỗi là chuỗi bằng 1 là sai, thì ESP8266 sẽ gửi thông báo trực tiếp qua WebSocket Server tới giao diện và không thực hiện thêm lệnh nào hết.
3.4.2 Lưu đồ thuật toán của Qt Application
Hình 3 4 Lưu đồ thuật toán của Qt Application
- Khi người dùng nhập chuỗi và nhấn button, thì chương trình trong ứng dụng Qt sẽ xử lý chuỗi đó Sau đó truyền chuỗi lên Web Server để xử lý Tiếp theo, ESP8266 sẽ kiểm tra chuỗi so sánh Nếu chuỗi so sánh là chuỗi đúng, ESP8266 sẽ thực hiện mở cửa và sau đó kết thúc yêu cầu Ngược lại, nếu chuỗi so sánh là bất kỳ chuỗi nào khác (sai), thì sẽ quay trở lại button để thực hiện lại cho đến khi chuỗi đúng.
3.4.3 Lưu đồ thuật toán thiết lập giao tiếp ESP8266 với WebSocket ở Qt Application
Hình 3 5 Lưu đồ thuật toán thiết lập giao tiếp
Khi ESP 8266 hoạt động, thực hiện chức năng cấu hình cổng cho websocket hoạt động, sau đó kiểm tra trên websocket xem có các yêu cầu phản hồi gởi từ sever về hay không, nếu có thì xác nhận kết nối và thiết lập websocket thành công, ngược lại chờ yêu cầu cho tới khi lệnh được thỏa điều kiện ban đầu.
Thiết kế giao diện người dùng trên Qt Creator Applicatinon
Sơ đồ khối giao diện:
Hình 3 6 Sơ đồ khối giao diện Qt
Viết chương trình giao diện người dùng thực hiện chức năng Gửi Đồ và Lấy Đồ
Bước 1 Mở Qt creator và đây là trang chính của Qt creator
Bước 2 Tạo new file or project Chọn Qt Quick application-Empty
Bước 3 Tiếp theo ta đặt tên và chọn nơi lưu file
Hình 3 9 Đặt tên cho file Qt
Bước 4 Ta nhấn next tới mục chọn kits (khung phần mềm) cho đối tượng sử dụng
Bước 5 Qt sau khi tạo file xong Ở đây bao gồm: File project, File define các widget, Khai báo thành phần Qt Framework.
Bước 6 Sử dụng GUI để thiết kế giao diện người dùng tủ khóa Ở Rectangle đầu tiên ta tạo màn hình chờ của tủ khóa có chức năng là khi người dùng chạm vào màn hình thì sẽ tự động chuyển qua Rectangle thứ 2.
- Thiết lập Onclick để chuyển trạng thái giao diện.
Hình 3 12 Giao diện Qt_Rectangle home_display
Bước 7 Ở Rectangle thứ 2 ta sẽ tạo cho nó 2 button có chức năng gửi đồ và lấy đồ.
Hình 3 13 Giao diện Qt_Rectangle chucnang_display
Bước 8 Rectangle thứ 3 sẽ xuất hiện khi người dùng bấm vào nút Gửi đồ ở rectangle thứ
2, ở đây xuất hiện 3 tủ khóa thể hiện trạng thái qua màu sắc để người dùng dễ nhận diện trạng thái của tủ.
Hình 3 14 Giao diện Qt_Rectangle guido_display
Bước 9 Rectangle thứ 4 sẽ xuất hiện khi người dùng bấm vào nút Lấy đồ ở rectangle thứ
2, ở đây xuất hiện 3 tủ khóa thể hiện trạng thái qua màu sắc để người dùng dễ nhận diện trạng thái của tủ.
Hình 3 15 Giao diện Qt_Rectangle laydo_display
Bước 10 Khi người dùng nhấn chọn tủ khóa để gửi đồ thì rectangle nhập mật khẩu được mở lên để người dùng nhập mật khẩu mở khóa tủ.
Có 2 trường hợp xãy ra ở Rectangle này:
Khi người dùng nhập đúng mật khẩu trên thẻ được cấp thì sẽ thông báo ra màn hình mở khóa thành công và mở cửa tủ.
Khi người dùng nhập sai mật khẩu thì sẽ thông báo ra màn hình sai mật khẩu và yêu cầu nhập lại.
Hình 3 16 Giao diện Qt_Rectangle nhapmk_guido
Bước 11 Khi người dùng nhấn chọn tủ khóa để lấy đồ thì rectangle nhập mật khẩu được mở lên để người dùng nhập mật khẩu mở khóa tủ.
Hình 3 17 Giao diện Qt_Rectangle nhapmk_laydo
Bước 12 Nếu người dùng bấm vào tủ khóa có màu xám biểu thị cho tủ này đang bảo trì.
Hình 3 18 Giao diện Qt_Rectangle dangbaotri_box13
Bước 13 Sau khi nhập đúng mật khẩu thì hệ thống xác nhận là đã nhập đúng mật khẩu và mở khóa tủ.
Hình 3 19 Mở khóa thành công
Bước 14 Sau khi thiết kế giao diện xong.
Trở lại file main.qml chứa các giao diện để thiết lập các thao tác cơ bản của tủ khóa như thuộc tính onclick, nhập mật khẩu để mở khóa
Vào main.cpp để thiết lập IP và cổng port để kết nối lên Web Server với địa chỉ IP: 192.168.4.1 và cổng port: 81.
WSClient client(QUrl(QStringLiteral("ws://192.168.4.1:81")));
Tạo thêm file WSClient để quản lý kết nối với WebSocket.
Sau khi thiết lập xong tất cả thì truy cập vào địa chỉ mạng để kết nối và bắt đầu chương trình.
Thi công phần cứng
3.6.1 Thiết kế bản vẽ tủ khóa bằng AutoCad
3.6.2 Lắp ráp và hoàn thiện tủ
Hình 3 22 Mặt trước và sau của tủ
- Tủ sau khi hoàn thiện
Hình 3 23 Hoàn thiện tủ khóa ở mặt trước
Hình 3 24 Bên trong từng học tủ khóa
KIỂM THỬ, ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN
Kết quả kiểm thử
4.1.1 Nguyên tắc hoạt động của hệ thống
- Sau khi thiết lập điểm truy cập trên ESP8266, ứng dụng Qt trên máy tính kết nối với mạng WiFi của ESP8266 Khi kết nối thành công, một kết nối WebSocket được thiết lập giữa ứng dụng Qt và tủ khóa thông minh trên ESP8266.
- Người dùng sẽ tương tác với giao diện người dùng Qt để thực hiện các hành động như nhập mật khẩu để mở khóa Khi người dùng thực hiện hành động, thông điệp được gửi từ ứng dụng Qt đến ESP8266 thông qua kết nối WebSocket.
- ESP8266 sẽ xử lý thông điệp nhận được và thực hiện các hành động tương ứng như đóng/mở khóa Sau đó, ESP8266 sẽ truyền lại thông điệp và dữ liệu về trạng thái và sự kiện qua lại giữa ứng dụng Qt và ESP8266 thông qua kết nối WebSocket.
- Khi trạng thái của tủ khóa thông minh thay đổi, ESP8266 sẽ gửi thông điệp đến ứng dụng Qt để cập nhật giao diện người dùng với thông tin mới.
- ESP8266 sẽ duy trì trạng thái của khóa và cập nhật theo yêu cầu từ ứng dụng Qt.
- Hệ thống xử lý sự kiện khi có thiết bị kết nối hoặc ngắt kết nối thông qua WebSocket.
Kết quả kiểm thử trên mô phỏng
Hình 4 1 Kết nối vào mạng
Hình 4 3 Chọn tủ cần gửi đồ
Hình 4 4 Chọn tủ cần lấy đồ
Hình 4 5 Trạng thái mở khóa trên ESP8266 và Qt Application
Hình 4 6 Nhập sai mật khẩu thì sẽ hiện thông báo
+ Đo cảm biến ánh sáng khi đặt tủ ở những nơi khác nhau:
Bảng 2: Đo cường độ ánh sáng khi cửa đang mở
STT Cường độ ánh sáng khi cửa được mở
Bảng 2 Đo cường độ ánh sáng khi cửa đang mở
Bảng 3: Đo cường độ ánh sáng khi cửa đang đóng
STT Cường độ ánh sáng khi cửa đóng
Bảng 3 Đo cường độ ánh sáng khi cửa đóng lại
Khi đặt tủ ở vị trí từ xa ánh sáng đến gần ánh sáng thì chỉ số ánh sáng dao động từ 100-500
Khi đóng tủ thì ánh sáng giảm dần và khi đạt tới