<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony 項目實戰:基于全志 XR806 實現的上下位機雙 OpenHarmony 智能門鎖樣例

王程 ? 來源:jf_75796907 ? 作者:jf_75796907 ? 2024-02-19 17:25 ? 次閱讀

一、簡介

本 demo 是基于 Openharmony 3.1 Beta 本版開發,不僅可以接收數字管家應用下發的指令來控制門鎖開啟,而且還可以通過數字管家設置不同的開鎖密碼以及一次性密碼,實現給臨時用戶一個臨時密碼,保證門戶安全。當然除了開鎖的功能,智能門鎖還可以通過檢測門與門鎖距離自動上鎖以及如果長時間未上鎖,上報告警消息到數字管家,及時提醒用戶關門關鎖等功能。

1. 交互流程:

wKgZomXTHqKARSgMAADdjLZl5_s108.pngwKgZomXTHViAP3cKAADdjLZl5_s114.png


如上圖所示,智能門鎖整體方案原理圖可以大致分成:智能門鎖設備、數字管家應用、云平臺三部分。智能門鎖通過 MQTT 協議連接華為 IOT 物聯網平臺,從而實現命令的接收和屬性上報。 關于智能設備接入華為云 IoT 平臺的詳細細節可以參考 連接 IOT 云平臺指南;智能設備與數字管家應用之間的設備模型定義可以參考 profile .

2. 實物簡介:

wKgaomXTHqOATkUJAASaL2Ff8bQ922.pngwKgZomXTHWaAA7dMAASaL2Ff8bQ557.png

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

我們是通過距離傳感器感應門的距離,進行自動上鎖,也可以在一定時間內無法上鎖而產生告警信息上傳到數字管家。

E53_IA1 擴展板主要是通過控制電機模擬開關鎖的一個動作。

接線說明:

wKgZomXTHqOAIlbPAASHAcYeKsY840.pngwKgZomXTHYWALt5ZAASHAcYeKsY865.png

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

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

實物操作體驗

wKgaomXTHqSAFQ7QAA15XgZ_zGE057.gifpoYBAGJEBlSASA4qAA15XgZ_zGE213.gif

二、快速上手

1. 硬件準備

xr806 模組

hcsr04 超聲波模塊

E53_IA1 擴展板

預裝 HarmonyOS 手機一臺

2. 環境準備
參照文檔: XR806 快速上手指導文檔

3. 編譯前準備
設備側代碼下載
具體倉庫地址:https://gitee.com/openharmony-sig/knowledge_demo_smart_home/

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

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/

整合并修改完成后的目錄結構如下圖:

wKgZomXTHqWADFWAAAA45J21v2o280.pngwKgZomXTHa6AI7nLAAA45J21v2o481.png

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

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,添加應用依賴 (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 目錄下文件改動較多,此處以 patch 方式做修改,patch 在路徑在 (team_x/smart_lock/iot_link_patch_xr806.patch),主要修改內容:

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

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

cp -af vendor/team_x/smart_lock/iot_link_patch_xr806.patch third_party/iot_link		// 拷貝patch文件到對應目錄
cd third_party/iot_link/															// cd 到對應目錄
patch -p1

修改 GPIO 查找方式

因為 GPIO 框架修改了設備驅動注冊的管腳號,導致應用無法根據 HCS 的引腳操作對應的 GPIO,此問題已經提 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;
}

將對應的驅動文件復制到 drvier 對應目錄:

因為主倉代碼中未將對應的驅動文件合并到 driver/adpater/platform 對應的目錄下,固需要手動將文件拷貝到對應目錄。若主倉已合入,可忽略此步驟。

注意:(如果已用 xr806_-ap_mode 替換原來的 soc 文件,則需要將拷貝原來被替換的對應文件,因為 xr806_-ap_mode 中的驅動文件非最新版

// 拷貝gpio驅動
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 = [ "." ]
}

為了節省 ram 資源,可以把無用的資源先關閉,如關閉內部 codec,將 device/soc/allwinner/xradio/xr806/project/prj_config.h 中的 PRJCONF_INTERNAL_SOUNDCARD_EN 設置為 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根目錄執行
pip3 uninstall ohos_build
pip3 install build/lite

編譯

1.hb set 選擇demo指令,具體命令如下:
hb set -root

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

wKgaomXTHeiAOrAsAAJJ7_18UFM278.png


2.hb build 全量編譯命令

hb build -f

wKgZomXTHfmAEQ-YAAM5dd3UGvs368.png

燒錄
參照文檔: XR806 快速上手指導文檔

5. 設備配網

在設備上電前需準備好安裝了數字管家應用的 HarmonyOS 手機,詳情見數字管家應用開發,并在設置中開啟手機的 NFC 功能;

寫設備 NFC 標簽,詳細操作見設備 NFC 標簽指導文檔;

燒錄完成后,上電。開發者在觀察開發板上狀態 LED 燈以8Hz 的頻率閃爍時,將手機上半部靠近開發板 NFC 標簽處 (無 NFC 標簽的可用 NFC 貼紙替代);

碰一碰后手機將自動拉起數字管家應用并進入配網狀態。

配網過程中需要 連接設備的 AP 熱點,然后填寫需要配置的 wifi 的密碼。

最后點擊配置,手機會將 ssid 以及對應的密碼通過 AP 熱點發送到設備。

當設備端藍燈每 5s 閃爍一次則代碼設備聯網成功。

wKgaomXTHqWAMiQTAA6C6LPsLdE419.gifpoYBAGJEC56ABxDQAA6C6LPsLdE821.gif

6. 設置主密碼并通過主密碼開鎖

數字管家下發修改密碼指令以及修改后的密碼

設備端接收指令以及修改后的密碼進行更新

數字管家下方開鎖指令以及開鎖密碼

設備端接收指令并判斷密碼是否正確,正確的話電機轉動模擬開鎖,否則向數字管家發送密碼錯誤信息

poYBAGJEC66AZpb3AAjimr-WpHU642.gif

7. 設置臨時密碼

數字管家下發創建臨時密碼指令以及創建臨時密碼時的信息,主要包括臨時密碼標志,臨時密碼信息,臨時密碼生效時間段。

設備端接收指令并保存信息。

臨時用戶通過數字管家下發開鎖指令以及開發密碼。

設備端接收指令并判斷密碼是否正確以及該密碼是否在當前時間段生效,正確的話電機轉動模擬開鎖,否則向數字管家發送密碼錯誤信息。

pYYBAGJEC7-AMRWdAA6GLyUk_us241.gif

8. 門未關告警

設備端執行完開門指令后會一直通過超聲波距離傳感器來判斷門是否可以關閉,如果超過 5 分鐘發現門不能關閉,則主動向數字管家發送門未關的告警信息。

數字管家通過系統消息查看到告警消息。

數字管家可以從設備控制頁面進入到告警消息頁面,也可以通過點擊告警消息進入到告警界面。

wKgaomXTHqaAUnSsAA4HGxcsqOI643.gifpoYBAGJEC86AZTaOAA4HGxcsqOI007.gif

9. 模擬自動關門

設備端執行開門動作后,用手或者其他物體靠近超聲波距離傳感器
設備每隔 10S 檢測一次超聲波距離傳感器,發現在設定范圍內 (模擬門已關),則控制電機轉動 (模擬關門動作), 同時上報關門信息到數字管家

poYBAGJEC9eAXGC1AA0albB8fZ8739.gif

審核編輯 黃宇


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 智能門鎖
    +關注

    關注

    17

    文章

    1813

    瀏覽量

    42238
  • OpenHarmony
    +關注

    關注

    24

    文章

    3434

    瀏覽量

    15242
收藏 人收藏

    評論

    相關推薦

    &OpenHarmony三款支持OpenHarmony開發板在開放原子開源基金會OpenHarmony見面會實況分享

    成果,見面會在B站等多個平臺進行了全程直播,累計觀看人數超2W人。其中志在會上分享了3款支持OpenHarmony的芯片/開發板,分別是XR806、T507和D1。第一款是
    發表于 11-15 16:16

    &OpenHarmony三款支持OpenHarmony開發板在開放原子開源基金會OpenHarmony見面會實況分享

    分享了3款支持OpenHarmony的芯片/開發板,分別是XR806、T507和D1。第一款是的D1開發板,這款開發板是志在線5月份的
    發表于 11-15 16:48

    XR806芯片、XR806開源鴻蒙開發板簡介

    XR806芯片介紹XR806科技旗下子公司廣州芯之聯研發設計的一款支持WiFi和BLE的高集成度無線MCU芯片,支持鴻蒙L0系統。具有集成度高、硬件設計簡單、BOM成本低、安全可
    發表于 11-15 17:08

    XR806芯片、XR806開源鴻蒙開發板簡介

    XR806芯片介紹XR806科技旗下子公司廣州芯之聯研發設計的一款支持WiFi和BLE的高集成度無線MCU芯片,支持鴻蒙L0系統。具有集成度高、硬件設計簡單、BOM成本低、安全可
    發表于 11-15 18:32

    【資料釋放】XR806開發板全資料釋放,連bomlist都給出來了

    XR806開發板/模組全部資料都將通過本帖子釋放,包括bomlist、完整硬件設計、軟件SDK等,拿到資料就能DIY板子開放原子基金會官方介紹鏈接:https
    發表于 12-06 14:06

    【直播預告】XR806芯片應用實戰分享

    /joinXR806優秀開發例程《基于OpenHarmony的棋子分揀》《用XR806開源
    發表于 02-28 17:39

    【直播預告】XR806芯片應用實戰分享會!

    /joinXR806優秀開發例程《基于OpenHarmony的棋子分揀》《用XR806開源
    發表于 03-01 09:27

    基于 OpenHarmony 系統的智能門鎖

    使用了 OpenHarmony 新支持的 XR806 開發板,通過密碼開鎖以及開鎖密碼的管理,支持用戶使用數字管家創建修改密碼,也支持用戶創建一次性密碼。該
    發表于 03-08 14:18

    【資料合集】XR806開發板全部資料

    XR806開發板/模組全部資料都將通過本帖子釋放,包括bomlist、完整硬件設計、軟件SDK等,拿到資料就能DIY板子開放原子基金會官方介紹鏈接:https
    發表于 03-10 14:59

    【開源鴻蒙OpenHarmonyXR806芯片設計案例討論

    XR806科技旗下子公司廣州芯之聯研發設計的一款支持WiFi和BLE的高集成度無線MCU芯片,支持輕量級開源鴻蒙系統。具有集成度高、硬件設計簡單、BOM成本低、安全可靠等優點??蓮V泛滿足
    發表于 03-10 15:29

    OpenHarmony開發】基于XR806開發板開發的智能門鎖

    set -root如下圖所示,使用鍵盤上下鍵選中smart_lock hb build 量編譯命令hb build -f 燒錄參照文檔: XR806快速上手指導文檔5. 設備配網在設備上電前需準備好安裝
    發表于 03-11 10:29

    OpenHarmony開發】基于XR806開發套件開發的智能門鎖

    參考 連接IOT云平臺指南;智能設備與數字管家應用之間的設備模型定義可以參考profile .2. 實物簡介:如上圖所示,上面是XR806開發板,中間的是hcsr04超聲波距離傳感器,下面是E53_IA1
    發表于 03-17 10:22

    一條命令搞定XR806編譯環境

    XR806科技旗下子公司廣州芯之聯研發設計的一款支持Wi-Fi和BLE的高集成度無線MCU芯片,基于安謀科技STAR-MC1架構,支持鴻蒙L0系統。
    發表于 03-30 16:11

    輕量系統開發套件介紹: XR806 開發套件

    XR806 開發套件是科技旗下子公司廣州芯之聯研發設計的一款支持WiFi和BLE的高集成度無線MCU芯片,支持輕量級
    發表于 04-21 13:51

    輕量系統:XR806XR806AF2L)

    開發板名稱(芯片型號) XR806XR806AF2L) 芯片架構 CPU頻率 介紹(字數請控制在200字以內) XR806
    發表于 10-19 11:14
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>