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

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

3天内不再提示

OpenHarmony开源代码实现碰一碰开门功能

OpenHarmony技术社区 来源:HarmonyOS技术社区 作者:HarmonyOS技术社区 2022-03-30 09:10 次阅读
本项目基于 OpenHarmony、数字管家开发宿舍全屋智能,实现碰一碰开门、碰一碰开灯、碰一碰开风扇以及烟感检测

OpenHarmony开源代码实现碰一碰开门功能

因为各项目开发流程大体相似,本文主要以碰一碰开门为例介绍如何在现有 OpenHarmony 开源代码的基础上实现我们想要的功能。

需要准备材料下:
  • 搭载 HarmonyOS 系统的手机一台,API 6+

  • 搭载 Hi3861 模组的主板,不限于 HiSpark、小熊派套件

  • 7.4V 电池、一个舵机、若干导线

最终的碰一碰开门、开灯、风扇体验如下:


OpenHarmony开源代码实现碰一碰开门功能

OpenHarmony开源代码实现碰一碰开门功能


OpenHarmony开源代码实现碰一碰开门功能

开发流程

项目主要开发流程如下图,主要包含设备端、数字管家搭建开发环境、下载源码、修改编译、下载验证四个部分。

OpenHarmony开源代码实现碰一碰开门功能

开发环境搭建主要分为设备端环境、数字管家两部分。设备端使用 DevEco Device Tools 最新版本,在 ubuntu 平台开发,在本项目中使用该工具编辑源码、下载二进制文件;数字管家使用 DevEco Studio Beta3.1 及以上版本,在 windows 平台开发。

①搭建设备端开发

DevEco Device Tools搭建如下:

第一步,在 Ubuntu20.04 系统搭建设备端开发环境,支持源码编辑、编译、下载一站式开发。

在 Ubuntu 系统搭建 DevEco Device Tools,官网已经有详细的搭建流程,参考开发环境准备:

https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-env-prepare-0000001193328250

第二步,安装编译工具链,Hi3861V100 开发板 Ubuntu 环境工具链下载链接 gn、ninja、gcc_riscv32。

OpenHarmony开源代码实现碰一碰开门功能

其余参考工具链管理:

https://device.harmonyos.com/cn/docs/documentation/guide/tools_management-0000001141455367

添加工具后如下图:

OpenHarmony开源代码实现碰一碰开门功能

Ubuntu 环境编译工具准备:

#1.基础依赖
sudoapt-getinstall-ybuild-essentialgccg++makezlib*libffi-dev
#scons
python3-mpipinstallscons
#查看版本,3.0.4以上
scons-v
#2.安装python模块
sudopip3installsetuptoolskconfiglibpycryptodomeecdsasix--upgrade--ignore-installedsix
#3.添加gcc_riscv32(WLAN模组类编译工具链)在安装DevEcoDeviceTools时已经下载
#解压到根目录
tar-xvfgcc_riscv32-linux-7.3.0.tar.gz-C~
#添加环境变量
vim~/.bashrc
#最后一行加入:
exportPATH=~/gcc_riscv32/bin:$PATH
#确认安装是否正常,有返回版本号即可。
riscv32-unknown-elf-gcc-v

设备端源码下载如下:

第一步,码云工具安装。

cd~
curlhttps://gitee.com/oschina/repo/raw/fork_flow/repo-py3>/usr/local/bin/repo
chmoda+x/usr/local/bin/repo
pip3install-ihttps://pypi.tuna.tsinghua.edu.cn/simplerequests

第二步,获取源码。openharmony1.0.1 版本。

mkdir~/OpenHarmony1.01
cd~/OpenHarmony1.01
repoinit-ugit@gitee.com:openharmony/manifest.git-bOpenHarmony_1.0.1_release--no-repo-verify
reposync-c
repoforall-c'gitlfspull'

获取相关产品解决方案,并复制到源码中,具体操作如下:

//下载产品解决方案到ubuntu,解压在非中文路径下即可。下载链接为:
https://gitee.com/openharmony-sig/knowledge_demo_smart_home
//拷贝解决方案
cp-rfa~/knowledge_demo_smart_home/dev/device/bearpi~/OpenHarmony1.01/device/
cp-rfa~/knowledge_demo_smart_home/dev/team_x~/OpenHarmony1.01/vendor/
cp-rfa~/knowledge_demo_smart_home/dev/third_party/iot_link~/OpenHarmony1.01/third_party/

第三步(可选,HiSpark 套件需要)

//1.修改usr_config.mk文件
路径:device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk
使能如下配置项
CONFIG_I2C_SUPPORT=y
CONFIG_PWM_SUPPORT=y
//2.修改wifiservice文件夹
路径:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_hotspot.c
EnableHotspot函数中屏蔽如下字段
139//if(SetHotspotIpConfig()!=WIFI_SUCCESS){
140//returnERROR_WIFI_UNKNOWN;
141//}
//3.DispatchConnectEvent函数下屏蔽StaSetWifiNetConfig相关代码行
路径:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.c
239//StaSetWifiNetConfig(HI_WIFI_EVT_CONNECTED);
260//StaSetWifiNetConfig(HI_WIFI_EVT_DISCONNECTED);

第四步,安装 ohos-build 工具,需要使用 ohos-build 0.2.0 版本编译。

在 openHarmony1.0.1 源码根目录下,执行:

pip3installbuild/lite
//添加环境变量
vim~/.bashrc
exportPATH=~/.local/bin:$PATH
source~/.bashrc
然后执行
hb-h

返回一下信息说明正确安装:

OpenHarmony开源代码实现碰一碰开门功能

第五步,打开工程,编译源码。打开 VS code 下的 DevEco Device Tools,导入 1.0.1 工程选择对应的开发板即可。

打开终端,cd 到源码路径,执行 hb set,选择 smart_lamp,然后执行 hb build 编译。

OpenHarmony开源代码实现碰一碰开门功能

在 ~/openharmony1.01/out/bearpi_hm_nano/smart_lamp 下生成 Hi3861_wifiiot_app_allinone.bin 说明一切操作正常。

如果遇到 uninstall clang、not found gn、ninja 等问题,需要配置环境变量,还要检测 ohos-build 是不是 0.2.0 版本。

具体可以参考个人总结的如下措施:

OpenHarmony开源代码实现碰一碰开门功能

第六步,烧录二进制文件。连接开发板到 usb,在 devco Device tools 点击配置工程,设置串口号,具体如下图:

OpenHarmony开源代码实现碰一碰开门功能

然后将第五步生成的 Hi3861_wifiiot_app_allinone.bin 拷贝到 ~/openharmony1.01/out/hispark_pegasus/wifiiot_hispark_pegasus 下(因为工具默认下载该路径下的 bin 文件)。

点击 Project Task 下的 upload,按下板子上的复位即可烧录。

OpenHarmony开源代码实现碰一碰开门功能

设备端修改编译:上节中只是把开源代码布置到我们的笔记本中,要实现开门需要添加自己的业务代码。

例如门锁需要使用到舵机,我在 smart_lamp 解决方案的基础上进行修改。

具体操作如下:

第一步,添加舵机器控制

打开操作 GPIO 的如下文件:

vendor/team_x/smart_lamp/demo_smartlamp/E53_SC1/E53_SC1.c
添加如下函数:
/*@briefServocontrol*
@paramangleinputvalue:0-200*
*/
voidMy_servo(intangle)
{
intj=0;
intk=20000/200;//实际应该是20000/180
angle=k*angle;
for(j=0;j<5;j++)
{
GpioSetOutputVal(servoID,1);
hi_udelay(angle);//anglems
GpioSetOutputVal(servoID,0);
hi_udelay(20000-angle);//
}//20ms控制舵机
}

第二步,添加初始化 GPIO 10 的语句

#defineSERVO_1_GPIO10
intE53SC1_InitMainLed(void)
{
IoTGpioInit(CN_MAIN_LED_GPIO);
IoTGpioSetFunc(CN_MAIN_LED_GPIO,CN_MAIN_LED_GPIO_FUNC);
IoTGpioSetDir(CN_MAIN_LED_GPIO,IOT_GPIO_DIR_OUT);
IoTPwmInit(CN_MAIN_LED_PWDOUT);

IoTGpioInit(SERVO_1_GPIO);
IoTGpioSetFunc(SERVO_1_GPIO,IOT_GPIO_FUNC_GPIO_10_GPIO);
IoTGpioSetDir(SERVO_1_GPIO,IOT_GPIO_DIR_OUT);
return0;
}

第三步,添加业务代码

intE53SC1_SetMainLed(intstatus,intdutyCycle)
{
intret=0;
if(status==CN_BOARD_SWITCH_ON){
ret=IoTPwmStart(CN_MAIN_LED_PWDOUT,dutyCycle,CN_MAIN_LED_FRE);
My_servo(1000);//开门
}else{
ret=IoTPwmStop(CN_MAIN_LED_PWDOUT);
My_servo(10000);//上锁
}
RaiseLog(LOG_LEVEL_INFO,"status=%d,dutyCycle=%d,ret=%d",status,dutyCycle,ret);
return0;
}

第四步,编译、下载,参考上节第五步、第六步,直接编译即可无需再次导入工程。

因为我使用的是 ubuntu 物理机器,为实现一站式开发特地安装 DevEco Device tools,OpenHarmony2.0、3.0 版本完全可以脱离 hb 工具编译。

烧录完成后,按下板子复位键,手机可以发现模组发出的 Wifi 信号 teamX-Lamp01。

②数字管家安装

DevEco Studio 安装如下:

第一步,DevEco Studio下载安装,直接安装即可,安装完成后要配置 Windows 环境变量。

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_install-0000001053582415

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/environment_config-0000001052902427

第二步,打开 DevEco Studio 设置下的 SDK Manger,安装 SDK(API6) 红框中的都需要下载。

值得注意的是第一步安装 Studio 时会下载 OpenHarmony SDK,第二步的 SDK 不一样,不能在同一个路径下,否则会被替换掉原有的。

OpenHarmony开源代码实现碰一碰开门功能

数字管家 APP 源码获取如下:

数字管家在 windows 平台编译安装到手机上,下载链接为:

https://gitee.com/openharmony-sig/knowledge_demo_smart_home

下载后解压在非中文路径下即可。

OpenHarmony开源代码实现碰一碰开门功能

使用 DevEco Studio 打开数字管家,路径如下:

OpenHarmony开源代码实现碰一碰开门功能

OpenHarmony开源代码实现碰一碰开门功能

数字管家 APP 安装如下:

第一步,点击右上角个人头像,登录。

OpenHarmony开源代码实现碰一碰开门功能

第二步,进入 AGC 平台 AGC(AppGallery Connect)

地址:

https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/

OpenHarmony开源代码实现碰一碰开门功能

第三步,在 AGC 平台创建项目,然后创建应用。

OpenHarmony开源代码实现碰一碰开门功能

OpenHarmony开源代码实现碰一碰开门功能

OpenHarmony开源代码实现碰一碰开门功能

得到如图配置:

OpenHarmony开源代码实现碰一碰开门功能

第四步,回到上一节 DevEco Studio 打开的工程,修改三个地方,具体路径如下:

./entry/src/config.json
./netconfig/src/main/config.json
./netconfig/src/main/js/default/pages/index/index.js

OpenHarmony开源代码实现碰一碰开门功能

OpenHarmony开源代码实现碰一碰开门功能

OpenHarmony开源代码实现碰一碰开门功能

第五步,自动签名。

首先把自己的手机连接到电脑上,打开开发人员选项→开启 USB 调试→同意调试。

然后打开 DevEco Studio 的 file–Projet Structure–Project–Signing Configs–automatically generating singing。

如下图:

OpenHarmony开源代码实现碰一碰开门功能

第六步,编译下载。

点开 entry,进入 debug configuration,在 entry 下勾选 deploy multi haps packages,确认后退出。因为数字管家包含 entry、netconfig 两个 module,要同时安装。

OpenHarmony开源代码实现碰一碰开门功能

OpenHarmony开源代码实现碰一碰开门功能

第七步,安装数字管家 APP。

点击运行,稍等片刻手机上即可出现数字管家 APP,输入手机号,登录即可。

如果遇到问题,可以查看该链接:DevEco Studio 常见错误

https://developer.huawei.com/consumer/cn/forum/topic/0202519812104750498?fid=26

③配置 NFC 标签

申请 product ID:将搭载鸿蒙系统的手机,登录你的华为账号,并在华为应用市场中下载安装应用应用调测助手。

打开选择 NFC,申请即可。

OpenHarmony开源代码实现碰一碰开门功能

注册服务:第一步,登陆华为开发者联盟:

https://developer.huawei.com/consumer/cn/

点击管理中心,创建原子化服务:

OpenHarmony开源代码实现碰一碰开门功能

OpenHarmony开源代码实现碰一碰开门功能

第二步,按照提示填写即可,在标签配置页面,填写在应用调测助手申请的 Product ID 型号 00。

OpenHarmony开源代码实现碰一碰开门功能

在 FA 配置页面,一定要查看第 2.3 节第四步自己写的包名,模块名就是 entry,添加设备就是 com.example.distschedule.AddDeviceAbility:

OpenHarmony开源代码实现碰一碰开门功能

第三步,创建测试,填写华为账号对应的手机号即可。

OpenHarmony开源代码实现碰一碰开门功能

写入标签:打开应用调测助手,选择之前申请的 ID,在自定义框填入如下数据:

1246128c7b60ad1ed0286680f19206Lamp01308123456784011512teamX-Lamp01

OpenHarmony开源代码实现碰一碰开门功能

更多设备 NFC 标签:

https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/dev/docs/NFC_label_definition/more_nfc_netconfig_info.md

④具体实操

门锁:开门需要一个简单的装置,之前有设计,参考 hi3861 web 端开门。

https://ost.51cto.com/posts/9822

OpenHarmony开源代码实现碰一碰开门功能

电路简单,将 7.4v 电源经过降压稳压后分别给模组、舵机供电

OpenHarmony开源代码实现碰一碰开门功能

手机连上 wifi,打开 NFC 开关,碰一下标签即可唤起原子化界面(不能使用校园网,会导致设备无法连接)测试效果如下图:

OpenHarmony开源代码实现碰一碰开门功能


OpenHarmony开源代码实现碰一碰开门功能

小风扇:hb set 时需要编译 smart_fan,同样的下载源码后,写入 NFC 标签。

1246150601d88056b027dd2ca47205Fan01308123456784011511teamX-Fan01

手上的风扇的驱动电路如下图,PWM 控制风速:

OpenHarmony开源代码实现碰一碰开门功能

台灯:需要一个电磁继电器、5V 充电头,可以同时为模组和台灯供电(并联)。

在台灯源码中初始化 GPIO 9 为输出,将继电器的信号端与 GPIO 9 相连即可。开灯时,接通继电器的 NC-COM 端,断开 NO-COM。

OpenHarmony开源代码实现碰一碰开门功能

OpenHarmony开源代码实现碰一碰开门功能  



结语

去年立下的 Flag,NFC 开门已经实现。不过以上案例实质上还使用现有的解决方案、数字管家的服务器实现,甚至连开门的操作 UI 都是台灯的,虽然这个可以在数字管家修改图标,但本质还是没有变化。

教程目的在于记录数字管家碰一碰的开发入门,为后期再添加自己的解决方案、服务器作为参考。

原文标题:基于OpenHarmony开发宿舍全屋智能

文章出处:【微信公众号:HarmonyOS技术社区】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 智能
    +关注

    关注

    8

    文章

    1704

    浏览量

    117446
  • 检测
    +关注

    关注

    5

    文章

    4450

    浏览量

    91405
  • OpenHarmony
    +关注

    关注

    25

    文章

    3682

    浏览量

    16183

原文标题:基于OpenHarmony开发宿舍全屋智能

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    小熊派&鸿蒙实现一碰联网+远程控制的智能台灯

    小熊派BearPi-HM_Nano开发板实现一碰联网及远程控制的智能台灯教程正在编写中.....收藏该贴不迷路,教程链接将发在评论区,敬请期待!!!
    发表于 05-26 19:19

    一碰”版本的蓝牙键盘,来啦

    摘要:基于Neptune开发板的键盘蓝牙模块DIY指南0.3版本,实现一碰”连接、支持Linux下HUAWEI DevEco Device Tool编译烧录1.引入手机敲字回复,总因为大小写切换
    发表于 07-28 18:04

    HarmonyOS原子化服务扫一碰完整体验

    HarmonyOS原子化服务扫扫,一碰完整体验。前提,已经上架的原子化服务与服务卡片并申请鸿蒙码,进行了NFC的配置和设置;用已经是HarmonyOS设备服务中心扫码工具扫扫拉起
    发表于 01-14 14:55

    【视频】解决方案第5期:一碰(NFC)介绍

    本期主要对HarmonyOS Connect一碰(NFC)功能进行技术解读,重点介绍极简交互方式中NFC一碰关键特性、体验,NFC标签规
    发表于 03-09 14:43

    基于OpenHarmony和数字管家设计的全屋智能门锁(开发流程+实操)

    基于OpenHarmony、数字管家开发宿舍全屋智能,实现一碰开门
    发表于 03-24 09:31

    玩转OpenHarmony智能家居:如何实现树莓派“一碰”设备控制

    装TCP通信相关的接口函数。五、总结本文介绍了如何使用NFC实现OpenHarmony一碰”设备控制。首先,需要基于树莓派PN532模块驱动开发NFC智能感知的应用,
    发表于 12-27 11:34

    hispark 3861智能家居套件可以实现一碰拉起原子化服务吗

    中实验手册显示可以通过一碰拉取原子化服务 HCIA-HarmonyOS Device Developer V2.0 实验手册-HiSpark.pdf 这个有点存疑,往nfc模块中一碰
    发表于 06-05 17:38

    一碰”就能支付!华为联合银联推出黑科技

    日前,华为终端宣布,Huawei Pay联合银联推出了“一碰”支付,只要将华为手机靠近NFC标签,输入金额,就能完成支付。
    的头像 发表于 07-04 09:08 5636次阅读

    智慧家电不会用?Leader“一碰”即刻开启智慧生活

    家,不知道怎么用。以海尔智家Leader为例,TA向用户提供了“一碰”智慧方案,通过NFC贴、手机、家电间的互联互通,开启智慧生活。但到底该怎么用呢? 9月24日,Leader“一碰
    发表于 09-24 22:14 595次阅读

    不会用智慧功能?Leader洗衣机只需“一碰”“拍拍”!

    Leader洗衣机智慧功能很便捷,然而也有部分用户反应,智慧功能不太会用。 9月24日,Leader发布了则《“”着了,不见得都是坏事
    发表于 09-30 10:37 865次阅读
    不会用智慧<b class='flag-5'>功能</b>?Leader洗衣机只需“<b class='flag-5'>碰</b><b class='flag-5'>一碰</b>”“拍<b class='flag-5'>一</b>拍”!

    HarmonyOS一碰基本功能如何实现

    一碰简单来说就是,使用 NFC 拉起配网 FA,入网之后,使用控制 FA 进行设备控制。
    的头像 发表于 01-04 14:58 3890次阅读

    如何在OpenHarmony开源代码基础上实现数字管家开发宿舍全屋智能

    基于OpenAtom OpenHarmony(以下简称“OpenHarmony”)、数字管家开发宿舍全屋智能,实现一碰
    的头像 发表于 08-26 09:55 1786次阅读

    鸿蒙3.0上配置NFC一碰

    最近更新了 HarmonyOS 3.0 系统,按照过去的方法配置 NFC 一碰方法配置应用,发现出现了些问题,在些摸索测试中总结了
    的头像 发表于 12-26 10:02 3130次阅读

    玩转OpenHarmony智能家居:如何实现树莓派“一碰”设备控制

    开源基金会观点 、简介 “一碰”设备控制,依托NFC短距通信协议,通过一碰的交互方式,将O
    的头像 发表于 12-26 23:05 1029次阅读

    【玩转OH】如何实现树莓派“一碰”设备控制

    OpenHarmony(简称“OpenHarmony”)标准系统设备和全场景设备连接起来,解决了应用与设备之间接续慢、传输难的问题,实现一碰拉起应用,为用户带来无缝切换的流畅体验。
    的头像 发表于 01-11 02:05 845次阅读