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

1. 交互流程:

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

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

如上圖,主要有三個操作(下面有詳細介紹):
1 .手機碰一碰掃地機上的標簽,自動配網;
2 .手機上啟動、暫停智能掃地機;
3 .給智能掃地機添加日程。
2
快速上手
1. 硬件準備
-
Wi-Fi IoT智能小車套件
-
預裝HarmonyOS手機一臺
2、Linux編譯服務器基礎環境準備
開發基礎環境由windows 工作臺和Linux 編譯服務器組成。windows 工作臺可以通過samba 服務或ssh 方式訪問Linux編譯服務器。其中windows 工作臺用來燒錄和代碼編輯,Linux編譯服務器用來編譯OpenHarmony代碼,為了簡化步驟,Linux編譯服務器推薦安裝Ubuntu20.04。
安裝和配置Python
-
打開Linux終端。
-
輸入如下命令,查看python版本號,需要使用python3.7以上版本,否則參考 系統基礎環境搭建。
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
左右滑動查看全部代碼
設置環境變量
vim ~/.bashrc
左右滑動查看全部代碼
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/.local/bin:$PATH
左右滑動查看全部代碼
執行如下命令更新環境變量。
source ~/.bashrc
左右滑動查看全部代碼
-
執行"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開發環境準備
在Linux編譯服務器上搭建好基礎開發環境后,需要安裝OpenHarmony 編譯Hi3861 平臺特有的開發環境。
安裝編譯依賴基礎軟件
sudo apt-get install -y build-essential gcc g++ make zlib* libffi-dev
左右滑動查看全部代碼
安裝Scons
打開Linux 終端。
運行如下命令,安裝Scons安裝包。
python3 -m pip install scons
左右滑動查看全部代碼
運行如下命令,查看是否安裝成功。如果安裝成功,查詢結果下圖所示。
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鏡像,下載鏈接。
-
設置環境變量,將壓縮包解壓到根目錄
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~
左右滑動查看全部代碼
設置環境變量
vim ~/.bashrc
左右滑動查看全部代碼
將以下命令拷貝到.bashrc文件的最后一行,保存并退出
export PATH=~/gcc_riscv32/bin:$PATH
左右滑動查看全部代碼
生效環境變量
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 版本,后續會更新支持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'
左右滑動查看全部代碼
設備側代碼下載
具體倉庫地址: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開發板相關文件修改
修改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函數中屏蔽如下字段
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函數下 屏蔽StaSetWifiNetConfig相關代碼行
239 //StaSetWifiNetConfig(HI_WIFI_EVT_CONNECTED);
260 //StaSetWifiNetConfig(HI_WIFI_EVT_DISCONNECTED);
左右滑動查看全部代碼
整合并修改完成后的目錄結構如下圖:

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

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

7.、操作體驗
設備控制
配網完成后,數字管家應用會自動進入智能掃地機的控制頁面,通過控制頁面可以實現對智能掃地機啟動、停止操作

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

原文標題:OpenHarmony開發樣例:智能掃地機器人
文章出處:【微信公眾號:HarmonyOS官方合作社區】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
機器人
+關注
關注
213文章
29462瀏覽量
211427 -
智能
+關注
關注
8文章
1728瀏覽量
118533 -
OpenHarmony
+關注
關注
26文章
3820瀏覽量
18096
原文標題:OpenHarmony開發樣例:智能掃地機器人
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論