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