項目說明
基于OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)、數(shù)字管家開發(fā)宿舍全屋智能,實現(xiàn)碰一碰開門、碰一碰開燈、碰一碰開風扇以及煙感檢測。因為各項目開發(fā)流程大體相似,本文主要以碰一碰開門為例介紹如何在現(xiàn)有OpenHarmony開源代碼的基礎上實現(xiàn)我們想要的功能。
需要提前準備的設備:搭載HarmonyOS系統(tǒng)的手機一臺,API 6+;搭載Hi3861模組的主板,不限于HiSpark、小熊派套件;7.4V電池、一個舵機、若干導線。最終的碰一碰開門、開燈、風扇效果如下:
智能臺燈與風扇(包括門鎖)、數(shù)字管家應用、云平臺三部分數(shù)據(jù)流如下圖所示。數(shù)字管家應用下發(fā)風速、亮度調(diào)節(jié)等設備控制指令到云平臺,云平臺發(fā)送到指定設備,同時風扇、臺燈等設備上報當前狀態(tài)到云平臺,云平臺再發(fā)送至數(shù)字管家應用,實現(xiàn)用戶可視化操作,實時控制智能設備。
開發(fā)流程
項目主要包含:①搭建設備端開發(fā)環(huán)境、②數(shù)字管家安裝、③配置NFC標簽、④實操驗證,共四個部分。開發(fā)過程中各關鍵環(huán)節(jié)如下圖,整體思路是準備軟硬件環(huán)境,編寫業(yè)務代碼,燒錄測試,若開發(fā)時遇到問題可參考該圖進行排查。
開發(fā)環(huán)境搭建主要分為設備端環(huán)境、數(shù)字管家兩部分。設備端使用DevEco Device Tools最新版本,在ubuntu平臺開發(fā),在本項目中使用該工具編輯源碼、下載二進制文件;數(shù)字管家使用DevEco Studio Beta3.1及以上版本,在windows平臺開發(fā)。
搭建設備端開發(fā)環(huán)境
DevEco Device Tools搭建
第一步,在Ubuntu20.04系統(tǒng)搭建設備端開發(fā)環(huán)境,支持源碼編輯、編譯、下載一站式開發(fā)。在Ubuntu系統(tǒng)搭建DevEco Device Tools,詳細搭建流程參考開發(fā)環(huán)境準備(https://docs.openharmony.cn/pages/v3.1/zh-cn/device-dev/quick-start/quickstart-ide-lite-env-setup-win-ubuntu.md/)。
第二步,安裝編譯工具鏈,Hi3861V100開發(fā)板Ubuntu環(huán)境工具鏈下載鏈接gn、ninja、gcc_riscv32。
其余參考工具鏈管理。添加工具后如下圖:
Ubuntu環(huán)境編譯工具準備
// 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時已經(jīng)下載 // -解壓到根目錄 tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~ // -添加環(huán)境變量 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’
獲取相關產(chǎn)品解決方案,并復制到源碼中,具體操作如下:
//下載產(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使能如下配置項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相關代碼行路徑: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
返回一下信息說明正確安裝:
第五步,打開工程
打開Visual Studio Code下的DevEco Device Tools,導入1.0.1工程選擇對應的開發(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)境變量,還要檢測ohos-build是不是0.2.0版本。具體可以參考個人總結(jié)的如下措施:
第六步,燒錄二進制文件連接開發(fā)板到電腦USB,在DevEco Device Tools點擊配置工程,設置串口號,具體如下圖:
然后將第五步生成的Hi3861_wifiiot_app_allinone.bin拷貝到~/openharmony1.01/out/hispark_pegasus/wifiiot_hispark_pegasus下【因為工具默認下載該路徑下的bin文件】 點擊Project Task下的upload,按下板子上的復位即可燒錄。
設備端編譯
1.3節(jié)中只是把開源代碼布置到我們的筆記本中,要實現(xiàn)開門需要添加自己的業(yè)務代碼。例如門鎖需要使用到舵機,我在smart_lamp解決方案的基礎上進行修改。具體操作如下:
第一步,添加舵機控制
打開操作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; //實際應該是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;}
第三步,添加業(yè)務代碼
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節(jié)第五步、第六步,直接編譯即可無需再次導入工程。因為我使用的是ubuntu物理機器,為實現(xiàn)一站式開發(fā)特地安裝DevEco Device tools,OpenHarmony 2.0、3.0版本完全可以脫離hb工具編譯。燒錄完成后,按下板子復位鍵,手機可以發(fā)現(xiàn)模組發(fā)出的WIFI信號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/)。第二步,打開DevEco Studio設置下的SDK Manager,安裝SDK(API6)紅框中的都需要下載。值得注意的是第一步安裝Studio時會下載OpenHarmony SDK,第二步的SDK不一樣,不能在同一個路徑下,否則會被替換掉原有的。
數(shù)字管家APP源碼獲取
數(shù)字管家在windows平臺編譯安裝到手機上,下載鏈接為:https://gitee.com/openharmony-sig/knowledge_demo_smart_home下載后解壓在非中文路徑下即可。
使用DevEco Studio打開數(shù)字管家,路徑如下:
數(shù)字管家APP安裝
第一步,點擊右上角個人頭像,登錄
第二步,進入AGC平臺AGC(AppGallery Connect) 地址:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/
第三步,在AGC平臺創(chuàng)建項目,然后創(chuàng)建應用
得到如圖配置:
第四步,回到上一節(jié)DevEco Studio 打開的工程,修改三個地方,具體路徑如下:
。/entry/src/config.json
。/netconfig/src/main/config.json
。/netconfig/src/main/js/default/pages/index/index.js
第五步,自動簽名。
首先把自己的手機連接到電腦上,打開開發(fā)人員選項–》 開啟USB調(diào)試–》同意調(diào)試 然后打開DevEco Studio的file–Project Structure–Project–Signing Configs–automatically generate signing 如下圖:
第六步,編譯下載。
點開entry,進入debug configuration,在entry下勾選deploy multi haps packages,確認后退出。因為數(shù)字管家包含entry、netconfig兩個module,要同時安裝。
第七步,安裝數(shù)字管家APP 點擊運行,稍等片刻手機上即可出現(xiàn)數(shù)字管家APP,輸入手機號,登錄即可。
配置NFC標簽
申請product ID
將搭載HarmonyOS的手機,登錄你的華為賬號,并在華為應用市場中下載安裝應用調(diào)測助手打開選擇NFC,申請即可。
注冊服務
第一步,登陸華為開發(fā)者聯(lián)盟https://developer.huawei.com/consumer/cn/,點擊管理中心,創(chuàng)建原子化服務。
第二步,按照提示填寫即可,在標簽配置頁面,填寫在應用調(diào)測助手申請的Product ID 型號00。在FA配置頁面,一定要查看第2.3節(jié)第四步自己寫的包名,模塊名就是entry,添加設備就是com.example.distschedule.AddDeviceAbility:
第三步,創(chuàng)建測試,填寫華為賬號對應的手機號即可
寫入標簽
打開應用調(diào)測助手,選擇之前申請的ID,在自定義框填入如下數(shù)據(jù):
1246128c7b60ad1ed0286680f19206Lamp01308123456784011512teamX-Lamp01
更多設備NFC標簽
實操驗證
門鎖
開門需要一個簡單的裝置,之前有設計,參考hi3861 web端開門。
電路簡單,將7.4v電源經(jīng)過降壓穩(wěn)壓后分別給模組、舵機供電。
手機連上wifi,打開NFC開關,碰一下標簽即可喚起原子化界面(不能使用校園網(wǎng),會導致設備無法連接)測試效果如下圖:
小風扇
hb set時需要編譯smart_fan,同樣的下載源碼后,寫入NFC標簽
1246150601d88056b027dd2ca47205Fan01308123456784011511teamX-Fan01
手上的風扇的驅(qū)動電路如下圖,PWM控制風速:
臺燈
首先需要一個電磁繼電器、5V充電頭,可以同時為模組和臺燈供電(并聯(lián))。在臺燈源碼中初始化GPIO 9為輸出,將繼電器的信號端與GPIO 9 相連即可。開燈時,接通繼電器的NC-COM端,斷開NO-COM。
結(jié)語
以上案例實質(zhì)上還是在使用現(xiàn)有的解決方案、數(shù)字管家的服務器實現(xiàn),甚至連開門的操作UI都是臺燈的,雖然這個可以在數(shù)字管家修改圖標,但本質(zhì)還是沒有變化,本教程目的在于記錄數(shù)字管家碰一碰的開發(fā)入門,為后期再添加自己的解決方案、服務器作為參考。
-
開源代碼
+關注
關注
0文章
36瀏覽量
2953 -
OpenHarmony
+關注
關注
25文章
3722瀏覽量
16317 -
全屋智能
+關注
關注
2文章
138瀏覽量
2248
原文標題:宿舍全屋智能開發(fā)指南
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論