項(xiàng)目說(shuō)明
基于OpenAtom OpenHarmony(以下簡(jiǎn)稱(chēng)“OpenHarmony”)、數(shù)字管家開(kāi)發(fā)宿舍全屋智能,實(shí)現(xiàn)碰一碰開(kāi)門(mén)、碰一碰開(kāi)燈、碰一碰開(kāi)風(fēng)扇以及煙感檢測(cè)。因?yàn)楦黜?xiàng)目開(kāi)發(fā)流程大體相似,本文主要以碰一碰開(kāi)門(mén)為例介紹如何在現(xiàn)有OpenHarmony開(kāi)源代碼的基礎(chǔ)上實(shí)現(xiàn)我們想要的功能。
需要提前準(zhǔn)備的設(shè)備:搭載HarmonyOS系統(tǒng)的手機(jī)一臺(tái),API 6+;搭載Hi3861模組的主板,不限于HiSpark、小熊派套件;7.4V電池、一個(gè)舵機(jī)、若干導(dǎo)線。最終的碰一碰開(kāi)門(mén)、開(kāi)燈、風(fēng)扇效果如下:
智能臺(tái)燈與風(fēng)扇(包括門(mén)鎖)、數(shù)字管家應(yīng)用、云平臺(tái)三部分?jǐn)?shù)據(jù)流如下圖所示。數(shù)字管家應(yīng)用下發(fā)風(fēng)速、亮度調(diào)節(jié)等設(shè)備控制指令到云平臺(tái),云平臺(tái)發(fā)送到指定設(shè)備,同時(shí)風(fēng)扇、臺(tái)燈等設(shè)備上報(bào)當(dāng)前狀態(tài)到云平臺(tái),云平臺(tái)再發(fā)送至數(shù)字管家應(yīng)用,實(shí)現(xiàn)用戶(hù)可視化操作,實(shí)時(shí)控制智能設(shè)備。
開(kāi)發(fā)流程
項(xiàng)目主要包含:①搭建設(shè)備端開(kāi)發(fā)環(huán)境、②數(shù)字管家安裝、③配置NFC標(biāo)簽、④實(shí)操驗(yàn)證,共四個(gè)部分。開(kāi)發(fā)過(guò)程中各關(guān)鍵環(huán)節(jié)如下圖,整體思路是準(zhǔn)備軟硬件環(huán)境,編寫(xiě)業(yè)務(wù)代碼,燒錄測(cè)試,若開(kāi)發(fā)時(shí)遇到問(wèn)題可參考該圖進(jìn)行排查。
開(kāi)發(fā)環(huán)境搭建主要分為設(shè)備端環(huán)境、數(shù)字管家兩部分。設(shè)備端使用DevEco Device Tools最新版本,在ubuntu平臺(tái)開(kāi)發(fā),在本項(xiàng)目中使用該工具編輯源碼、下載二進(jìn)制文件;數(shù)字管家使用DevEco Studio Beta3.1及以上版本,在windows平臺(tái)開(kāi)發(fā)。
搭建設(shè)備端開(kāi)發(fā)環(huán)境
DevEco Device Tools搭建
第一步,在Ubuntu20.04系統(tǒng)搭建設(shè)備端開(kāi)發(fā)環(huán)境,支持源碼編輯、編譯、下載一站式開(kāi)發(fā)。在Ubuntu系統(tǒng)搭建DevEco Device Tools,詳細(xì)搭建流程參考開(kāi)發(fā)環(huán)境準(zhǔn)備(https://docs.openharmony.cn/pages/v3.1/zh-cn/device-dev/quick-start/quickstart-ide-lite-env-setup-win-ubuntu.md/)。
第二步,安裝編譯工具鏈,Hi3861V100開(kāi)發(fā)板Ubuntu環(huán)境工具鏈下載鏈接gn、ninja、gcc_riscv32。
其余參考工具鏈管理。添加工具后如下圖:
Ubuntu環(huán)境編譯工具準(zhǔn)備
// A.基礎(chǔ)依賴(lài) 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模組類(lèi)編譯工具鏈) 在安裝DevEco Device Tools時(shí)已經(jīng)下載 // -解壓到根目錄 tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~ // -添加環(huán)境變量 vim ~/.bashrc // -最后一行加入:export PATH=~/gcc_riscv32/bin:$PATH // -確認(rèn)安裝是否正常,有返回版本號(hào)即可。riscv32-unknown-elf-gcc -v
設(shè)備端源碼下載
第一步,碼云工具安裝
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’
獲取相關(guān)產(chǎn)品解決方案,并復(fù)制到源碼中,具體操作如下:
//下載產(chǎn)品解決方案到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使能如下配置項(xiàng)CONFIG_I2C_SUPPORT=yCONFIG_PWM_SUPPORT=y//2.修改wifiservice 文件夾 路徑:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_hotspot.cEnableHotspot函數(shù)中屏蔽如下字段139行 //if (SetHotspotIpConfig() != WIFI_SUCCESS) {140行 // return ERROR_WIFI_UNKNOWN;141行 //}//3.DispatchConnectEvent函數(shù)下 屏蔽StaSetWifiNetConfig相關(guān)代碼行路徑: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源碼根目錄下,執(zhí)行:
pip3 install build/lite// 添加環(huán)境變量vim ~/.bashrcexport PATH=~/.local/bin:$PATHsource ~/.bashrc// 然后執(zhí)行hb -h
返回一下信息說(shuō)明正確安裝:
第五步,打開(kāi)工程
打開(kāi)Visual Studio Code下的DevEco Device Tools,導(dǎo)入1.0.1工程選擇對(duì)應(yīng)的開(kāi)發(fā)板即可。打開(kāi)終端,cd到源碼路徑,執(zhí)行hb set,選擇smart_lamp,然后執(zhí)行hb build 編譯。
在~/openharmony1.01/out/bearpi_hm_nano/smart_lamp下生成Hi3861_wifiiot_app_allinone.bin說(shuō)明一切操作正常。如果遇到uninstall clang、not found gn、ninja等問(wèn)題,需要配置環(huán)境變量,還要檢測(cè)ohos-build是不是0.2.0版本。具體可以參考個(gè)人總結(jié)的如下措施:
第六步,燒錄二進(jìn)制文件連接開(kāi)發(fā)板到電腦USB,在DevEco Device Tools點(diǎn)擊配置工程,設(shè)置串口號(hào),具體如下圖:
然后將第五步生成的Hi3861_wifiiot_app_allinone.bin拷貝到~/openharmony1.01/out/hispark_pegasus/wifiiot_hispark_pegasus下【因?yàn)楣ぞ吣J(rèn)下載該路徑下的bin文件】 點(diǎn)擊Project Task下的upload,按下板子上的復(fù)位即可燒錄。
設(shè)備端編譯
1.3節(jié)中只是把開(kāi)源代碼布置到我們的筆記本中,要實(shí)現(xiàn)開(kāi)門(mén)需要添加自己的業(yè)務(wù)代碼。例如門(mén)鎖需要使用到舵機(jī),我在smart_lamp解決方案的基礎(chǔ)上進(jìn)行修改。具體操作如下:
第一步,添加舵機(jī)控制
打開(kāi)操作GPIO的vendor/team_x/smart_lamp/demo_smartlamp/E53_SC1/E53_SC1.c文件添加如下函數(shù):
/* @brief Servo control * @param angle input value: 0-200 * */void My_servo(int angle){ int j=0; int k=20000/200; //實(shí)際應(yīng)該是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 控制舵機(jī) }
第二步,添加初始化GPIO 10的語(yǔ)句
#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;}
第三步,添加業(yè)務(wù)代碼
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); //開(kāi)門(mén) } 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節(jié)第五步、第六步,直接編譯即可無(wú)需再次導(dǎo)入工程。因?yàn)槲沂褂玫氖莡buntu物理機(jī)器,為實(shí)現(xiàn)一站式開(kāi)發(fā)特地安裝DevEco Device tools,OpenHarmony 2.0、3.0版本完全可以脫離hb工具編譯。燒錄完成后,按下板子復(fù)位鍵,手機(jī)可以發(fā)現(xiàn)模組發(fā)出的WIFI信號(hào)teamX-Lamp01。
數(shù)字管家安裝
DevEco Studio 安裝
第一步,DevEco Studio下載安裝,安裝完成后要配置Windows環(huán)境變量(參考:https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/quick-start/start-overview.md/)。第二步,打開(kāi)DevEco Studio設(shè)置下的SDK Manager,安裝SDK(API6)紅框中的都需要下載。值得注意的是第一步安裝Studio時(shí)會(huì)下載OpenHarmony SDK,第二步的SDK不一樣,不能在同一個(gè)路徑下,否則會(huì)被替換掉原有的。
數(shù)字管家APP源碼獲取
數(shù)字管家在windows平臺(tái)編譯安裝到手機(jī)上,下載鏈接為:https://gitee.com/openharmony-sig/knowledge_demo_smart_home下載后解壓在非中文路徑下即可。
使用DevEco Studio打開(kāi)數(shù)字管家,路徑如下:
數(shù)字管家APP安裝
第一步,點(diǎn)擊右上角個(gè)人頭像,登錄
第二步,進(jìn)入AGC平臺(tái)AGC(AppGallery Connect) 地址:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/
第三步,在AGC平臺(tái)創(chuàng)建項(xiàng)目,然后創(chuàng)建應(yīng)用
得到如圖配置:
第四步,回到上一節(jié)DevEco Studio 打開(kāi)的工程,修改三個(gè)地方,具體路徑如下:
。/entry/src/config.json
。/netconfig/src/main/config.json
。/netconfig/src/main/js/default/pages/index/index.js
第五步,自動(dòng)簽名。
首先把自己的手機(jī)連接到電腦上,打開(kāi)開(kāi)發(fā)人員選項(xiàng)–》 開(kāi)啟USB調(diào)試–》同意調(diào)試 然后打開(kāi)DevEco Studio的file–Project Structure–Project–Signing Configs–automatically generate signing 如下圖:
第六步,編譯下載。
點(diǎn)開(kāi)entry,進(jìn)入debug configuration,在entry下勾選deploy multi haps packages,確認(rèn)后退出。因?yàn)閿?shù)字管家包含entry、netconfig兩個(gè)module,要同時(shí)安裝。
第七步,安裝數(shù)字管家APP 點(diǎn)擊運(yùn)行,稍等片刻手機(jī)上即可出現(xiàn)數(shù)字管家APP,輸入手機(jī)號(hào),登錄即可。
配置NFC標(biāo)簽
申請(qǐng)product ID
將搭載HarmonyOS的手機(jī),登錄你的華為賬號(hào),并在華為應(yīng)用市場(chǎng)中下載安裝應(yīng)用調(diào)測(cè)助手打開(kāi)選擇NFC,申請(qǐng)即可。
注冊(cè)服務(wù)
第一步,登陸華為開(kāi)發(fā)者聯(lián)盟https://developer.huawei.com/consumer/cn/,點(diǎn)擊管理中心,創(chuàng)建原子化服務(wù)。
第二步,按照提示填寫(xiě)即可,在標(biāo)簽配置頁(yè)面,填寫(xiě)在應(yīng)用調(diào)測(cè)助手申請(qǐng)的Product ID 型號(hào)00。在FA配置頁(yè)面,一定要查看第2.3節(jié)第四步自己寫(xiě)的包名,模塊名就是entry,添加設(shè)備就是com.example.distschedule.AddDeviceAbility:
第三步,創(chuàng)建測(cè)試,填寫(xiě)華為賬號(hào)對(duì)應(yīng)的手機(jī)號(hào)即可
寫(xiě)入標(biāo)簽
打開(kāi)應(yīng)用調(diào)測(cè)助手,選擇之前申請(qǐng)的ID,在自定義框填入如下數(shù)據(jù):
1246128c7b60ad1ed0286680f19206Lamp01308123456784011512teamX-Lamp01
更多設(shè)備N(xiāo)FC標(biāo)簽
實(shí)操驗(yàn)證
門(mén)鎖
開(kāi)門(mén)需要一個(gè)簡(jiǎn)單的裝置,之前有設(shè)計(jì),參考hi3861 web端開(kāi)門(mén)。
電路簡(jiǎn)單,將7.4v電源經(jīng)過(guò)降壓穩(wěn)壓后分別給模組、舵機(jī)供電。
手機(jī)連上wifi,打開(kāi)NFC開(kāi)關(guān),碰一下標(biāo)簽即可喚起原子化界面(不能使用校園網(wǎng),會(huì)導(dǎo)致設(shè)備無(wú)法連接)測(cè)試效果如下圖:
小風(fēng)扇
hb set時(shí)需要編譯smart_fan,同樣的下載源碼后,寫(xiě)入NFC標(biāo)簽
1246150601d88056b027dd2ca47205Fan01308123456784011511teamX-Fan01
手上的風(fēng)扇的驅(qū)動(dòng)電路如下圖,PWM控制風(fēng)速:
臺(tái)燈
首先需要一個(gè)電磁繼電器、5V充電頭,可以同時(shí)為模組和臺(tái)燈供電(并聯(lián))。在臺(tái)燈源碼中初始化GPIO 9為輸出,將繼電器的信號(hào)端與GPIO 9 相連即可。開(kāi)燈時(shí),接通繼電器的NC-COM端,斷開(kāi)NO-COM。
結(jié)語(yǔ)
以上案例實(shí)質(zhì)上還是在使用現(xiàn)有的解決方案、數(shù)字管家的服務(wù)器實(shí)現(xiàn),甚至連開(kāi)門(mén)的操作UI都是臺(tái)燈的,雖然這個(gè)可以在數(shù)字管家修改圖標(biāo),但本質(zhì)還是沒(méi)有變化,本教程目的在于記錄數(shù)字管家碰一碰的開(kāi)發(fā)入門(mén),為后期再添加自己的解決方案、服務(wù)器作為參考。
-
開(kāi)源代碼
+關(guān)注
關(guān)注
0文章
38瀏覽量
3191 -
OpenHarmony
+關(guān)注
關(guān)注
29文章
3848瀏覽量
18530 -
全屋智能
+關(guān)注
關(guān)注
2文章
145瀏覽量
2482
原文標(biāo)題:宿舍全屋智能開(kāi)發(fā)指南
文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
一文帶你讀懂OpenHarmony數(shù)字管家
【OpenHarmony開(kāi)發(fā)樣例】基于 BearPi-HM Nano 套件開(kāi)發(fā)的智能臺(tái)燈
【OpenHarmony開(kāi)發(fā)樣例】智能家居相關(guān)demo樣例匯總
【OpenHarmony開(kāi)發(fā)樣例】基于全志XR806開(kāi)發(fā)板開(kāi)發(fā)的智能門(mén)鎖
基于OpenHarmony和數(shù)字管家設(shè)計(jì)的全屋智能門(mén)鎖(開(kāi)發(fā)流程+實(shí)操)
一文帶你讀懂數(shù)字管家
【課程匯總】OpenHarmony全場(chǎng)景Demo數(shù)字管家系列課(附鏈接)
宿舍全屋智能開(kāi)發(fā)指南
基于OpenHarmony 的數(shù)字管家應(yīng)用開(kāi)發(fā)樣例
openharmony是什么 OpenHarmony開(kāi)源代碼在哪下載
OpenHarmony Dev-Board-SIG專(zhuān)場(chǎng):BearPi-HM Nano開(kāi)發(fā)板提供一套數(shù)字管家開(kāi)發(fā)示例代碼

OpenHarmony開(kāi)源代碼實(shí)現(xiàn)碰一碰開(kāi)門(mén)功能
openharmony開(kāi)源社區(qū) OpenHarmony開(kāi)發(fā)樣例上新了
如何在OpenHarmony上開(kāi)發(fā)服務(wù)卡片
【開(kāi)源鴻蒙】下載OpenHarmony 4.1 Release源代碼

評(píng)論