基于OpenHarmomny的智能門鎖簡介

一、項目簡介
1、項目描述
本項目的場景是智能家居。通過openharmony源碼與hi3861開發板進行智能門鎖的項目開發。最后可以通過舵機進行開關鎖與通過手機的數字管家進行密碼解鎖。
2、技術要求
- 掌握C, JS, Java語言
- 掌握原子化服務原理(Fa ability)
- 熟悉 Git 等代碼版本管理工具
- 熟悉OpenHarmony的設備端開發,包括構建系統。
- 熟悉IoT物聯網協議(MQTT)
- 熟悉VS code與Deveco studo軟件
3、資源獲取
- 在Gitee上獲取openharmony源碼(本次案例用3.0版本作為演示)
- 在Gitee上獲取MQTT協議與VS code的編譯工具組件
- 操作系統Ubuntu華為云中國鏡像
https://www.huaweicloud.com/theme/77291-1-U
二、環境搭建
1、軟件準備
從華為開發者聯盟下載開發軟件
VS code:https://device.harmonyos.com/cn/develop/ideDeveco:https://developer.harmonyos.com/cn/develop/deveco-studio
*端口驅動官網:http://www.wch.cn/downloads/CH341SER_EXE.html。
選擇合適的驅動下載后通過USB線即可讓板子成功與電腦連接(可以去設備管理器去看看這個驅動有沒有安裝成功。
2、環境介紹
操作系統:Ubuntu
編譯構建:Python
包管理工具:HPM
NPM 環境:Node.js
Openharmony版本:3.0
USB串口驅動:CH341SER.exe
燒錄軟件:Hiburn
開發板:潤和HI3861
華為硬件開發工具:
Visual Studio Code(DevEco Device Tool)
- 軟件簡介:華為把一個集成的硬件編制軟件作為插件放在了這個代碼編輯器里,里面包含代碼編輯,編譯,燒錄等功能。是一個集成環境。
- 環境配置組件與軟件插件:第一次下載軟件后需要自行載入編譯組件,在上述的1.3中可以獲取組件。下載完通過點擊VS code左側的插件標識后在QUICK ACCESS/主界面/工程設置里點擊<添加用戶組件>即可添加。
*在Ubuntu環境下的VS code目前只能通過快捷鍵復制粘貼地址或通過點擊文件夾圖標選擇路徑,不可以使用鼠標進行復制粘貼。
*這里所載入的插件版本號與描述可以隨意填,不影響正常使用。 - 必須的插件:C/C++,C/C++ GNU Global,Chinese (Simplified),CodeLLDB。
推薦的插件:GN , Better C++ Syntax, CMake Tools, Remote – SSH。

上圖為編譯組件安裝好的樣子
華為系統開發工具:
Deveco Studio *手動在設置中下載SDK
三、協議移植
1、協議介紹
Mqtt是用于設備與服務器通訊的一種協議,使設備可以上報訂閱下發信息。
2、協議移植
通過上述連接下載之后復制粘貼到openharmony的third part(第三方庫)中。
3、驗證成功
從開發板廠商官網下載實驗demo進行實驗。因為目前大多數廠商使用的都是openharmony 1.0代碼作為演示,不同的源碼版本在編譯規則和文件名上都會不同,所以在下載的源碼中的頭文件吊起等也要修改才能接入mqtt協議。
Mqtt最重要要吊起的功能文件在
/home/open/Downloads/code-v3.0-LTS/OpenHarmony/third_party/pahomqtt/MQTTClient-C/src里,特別是liteOS中

上圖為上報-訂閱-下發 的原理圖
四、解決方案
1、用戶角度
在嵌入式設備開發這塊先要考慮用戶的操作界面(前端)才能考慮實現功能。

2、實現原理
- 交互流程:由智能門鎖訂閱的命令下發的主題經過代理服務器可下發到用戶終端,用戶終端就可收到通知。反之用戶終端也可發送命令通過代理服務器到達智能門鎖。
- 生命周期管理:對設備使用方的 RPC 對象進行管理,請求進行校驗以及對更新后的進行回調處理。
3、解鎖方案
1.交互流程:由智能門鎖訂閱的命令下發的主題經過代理服務器可下發到用戶終端,用戶終端就可收到通知。反之用戶終端也可發送命令通過代理服務器到達智能門鎖。
2.生命周期管理:對設備使用方的 RPC 對象進行管理,請求進行校驗以及對更新后的進行回調處理。
1.無網解鎖(可以通過WIFI,局域網WIFI AP TCP,藍牙發送固定碼進行連接):僅攜帶門禁卡:使用開發板上自帶的NFC可以直接與手機NFC卡或實體門禁卡碰一碰解鎖。
2.僅針對于NFC識別:非正確門禁卡則指示燈閃爍,正確門禁卡則亮五秒鐘。
3.可使用 WIFI AP&TCP:或通過發送藍牙固定碼到服務端(門鎖)。
4.WIFI TCP 實現:通過手機打開WIFI熱點交換數據,建立一個TCP連接(給門禁鎖進入一個新的局域網中)。
5.AP 實現:通過AP搭建橋梁,使在服務端沒有連接(斷開)默認WIFI的時候起到中繼作用。(相當于給信號不好的WIFI一個中繼,不適宜在完全斷網時使用)
6.藍牙開鎖實現:使用藍牙芯片使智能鎖和手機實現時間同步與密碼文傳輸,將手機藍牙固定碼發送到智能鎖中,從而不通過WIFI與NFC就可以將該智能鎖進行打開。在初始化藍牙模塊后進行串口發送。
7.云端:首先去華為云平臺創建產品與定義模型(獲取IP與端口),然后獲取上報和下發的通信數據,隨后云平臺就會給出設備ID與密鑰。(后面會詳細介紹)
五、編譯
1、進行編譯即可(首先輸入hb set)

選中此文件夾后進行編譯(hb build)
Hb(命令行編譯)編譯與燒錄
在Hb環境配置好之后所用到的命令:
hb set //產出config.json文件hb build //進行編譯。
hb clean //刪除config.json文件用于下次正常編譯,不然會報錯。
注意:在hb set后可通過上下鍵選擇要編譯的文件然后回車,選中后即可build。

另外還可以通過VS_code進行編譯。

作為一款華為集成的硬件編程插件,里面是有編譯與燒錄功能的。
如果要進行編譯首先要在PROJECT TASKS中點擊build,同時在編譯過程中在源碼里會產生config.json文件。在源碼修改之后需要點擊clean去清除config.json,然后才能繼續點擊Build進行編譯。編譯成功后點擊Upload燒錄到開發板中。





























