0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于搭载OpenHarmony避障小车连接华为云心得体会

福州市凌睿智捷电子有限公司 2022-06-14 11:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、前言

上次给大家展示了基于OpenHarmony的避障小车,我就在想能不能通过云端来控制小车的工作。正好小凌派板载了WIFI功能,小凌派官方例程中又有通过MQTT协议连接华为云的例程。在不断的尝试下,终于完成了通过华为云给小车下发工作命令的避障小车。

二、小车介绍

这是一款基于OpenHarmony系统和RK2206小凌派开发板的避障小车。同时,小车搭载了超声波测距模块、舵机模块、红外寻迹模块、直流电机模块。

323012ae-e734-11ec-a2f4-dac502259ad0.png

图1 小车组装图

32775ce0-e734-11ec-a2f4-dac502259ad0.png          

图2 小凌派开发板

三、华为云配置

在华为云中创建一个新的设备(图3),创建设备的设备密码一定要牢记,后面要用到。32afc51c-e734-11ec-a2f4-dac502259ad0.png

图3 创建完成界面

总体配置如图4所示。

3326de0e-e734-11ec-a2f4-dac502259ad0.png

图4 华为云总体配置

创建了一个“work”属性用来接收小车当前的工作状态(图5)。

337f6a9c-e734-11ec-a2f4-dac502259ad0.jpg

图5 “work”参数

33a716f0-e734-11ec-a2f4-dac502259ad0.png

创建了两个命令“小车工作控制”(图6)和“小车人工控制”(图7)用来控制小车工作。其中,“小车工作控制”中有三个命令,分别是:ON(工作模式)、OFF(停止模式)、CONTROL(手动控制小车模式)。“小车人工控制”中有五个命令,分别是:STOP(停止)、FORWARD(直行)、TURNLEFT(左转)、TURNRIGHT(右转)、BCAKWARD(后退)。

图6 “小车工作控制”参数

33e0a88e-e734-11ec-a2f4-dac502259ad0.png      

图7 “小车人工控制”参数

四、小车配置

1.小车连接华为云

利用华为云iot工具(图8)将填写注册设备时生成的设备ID和设备密钥,生成连接信息(ClientId、Username、Password),并修改代码中对应的CLIENT_ID、USERNAME、PASSWORD。

342aa92a-e734-11ec-a2f4-dac502259ad0.png

图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.小车指令接收配置

344ec738-e734-11ec-a2f4-dac502259ad0.png

从华为云向小车下发工作指令时,可以在设备调试窗口看到华为云发送消息的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.小车数据发送配置

347ae07a-e734-11ec-a2f4-dac502259ad0.png

小车连接上华为云后,每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和国产芯片开发,是一次不错的学习体验,特此记录!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OpenHarmony
    +关注

    关注

    33

    文章

    3990

    浏览量

    21498
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    无人机飞行里的黑科技

    无人机的 “黑科技”,核心是多传感器融合 + AI 仿生算法 + 无 GPS 自主集群,实现从 “看见” 到 “本能躲避” 的跨越式升级
    的头像 发表于 05-12 14:59 226次阅读
    无人机飞行<b class='flag-5'>避</b><b class='flag-5'>障</b>里的黑科技

    TOF激光雷达在汽车上的应用

    ToF激光雷达已成为L2+至L4级自动驾驶的必选硬件,尤其在AEB、自动泊车、盲区监测、全天候安全上不可替代。随着固态dToF成本下探与量产普及,正从高端车型快速下探至主流乘用车,成为汽车安全的“第三只眼”。
    的头像 发表于 04-14 17:24 544次阅读
    TOF激光雷达在汽车<b class='flag-5'>避</b><b class='flag-5'>障</b>上的应用

    固态激光雷达参数以及视频

    、算法设计,实现 水平视角达 90°的高精度激光距离,并输出扫描环境的点数据或者实时画面。可用于机器人、路径规划等。 1.1 产品特性 ➢ 测距误差小,测距稳定性好 ➢ 测距角度分辨率高,可达
    发表于 03-27 14:14

    伺服系统调试经验分享及常见问题分析与解决方法

    伺服系统调试是工业自动化领域中的一项关键技术,其性能直接影响到设备的精度、速度和稳定性。通过多年的实践与总结,我积累了一些伺服调试的心得体会,现分享如下,希望能对同行有所帮助。
    的头像 发表于 03-12 16:52 671次阅读

    无人机激光和360度哪个好?

    无人机激光和360度没有绝对的”更好“之分,预算允许,优先选择同时搭载激光雷达和全向视觉的无人机,安全性能最强。
    的头像 发表于 03-11 14:19 381次阅读
    无人机激光<b class='flag-5'>避</b><b class='flag-5'>障</b>和360度<b class='flag-5'>避</b><b class='flag-5'>障</b>哪个好?

    浅析未来三年无人机雷达的发展方向

    未来三年(2026–2029),无人机雷达将围绕4D 成像化、AI 深度融合、多传感器协同、极致小型化低功耗、全天候与标准化五大方向快速迭代,核心目标是实现全天候、全向、高精度、低延迟、低成本的自主
    的头像 发表于 03-02 10:33 740次阅读
    浅析未来三年无人机<b class='flag-5'>避</b><b class='flag-5'>障</b>雷达的发展方向

    无人机动态环境自适应系统平台的应用与未来发展

        无人机动态环境自适应系统平台的应用与未来发展    北京华盛恒辉无人机动态环境自适应系统是一种融合多传感器感知、智能决策与实时路径规划的先进自主飞行技术,旨在保障无人机
    的头像 发表于 01-08 15:35 360次阅读

    多模态大模型驱动的复杂环境精准导航系统平台的应用

    多模态大模型驱动的复杂环境精准导航系统平台的应用
    的头像 发表于 12-22 13:15 487次阅读
    多模态大模型驱动的复杂环境精准导航<b class='flag-5'>避</b><b class='flag-5'>障</b>系统平台的应用

    【项目实战】基于Hi3861的鸿蒙智能小车(循迹、超声波、远程控制、语音控制、4G定位)有教程代码

    入门鸿蒙物联网找不到“落地”项目——要么功能简单练不到核心,要么资料零散易半途而废。本次【项目实战】聚焦基于Hi3861的鸿蒙智能小车,整合了循迹、超声波、远程控制、语音交互和4G定位等功能
    的头像 发表于 09-10 17:13 1653次阅读
    【项目实战】基于Hi3861的鸿蒙智能<b class='flag-5'>小车</b>(循迹、超声波<b class='flag-5'>避</b><b class='flag-5'>障</b>、远程控制、语音控制、4G定位)有教程代码

    【项目实战】基于STM32F103的智能小车(远程控制、超声波、循迹、红外遥控)有教程代码

    在嵌入式开发学习中,实战项目是将理论转化为能力的最佳载体——本次【项目实战】聚焦基于STM32的智能小车,不仅整合了红外遥控、微信小程序远程物联控制、自适应巡线、动态系统、交互式显示屏五大
    的头像 发表于 09-08 16:06 1844次阅读
    【项目实战】基于STM32F103的智能<b class='flag-5'>小车</b>(远程控制、超声波<b class='flag-5'>避</b><b class='flag-5'>障</b>、循迹、红外遥控)有教程代码

    盘点割草机器人六大传感器

    电子发烧友网综合报道 割草机器人的技术是其智能化水平的核心体现,主要通过传感器技术、环境感知算法和路径规划方法实现安全、高效的自主作业。随着智能化水平提升,割草机器人正从单一传
    的头像 发表于 08-17 00:03 4676次阅读

    INDEMIND三目AI-脏污检测模组,扫地机器人的“全能副手”

    新一代视觉模组
    的头像 发表于 08-08 15:54 1061次阅读

    锐驰智光推出微型化区域激光雷达KoraBeam 1E

    今天,锐驰智光正式发布一款微型化区域激光雷达—KoraBeam 1E。
    的头像 发表于 07-15 18:10 1459次阅读

    TuyaOpen开源框架+地瓜RDK X5开发板=激光雷达、人体追踪的智能小车

    OriginBot是一款智能机器人开源套件,搭载地瓜RDKX5开发板,通过完全开源的TuyaOpen开发框架(点击查看TuyaOpen能开发哪些AI硬件?),能够实现激光雷达、智能联网、目标检测
    的头像 发表于 06-26 18:35 2203次阅读
    TuyaOpen开源框架+地瓜RDK X5开发板=激光雷达<b class='flag-5'>避</b><b class='flag-5'>障</b>、人体追踪的智能<b class='flag-5'>小车</b>

    也能预判?视觉黑科技让扫地机器人开启“先知”模式

    从被动到主动预判,视觉技术比预想的更快实现。
    的头像 发表于 06-18 14:09 1484次阅读