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

上圖為編譯組件安裝好的樣子
華為系統(tǒng)開(kāi)發(fā)工具:Deveco Studio,手動(dòng)在設(shè)置中下載 SDK。
協(xié)議移植
①協(xié)議介紹
Mqtt 是用于設(shè)備與服務(wù)器通訊的一種協(xié)議,使設(shè)備可以上報(bào)訂閱下發(fā)信息。
②協(xié)議移植
通過(guò)上述連接下載之后復(fù)制粘貼到 openharmony 的 third part(第三方庫(kù))中。
③驗(yàn)證成功
從開(kāi)發(fā)板廠(chǎng)商官網(wǎng)下載實(shí)驗(yàn) demo 進(jìn)行實(shí)驗(yàn)。因?yàn)槟壳按蠖鄶?shù)廠(chǎng)商使用的都是 openharmony 1.0 代碼作為演示,不同的源碼版本在編譯規(guī)則和文件名上都會(huì)不同,所以在下載的源碼中的頭文件吊起等也要修改才能接入 mqtt 協(xié)議。
Mqtt 最重要要吊起的功能文件在如下中:
/home/open/Downloads/code-v3.0-LTS/OpenHarmony/third_party/pahomqtt/MQTTClient-C/src特別是 liteOS 中:
上圖為上報(bào)-訂閱-下發(fā) 的原理圖 ?
解決方案
①用戶(hù)角度
在嵌入式設(shè)備開(kāi)發(fā)這塊先要考慮用戶(hù)的操作界面(前端)才能考慮實(shí)現(xiàn)功能。

②實(shí)現(xiàn)原理
交互流程:由智能門(mén)鎖訂閱的命令下發(fā)的主題經(jīng)過(guò)代理服務(wù)器可下發(fā)到用戶(hù)終端,用戶(hù)終端就可收到通知。反之用戶(hù)終端也可發(fā)送命令通過(guò)代理服務(wù)器到達(dá)智能門(mén)鎖。
生命周期管理:對(duì)設(shè)備使用方的 RPC 對(duì)象進(jìn)行管理,請(qǐng)求進(jìn)行校驗(yàn)以及對(duì)更新后的進(jìn)行回調(diào)處理。
③解鎖方案
交互流程:由智能門(mén)鎖訂閱的命令下發(fā)的主題經(jīng)過(guò)代理服務(wù)器可下發(fā)到用戶(hù)終端,用戶(hù)終端就可收到通知。反之用戶(hù)終端也可發(fā)送命令通過(guò)代理服務(wù)器到達(dá)智能門(mén)鎖。
生命周期管理:對(duì)設(shè)備使用方的 RPC 對(duì)象進(jìn)行管理,請(qǐng)求進(jìn)行校驗(yàn)以及對(duì)更新后的進(jìn)行回調(diào)處理。
無(wú)網(wǎng)解鎖(可以通過(guò) WIFI,局域網(wǎng) WIFI AP TCP,藍(lán)牙發(fā)送固定碼進(jìn)行連接):僅攜帶門(mén)禁卡:使用開(kāi)發(fā)板上自帶的 NFC 可以直接與手機(jī) NFC 卡或?qū)嶓w門(mén)禁卡碰一碰解鎖。
僅針對(duì)于 NFC 識(shí)別:非正確門(mén)禁卡則指示燈閃爍,正確門(mén)禁卡則亮五秒鐘。
可使用 WIFI AP&TCP:或通過(guò)發(fā)送藍(lán)牙固定碼到服務(wù)端(門(mén)鎖)。
WIFI TCP 實(shí)現(xiàn):通過(guò)手機(jī)打開(kāi) WIFI 熱點(diǎn)交換數(shù)據(jù),建立一個(gè) TCP 連接(給門(mén)禁鎖進(jìn)入一個(gè)新的局域網(wǎng)中)。
AP 實(shí)現(xiàn):通過(guò) AP 搭建橋梁,使在服務(wù)端沒(méi)有連接(斷開(kāi))默認(rèn) WIFI 的時(shí)候起到中繼作用。(相當(dāng)于給信號(hào)不好的 WIFI 一個(gè)中繼,不適宜在完全斷網(wǎng)時(shí)使用)
藍(lán)牙開(kāi)鎖實(shí)現(xiàn):使用藍(lán)牙芯片使智能鎖和手機(jī)實(shí)現(xiàn)時(shí)間同步與密碼文傳輸,將手機(jī)藍(lán)牙固定碼發(fā)送到智能鎖中,從而不通過(guò) WIFI 與 NFC 就可以將該智能鎖進(jìn)行打開(kāi)。在初始化藍(lán)牙模塊后進(jìn)行串口發(fā)送。
云端:首先去華為云平臺(tái)創(chuàng)建產(chǎn)品與定義模型(獲取 IP 與端口),然后獲取上報(bào)和下發(fā)的通信數(shù)據(jù),隨后云平臺(tái)就會(huì)給出設(shè)備 ID 與密鑰。(后面會(huì)詳細(xì)介紹)
編譯
①進(jìn)行編譯即可(首先輸入 hb set)

選中此文件夾后進(jìn)行編譯(hb build)
①Hb(命令行編譯)編譯與燒錄
在 Hb 環(huán)境配置好之后所用到的命令:
hbset//產(chǎn)出config.json文件 hbbuild//進(jìn)行編譯 hbclean//刪除config.json文件用于下次正常編譯,不然會(huì)報(bào)錯(cuò)
注意:在 hb set 后可通過(guò)上下鍵選擇要編譯的文件然后回車(chē),選中后即可 build。

另外還可以通過(guò) VS_code 進(jìn)行編譯:

作為一款華為集成的硬件編程插件,里面是有編譯與燒錄功能的。
如果要進(jìn)行編譯首先要在 PROJECT TASKS 中點(diǎn)擊 build,同時(shí)在編譯過(guò)程中在源碼里會(huì)產(chǎn)生 config.json 文件。
在源碼修改之后需要點(diǎn)擊 clean 去清除 config.json,然后才能繼續(xù)點(diǎn)擊 Build 進(jìn)行編譯。編譯成功后點(diǎn)擊 Upload 燒錄到開(kāi)發(fā)板中。
然后就完成啦,感謝各位的支持!
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2945文章
47812瀏覽量
414769 -
源碼
+關(guān)注
關(guān)注
8文章
685瀏覽量
31314 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
26文章
6288瀏覽量
118016 -
智能門(mén)鎖
+關(guān)注
關(guān)注
18文章
1929瀏覽量
45918 -
OpenHarmony
+關(guān)注
關(guān)注
33文章
3952瀏覽量
21091
原文標(biāo)題:基于OpenHarmony的智能門(mén)鎖
文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
OpenHarmony 項(xiàng)目實(shí)戰(zhàn):基于全志 XR806 實(shí)現(xiàn)的上下位機(jī)雙 OpenHarmony 智能門(mén)鎖樣例
OpenHarmony南向開(kāi)發(fā)案例:【智能門(mén)鎖】
基于OpenHarmony的智能門(mén)鎖設(shè)計(jì)
評(píng)論