1
簡介
此Demo采用潤和的智能小車套件為硬件模型,通過修改代碼具備了掃地機器人簡易的避障功能及防跌落功能,并且能通過wifi接入數(shù)字管家應(yīng)用場景。智能掃地機不僅能接收數(shù)字管家應(yīng)用下發(fā)的指令啟動或停止掃地機器人,而且還可以加入到數(shù)字管家的日程管理中。通過日程可以設(shè)定智能掃地機啟動的時間段,使其在特定的時間段內(nèi),智能掃地機自動啟動或者停止。
避障功能原理:通過超聲波傳感器,傳回正前方障礙與智能掃地機的距離信息,配合電機控制,避開障礙物;
防跌落功能原理:如圖左右各朝下安裝了紅外傳感器,通過紅外對管(發(fā)射管和接收管)收發(fā)特性:1 在地面上時發(fā)射管發(fā)出的紅外信號充分經(jīng)地面反射回接收管,即接收管能接收到足夠強的紅外光,代碼判斷為在地面;2 小車懸空時,發(fā)射管發(fā)出的紅外信號不能被接收管接收,代碼判斷為在懸空狀況;3 再配合兩輪運動控制,避免小車跌落。

1. 交互流程:

如上圖所示,智能掃地機整體方案原理圖可以大致分成:智能掃地機、數(shù)字管家應(yīng)用、云平臺三部分。智能掃地機通過MQTT協(xié)議連接華為IoT物聯(lián)網(wǎng)平臺,從而實現(xiàn)命令的接收和屬性上報。關(guān)于智能設(shè)備接入華為云IoT平臺的詳細細節(jié)可以參考 連接IoT云平臺指南;智能設(shè)備同數(shù)字管家應(yīng)用之間的設(shè)備模型定義可以參考profile
2. 實物簡介:

我們使用潤和Wi-Fi IoT智能小車套件來模擬智能掃地機;
oled屏負責(zé)顯示當前網(wǎng)絡(luò)狀況,有三種狀況:
1.WIFI_CONNECT_ING(等待配網(wǎng),未連入WIFI);
2.WIFI_CONNECT_OK(已經(jīng)連入WIFI,等待自動連入華為云端);
3.IOT_CONNECT_OK(已經(jīng)連入華為云端)。
reset按鍵控制設(shè)備重啟;
按鍵1可以啟動、暫停智能掃地機;
按鍵2組合reset按鍵執(zhí)行配網(wǎng)操作;
配網(wǎng)操作:
reset按鍵組合控制按鍵可以清除已保存的配網(wǎng)信息,具體操作:
1 .按下按鍵2,保持按鍵2被按下,執(zhí)行以下第2步;
2 .按下reset按鍵,保持1秒;
3 .先松開reset按鍵,1秒后再松開按鍵2;
4 .OLED顯示W(wǎng)IFI_CONNECT_ING,即進入配網(wǎng)模式;
通過NFC模塊實現(xiàn)設(shè)備碰一碰快速配網(wǎng)。
3.實物操作體驗

如上圖,主要有三個操作(下面有詳細介紹):
1 .手機碰一碰掃地機上的標簽,自動配網(wǎng);
2 .手機上啟動、暫停智能掃地機;
3 .給智能掃地機添加日程。
2
快速上手
1. 硬件準備
-
Wi-Fi IoT智能小車套件
-
預(yù)裝HarmonyOS手機一臺
2、Linux編譯服務(wù)器基礎(chǔ)環(huán)境準備
開發(fā)基礎(chǔ)環(huán)境由windows 工作臺和Linux 編譯服務(wù)器組成。windows 工作臺可以通過samba 服務(wù)或ssh 方式訪問Linux編譯服務(wù)器。其中windows 工作臺用來燒錄和代碼編輯,Linux編譯服務(wù)器用來編譯OpenHarmony代碼,為了簡化步驟,Linux編譯服務(wù)器推薦安裝Ubuntu20.04。
安裝和配置Python
-
打開Linux終端。
-
輸入如下命令,查看python版本號,需要使用python3.7以上版本,否則參考 系統(tǒng)基礎(chǔ)環(huán)境搭建。
python3 --version
左右滑動查看全部代碼
-
安裝并升級Python包管理工具(pip3)。
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
左右滑動查看全部代碼
安裝hb
-
運行如下命令安裝hb
python3 -m pip install --user ohos-build
左右滑動查看全部代碼
設(shè)置環(huán)境變量
vim ~/.bashrc
左右滑動查看全部代碼
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/.local/bin:$PATH
左右滑動查看全部代碼
執(zhí)行如下命令更新環(huán)境變量。
source ~/.bashrc
左右滑動查看全部代碼
-
執(zhí)行"hb -h",有打印以下信息即表示安裝成功
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
左右滑動查看全部代碼
3、Hi3861開發(fā)環(huán)境準備
在Linux編譯服務(wù)器上搭建好基礎(chǔ)開發(fā)環(huán)境后,需要安裝OpenHarmony 編譯Hi3861 平臺特有的開發(fā)環(huán)境。
安裝編譯依賴基礎(chǔ)軟件
sudo apt-get install -y build-essential gcc g++ make zlib* libffi-dev
左右滑動查看全部代碼
安裝Scons
打開Linux 終端。
運行如下命令,安裝Scons安裝包。
python3 -m pip install scons
左右滑動查看全部代碼
運行如下命令,查看是否安裝成功。如果安裝成功,查詢結(jié)果下圖所示。
scons -v
左右滑動查看全部代碼
下圖 Scons安裝成功界面,版本要求3.0.4以上

安裝python模塊
sudo pip3 install setuptools kconfiglib pycryptodome ecdsa six --upgrade --ignore-installed six
左右滑動查看全部代碼
安裝gcc_riscv32(WLAN模組類編譯工具鏈)
-
打開Linux終端。
-
下載gcc_riscv32鏡像,下載鏈接。
-
設(shè)置環(huán)境變量,將壓縮包解壓到根目錄
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~
左右滑動查看全部代碼
設(shè)置環(huán)境變量
vim ~/.bashrc
左右滑動查看全部代碼
將以下命令拷貝到.bashrc文件的最后一行,保存并退出
export PATH=~/gcc_riscv32/bin:$PATH
左右滑動查看全部代碼
生效環(huán)境變量
source ~/.bashrc
左右滑動查看全部代碼
在命令行中輸入如下命令,如果能正確顯示編譯器版本號,表明編譯器安裝成功。
riscv32-unknown-elf-gcc -v
左右滑動查看全部代碼
4、源碼下載&編譯準備
1.碼云工具下載
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo
chmod a+x /usr/local/bin/repo
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
左右滑動查看全部代碼
2.代碼下載
OpenHarmony代碼下載
#特別注意:請下載OpenHarmony 1.0.1 版本,后續(xù)會更新支持OpenHarmony其他版本
mkdir ~/OpenHarmony1.01
cd ~/OpenHarmony1.01
repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
左右滑動查看全部代碼
設(shè)備側(cè)代碼下載
具體倉庫地址:https://gitee.com/openharmony-sig/knowledge_demo_smart_home/
具體下載命令如下:
git clone git@gitee.com:openharmony-sig/knowledge_demo_smart_home.git
左右滑動查看全部代碼
編譯前準備
-
代碼拷貝
cd ~/OpenHarmony1.01
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開發(fā)板相關(guān)文件修改
修改usr_config.mk 文件,地址:device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk
使能如下配置項
CONFIG_I2C_SUPPORT=y
CONFIG_PWM_SUPPORT=y
左右滑動查看全部代碼
修改wifiservice 文件夾,地址:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_hotspot.c
EnableHotspot函數(shù)中屏蔽如下字段
139 //if (SetHotspotIpConfig() != WIFI_SUCCESS) {
140 // return ERROR_WIFI_UNKNOWN;
141 //}
地址:device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.c
DispatchConnectEvent函數(shù)下 屏蔽StaSetWifiNetConfig相關(guān)代碼行
239 //StaSetWifiNetConfig(HI_WIFI_EVT_CONNECTED);
260 //StaSetWifiNetConfig(HI_WIFI_EVT_DISCONNECTED);
左右滑動查看全部代碼
整合并修改完成后的目錄結(jié)構(gòu)如下圖:

5、編譯&燒錄
編譯命令:
hb set // 如果是第一次編譯,Input code path 命令行中鍵入"./" 指定OpenHarmony工程編譯根目錄后 回車
左右滑動查看全部代碼
如下圖所示,使用鍵盤上下鍵選中智能掃地機

hb build // 如果需要全量編譯,可以添加-f 選項
左右滑動查看全部代碼
詳細的代碼編譯及固件燒錄步驟,請參考 編譯和燒錄指南
6.、設(shè)備配網(wǎng)
-
在設(shè)備上電前需準備好安裝了數(shù)字管家應(yīng)用的HarmonyOS手機,詳情見數(shù)字管家應(yīng)用開發(fā), 并在設(shè)置中開啟手機的NFC功能;
-
寫設(shè)備NFC標簽,詳細操作見設(shè)備NFC標簽指導(dǎo)文檔;
-
燒錄完成后,上電。剛燒錄完后設(shè)備處在配網(wǎng)模式下,OLED顯示W(wǎng)IFI_CONNECT_ING,將手機上半部靠近開發(fā)板NFC標簽處,wifi連接成功后會顯示W(wǎng)IFI_CONNECT_OK,成功連入華為云端會顯示IOT_CONNECT_OK;
-
無需任何操作手機將自動拉起數(shù)字管家應(yīng)用并進入配網(wǎng)狀態(tài),配網(wǎng)過程中無需輸入熱點賬號密碼。具體無感配網(wǎng)相關(guān)流程參考 無感配網(wǎng)指南

7.、操作體驗
設(shè)備控制
配網(wǎng)完成后,數(shù)字管家應(yīng)用會自動進入智能掃地機的控制頁面,通過控制頁面可以實現(xiàn)對智能掃地機啟動、停止操作

添加日程
使用者可以進入數(shù)字管家的日程管理頁面中添加智能掃地機的相關(guān)日程,具體步驟如下:
-
在輸入日程名稱后,選擇相關(guān)通知成員和掃地機設(shè)備;
-
選擇期待執(zhí)行的掃地機操作,例如:設(shè)置智能掃地機在特定時間段內(nèi)啟動或停止;
-
設(shè)置日程的重復(fù)日期,例如:可以設(shè)置單次日程(僅在當天執(zhí)行),或者重復(fù)日程(設(shè)置日程在設(shè)定的 星期幾重復(fù)執(zhí)行)

原文標題:OpenHarmony開發(fā)樣例:智能掃地機器人
文章出處:【微信公眾號:HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
機器人
+關(guān)注
關(guān)注
212文章
29126瀏覽量
210524 -
智能
+關(guān)注
關(guān)注
8文章
1725瀏覽量
118053 -
OpenHarmony
+關(guān)注
關(guān)注
26文章
3791瀏覽量
17628
原文標題:OpenHarmony開發(fā)樣例:智能掃地機器人
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論