0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenHarmony南向開發(fā)案例:【智能門鎖】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-13 22:38 ? 次閱讀

一. 簡(jiǎn)介

本demo是基于Openharmony 3.1 Beta本版開發(fā),不僅可以接收數(shù)字管家應(yīng)用下發(fā)的指令來控制門鎖開啟,而且還可以通過數(shù)字管家設(shè)置不同的開鎖密碼以及一次性密碼,實(shí)現(xiàn)給臨時(shí)用戶一個(gè)臨時(shí)密碼,保證門戶安全。當(dāng)然除了開鎖的功能,智能門鎖還可以通過檢測(cè)門與門鎖距離自動(dòng)上鎖以及如果長(zhǎng)時(shí)間未上鎖,上報(bào)告警消息到數(shù)字管家,及時(shí)提醒用戶關(guān)門關(guān)鎖等功能。

1. 交互流程:

如上圖所示,智能門鎖整體方案原理圖可以大致分成:智能門鎖設(shè)備、數(shù)字管家應(yīng)用、云平臺(tái)三部分。智能門鎖通過MQTT協(xié)議連接華為IOT物聯(lián)網(wǎng)平臺(tái),從而實(shí)現(xiàn)命令的接收和屬性上報(bào)。 關(guān)于智能設(shè)備接入華為云IoT平臺(tái)的詳細(xì)細(xì)節(jié);智能設(shè)備與數(shù)字管家應(yīng)用之間的設(shè)備模型定義可以參考;鴻蒙開發(fā)文檔:qr23.cn/AKFP8k點(diǎn)擊或者復(fù)制轉(zhuǎn)到即可。

2. 實(shí)物簡(jiǎn)介:

如上圖所示,上面是XR806開發(fā)板,中間的是hcsr04超聲波距離傳感器,下面是E53_IA1擴(kuò)展板。

搜狗高速瀏覽器截圖20240326151547.png
鴻蒙next開發(fā)指導(dǎo)文檔mau123789是v直接前往拿學(xué)習(xí)
我們是通過距離傳感器感應(yīng)門的距離,進(jìn)行自動(dòng)上鎖,也可以在一定時(shí)間內(nèi)無法上鎖而產(chǎn)生告警信息上傳到數(shù)字管家。

E53_IA1擴(kuò)展板主要是通過控制電機(jī)模擬開關(guān)鎖的一個(gè)動(dòng)作。

接線說明:

距離傳感器有4根線,其中echo接XR806的PA19,trig接XR806的PA20。

E53_IA1擴(kuò)展板主需要接3根線,其中IO控制腳接XR806的PA12。

3. 實(shí)物操作體驗(yàn)

二. 快速上手

1. 硬件準(zhǔn)備

  • xr806模組。
  • hcsr04超聲波模塊。
  • E53_IA1擴(kuò)展板。
  • 預(yù)裝HarmonyOS手機(jī)一臺(tái)。

2. 環(huán)境準(zhǔn)備

參照文檔:[ XR806快速上手指導(dǎo)文檔]

3. 編譯前準(zhǔn)備

設(shè)備側(cè)代碼下載

下載方式:使用git 命令下載,指令如下(用戶也可以根據(jù)需要將該倉庫fork到自己的目錄下后進(jìn)行下載)

cd ~/
git clone git@gitee.com:openharmony-sig/knowledge_demo_smart_home.git
代碼拷貝
cp -rfa  ~/knowledge_demo_smart_home/dev/team_x  ~/openharmony/vendor/
cp -rfa  ~/knowledge_demo_smart_home/dev/third_party/iot_link  ~/openharmony/third_party/

整合并修改完成后的目錄結(jié)構(gòu)如下圖:

SOC代碼下載替換

當(dāng)前官方soc代碼由于DHCP暫未適配,所以暫時(shí)不支持AP模式,這時(shí)需要下載并替換之前SOC代碼。如果官方soc代碼已修復(fù)該問題,可忽略此步驟。

git clone https://gitee.com/moldy-potato-chips/xr806_-ap_mode.git
mv ~/openharmony/device/soc/allwinner ~/allwinner.org			// 不建議直接刪除,
cp -raf xr806_-ap_mode ~/openharmony/device/soc/allwinner
修改文件
  • 修改編譯依賴
    打開 device/soc/allwinner/xradio/xr806/BUILD.gn,添加應(yīng)用依賴(deps字段):

    module_group(module_name) {
      modules = [
          "src",
          "project",
          "include",
      ]
      configs = [
        ":SdkLdCconfig",
      ]
      deps = [ "http://vendor/team_x/smart_lock/demo_smart_lock:app_smart_lock" ]
    }
    
  • 修改編譯方式
    將demo依賴的庫編譯方式(static_library)修改為(source_set):
    具體依賴查看demo_smart_lock目錄下的BUILD.gn:

    deps = [
            "../../common/iot_wifi_xradio:iot_wifi",
            "../../common/iot_cloud:iot_cloud",
            "../../common/iot_boardbutton_xradio:iot_boardbutton",
            "../../common/iot_list:iot_list",
            "../../common/iot_sntp:iot_sntp",
            "../../common/iot_boardled_xradio",
            "http://third_party/cJSON:cJSON"
        ]
    

    其中//third_party/cJSON目錄下的BUILD.gn建議參照下面的修改:

    source_set("cJSON") {
      sources = [
        "cJSON.c",
        "cJSON_Utils.c",
      ]
      ldflags = [ "-lm" ]
    }
    
  • 修改iot_link中的部分文件
    third_party/iot_link目錄下文件改動(dòng)較多,此處以patch方式做修改,patch在路徑在(team_x/smart_lock/iot_link_patch_xr806.patch),主要修改內(nèi)容:

    1. BUILD.gn修改source_set.
    2. fd為0時(shí)通訊會(huì)異常,做了規(guī)避操作(socket創(chuàng)建時(shí)多創(chuàng)建一個(gè))。
    3. 部分mbedtl接口未適配,做一些簡(jiǎn)單適配以及無法適配的接口需要注釋
    4. 弱引用導(dǎo)致無法鏈接相關(guān)符號(hào),因此需要注釋相關(guān)文件中的弱引用。
    5. osDelay接口在XR806中未實(shí)現(xiàn),需要替換為OS_Msleep();

    以上內(nèi)容修改的修改均在iot_link_patch_xr806.patch中,只需將該patch文件拷貝到third_party/iot_link目錄下,并執(zhí)行打補(bǔ)丁即可:

    cp -af vendor/team_x/smart_lock/iot_link_patch_xr806.patch third_party/iot_link		// 拷貝patch文件到對(duì)應(yīng)目錄
    cd third_party/iot_link/															// cd 到對(duì)應(yīng)目錄
    patch -p1< ./iot_link_patch_xr806.patch												// 執(zhí)行打patch動(dòng)作
    
  • 修改GPIO查找方式
    因?yàn)镚PIO框架修改了設(shè)備驅(qū)動(dòng)注冊(cè)的管腳號(hào),導(dǎo)致應(yīng)用無法根據(jù)HCS的引腳操作對(duì)應(yīng)的GPIO,此問題已經(jīng)提issue,如果該問題已解決,可以忽略此步驟。
    打開drivers/framework/support/platform/src/gpio/gpio_manager.c,將cntlr->start = start;注釋即可。

    static int32_t GpioManagerAdd(struct PlatformManager *manager, struct PlatformDevice *device)
    {
        uint16_t start;
        struct GpioCntlr *cntlr = CONTAINER_OF(device, struct GpioCntlr, device);
    
        if ((start = GpioCntlrQueryStart(cntlr, &manager- >devices)) >= GPIO_NUM_MAX) {
            PLAT_LOGE("GpioCntlrAdd: query range for start:%d fail:%d", cntlr- >start, start);
            return HDF_ERR_INVALID_PARAM;
        }
    
    //    cntlr- >start = start;
        DListInsertTail(&device- >node, &manager- >devices);
        PLAT_LOGI("%s: start:%u count:%u", __func__, cntlr- >start, cntlr- >count);
        return HDF_SUCCESS;
    }
    
  • 將對(duì)應(yīng)的驅(qū)動(dòng)文件復(fù)制到drvier對(duì)應(yīng)目錄:
    因?yàn)橹鱾}代碼中未將對(duì)應(yīng)的驅(qū)動(dòng)文件合并到driver/adpater/platform對(duì)應(yīng)的目錄下,固需要手動(dòng)將文件拷貝到對(duì)應(yīng)目錄。若主倉已合入,可忽略此步驟。
    注意:(如果已用xr806_-ap_mode替換原來的soc文件,則需要將拷貝原來被替換的對(duì)應(yīng)文件,因?yàn)閤r806_-ap_mode中的驅(qū)動(dòng)文件非最新版

    // 拷貝gpio驅(qū)動(dòng)
    cp -af device/soc/allwinner/xradio/drivers/gpio/gpio_xradio.* driver/adpater/platform/gpio
    
    // 修改driver/adpater/platform/gpio/BUILD.gn文件,加上gpio_xradio的編譯
    
    hdf_driver(module_name) {
      sources = []
      if (defined(LOSCFG_SOC_COMPANY_BESTECHNIC)) {
        sources += [ "gpio_bes.c" ]
      }
    
      if (defined(LOSCFG_SOC_COMPANY_ALLWINNER)) {
        sources += [ "gpio_xradio.c" ]
      }
    
      include_dirs = [ "." ]
    }
    
  • 為了節(jié)省ram資源,可以把無用的資源先關(guān)閉,如關(guān)閉內(nèi)部codec,將 device/soc/allwinner/xradio/xr806/project/prj_config.h中的PRJCONF_INTERNAL_SOUNDCARD_EN設(shè)置為0,如下:

    /* Xradio internal codec sound card enable/disable */
    #define PRJCONF_INTERNAL_SOUNDCARD_EN   0
    

4. 編譯&燒錄

更新hb

首先可以查看一下hb的版本,如果hb版本為0.4.4就不需要更新。

## 查看hb版本
hb --version

## 更新hb, 以下指令需要在openharmony SDK根目錄執(zhí)行
pip3 uninstall ohos_build
pip3 install build/lite
編譯
  1. hb set 選擇demo指令,具體命令如下:
hb set -root

如下圖所示,使用鍵盤上下鍵選中smart_lock

  1. hb build 全量編譯命令
    hb build -f
    

燒錄

參照文檔:[ XR806快速上手指導(dǎo)文檔]

5. 設(shè)備配網(wǎng)

  • 在設(shè)備上電前需準(zhǔn)備好安裝了數(shù)字管家應(yīng)用的HarmonyOS手機(jī), 并在設(shè)置中開啟手機(jī)的NFC功能;
  • 寫設(shè)備NFC標(biāo)簽;
  • 燒錄完成后,上電。開發(fā)者在觀察開發(fā)板上狀態(tài)LED燈以8Hz的頻率閃爍時(shí),將手機(jī)上半部靠近開發(fā)板NFC標(biāo)簽處(無NFC標(biāo)簽的可用NFC貼紙?zhí)娲?;
  • 碰一碰后手機(jī)將自動(dòng)拉起數(shù)字管家應(yīng)用并進(jìn)入配網(wǎng)狀態(tài)。
  • 配網(wǎng)過程中需要 連接設(shè)備的AP熱點(diǎn),然后填寫需要配置的wifi的密碼。
  • 最后點(diǎn)擊配置,手機(jī)會(huì)將ssid以及對(duì)應(yīng)的密碼通過AP熱點(diǎn)發(fā)送到設(shè)備。
  • 當(dāng)設(shè)備端藍(lán)燈每5s閃爍一次則代碼設(shè)備聯(lián)網(wǎng)成功。

6. 設(shè)置主密碼并通過主密碼開鎖

  • 數(shù)字管家下發(fā)修改密碼指令以及修改后的密碼
  • 設(shè)備端接收指令以及修改后的密碼進(jìn)行更新
  • 數(shù)字管家下方開鎖指令以及開鎖密碼
  • 設(shè)備端接收指令并判斷密碼是否正確,正確的話電機(jī)轉(zhuǎn)動(dòng)模擬開鎖,否則向數(shù)字管家發(fā)送密碼錯(cuò)誤信息

7. 設(shè)置臨時(shí)密碼

  • 數(shù)字管家下發(fā)創(chuàng)建臨時(shí)密碼指令以及創(chuàng)建臨時(shí)密碼時(shí)的信息,主要包括臨時(shí)密碼標(biāo)志,臨時(shí)密碼信息,臨時(shí)密碼生效時(shí)間段。
  • 設(shè)備端接收指令并保存信息。
  • 臨時(shí)用戶通過數(shù)字管家下發(fā)開鎖指令以及開發(fā)密碼。
  • 設(shè)備端接收指令并判斷密碼是否正確以及該密碼是否在當(dāng)前時(shí)間段生效,正確的話電機(jī)轉(zhuǎn)動(dòng)模擬開鎖,否則向數(shù)字管家發(fā)送密碼錯(cuò)誤信息。

8. 門未關(guān)告警

  • 設(shè)備端執(zhí)行完開門指令后會(huì)一直通過超聲波距離傳感器來判斷門是否可以關(guān)閉,如果超過5分鐘發(fā)現(xiàn)門不能關(guān)閉,則主動(dòng)向數(shù)字管家發(fā)送門未關(guān)的告警信息。
  • 數(shù)字管家通過系統(tǒng)消息查看到告警消息。
  • 數(shù)字管家可以從設(shè)備控制頁面進(jìn)入到告警消息頁面,也可以通過點(diǎn)擊告警消息進(jìn)入到告警界面。

9. 模擬自動(dòng)關(guān)門

  • 設(shè)備端執(zhí)行開門動(dòng)作后,用手或者其他物體靠近超聲波距離傳感器
  • 設(shè)備每隔10S檢測(cè)一次超聲波距離傳感器,發(fā)現(xiàn)在設(shè)定范圍內(nèi)(模擬門已關(guān)),則控制電機(jī)轉(zhuǎn)動(dòng)(模擬關(guān)門動(dòng)作),同時(shí)上報(bào)關(guān)門信息到數(shù)字管家

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 智能門鎖
    +關(guān)注

    關(guān)注

    17

    文章

    1843

    瀏覽量

    42888
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2287

    瀏覽量

    42629
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1954

    瀏覽量

    29897
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3607

    瀏覽量

    15956
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OpenHarmony南向開發(fā)案例:【智能風(fēng)扇】

    智能風(fēng)扇設(shè)備不僅可以接收數(shù)字管家應(yīng)用下發(fā)的指令來控制風(fēng)扇開啟的時(shí)間,調(diào)節(jié)風(fēng)扇擋位,更改風(fēng)扇定時(shí)時(shí)間,而且還可以加入到數(shù)字管家的日程管理中。通過日程可以設(shè)定風(fēng)扇相關(guān)的任務(wù),使其在特定的時(shí)間段內(nèi),風(fēng)扇自動(dòng)打開或者關(guān)閉,調(diào)節(jié)擋位大小和定時(shí)時(shí)間;通過日程管家還可以實(shí)現(xiàn)風(fēng)扇和其他的智能
    的頭像 發(fā)表于 04-09 17:35 ?808次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>南向</b><b class='flag-5'>開發(fā)案</b>例:【<b class='flag-5'>智能</b>風(fēng)扇】

    OpenHarmony南向開發(fā)案例:【分布式畫板】

    使用OpenHarmony3.1-Release開發(fā)的應(yīng)用。通過OpenHarmony的分布式技術(shù),使多人能夠一起畫畫。
    的頭像 發(fā)表于 04-12 14:40 ?941次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>南向</b><b class='flag-5'>開發(fā)案</b>例:【分布式畫板】

    OpenHarmony南向開發(fā)案例:【智能油煙機(jī)】

    基于Hi3516開發(fā)板,使用開源OpenHarmony開發(fā)的應(yīng)用。
    的頭像 發(fā)表于 04-18 15:54 ?948次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>南向</b><b class='flag-5'>開發(fā)案</b>例:【<b class='flag-5'>智能</b>油煙機(jī)】

    OpenHarmony鴻蒙南向開發(fā)案例:【智能加濕器】

    智能加濕器具有實(shí)時(shí)監(jiān)控其所處環(huán)境溫度、濕度,并通過數(shù)字管家設(shè)置日程,自動(dòng)打開加濕器控制濕度功能。
    的頭像 發(fā)表于 04-19 15:50 ?1286次閱讀
    <b class='flag-5'>OpenHarmony</b>鴻蒙<b class='flag-5'>南向</b><b class='flag-5'>開發(fā)案</b>例:【<b class='flag-5'>智能</b>加濕器】

    OpenHarmony鴻蒙南向開發(fā)案例:【智能貓眼(基于Hi3518開發(fā)板)】

    基于Hi3518開發(fā)板,使用開源OpenHarmony開發(fā)的RTSP協(xié)議流媒體應(yīng)用。達(dá)到將Hi3518開發(fā)板中攝像頭獲取的數(shù)據(jù)通過RTSP協(xié)議傳輸?shù)绞謾C(jī)并顯示 。
    的頭像 發(fā)表于 04-22 15:46 ?1785次閱讀
    <b class='flag-5'>OpenHarmony</b>鴻蒙<b class='flag-5'>南向</b><b class='flag-5'>開發(fā)案</b>例:【<b class='flag-5'>智能</b>貓眼(基于Hi3518<b class='flag-5'>開發(fā)</b>板)】

    OpenHarmony南向能力征集令

    1、適配過程中缺少哪些接口能力或者南向能力,需要OpenHarmony去補(bǔ)齊的?例如內(nèi)核、編譯、器件適配、單板適配等; 2、對(duì)標(biāo)linux,需要OpenHarmony提供哪些能力?比如V4L2
    發(fā)表于 04-09 15:32

    鴻蒙OpenHarmony南向/北向快速開發(fā)教程-迅為RK3568開發(fā)

    P2_OpenHarmony功能框架 P3_OpenHarmony技術(shù)特性 P4_OpenHarmony支持設(shè)備類型 p5_南向開發(fā)和北向
    發(fā)表于 07-23 10:44

    華為開發(fā)者分論壇HarmonyOS學(xué)生公開課-OpenHarmony Codelabs開發(fā)案

    2021華為開發(fā)者分論壇HarmonyOS學(xué)生公開課-OpenHarmony Codelabs開發(fā)案
    的頭像 發(fā)表于 10-24 11:25 ?1851次閱讀
    華為<b class='flag-5'>開發(fā)</b>者分論壇HarmonyOS學(xué)生公開課-<b class='flag-5'>OpenHarmony</b> Codelabs<b class='flag-5'>開發(fā)案</b>例

    OpenHarmony Dev-Board-SIG專場(chǎng):南向共建案例分享

    OpenHarmony南向共建案例分享: 審核編輯:金巧
    的頭像 發(fā)表于 12-28 14:16 ?918次閱讀
    <b class='flag-5'>OpenHarmony</b> Dev-Board-SIG專場(chǎng):<b class='flag-5'>南向</b>共建案例分享

    基于OpenHarmony智能門鎖設(shè)計(jì)

    本項(xiàng)目的場(chǎng)景是智能家居。通過 OpenHarmony 源碼與 Hi3861 開發(fā)板進(jìn)行智能門鎖的項(xiàng)目開發(fā)
    的頭像 發(fā)表于 04-10 11:05 ?959次閱讀

    鴻蒙NEXT南向開發(fā)案例:【智能臺(tái)燈】

    鴻蒙南向開發(fā)智能臺(tái)燈案例
    的頭像 發(fā)表于 04-03 18:00 ?876次閱讀
    鴻蒙NEXT<b class='flag-5'>南向</b><b class='flag-5'>開發(fā)案</b>例:【<b class='flag-5'>智能</b>臺(tái)燈】

    OpenHarmony南向開發(fā)案例:【智能中控屏】

    基于Hi3516開發(fā)板,使用開源OpenHarmony開發(fā)的應(yīng)用。通過控制面板可以控制同一局域網(wǎng)內(nèi)的空調(diào),窗簾,燈等智能家居設(shè)備。
    的頭像 發(fā)表于 04-17 16:12 ?325次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>南向</b><b class='flag-5'>開發(fā)案</b>例:【<b class='flag-5'>智能</b>中控屏】

    OpenHarmony南向開發(fā)案例:【智能照相機(jī)】

    基于Hi3516開發(fā)板,使用OpenHarmony3.0-LTS開發(fā)的應(yīng)用。通過獲取攝像頭數(shù)據(jù),實(shí)現(xiàn)預(yù)覽拍照以及路視頻等功能。并且通過后臺(tái)AI服務(wù)識(shí)別喚醒詞來進(jìn)行語音控制拍照及錄制視頻。
    的頭像 發(fā)表于 04-18 22:19 ?380次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>南向</b><b class='flag-5'>開發(fā)案</b>例:【<b class='flag-5'>智能</b>照相機(jī)】

    OpenHarmony鴻蒙南向開發(fā)案例:【智能門鈴】

    智能門鈴?fù)ㄟ^監(jiān)控來訪者信息,告訴主人門外是否有人按鈴、有陌生人靠近或者無人狀態(tài)。
    的頭像 發(fā)表于 04-19 15:35 ?452次閱讀
    <b class='flag-5'>OpenHarmony</b>鴻蒙<b class='flag-5'>南向</b><b class='flag-5'>開發(fā)案</b>例:【<b class='flag-5'>智能</b>門鈴】

    OpenHarmony鴻蒙南向開發(fā)案例:【智能貓眼(基于3516開發(fā)板)】

    基于Hi3516開發(fā)板,使用開源OpenHarmony開發(fā)的RTSP協(xié)議流媒體應(yīng)用。達(dá)到將Hi3516開發(fā)板中攝像頭獲取的數(shù)據(jù)通過RTSP協(xié)議傳輸?shù)绞謾C(jī)并顯示 。
    的頭像 發(fā)表于 04-19 22:01 ?492次閱讀
    <b class='flag-5'>OpenHarmony</b>鴻蒙<b class='flag-5'>南向</b><b class='flag-5'>開發(fā)案</b>例:【<b class='flag-5'>智能</b>貓眼(基于3516<b class='flag-5'>開發(fā)</b>板)】