<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmony開源代碼實現碰一碰開門功能

OpenHarmony技術社區 ? 來源:HarmonyOS技術社區 ? 作者:HarmonyOS技術社區 ? 2022-03-30 09:10 ? 次閱讀
本項目基于 OpenHarmony、數字管家開發宿舍全屋智能,實現碰一碰開門、碰一碰開燈、碰一碰開風扇以及煙感檢測。

OpenHarmony開源代碼實現碰一碰開門功能

因為各項目開發流程大體相似,本文主要以碰一碰開門為例介紹如何在現有 OpenHarmony 開源代碼的基礎上實現我們想要的功能。

需要準備材料下:
  • 搭載 HarmonyOS 系統的手機一臺,API 6+

  • 搭載 Hi3861 模組的主板,不限于 HiSpark、小熊派套件

  • 7.4V 電池、一個舵機、若干導線

最終的碰一碰開門、開燈、風扇體驗如下:


OpenHarmony開源代碼實現碰一碰開門功能

OpenHarmony開源代碼實現碰一碰開門功能


OpenHarmony開源代碼實現碰一碰開門功能

開發流程

項目主要開發流程如下圖,主要包含設備端、數字管家搭建開發環境、下載源碼、修改編譯、下載驗證四個部分。

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。

OpenHarmony開源代碼實現碰一碰開門功能

其余參考工具鏈管理:

https://device.harmonyos.com/cn/docs/documentation/guide/tools_management-0000001141455367

添加工具后如下圖:

OpenHarmony開源代碼實現碰一碰開門功能

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

返回一下信息說明正確安裝:

OpenHarmony開源代碼實現碰一碰開門功能

第五步,打開工程,編譯源碼。打開 VS code 下的 DevEco Device Tools,導入 1.0.1 工程選擇對應的開發板即可。

打開終端,cd 到源碼路徑,執行 hb set,選擇 smart_lamp,然后執行 hb build 編譯。

OpenHarmony開源代碼實現碰一碰開門功能

在 ~/openharmony1.01/out/bearpi_hm_nano/smart_lamp 下生成 Hi3861_wifiiot_app_allinone.bin 說明一切操作正常。

如果遇到 uninstall clang、not found gn、ninja 等問題,需要配置環境變量,還要檢測 ohos-build 是不是 0.2.0 版本。

具體可以參考個人總結的如下措施:

OpenHarmony開源代碼實現碰一碰開門功能

第六步,燒錄二進制文件。連接開發板到 usb,在 devco Device tools 點擊配置工程,設置串口號,具體如下圖:

OpenHarmony開源代碼實現碰一碰開門功能

然后將第五步生成的 Hi3861_wifiiot_app_allinone.bin 拷貝到 ~/openharmony1.01/out/hispark_pegasus/wifiiot_hispark_pegasus 下(因為工具默認下載該路徑下的 bin 文件)。

點擊 Project Task 下的 upload,按下板子上的復位即可燒錄。

OpenHarmony開源代碼實現碰一碰開門功能

設備端修改編譯:上節中只是把開源代碼布置到我們的筆記本中,要實現開門需要添加自己的業務代碼。

例如門鎖需要使用到舵機,我在 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 不一樣,不能在同一個路徑下,否則會被替換掉原有的。

OpenHarmony開源代碼實現碰一碰開門功能

數字管家 APP 源碼獲取如下:

數字管家在 windows 平臺編譯安裝到手機上,下載鏈接為:

https://gitee.com/openharmony-sig/knowledge_demo_smart_home

下載后解壓在非中文路徑下即可。

OpenHarmony開源代碼實現碰一碰開門功能

使用 DevEco Studio 打開數字管家,路徑如下:

OpenHarmony開源代碼實現碰一碰開門功能

OpenHarmony開源代碼實現碰一碰開門功能

數字管家 APP 安裝如下:

第一步,點擊右上角個人頭像,登錄。

OpenHarmony開源代碼實現碰一碰開門功能

第二步,進入 AGC 平臺 AGC(AppGallery Connect)

地址:

https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/

OpenHarmony開源代碼實現碰一碰開門功能

第三步,在 AGC 平臺創建項目,然后創建應用。

OpenHarmony開源代碼實現碰一碰開門功能

OpenHarmony開源代碼實現碰一碰開門功能

OpenHarmony開源代碼實現碰一碰開門功能

得到如圖配置:

OpenHarmony開源代碼實現碰一碰開門功能

第四步,回到上一節 DevEco Studio 打開的工程,修改三個地方,具體路徑如下:

./entry/src/config.json
./netconfig/src/main/config.json
./netconfig/src/main/js/default/pages/index/index.js

OpenHarmony開源代碼實現碰一碰開門功能

OpenHarmony開源代碼實現碰一碰開門功能

OpenHarmony開源代碼實現碰一碰開門功能

第五步,自動簽名。

首先把自己的手機連接到電腦上,打開開發人員選項→開啟 USB 調試→同意調試。

然后打開 DevEco Studio 的 file–Projet Structure–Project–Signing Configs–automatically generating singing。

如下圖:

OpenHarmony開源代碼實現碰一碰開門功能

第六步,編譯下載。

點開 entry,進入 debug configuration,在 entry 下勾選 deploy multi haps packages,確認后退出。因為數字管家包含 entry、netconfig 兩個 module,要同時安裝。

OpenHarmony開源代碼實現碰一碰開門功能

OpenHarmony開源代碼實現碰一碰開門功能

第七步,安裝數字管家 APP。

點擊運行,稍等片刻手機上即可出現數字管家 APP,輸入手機號,登錄即可。

如果遇到問題,可以查看該鏈接:DevEco Studio 常見錯誤

https://developer.huawei.com/consumer/cn/forum/topic/0202519812104750498?fid=26

③配置 NFC 標簽

申請 product ID:將搭載鴻蒙系統的手機,登錄你的華為賬號,并在華為應用市場中下載安裝應用應用調測助手。

打開選擇 NFC,申請即可。

OpenHarmony開源代碼實現碰一碰開門功能

注冊服務:第一步,登陸華為開發者聯盟:

https://developer.huawei.com/consumer/cn/

點擊管理中心,創建原子化服務:

OpenHarmony開源代碼實現碰一碰開門功能

OpenHarmony開源代碼實現碰一碰開門功能

第二步,按照提示填寫即可,在標簽配置頁面,填寫在應用調測助手申請的 Product ID 型號 00。

OpenHarmony開源代碼實現碰一碰開門功能

在 FA 配置頁面,一定要查看第 2.3 節第四步自己寫的包名,模塊名就是 entry,添加設備就是 com.example.distschedule.AddDeviceAbility:

OpenHarmony開源代碼實現碰一碰開門功能

第三步,創建測試,填寫華為賬號對應的手機號即可。

OpenHarmony開源代碼實現碰一碰開門功能

寫入標簽:打開應用調測助手,選擇之前申請的 ID,在自定義框填入如下數據:

1246128c7b60ad1ed0286680f19206Lamp01308123456784011512teamX-Lamp01

OpenHarmony開源代碼實現碰一碰開門功能

更多設備 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

OpenHarmony開源代碼實現碰一碰開門功能

電路簡單,將 7.4v 電源經過降壓穩壓后分別給模組、舵機供電。

OpenHarmony開源代碼實現碰一碰開門功能

手機連上 wifi,打開 NFC 開關,碰一下標簽即可喚起原子化界面(不能使用校園網,會導致設備無法連接)測試效果如下圖:

OpenHarmony開源代碼實現碰一碰開門功能


OpenHarmony開源代碼實現碰一碰開門功能

小風扇:hb set 時需要編譯 smart_fan,同樣的下載源碼后,寫入 NFC 標簽。

1246150601d88056b027dd2ca47205Fan01308123456784011511teamX-Fan01

手上的風扇的驅動電路如下圖,PWM 控制風速:

OpenHarmony開源代碼實現碰一碰開門功能

臺燈:需要一個電磁繼電器、5V 充電頭,可以同時為模組和臺燈供電(并聯)。

在臺燈源碼中初始化 GPIO 9 為輸出,將繼電器的信號端與 GPIO 9 相連即可。開燈時,接通繼電器的 NC-COM 端,斷開 NO-COM。

OpenHarmony開源代碼實現碰一碰開門功能

OpenHarmony開源代碼實現碰一碰開門功能 ?



結語

去年立下的 Flag,NFC 開門已經實現。不過以上案例實質上還使用現有的解決方案、數字管家的服務器實現,甚至連開門的操作 UI 都是臺燈的,雖然這個可以在數字管家修改圖標,但本質還是沒有變化。

教程目的在于記錄數字管家碰一碰的開發入門,為后期再添加自己的解決方案、服務器作為參考。

原文標題:基于OpenHarmony開發宿舍全屋智能

文章出處:【微信公眾號:HarmonyOS技術社區】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 智能
    +關注

    關注

    8

    文章

    1680

    瀏覽量

    116992
  • 檢測
    +關注

    關注

    5

    文章

    4114

    瀏覽量

    90821
  • OpenHarmony
    +關注

    關注

    23

    文章

    3380

    瀏覽量

    15194

原文標題:基于OpenHarmony開發宿舍全屋智能

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ADXL345設定閾值只要一碰傳感器就進中斷

    我用這個傳感器做個沖擊檢測,但是設定閾值不管多少,只要一碰傳感器就進中斷
    發表于 02-13 07:26

    一碰即響的防盜器相關資料分享

    一碰即響”的防盜器電路如圖1所示。全向振動傳感控制器A1和電阻器R1、電容器C1等組成了振動傳感及延時觸發電路,語音集成電路A2、三極管VT及揚聲器B等組成了報警電路。   平時,A1的第3腳處于
    發表于 05-21 06:54

    小熊派&鴻蒙實現一碰聯網+遠程控制的智能臺燈

    小熊派BearPi-HM_Nano開發板實現一碰聯網及遠程控制的智能臺燈教程正在編寫中.....收藏該貼不迷路,教程鏈接將發在評論區,敬請期待?。?!
    發表于 05-26 19:19

    一碰”版本的藍牙鍵盤,來啦

    摘要:基于Neptune開發板的鍵盤藍牙模塊DIY指南0.3版本,實現一碰”連接、支持Linux下HUAWEI DevEco Device Tool編譯燒錄1.引入手機敲字回復,總因為大小寫切換
    發表于 07-28 18:04

    首款鴻蒙系統打印機亮相 WPS“一碰打印”功能吸睛

    的傳統,極簡配網、輕松連接,簡潔操作界面,一碰打印,全新設計的極簡外觀帶來未來感和科技感。其中,WPS的“一碰打印”功能成為亮點。為滿足用戶更多遠程打印需求,華為推出“華為打印”功能。
    發表于 09-17 09:50

    起來吐槽下學習openharmony的那些事

    歡迎新老入坑openharmony的人來起吐槽下,看看在學習openharmony的過程中有遇到什么困擾。先吐槽兩點1.過了年了
    發表于 10-14 21:18

    HarmonyOS原子化服務掃一碰完整體驗

    HarmonyOS原子化服務掃掃,一碰完整體驗。前提,已經上架的原子化服務與服務卡片并申請鴻蒙碼,進行了NFC的配置和設置;用已經是HarmonyOS設備服務中心掃碼工具掃掃拉起
    發表于 01-14 14:55

    【視頻】解決方案第5期:一碰(NFC)介紹

    本期主要對HarmonyOS Connect一碰(NFC)功能進行技術解讀,重點介紹極簡交互方式中NFC一碰關鍵特性、體驗,NFC標簽規
    發表于 03-09 14:43

    基于OpenHarmony和數字管家設計的全屋智能門鎖(開發流程+實操)

    基于OpenHarmony、數字管家開發宿舍全屋智能,實現一碰開門、
    發表于 03-24 09:31

    基于OpenHarmony3.0LTS和HarmonyOS2.0手機的溫濕度計實操案例

    1234567890。2).進行溫濕度燃氣檢測,在OLED上顯示,將數據通過UDP發送到手機端(192.168.43.1)。北向: 開發鴻蒙手機應用監聽UDP數據,并顯示溫濕度數據目前不足:1).Wifi 配網目前是代碼里面寫死的,
    發表于 04-06 10:58

    開源共建攜手并進 OpenHarmony使能千行百業生態成果亮相HDC2022

    生證具備一碰功能,一碰連接智能手寫板,能夠便捷地進行課堂互動答題;一碰連接智能跳繩,能進行數據化運動體測訓練;家長用手機一碰連接學生證就可
    發表于 11-11 12:08

    玩轉OpenHarmony智能家居:如何實現樹莓派“一碰”設備控制

    裝TCP通信相關的接口函數。五、總結本文介紹了如何使用NFC實現OpenHarmony一碰”設備控制。首先,需要基于樹莓派PN532模塊驅動開發NFC智能感知的應用,
    發表于 12-27 11:34

    hispark 3861智能家居套件可以實現一碰拉起原子化服務嗎

    中實驗手冊顯示可以通過一碰拉取原子化服務 HCIA-HarmonyOS Device Developer V2.0 實驗手冊-HiSpark.pdf 這個有點存疑,往nfc模塊中一碰
    發表于 06-05 17:38

    如何在OpenHarmony開源代碼基礎上實現數字管家開發宿舍全屋智能

    基于OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)、數字管家開發宿舍全屋智能,實現一碰開門、碰
    的頭像 發表于 08-26 09:55 ?1405次閱讀

    玩轉OpenHarmony智能家居:如何實現樹莓派“碰一碰”設備控制

    開源基金會觀點 一、簡介 “碰一碰”設備控制,依托NFC短距通信協議,通過碰一碰的交互方式,將OpenAtom OpenHarmony(簡稱“Ope
    的頭像 發表于 12-26 23:05 ?768次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>