OpenHarmony开源社区
直播中

小伍

9年用户 4783经验值
擅长:电源/新能源 嵌入式技术
私信 关注
[经验]

【OpenHarmony开发样例】基于润和Pegasus智能家居套件开发的智能保险柜

一、 简介
智能保险柜实时监测保险柜中振动传感器,当有振动产生时及时向用户发出警报。在连接网络后,配合数字管家应用,用户可以远程接收智能保险柜的报警信息。后续可扩展摄像头等设备,实现对危险及时报警,及时处理,守护家中财产安全。

1.交互流程
1.png
如上图所示,智能保险柜整体方案框架可以分为:智能保险柜设备、数字管家应用、云平台三部分。智能保险柜设备端按照MQTT协议与华为IOT物联网平台进行通信。当智能保险柜检测到振动时,设备端上报数据至云平台最终同步到数字管家进行报警,并将报警信息也上报至云平台最终同步到数字管家;当用户发现为误报时关闭报警,命令数据先发送至云平台,再由云平台下发至设备侧。关于智能设备接入华为云IoT平台的详细细节可以参考 连接IOT云平台指南 。智能设备同数字管家应用之间的设备模型定义可以参考profile 。

2.实物简介
我们使用润和Pegasus智能家居开发底板+SW-18010P振动模块来模拟感智能保险柜设备。 通过检测GPIO输入获取振动感应;

SW-18010P振动模块
2.png

润和Pegasus智能家居开发板底板
3.png

连接图
将SW-18010P的GND连接开发板的GND,VCC连接开发板的V3.3,DO连接开发板的A9。
4.png

3.实物操作体验
5.gif

OLED屏负责显示当前网络状况,有三种状况:
  • WIFI_CONNECT_ING(等待配网,未连入WIFI);
  • WIFI_CONNECT_OK(已经连入WIFI,等待自动连入华为云端);
  • IOT_CONNECT_OK(已经连入华为云端)。

重新配网操作:
按键2组合reset按键执行配网操作,具体操作如下:
  • 按下按键2,保持按键2被按下,执行以下第2步;
  • 按下reset按键,保持1秒;
  • 先松开reset按键后等待设备重启,待OLEN显示WIFI_CONNECT_ING后再松开按键2;
  • 等待手机数字管家保险柜设备为离线状态;
  • 通过NFC模块实现设备碰一碰快速配网。

二、快速上手
1、硬件准备
SW-18010P振动模块
润和Pegasus智能家居套件
预装HarmonyOS手机一台。

2、获取源码及Ubuntu编译环境准备
开发基础环境由windows 工作台和Linux 编译服务器组成。windows 工作台可以通过samba 服务或ssh 方式访问Linux编译服务器。其中windows 工作台用来烧录和代码编辑,Linux编译服务器用来编译OpenHarmony代码,为了简化步骤,Linux编译服务器推荐安装Ubuntu20.04。

3、Hi3861开发环境准备
在Linux编译服务器上搭建好基础开发环境后,需要安装OpenHarmony 编译Hi3861 平台特有的开发环境。
操作文档

4、源码下载&编译准备
1.码云工具下载
  1. <font size="4">cd ~/
  2. curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ./repo
  3. sudo cp repo /usr/local/bin/repo
  4. chmod a+x /usr/local/bin/repo
  5. pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests</font>

2.代码下载
本智能保险柜demo适配OpenHarmony-3.0-LTS与OpenHarmony-3.1-Beta。
1) OpenHarmony代码下载
  1. <font size="4">mkdir ~/OpenHarmony
  2. cd ~/OpenHarmony</font>
OpenHarmony-3.0-LTS下载:
  1. <font size="4">repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.0-LTS --no-repo-verify
  2. repo sync -c
  3. repo forall -c 'git lfs pull'</font>
OpenHarmony-3.1-Beta下载:
  1. <font size="4">repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.1-Beta --no-repo-verify
  2. repo sync -c
  3. repo forall -c 'git lfs pull'</font>
2) 设备侧代码下载
直接下载仓库对应zip 包文件并放到 ~/目录
3) 编译前准备
拷贝teamX
  1. <font size="4">cd ~/
  2. unzip knowledge_demo_smart_home-master.zip
  3. cp -raf knowledge_demo_smart_home-master/dev/team_x ~/OpenHarmony/vendor</font>
拷贝智能保险柜相应代码,iot云连接三方库代码、无感配网相关库文件(libHwKeystoreSDK.a),libHwKeystoreSDK.a文件与无感配网相关,缺少无法编译通过。
  1. <font size="4">cd ~/
  2. cp -raf  knowledge_demo_smart_home-master/dev/team_x/smart_safe/libs/libHwKeystoreSDK.a OpenHarmony/vendor/team_x/common/iot_wifi/libs/
  3. cp -raf  knowledge_demo_smart_home-master/dev/third_party/iot_link  OpenHarmony/third_party/</font>
适配平台系统的config.json。
  1. <font size="4">cd ~/OpenHarmony/vendor/team_x/smart_safe
  2. 如果使用的是OpenHarmony-3.0-LTS版本
  3. cp config.json_3_0_LTS config.json
  4. 如果使用的是OpenHarmony-3.1-Beta版本
  5. cp config.json_3.1-Beta config.json

  6. cd ~/OpenHarmony</font>
后续修改操作在OpenHarmony-3.0-LTS版本源码下,OpenHarmony-3.1-Beta版本类似只是行号不同。

地址vendor/team_x/common/iot_wifi/BUILD.gn。将libs/libHwKeystoreSDK.a加入到编译中。
添加17行
  1. <font size="4">14 config_file = [
  2. 15    "libs/libnetcfgdevicesdk.a",
  3. 16    "libs/libhilinkadapter_3861.a",
  4. 17    "libs/libHwKeystoreSDK.a"
  5. 18 ]</font>
地址:device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk。打开I2C与PWM开关。
  1. <font size="4">33 CONFIG_I2C_SUPPORT=y
  2. 40 CONFIG_PWM_SUPPORT=y</font>
地址:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_hotspot.c。与无感配网功能相冲突,须屏蔽。
  1. <font size="4">EnableHotspot函数中屏蔽如下字段
  2. 139  //if (SetHotspotIpConfig() != WIFI_SUCCESS) {
  3. 140  //    return ERROR_WIFI_UNKNOWN;
  4. 141  //}</font>
地址:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.c。与无感配网功能相冲突,须屏蔽。
  1. <font size="4">DispatchConnectEvent函数下 屏蔽StaSetWifiNetConfig相关代码行
  2. 239  //StaSetWifiNetConfig(HI_WIFI_EVT_CONNECTED);
  3. 260  //StaSetWifiNetConfig(HI_WIFI_EVT_DISCONNECTED);</font>
地址:device/hisilicon/hispark_pegasus/sdk_liteos/BUILD.gn。将smart_safe中的demo加入编译配置
  1. <font size="4">在deps中添下如下27行
  2. 23 deps = [
  3. 24     ":sdk",
  4. 25     "//base/security/deviceauth/frameworks/deviceauth_lite:hichainsdk",
  5. 26     "//build/lite:ohos",
  6. 27     "//build/lite:product",
  7. 28   ]</font>
地址:base/security/huks/interfaces/innerkits/huks_lite/BUILD.gn
  1. <font size="4">屏蔽164行
  2. 161   sources = huks_sources
  3. 162   sources += huks_storage_source
  4. 163   sources += huks_access_sources
  5. 164   #sources += [ "hks_tmp_client.c" ]</font>
如果使用
整合并修改完成后的目录结构如下图:
6.png


5、编译&烧录
编译命令:
  1. <font size="4">hb set  // 如果是第一次编译,Input code path 命令行中键入"./" 指定OpenHarmony工程编译根目录后 回车。</font>
如下图所示,选择智能保险柜
7.png
  1. <font size="4">hb build // 如果需要全量编译,可以添加-f 选项</font>
详细的代码编译及固件烧录步骤,请参考 编译和烧录指南

6、设备配网
  • 在设备上电前需准备好安装了数字管家应用的HarmonyOS手机,详情见数字管家应用开发, 并在设置中开启手机的NFC功能;
  • 写设备NFC标签,详细操作见设备NFC标签指导文档,其中设备模型定义为profile 。
  • 烧录完成后,上电。开发者在观察开发板上状态LED灯以8Hz的频率闪烁时,将手机上半部靠近开发板NFC标签处;
  • 无需任何操作手机将自动拉起数字管家应用并进入配网状态,配网过程中无需输入热点账号密码。 具体无感配网相关流程参考 无感配网指南
8.gif


7、操作体验
1.设备控制
配网完成后,数字管家应用会自动进入智能保险柜控制页面,通过控制页面可以关闭告警。
2.告警提示
当检测到保险柜有振动时,会通知数字管家应用告警,并且告警消息还会推送同一家庭账号的所有成员
9.gif

回帖(1)

李鸿洋

2022-3-16 15:05:41
感谢大佬分享,教程很好,收藏学习了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分