成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于搭載OpenHarmony避障小車連接華為云心得體會

系統 OpenHarmony
這是一款基于OpenHarmony系統和RK2206小凌派開發板的避障小車。同時,小車搭載了超聲波測距模塊、舵機模塊、紅外尋跡模塊、直流電機模塊。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

一、前言

上次給大家展示了基于OpenHarmony的避障小車,我就在想能不能通過云端來控制小車的工作。正好小凌派板載了WIFI功能,小凌派官方例程中又有通過MQTT協議連接華為云的例程。在不斷的嘗試下,終于完成了通過華為云給小車下發工作命令的避障小車。戳鏈接看完整視頻??(https://ost.51cto.com/show/13049)

二、小車介紹

這是一款基于OpenHarmony系統和RK2206小凌派開發板的避障小車。同時,小車搭載了超聲波測距模塊、舵機模塊、紅外尋跡模塊、直流電機模塊。

圖1 小車組裝圖

圖2 小凌派開發板

三、華為云配置

在華為云中創建一個新的設備(圖3),創建設備的設備密鑰一定要牢記,后面要用到。

圖3 創建完成界面

總體配置如圖4所示。

圖4 華為云總體配置

創建了一個“work”屬性用來接收小車當前的工作狀態(圖5)。

圖5 “work”參數

創建了兩個命令“小車工作控制”(圖6)和“小車人工控制”(圖7)用來控制小車工作。其中,“小車工作控制”中有三個命令,分別是:ON(工作模式)、OFF(停止模式)、CONTROL(手動控制小車模式)。“小車人工控制”中有五個命令,分別是:STOP(停止)、FORWARD(直行)、TURNLEFT(左轉)、TURNRIGHT(右轉)、BCAKWARD(后退)。

圖6 “小車工作控制”參數

圖7 “小車人工控制”參數

四、小車配置

1、連接華為云

利用華為云iot工具(圖8)將填寫注冊設備時生成的設備ID和設備密鑰,生成連接信息(ClientId、Username、Password),并修改代碼中對應的CLIENT_ID、USERNAME、PASSWORD。

圖8 華為云iot工具

將代碼中的CLIENT_ID、USERNAME和PASSWORD改為生成的ClientId、Username和Password。

#define CLIENT_ID
#define USERNAME
#define PASSWORD

修改/device/rockchip/rk2206/sdk_liteos/board/src/config_network.c代碼中的SSID和PASSWORD為使用WIFI的SSID和密匙,用于連接網絡,設備通過WIFI訪問華為云。

#define SSID       
#define PASSWORD

2、小車指令接收配置

從華為云向小車下發工作指令時,可以在設備調試窗口看到華為云發送消息的body信息。“service_id”為設備的服務ID,ID為“智能小車”; “command_name”為設備命令名稱,命令為“小車工作控制”;“paras”為設備命令的執行參數,參數為{ “work”:“ON”}(圖9)。

圖9 華為云發送消息body信息

以下是處理華為云下發命令的部分代碼:

obj_cmdname = cJSON_GetObjectItem(obj_root, "command_name");
if (obj_cmdname == NULL)
{
goto EXIT;
}
if (0 == strcmp(cJSON_GetStringValue(obj_cmdname), "小車工作控制"))
{
obj_paras = cJSON_GetObjectItem(obj_root, "paras");
if (obj_paras == NULL)
{
goto EXIT;
}
obj_para = cJSON_GetObjectItem(obj_paras, "work");
if (obj_para == NULL)
{
goto EXIT;
}
if (0 == strcmp(cJSON_GetStringValue(obj_para), "ON"))
{
m_app_status.work = 1;
g_car_status = CAR_TRACE_STATUS;
}
else if (0 == strcmp(cJSON_GetStringValue(obj_para), "OFF"))
{
m_app_status.work = 0;
g_car_status = CAR_STOP_STATUS;
}
else if (0 == strcmp(cJSON_GetStringValue(obj_para), "CONTROL"))
{
m_app_status.work = 2;
g_car_status = CAR_MANUAL_OPERATION_STATUS;
}
cmdret = 0;
}
else if (0 == strcmp(cJSON_GetStringValue(obj_cmdname), "小車人工控制"))
{
obj_paras = cJSON_GetObjectItem(obj_root, "paras");
if (obj_paras == NULL)
{
goto EXIT;
}
obj_para = cJSON_GetObjectItem(obj_paras, "control");
if (obj_para == NULL)
{
goto EXIT;
}
if (0 == strcmp(cJSON_GetStringValue(obj_para), "STOP"))
{
g_car_control = CAR_STOP;
}
else if (0 == strcmp(cJSON_GetStringValue(obj_para), "FORWARD"))
{
g_car_control = CAR_FORWARD;
}
else if (0 == strcmp(cJSON_GetStringValue(obj_para), "TURNLEFT"))
{
g_car_control = CAR_TURNLEFT;
}
else if (0 == strcmp(cJSON_GetStringValue(obj_para), "TURNRIGHT"))
{
g_car_control = CAR_TURNRIGHT;
}
else if (0 == strcmp(cJSON_GetStringValue(obj_para), "BCAKWARD"))
{
g_car_control = CAR_BCAKWARD;
}
cmdret = 0;
}

3、小車數據發送配置

小車連接上華為云后,每5秒會向華為云的發送當前小車的狀態信息。”serviced”為設備的服務ID,ID為”智能小車”;”data”為設備數據,數據為{“work”:0}(圖10)。

圖10 小車向華為云發送狀態信息

以下是小車上傳數據到華為云的部分代碼:

oc_mqtt_profile_service_t service;
oc_mqtt_profile_kv_t work;
service.event_time = NULL;
service.service_id = "智能小車";
service.service_property = &work;
service.nxt = NULL;
work.key = "Work";
work.value = &report->work;
work.type = EN_OC_MQTT_PROFILE_VALUE_INT;
work.nxt = NULL;
oc_mqtt_profile_propertyreport(USERNAME, &service);

五、效果

給小車上電之后,等待小車連接華為云,可以看到小車向華為云發送消息。從視頻中可以看到華為云接收到的消息為data:{“work”:0},說明小車剛上電后并沒有工作。

現在通過華為云向小車下發工作命令。從視頻中可以看到在小車的前方和左邊都有障礙物。啟動小車后小車會先直行,通過超聲波傳感器獲取前方的距離,當距離小于20cm時,小車通過超聲波傳感器測量左右兩邊的距離,由于右邊的距離比左邊大,小車會向右轉。從視頻中可以看到,小車按照我們預想的方向行動,同時我們可以看到華為云接收到的消息為data:{“work”:1},說明小車現在正在工作。

以下是避障的部分代碼:

if (distance < DISTANCE_BETWEEN_CAR_AND_OBSTACLE)
{
car_stop();
LOS_Msleep(500);
car_backward();
printf("This is backward\r\n");
LOS_Msleep(500);
car_stop();
unsigned int ret = engine_go_where();
printf("ret is %d\r\n", ret);
if (ret == CAR_TURN_LEFT)
{
car_left();
LOS_Msleep(800);
}
else if (ret == CAR_TURN_RIGHT)
{
car_right();
LOS_Msleep(800);
}
car_stop();
}

通過華為云下發命令,將小車的工作模式轉換成控制模式,我們可以看到華為云接收到的消息為data:{“work”:2},說明小車的行動受我們控制。

  • 通過華為云向小車下發直行命令,可以看到小車直行。
  • 通過華為云向小車下發左轉命令,可以看到小車左轉。
  • 通過華為云向小車下發右轉命令,可以看到小車右轉。
  • 通過華為云向小車下發后退命令,可以看到小車后退。

六、心得體會

通過本次項目使用搭載OpenHarmony的小凌派RK2206開發板進行開發。小凌派官方教程簡介清晰,便于入門。RK2206芯片接口比較豐富,移植適配穩定性較好,整體開發進度比較順利。讓我學習到了如何使用MQTT協議連接華為云去控制小車的工作。通過這一次的應用開發,體驗了OpenHarmony和國產芯片開發,是一次不錯的學習體驗,特此記錄![??請添加鏈接描述??]

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2010-04-07 11:36:56

JNCIP

2009-07-03 18:49:07

綜合布線工程實施

2011-04-01 15:22:12

Zabbix配置安裝

2009-11-04 14:45:18

接入網優化

2019-11-11 09:33:09

戴爾

2009-08-28 14:49:19

DHCP服務器管理維護

2009-04-27 16:04:47

Windows 7微軟操作系統

2009-09-09 18:07:49

CCNA考試資料

2021-10-27 16:28:55

鴻蒙開發者大會華為

2009-08-25 13:57:09

C#泛型集合類型

2009-11-25 17:24:42

無線路由器

2009-01-19 20:16:23

Oracle心得體會

2009-07-01 14:28:20

cisco1700路由器配置

2017-12-25 10:42:34

代碼項目前端

2011-09-28 13:21:16

軟件項目

2009-09-03 09:39:42

思科CCIE認證考試心得

2009-07-29 11:29:16

ASP.NET1.1ASP.NET2.0

2022-11-16 09:57:23

優化接口

2009-07-28 12:52:50

ASP.NET coo
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人午夜免费在线视频 | 亚洲国产精品成人无久久精品 | 午夜精品91 | 成人不卡在线 | 国产成都精品91一区二区三 | 国产成人免费视频 | 四虎影院久久 | 亚洲色图综合网 | 日韩精品久久久久 | 天天色图 | 日韩av一区二区在线观看 | 久久免费精品视频 | 精品国产91乱码一区二区三区 | 亚洲欧美中文日韩在线v日本 | 亚洲成年在线 | 91香蕉视频在线观看 | 色婷婷av一区二区三区软件 | av一区二区三区四区 | 亚洲欧美在线一区 | 孰女乱色一区二区三区 | 淫片一级国产 | 五月激情综合网 | 欧美一区二区三区的 | 香蕉视频一区二区 | 久久精品视频9 | 久久久国产一区二区三区 | 国产成人av电影 | 亚洲欧美视频一区 | 怡红院免费的全部视频 | 国产资源网 | 国产成人精品免费视频大全最热 | 精品国产视频 | 中文字幕 亚洲一区 | 精品乱码一区二区三四区视频 | 一区二区福利视频 | 久久久久久成人 | 午夜精品久久久久久 | 91精品国产91久久综合桃花 | 欧美色999 | 在线观看黄色 | 懂色av一区二区三区在线播放 |