0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony 项目实战:基于全志 XR806 实现的上下位机双 OpenHarmony 智能门锁样例

王程 来源:jf_75796907 作者:jf_75796907 2024-02-19 17:25 1327次阅读

一、简介

本 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 = [ "//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",
        "//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< ./iot_link_patch_xr806.patch												// 执行打patch动作

修改 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

    文章

    1878

    浏览量

    43905
  • OpenHarmony
    +关注

    关注

    26

    文章

    3806

    浏览量

    17985
收藏 人收藏
    相关推荐
    热点推荐

    &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芯片应用实战分享

    /joinXR806优秀开发例程《基于OpenHarmony的棋子分拣》《用XR806开源
    发表于 02-28 17:39

    【直播预告】XR806芯片应用实战分享会!

    /joinXR806优秀开发例程《基于OpenHarmony的棋子分拣》《用XR806开源
    发表于 03-01 09:27

    基于 OpenHarmony 系统的智能门锁

    使用了 OpenHarmony 新支持的 XR806 开发板,通过密码开锁以及开锁密码的管理,支持用户使用数字管家创建修改密码,也支持用户创建一次性密码。该
    发表于 03-08 14:18

    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

    XR806底板位号图

    XR806底板位号图
    发表于 10-19 15:11 0次下载

    XR806鸿蒙无线模组原理图

    XR806鸿蒙无线模组原理图
    发表于 10-19 15:11 7次下载

    XR806开发板原理图

    XR806开发板原理图
    发表于 10-19 15:11 12次下载

    有几种电平转换电路,适用于不同的场景

    一.起因一般在消费电路的元器件之间,不同的器件IO的电压是不同的,常规的有5V,3.3V,1.8V等。当器件的IO电压一样的时候,比如都是5V,都是3.3V,那么其之间可以直接通讯,比如拉中断,I2Cdata/clk脚双方直接通讯等。当器件的IO电压不一样的时候,就需要进行电平转换,不然无法实现高低电平的变化。二.电平转换电路常见的有几种电平转换电路,适用于

    张飞实战电子官方
    1天前
    259

    瑞萨RA8系列教程 | 基于 RASC 生成 Keil 工程

    对于不习惯用 e2 studio 进行开发的同学,可以借助 RASC 生成 Keil 工程,然后在 Keil 环境下愉快的完成开发任务。

    RA生态工作室
    05-01 10:00
    492

    共赴之约 | 第二十七届中国北京国际科技产业博览会圆满落幕

    作为第二十七届北京科博会的参展方,芯佰微有幸与800余家全球科技同仁共赴「科技引领创享未来」之约!文章来源:北京贸促5月11日下午,第二十七届中国北京国际科技产业博览会圆满落幕。本届北京科博会主题为“科技引领创享未来”,由北京市人民政府主办,北京市贸促会,北京市科委、中关村管委会,北京市经济和信息化局,北京市知识产权局和北辰集团共同承办。5万平方米的展览云集

    芯佰微电子
    1天前
    554

    道生物联与巍泰技术联合发布 RTK 无线定位系统:TurMass™ 技术与厘米级高精度定位的深度融合

    道生物联与巍泰技术联合推出全新一代 RTK 无线定位系统——WTS-100(V3.0 RTK)。该系统以巍泰技术自主研发的 RTK(实时动态载波相位差分)高精度定位技术为核心,深度融合道生物联国产新兴窄带高并发 TurMass™ 无线通信技术,为室外大规模定位场景提供厘米级高精度、广覆盖、高并发、低功耗、低成本的一站式解决方案,助力行业智能化升级。

    道生物联
    1天前
    459

    智能家居中的清凉“智”选,310V无刷吊扇驱动方案--其利天下

    炎炎夏日,如何营造出清凉、舒适且节能的室内环境成为了大众关注的焦点。吊扇作为一种经典的家用电器,以其大风量、长寿命、低能耗等优势,依然是众多家庭的首选。而随着智能控制技术与无刷电机技术的不断进步,吊扇正朝着智能化、高效化、低噪化的方向发展。那么接下来小编将结合目前市面上的指标,详细为大家讲解其利天下有限公司推出的无刷吊扇驱动方案。▲其利天下无刷吊扇驱动方案一

    其利天下技术
    05-10 16:29
    1.1k

    电源入口处防反接电路-汽车电子硬件电路设计

    一、为什么要设计防反接电路电源入口处接线及线束制作一般人为操作,有正极和负极接反的可能性,可能会损坏电源和负载电路;汽车电子产品电性能测试标准ISO16750-2的4.7节包含了电压极性反接测试,汽车电子产品须通过该项测试。二、防反接电路设计1.基础版:二极管串联二极管是最简单的防反接电路,因为电源有电源路径(即正极)和返回路径(即负极,GND),那么用二极

    张飞实战电子官方
    05-09 19:34
    894

    半导体芯片需要做哪些测试

    首先我们需要了解芯片制造环节做⼀款芯片最基本的环节是设计->流片->封装->测试,芯片成本构成⼀般为人力成本20%,流片40%,封装35%,测试5%(对于先进工艺,流片成本可能超过60%)。测试其实是芯片各个环节中最“便宜”的一步,在这个每家公司都喊着“CostDown”的激烈市场中,人力成本逐年攀升,晶圆厂和封装厂都在乙方市场中“叱咤风云”,唯独只有测试显

    汉通达
    05-09 10:02
    833

    解决方案 | 芯佰微赋能示波器:高速ADC、USB控制器和RS232芯片——高性能示波器的秘密武器!

    示波器解决方案总述:示波器是电子技术领域中不可或缺的精密测量仪器,通过直观的波形显示,将电信号随时间的变化转化为可视化图形,使复杂的电子现象变得清晰易懂。无论是在科研探索、工业检测还是通信领域,示波器都发挥着不可替代的作用,帮助工程师和技术人员深入剖析电信号的细节,精准定位问题所在,为创新与发展提供坚实的技术支撑。一、技术瓶颈亟待突破性能指标受限:受模拟前端

    芯佰微电子
    05-09 10:36
    1.5k

    硬件设计基础----运算放大器

    1什么是运算放大器运算放大器(运放)用于调节和放大模拟信号,运放是一个内含多级放大电路的集成器件,如图所示:左图为同相位,Vn端接地或稳定的电平,Vp端电平上升,则输出端Vo电平上升,Vp端电平下降,则输出端Vo电平下降;右图为反相位,Vp端接地或稳定的电平,Vn端电平上升,则输出端Vo电平下降,Vn端电平下降,则输出端Vo电平上升2运算放大器的性质理想运算

    张飞实战电子官方
    05-08 19:34
    612

    ElfBoard技术贴|如何调整eMMC存储分区

    ELF 2开发板基于瑞芯微RK3588高性能处理器设计,拥有四核ARM Cortex-A76与四核ARM Cortex-A55的CPU架构,主频高达2.4GHz,内置6TOPS算力的NPU,这一设计让它能够轻松驾驭多种深度学习框架,高效处理各类复杂的AI任务。

    ElfBoard
    05-08 15:01
    1.2k

    米尔基于MYD-YG2LX系统启动时间优化应用笔记

    1.概述MYD-YG2LX采用瑞萨RZ/G2L作为核心处理器,该处理器搭载双核Cortex-A55@1.2GHz+Cortex-M33@200MHz处理器,其内部集成高性能3D加速引擎Mail-G31GPU(500MHz)和视频处理单元(支持H.264硬件编解码),16位的DDR4-1600/DDR3L-1333内存控制器、千兆以太网控制器、USB、CAN、

    米尔电子
    05-08 08:07
    406

    运放技术——基本电路分析

    虚短和虚断的概念由于运放的电压放大倍数很大,一般通用型运算放大器的开环电压放大倍数都在80dB以上。而运放的输出电压是有限的,一般在10V~14V。因此运放的差模输入电压不足1mV,两输入端近似等电位,相当于“短路”。开环电压放大倍数越大,两输入端的电位越接近相等。“虚短”是指在分析运算放大器处于线性状态时,可把两输入端视为等电位,这一特性称为虚假短路,简称

    张飞实战电子官方
    05-07 19:32
    555

    飞凌嵌入式携手中移物联,谱写全国产化方案新生态

    4月22日,飞凌嵌入式“2025嵌入式及边缘AI技术论坛”在深圳成功举办。中移物联网有限公司(以下简称“中移物联”)携OneOS操作系统与飞凌嵌入式共同推出的工业级核心板亮相会议展区,操作系统产品部高级专家严镭受邀作《OneOS工业操作系统——助力国产化智能制造》主题演讲。

    飞凌嵌入式
    05-07 11:26
    1.7k

    ATA-2022B高压放大器在螺栓松动检测中的应用

    实验名称:ATA-2022B高压放大器在螺栓松动检测中的应用实验方向:超声检测实验设备:ATA-2022B高压放大器、函数信号发生器,压电陶瓷片,数据采集卡,示波器,PC等实验内容:本研究基于振动声调制的螺栓松动检测方法,其中低频泵浦波采用单频信号,而高频探测波采用扫频信号,利用泵浦波和探测波在接触面的振动声调制响应对螺栓的松动程度进行检测。通过螺栓松动检测

    Aigtek安泰电子
    05-06 18:44
    1.1k

    MOS管驱动电路——电机干扰与防护处理

    此电路分主电路(完成功能)和保护功能电路。MOS管驱动相关知识:1、跟双极性晶体管相比,一般认为使MOS管导通不需要电流,只要GS电压(Vbe类似)高于一定的值,就可以了。MOS管和晶体管向比较c,b,e—–>d(漏),g(栅),s(源)。2、NMOS的特性,Vgs大于一定的值就会导通,适合用于源极接地时的情况(低端驱动),只要栅极电压达到4V或10V就可以

    张飞实战电子官方
    05-06 19:34
    595