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

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

3天内不再提示

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

OpenAtom OpenHarmony 来源:OpenAtom OpenHarmony 作者:OpenAtom OpenHarmony 2022-08-26 09:55 次阅读

项目说明

基于OpenAtom OpenHarmony(以下简称“OpenHarmony”)、数字管家开发宿舍全屋智能,实现碰一碰开门、碰一碰开灯、碰一碰开风扇以及烟感检测。因为各项目开发流程大体相似,本文主要以碰一碰开门为例介绍如何在现有OpenHarmony开源代码的基础上实现我们想要的功能。

需要提前准备的设备:搭载HarmonyOS系统的手机一台,API 6+;搭载Hi3861模组的主板,不限于HiSpark、小熊派套件;7.4V电池、一个舵机、若干导线。最终的碰一碰开门、开灯、风扇效果如下:

cbbe8de4-24c7-11ed-ba43-dac502259ad0.gifcbe696cc-24c7-11ed-ba43-dac502259ad0.gifcc156d76-24c7-11ed-ba43-dac502259ad0.gif

智能台灯与风扇(包括门锁)、数字管家应用、云平台三部分数据流如下图所示。数字管家应用下发风速、亮度调节等设备控制指令到云平台,云平台发送到指定设备,同时风扇、台灯等设备上报当前状态到云平台,云平台再发送至数字管家应用,实现用户可视化操作,实时控制智能设备。

cc56d676-24c7-11ed-ba43-dac502259ad0.jpg

开发流程

项目主要包含:①搭建设备端开发环境、②数字管家安装、③配置NFC标签、④实操验证,共四个部分。开发过程中各关键环节如下图,整体思路是准备软硬件环境,编写业务代码,烧录测试,若开发时遇到问题可参考该图进行排查。

cc7c34ca-24c7-11ed-ba43-dac502259ad0.jpg

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

搭建设备端开发环境

DevEco Device Tools搭建

第一步,在Ubuntu20.04系统搭建设备端开发环境,支持源码编辑、编译、下载一站式开发。在Ubuntu系统搭建DevEco Device Tools,详细搭建流程参考开发环境准备(https://docs.openharmony.cn/pages/v3.1/zh-cn/device-dev/quick-start/quickstart-ide-lite-env-setup-win-ubuntu.md/)。

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

cc8ea0ec-24c7-11ed-ba43-dac502259ad0.png

其余参考工具链管理。添加工具后如下图:

cca00f4e-24c7-11ed-ba43-dac502259ad0.png

Ubuntu环境编译工具准备

// A.基础依赖 sudo apt-get install -y build-essential gcc g++ make zlib* libffi-dev // -安装 scons python3 -m pip install scons // -查看版本,3.0.4以上 scons -v // B.安装python模块 sudo pip3 install setuptools kconfiglib pycryptodome ecdsa six --upgrade --ignore-installed six// C.添加gcc_riscv32(WLAN模组类编译工具链) 在安装DevEco Device Tools时已经下载 // -解压到根目录 tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~ // -添加环境变量 vim ~/.bashrc // -最后一行加入:export PATH=~/gcc_riscv32/bin:$PATH // -确认安装是否正常,有返回版本号即可。riscv32-unknown-elf-gcc -v

设备端源码下载

第一步,码云工具安装

cd ~curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 》 /usr/local/bin/repochmod a+x /usr/local/bin/repopip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

第二步,获取源码。OpenHarmony 1.0.1版本

mkdir ~/OpenHarmony1.01cd ~/OpenHarmony1.01repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verifyrepo sync -crepo forall -c ‘git lfs pull’

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

//下载产品解决方案到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=yCONFIG_PWM_SUPPORT=y//2.修改wifiservice 文件夹 路径:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_hotspot.cEnableHotspot函数中屏蔽如下字段139行 //if (SetHotspotIpConfig() != WIFI_SUCCESS) {140行 // return ERROR_WIFI_UNKNOWN;141行 //}//3.DispatchConnectEvent函数下 屏蔽StaSetWifiNetConfig相关代码行路径:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.c239行 //StaSetWifiNetConfig(HI_WIFI_EVT_CONNECTED);260行 //StaSetWifiNetConfig(HI_WIFI_EVT_DISCONNECTED);

第四步,安装ohos-build工具

需要使用ohos-build 0.2.0 版本编译。在OpenHarmony 1.0.1源码根目录下,执行:

pip3 install build/lite// 添加环境变量vim ~/.bashrcexport PATH=~/.local/bin:$PATHsource ~/.bashrc// 然后执行hb -h

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

ccb1d44a-24c7-11ed-ba43-dac502259ad0.png

第五步,打开工程

打开Visual Studio Code下的DevEco Device Tools,导入1.0.1工程选择对应的开发板即可。打开终端,cd到源码路径,执行hb set,选择smart_lamp,然后执行hb build 编译。

ccc1d246-24c7-11ed-ba43-dac502259ad0.png

在~/openharmony1.01/out/bearpi_hm_nano/smart_lamp下生成Hi3861_wifiiot_app_allinone.bin说明一切操作正常。如果遇到uninstall clang、not found gn、ninja等问题,需要配置环境变量,还要检测ohos-build是不是0.2.0版本。具体可以参考个人总结的如下措施:

ccef253e-24c7-11ed-ba43-dac502259ad0.png

第六步,烧录二进制文件连接开发板到电脑USB,在DevEco Device Tools点击配置工程,设置串口号,具体如下图:

cd07e556-24c7-11ed-ba43-dac502259ad0.png

然后将第五步生成的Hi3861_wifiiot_app_allinone.bin拷贝到~/openharmony1.01/out/hispark_pegasus/wifiiot_hispark_pegasus下【因为工具默认下载该路径下的bin文件】 点击Project Task下的upload,按下板子上的复位即可烧录。

cd427a7c-24c7-11ed-ba43-dac502259ad0.png

设备端编译

1.3节中只是把开源代码布置到我们的笔记本中,要实现开门需要添加自己的业务代码。例如门锁需要使用到舵机,我在smart_lamp解决方案的基础上进行修改。具体操作如下:

第一步,添加舵机控制

打开操作GPIO的vendor/team_x/smart_lamp/demo_smartlamp/E53_SC1/E53_SC1.c文件添加如下函数:

/* @brief Servo control * @param angle input value: 0-200 * */void My_servo(int angle){ int j=0; int k=20000/200; //实际应该是20000/180 angle = k*angle; for (j=0;j《5;j++) { GpioSetOutputVal(servoID, 1); hi_udelay(angle); //angle ms GpioSetOutputVal(servoID, 0); hi_udelay(20000-angle);// }//20ms 控制舵机 }

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

#define SERVO_1_GPIO 10int E53SC1_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); return 0;}

第三步,添加业务代码

int E53SC1_SetMainLed(int status, int dutyCycle){ int ret = 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); return 0;}

第四步,编译、下载

参考1.3节第五步、第六步,直接编译即可无需再次导入工程。因为我使用的是ubuntu物理机器,为实现一站式开发特地安装DevEco Device tools,OpenHarmony 2.0、3.0版本完全可以脱离hb工具编译。烧录完成后,按下板子复位键,手机可以发现模组发出的WIFI信号teamX-Lamp01。

数字管家安装

DevEco Studio 安装

第一步,DevEco Studio下载安装,安装完成后要配置Windows环境变量(参考:https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/quick-start/start-overview.md/)。第二步,打开DevEco Studio设置下的SDK Manager,安装SDK(API6)红框中的都需要下载。值得注意的是第一步安装Studio时会下载OpenHarmony SDK,第二步的SDK不一样,不能在同一个路径下,否则会被替换掉原有的。

cd550520-24c7-11ed-ba43-dac502259ad0.png

数字管家APP源码获取

数字管家在windows平台编译安装到手机上,下载链接为:https://gitee.com/openharmony-sig/knowledge_demo_smart_home下载后解压在非中文路径下即可。

cd6bc9c2-24c7-11ed-ba43-dac502259ad0.png

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

cd7f669e-24c7-11ed-ba43-dac502259ad0.png

cd907844-24c7-11ed-ba43-dac502259ad0.png

数字管家APP安装

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

cda644b2-24c7-11ed-ba43-dac502259ad0.png

第二步,进入AGC平台AGC(AppGallery Connect) 地址:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/

cdb9fb56-24c7-11ed-ba43-dac502259ad0.png

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

cdd05018-24c7-11ed-ba43-dac502259ad0.png

cdf7ed62-24c7-11ed-ba43-dac502259ad0.png

ce0b3cc8-24c7-11ed-ba43-dac502259ad0.png

得到如图配置:

ce196352-24c7-11ed-ba43-dac502259ad0.png

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

。/entry/src/config.json

。/netconfig/src/main/config.json

。/netconfig/src/main/js/default/pages/index/index.js

ce2ed958-24c7-11ed-ba43-dac502259ad0.png

ce43cf34-24c7-11ed-ba43-dac502259ad0.png

ce508328-24c7-11ed-ba43-dac502259ad0.png

第五步,自动签名。

首先把自己的手机连接到电脑上,打开开发人员选项–》 开启USB调试–》同意调试 然后打开DevEco Studio的file–Project Structure–Project–Signing Configs–automatically generate signing 如下图:

ce5deb4e-24c7-11ed-ba43-dac502259ad0.png

第六步,编译下载。

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

ce77e04e-24c7-11ed-ba43-dac502259ad0.png

ce88bcf2-24c7-11ed-ba43-dac502259ad0.png

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

配置NFC标签

申请product ID

将搭载HarmonyOS的手机,登录你的华为账号,并在华为应用市场中下载安装应用调测助手打开选择NFC,申请即可。

ce9bd54e-24c7-11ed-ba43-dac502259ad0.png

注册服务

第一步,登陆华为开发者联盟https://developer.huawei.com/consumer/cn/,点击管理中心,创建原子化服务。

ceb3951c-24c7-11ed-ba43-dac502259ad0.png

第二步,按照提示填写即可,在标签配置页面,填写在应用调测助手申请的Product ID 型号00。在FA配置页面,一定要查看第2.3节第四步自己写的包名,模块名就是entry,添加设备就是com.example.distschedule.AddDeviceAbility:

cedc0b1e-24c7-11ed-ba43-dac502259ad0.png

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

ceed3d12-24c7-11ed-ba43-dac502259ad0.png

写入标签

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

1246128c7b60ad1ed0286680f19206Lamp01308123456784011512teamX-Lamp01

cf03e6f2-24c7-11ed-ba43-dac502259ad0.jpg

更多设备NFC标签

实操验证

门锁

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

cf187626-24c7-11ed-ba43-dac502259ad0.jpg

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

cf286f0e-24c7-11ed-ba43-dac502259ad0.png

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

cf39b61a-24c7-11ed-ba43-dac502259ad0.gif

小风扇

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

1246150601d88056b027dd2ca47205Fan01308123456784011511teamX-Fan01

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

cfda5c6e-24c7-11ed-ba43-dac502259ad0.png

台灯

首先需要一个电磁继电器、5V充电头,可以同时为模组和台灯供电(并联)。在台灯源码中初始化GPIO 9为输出,将继电器的信号端与GPIO 9 相连即可。开灯时,接通继电器的NC-COM端,断开NO-COM。

cfecc57a-24c7-11ed-ba43-dac502259ad0.png

cffd758c-24c7-11ed-ba43-dac502259ad0.png

结语

以上案例实质上还是在使用现有的解决方案、数字管家的服务器实现,甚至连开门的操作UI都是台灯的,虽然这个可以在数字管家修改图标,但本质还是没有变化,本教程目的在于记录数字管家碰一碰的开发入门,为后期再添加自己的解决方案、服务器作为参考。

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

    关注

    0

    文章

    27

    浏览量

    2866
  • OpenHarmony
    +关注

    关注

    23

    文章

    3284

    浏览量

    15159
  • 全屋智能
    +关注

    关注

    2

    文章

    127

    浏览量

    2165

原文标题:宿舍全屋智能开发指南

文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    开源OpenHarmony 是每个人的 OpenHarmony

    `开放原子开源基金会于 2020 年 9 月接受华为捐赠的智能终端操作系统基础能力相关代码,随后进行开源,并根据命名规则为该开源项目命名为
    发表于 06-06 19:54

    一文带你读懂OpenHarmony数字管家

    、如何贡献到数字管家体验完数字管家,你是否也想为数字管家添砖加瓦呢?
    发表于 11-05 16:11

    OpenHarmony开发样例】基于 BearPi-HM Nano 套件开发智能台灯

    自动调节相应时间段台灯的亮度;通过日程管家还可以实现台灯和其他的智能设备联动。1.交互流程如上图所示,智能台灯整体方案原理图可以大致分成:智能
    发表于 03-04 15:01

    OpenHarmony开发样例】智能家居相关demo样例汇总

    设备联动。9、基于志XR806开发开发智能体重秤本demo基于OpenHarmony3.1Beta版本
    发表于 03-04 16:32

    OpenHarmony开发样例】基于BearPi-HM Nano套件开发智能窗帘

    日程管家还可以实现窗帘和其他的智能设备联动。1.交互流程如上图所示,智能窗帘整体方案原理图可以大致分成:智能窗帘设备、
    发表于 03-07 10:48

    OpenHarmony开发样例】基于BearPi-HM Nano套件开发智能烟感系统

    ,可以添加-f 选项详细的代码编译及固件烧录步骤,请参考 编译和烧录指南6、设备配网在设备电前需准备好安装了数字管家应用的HarmonyOS手机,详情见
    发表于 03-08 10:43

    OpenHarmony开发样例】基于志XR806开发开发智能门锁

    一. 简介本demo是基于Openharmony 3.1 Beta本版开发,不仅可以接收数字管家应用下发的指令来控制门锁开启,而且还可以通过数字
    发表于 03-11 10:29

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

    基于OpenHarmony数字管家开发宿舍
    发表于 03-24 09:31

    一文带你读懂数字管家

    ,共同组建不同的场景,打破硬件设备之间的壁垒,成为你工作生活的好帮手;开源的运作模式让所有志同道合的开发者参与进来,共同开发各种智能设备,完善各种场景,让设备品类越来越丰富。 图 1
    发表于 03-31 16:58

    【课程汇总】OpenHarmony全场景Demo数字管家系列课(附链接)

    进入梦乡;出门远行,也不担心家里的“多肉”植物和宠物无人照顾……这样的生活体验是不是很棒?OpenHarmony数字管家”,或许可以实现你的愿望。
    发表于 04-02 10:15

    宿舍智能开发指南

    项目说明基于OpenAtom OpenHarmony(以下简称“OpenHarmony”)、数字管家开发
    发表于 09-01 14:28

    基于OpenHarmony数字管家应用开发样例

    :DevEco Studio 3.0 Beta2注:HarmonyOS是华为基于开源项目OpenHarmony开发的面向多种全场景智能设备的商用版本。快速上手准备硬件环境搭载Harmo
    发表于 09-14 14:07

    openharmony是什么 OpenHarmony开源代码在哪下载

    OpenHarmony 是由基金会孵化及运营的开源项目,由基金会的 OpenHarmony 项目群工作委员会负责运作,遵循 Apache 2.0 等开源协议,目标是面向全场景、全连接、
    的头像 发表于 06-24 17:16 1967次阅读

    OpenHarmony Dev-Board-SIG专场:BearPi-HM Nano开发板提供一套数字管家开发示例代码

    OpenHarmony Dev-Board-SIG专场:BearPi-HM Nano开发板提供一套数字管家开发示例
    的头像 发表于 12-28 14:31 1391次阅读
    <b class='flag-5'>OpenHarmony</b> Dev-Board-SIG专场:BearPi-HM Nano<b class='flag-5'>开发</b>板提供一套<b class='flag-5'>数字</b><b class='flag-5'>管家</b><b class='flag-5'>开发</b>示例<b class='flag-5'>代码</b>

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

    本项目基于 OpenHarmony数字管家开发宿舍全屋智能
    的头像 发表于 03-30 09:10 2591次阅读