因?yàn)楦黜?xiàng)目開發(fā)流程大體相似,本文主要以碰一碰開門為例介紹如何在現(xiàn)有 OpenHarmony 開源代碼的基礎(chǔ)上實(shí)現(xiàn)我們想要的功能。
需要準(zhǔn)備材料下:-
搭載 Hi3861 模組的主板,不限于 HiSpark、小熊派套件
-
7.4V 電池、一個(gè)舵機(jī)、若干導(dǎo)線
最終的碰一碰開門、開燈、風(fēng)扇體驗(yàn)如下:
開發(fā)流程
項(xiàng)目主要開發(fā)流程如下圖,主要包含設(shè)備端、數(shù)字管家搭建開發(fā)環(huán)境、下載源碼、修改編譯、下載驗(yàn)證四個(gè)部分。
開發(fā)環(huán)境搭建主要分為設(shè)備端環(huán)境、數(shù)字管家兩部分。設(shè)備端使用 DevEco Device Tools 最新版本,在 ubuntu 平臺(tái)開發(fā),在本項(xiàng)目中使用該工具編輯源碼、下載二進(jìn)制文件;數(shù)字管家使用 DevEco Studio Beta3.1 及以上版本,在 windows 平臺(tái)開發(fā)。
①搭建設(shè)備端開發(fā)
DevEco Device Tools搭建如下:
第一步,在 Ubuntu20.04 系統(tǒng)搭建設(shè)備端開發(fā)環(huán)境,支持源碼編輯、編譯、下載一站式開發(fā)。
在 Ubuntu 系統(tǒng)搭建 DevEco Device Tools,官網(wǎng)已經(jīng)有詳細(xì)的搭建流程,參考開發(fā)環(huán)境準(zhǔn)備:
https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-env-prepare-0000001193328250
第二步,安裝編譯工具鏈,Hi3861V100 開發(fā)板 Ubuntu 環(huán)境工具鏈下載鏈接 gn、ninja、gcc_riscv32。
其余參考工具鏈管理:
https://device.harmonyos.com/cn/docs/documentation/guide/tools_management-0000001141455367
添加工具后如下圖:
Ubuntu 環(huán)境編譯工具準(zhǔn)備:
#1.基礎(chǔ)依賴
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時(shí)已經(jīng)下載
#解壓到根目錄
tar-xvfgcc_riscv32-linux-7.3.0.tar.gz-C~
#添加環(huán)境變量
vim~/.bashrc
#最后一行加入:
exportPATH=~/gcc_riscv32/bin:$PATH
#確認(rèn)安裝是否正常,有返回版本號(hào)即可。
riscv32-unknown-elf-gcc-v
設(shè)備端源碼下載如下:
第一步,碼云工具安裝。
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'
獲取相關(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=y
CONFIG_PWM_SUPPORT=y
//2.修改wifiservice文件夾
路徑:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_hotspot.c
EnableHotspot函數(shù)中屏蔽如下字段
139//if(SetHotspotIpConfig()!=WIFI_SUCCESS){
140//returnERROR_WIFI_UNKNOWN;
141//}
//3.DispatchConnectEvent函數(shù)下屏蔽StaSetWifiNetConfig相關(guān)代碼行
路徑: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 源碼根目錄下,執(zhí)行:
pip3installbuild/lite
//添加環(huán)境變量
vim~/.bashrc
exportPATH=~/.local/bin:$PATH
source~/.bashrc
然后執(zhí)行
hb-h
返回一下信息說明正確安裝:
第五步,打開工程,編譯源碼。打開 VS code 下的 DevEco Device Tools,導(dǎo)入 1.0.1 工程選擇對(duì)應(yīng)的開發(fā)板即可。
打開終端,cd 到源碼路徑,執(zhí)行 hb set,選擇 smart_lamp,然后執(zhí)行 hb build 編譯。
在 ~/openharmony1.01/out/bearpi_hm_nano/smart_lamp 下生成 Hi3861_wifiiot_app_allinone.bin 說明一切操作正常。
如果遇到 uninstall clang、not found gn、ninja 等問題,需要配置環(huán)境變量,還要檢測(cè) ohos-build 是不是 0.2.0 版本。
具體可以參考個(gè)人總結(jié)的如下措施:
第六步,燒錄二進(jìn)制文件。連接開發(fā)板到 usb,在 devco 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è)備端修改編譯:上節(jié)中只是把開源代碼布置到我們的筆記本中,要實(shí)現(xiàn)開門需要添加自己的業(yè)務(wù)代碼。
例如門鎖需要使用到舵機(jī),我在 smart_lamp 解決方案的基礎(chǔ)上進(jìn)行修改。
具體操作如下:
第一步,添加舵機(jī)器控制
打開操作 GPIO 的如下文件:
vendor/team_x/smart_lamp/demo_smartlamp/E53_SC1/E53_SC1.c
添加如下函數(shù):
/*@briefServocontrol*
@paramangleinputvalue:0-200*
*/
voidMy_servo(intangle)
{
intj=0;
intk=20000/200;//實(shí)際應(yīng)該是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控制舵機(jī)
}
第二步,添加初始化 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;
}
第三步,添加業(yè)務(wù)代碼
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;
}
第四步,編譯、下載,參考上節(jié)第五步、第六步,直接編譯即可無需再次導(dǎo)入工程。
因?yàn)槲沂褂玫氖?ubuntu 物理機(jī)器,為實(shí)現(xiàn)一站式開發(fā)特地安裝 DevEco Device tools,OpenHarmony2.0、3.0 版本完全可以脫離 hb 工具編譯。
燒錄完成后,按下板子復(fù)位鍵,手機(jī)可以發(fā)現(xiàn)模組發(fā)出的 Wifi 信號(hào) teamX-Lamp01。②數(shù)字管家安裝
DevEco Studio 安裝如下:
第一步,DevEco Studio下載安裝,直接安裝即可,安裝完成后要配置 Windows 環(huán)境變量。
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 設(shè)置下的 SDK Manger,安裝 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 打開數(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 打開的工程,修改三個(gè)地方,具體路徑如下:
./entry/src/config.json
./netconfig/src/main/config.json
./netconfig/src/main/js/default/pages/index/index.js
第五步,自動(dòng)簽名。
首先把自己的手機(jī)連接到電腦上,打開開發(fā)人員選項(xiàng)→開啟 USB 調(diào)試→同意調(diào)試。然后打開 DevEco Studio 的 file–Projet Structure–Project–Signing Configs–automatically generating singing。
如下圖:
第六步,編譯下載。
點(diǎn)開 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),登錄即可。
如果遇到問題,可以查看該鏈接:DevEco Studio 常見錯(cuò)誤
https://developer.huawei.com/consumer/cn/forum/topic/0202519812104750498?fid=26
③配置 NFC 標(biāo)簽
申請(qǐng) product ID:將搭載鴻蒙系統(tǒng)的手機(jī),登錄你的華為賬號(hào),并在華為應(yīng)用市場(chǎng)中下載安裝應(yīng)用應(yīng)用調(diào)測(cè)助手。
打開選擇 NFC,申請(qǐng)即可。
注冊(cè)服務(wù):第一步,登陸華為開發(fā)者聯(lián)盟:
https://developer.huawei.com/consumer/cn/
點(diǎn)擊管理中心,創(chuàng)建原子化服務(wù):
第二步,按照提示填寫即可,在標(biāo)簽配置頁面,填寫在應(yīng)用調(diào)測(cè)助手申請(qǐng)的 Product ID 型號(hào) 00。
在 FA 配置頁面,一定要查看第 2.3 節(jié)第四步自己寫的包名,模塊名就是 entry,添加設(shè)備就是 com.example.distschedule.AddDeviceAbility:
第三步,創(chuàng)建測(cè)試,填寫華為賬號(hào)對(duì)應(yīng)的手機(jī)號(hào)即可。
寫入標(biāo)簽:打開應(yīng)用調(diào)測(cè)助手,選擇之前申請(qǐng)的 ID,在自定義框填入如下數(shù)據(jù):
1246128c7b60ad1ed0286680f19206Lamp01308123456784011512teamX-Lamp01
更多設(shè)備 NFC 標(biāo)簽:
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/dev/docs/NFC_label_definition/more_nfc_netconfig_info.md
④具體實(shí)操
門鎖:開門需要一個(gè)簡(jiǎn)單的裝置,之前有設(shè)計(jì),參考 hi3861 web 端開門。
https://ost.51cto.com/posts/9822
電路簡(jiǎn)單,將 7.4v 電源經(jīng)過降壓穩(wěn)壓后分別給模組、舵機(jī)供電。
手機(jī)連上 wifi,打開 NFC 開關(guān),碰一下標(biāo)簽即可喚起原子化界面(不能使用校園網(wǎng),會(huì)導(dǎo)致設(shè)備無法連接)測(cè)試效果如下圖:
小風(fēng)扇:hb set 時(shí)需要編譯 smart_fan,同樣的下載源碼后,寫入 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 相連即可。開燈時(shí),接通繼電器的 NC-COM 端,斷開 NO-COM。
?
結(jié)語
本教程目的在于記錄數(shù)字管家碰一碰的開發(fā)入門,為后期再添加自己的解決方案、服務(wù)器作為參考。
原文標(biāo)題:基于OpenHarmony開發(fā)宿舍全屋智能
文章出處:【微信公眾號(hào):HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
智能
+關(guān)注
關(guān)注
8文章
1693瀏覽量
117242 -
檢測(cè)
+關(guān)注
關(guān)注
5文章
4348瀏覽量
91101 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3548瀏覽量
15735
原文標(biāo)題:基于OpenHarmony開發(fā)宿舍全屋智能
文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論