当前位置: 首页 > 科技观察

宿舍全屋智能开发指南

时间:2023-03-21 18:05:28 科技观察

更多内容请访问:与华为官方共建的鸿蒙科技社区https://ost.51cto.com一、项目说明基于OpenHarmony以及数字管家,开发宿舍全屋智能化,实现一键开门、一键开灯、一键开风扇、一键烟雾检测。由于各个项目的开发过程大致相似,本文主要以OpenHarmony为例,介绍如何基于已有的OpenHarmony开源代码实现我们想要的功能。准备材料:鸿蒙系统手机一部,API6+;搭载Hi3861模块的主板,不限于HiSpark、BearPi套件;7.4V电池,一个舵机,几根电线。最后一击开门、开灯、风扇体验如下/或视频链接:开发流程项目主要开发流程如下图所示,主要包括四个部分:设备端,数字管家搭建开发环境,下载源码,修改编译,下载验证。开发环境搭建主要分为设备端环境和数字管家两部分。设备端使用最新版的DevEcoDeviceTools,在ubuntu平台上开发。在这个项目中,这个工具用于编辑源代码和下载二进制文件;数字管家使用DevEcoStudioBeta3.1及以上版本,windows平台开发。二、搭建设备端开发1、搭建DevEcoDeviceTools第一步是在Ubuntu20.04系统中搭建设备端开发环境,支持源码编辑、编译、下载,一站式开发。在Ubuntu系统上搭建DevEcoDeviceTools,官网有详细的搭建过程,参考开发环境准备。第二步安装编译工具链,Hi3861V100开发板Ubuntu环境工具链下载链接gn、ninja、gcc_riscv32等参考工具链管理。添加工具后如下图所示:2.Ubuntu环境编译工具准备#1。基本依赖sudoapt-getinstall-ybuild-essentialgccg++makezlib*libffi-dev#sconspython3-mpipinstallscons#查看版本,3.0.4以上scons-v#2。安装python模块sudopip3installsetuptoolskconfiglibpycryptodomeecdsa6--upgrade--ignore-installed6#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-v3,设备源码下载第一步,码云工具安装。cd~curlhttps://gitee.com/oschina/repo/raw/fork_flow/repo-py3>/usr/local/bin/repochmoda+x/usr/local/bin/repopip3install-ihttps://pypi.tuna.tsinghua.edu.cn/simplerequests第二步是获取源代码。openharmony1.0.1版本。mkdir~/OpenHarmony1.01cd~/OpenHarmony1.01repoinit-ugit@gitee.com:openharmony/manifest.git-bOpenHarmony_1.0.1_release--no-repo-verifyreposync-crepoforall-c'gitlfspull'get相关产品解决方案,并复制到源码中,具体操作如下://下载产品解决方案到ubuntu,解压到非中文路径。下载链接为:https://gitee.com/openharmony-sig/knowledge_demo_smart_home//copysolutioncp-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/第3步(可选,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//returnERROR_WIFI_UNKNOWN;141//}//3.DispatchConnectE屏蔽函数下StaSetWifiNetConfig的相关代码行路径:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.c239//StaSetWifiNetConfig(HI_WIFI_EVT_CONNECTED);第260章ohos构建工具。需要使用ohos-build0.2.0版本编译。在openHarmony1.0.1源码根目录执行:pip3installbuild/lite//添加环境变量vim~/.bashrcexportPATH=~/.local/bin:$PATHsource~/.bashrc然后执行hb-h即可返回信息正确安装:第五步,打开工程,编译源码。打开VScode下的DevEcoDeviceTools,导入1.0.1工程,选择对应的开发板。打开终端,cd到源码路径,执行hbset,选择smart_lamp,执行hbbuild编译。在~/openharmony1.01/out/bearpi_hm_nano/smart_lamp下生成Hi3861_wifiiot_app_allinone.bin,说明一切正常。如果遇到uninstallclang,notfoundgn,ninja等问题,需要配置环境变量,查看ohos-build是否为0.2.0版本。具体可以参考以下我总结的措施:第六步,烧录二进制文件。将开发板连接usb,在devco设备工具中点击配置项目,设置串口号,如下图:然后将第五步生成的Hi3861_wifiiot_app_allinone.bin复制到~/openharmony1.01/out/hispark_pegasus/wifiiot_hispark_pegasus【因为工具默认会下载该路径下的bin文件】。点击ProjectTask下的upload,在board上按reset即可烧录。4.设备端的修改和编译在第3节中,我们只是整理了笔记本中的开源代码。要开门,我们需要添加自己的业务代码。比如门锁需要用到舵机,我是基于smart_lamp方案修改的。具体操作如下:第一步添加舵机控制。打开操作GPIO的vendor/team_x/smart_lamp/demo_smartlamp/E53_SC1/E53_SC1.c文件。添加以下功能。/*@brief舵机控制*@paramangle输入值:0-200**/voidMy_servo(intangle){intj=0;诠释k=20000/200;//实际上应该是20000/180angle=k*angle;对于(j=0;j<5;j++){GpioSetOutputVal(servoID,1);hi_udelay(角度);//角度msGpioSetOutputVal(servoID,0);hi_udelay(20000-angle);//}//20ms控制舵机}第二步添加初始化GPIO10的语句#defineSERVO_1_GPIO10intE53SC1_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;如果(状态==CN_BOARD_SWITCH_ON){ret=IoTPwmStart(CN_MAIN_LED_PWDOUT,dutyCycle,CN_MAIN_LED_FRE);我的_伺服(1000);//开门}else{ret=IoTP_MAINOUT);我的_伺服(10000);//锁定}RaiseLog(LOG_LEVEL_INFO,"status=%d,dutyCycle=%d,ret=%d",status,dutyCycle,ret);return0;}第四步,编译,下载。参考第3节中的步骤5和步骤6,无需再次导入工程,直接编译即可。因为我用的是ubuntu物理机,所以特地安装了DevEcoDevicetools,进行一站式开发。OpenHarmony2.0和3.0可以不用hb工具编译。烧录完成后,按下板子复位键,手机可以搜索到模块发送的wifi信号teamX-Lamp01。三、数字管家安装1、DevEcoStudio安装第一步是下载安装DevEcoStudio,直接安装即可,安装完成后配置Windows环境变量。第二步,打开DevEcoStudio设置下的SDKManger,安装红框中需要下载的SDK(API6)。值得注意的是,第一步安装Studio时会下载OpenHarmonySDK。第二步的SDK不一样,不能在同一个路径,否则会替换原来的。2、获取数字管家APP源码,在windows平台手机上编译安装。下载链接为:https://gitee.com/openharmony-sig/knowledge_demo_smart_home下载后解压到非中文路径。使用DevEcoStudio打开数字管家,路径如下:3.数字管家APP安装第一步,点击右上角个人头像登录。第二步,进入AGC平台AGC(AppGalleryConnect)。地址:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/。第三步,在AGC平台创建项目,然后创建应用。得到如图配置:第四步,回到上一节DevEcoStudio打开的项目,修改三个地方。具体路径如下:./entry/src/config.json./netconfig/src/main/config.json。/netconfig/src/main/js/default/pages/index/index.js第五步自动签名。首先将手机连接电脑,打开开发者选项->启用USB调试->同意调试。然后打开文件--ProjetStructure--Project--SigningConfigs--DevEcoStudio自动生成歌曲,如下图:第六步,编译下载。点击入口进入调试配置,在入口下勾选deploymultihapspackages,确定后退出。因为数字管家包括entry和netconfig两个模块,需要同时安装。第七步,安装数字管家APP。点击运行,稍等片刻,手机端会出现数字管家APP,输入手机号,登录。遇到问题可以查看这个链接:DevEcoStudio常见错误。四、配置NFC标签1、申请一部产品ID为搭载鸿蒙系统的手机,登录华为账号,在华为应用市场下载安装应用调试助手。打开并选择NFC,然后应用。2、注册服务第一步,登录华为开发者联盟https://developer.huawei.com/consumer/cn/,点击管理中心,创建原子服务。第二步根据提示填写。在标签配置页面填写在应用调测助手中申请的ProductIDmodel00。在FA配置页面,一定要检查2.3小节第四步自己写的包名。模块名为entry,添加的设备为com.example.distsschedule.AddDeviceAbility:第三步创建测试,填写华为账号对应的手机号即可。3.写入标签打开应用调测助手,选择之前申请的ID,在自定义框中填写以下数据:1246128c7b60ad1ed0286680f19206Lamp01308123456784011512teamX-Lamp01更多设备NFC标签。5.实际操作门锁需要一个简单的装置来打开门。以前设计过。参考hi3861web终端开门。电路简单,7.4v电源降压稳压分别给模块和舵机供电。手机连接wifi,打开NFC开关,轻触标签唤出雾化界面(不能使用校园网,会导致设备连接不上)。测试结果如下:设置小风扇hb时,需要编译smart_fan。以同样的方式下载源码后,写入NFC标签。1246150601d88056b027dd2ca47205Fan01308123456784011511teamX-Fan01teamX-Fan01手上风扇的驱动电路如下图,PWM控制风速:台灯需要一个电磁继电器和一个5V充电头,可以给模块供电和台灯同时(并联)。在灯源代码中将GPIO9初始化为输出,将继电器的信号端连接到GPIO9。开灯时,连接继电器的NC-COM端,断开NO-COM。结语去年立的Flag,NFC开门已经实现。但是,上述案例本质上都是利用现有的方案和数字管家的服务器实现的,甚至连开门的操作UI都是台灯。虽然在数码管家里可以修改图标,但本质是不变的。本教程的目的是记录一下数字管家touch的开发介绍,以后添加自己的方案和服务器作为参考。更多信息请访问:与华为官方共建的鸿蒙技术社区https://ost.51cto.com