前言
本次OpenHarmony学生挑战赛我准备的项目是一个基于OpenHarmony的无人配送小车。接触OpenHarmony也有半年时间了,这也是我第一次带队参加OpenHarmony的比赛,虽然最后花费了很长时间也没有做出来一个像样的成品,很多方面都出了一点小状况把进度卡死了,但这过程也学到了很多东西。
仓库链接(没什么内容,跟这篇差不多),虽然最后还水了个三等奖,但项目的完成度和我的预期差得有点远,不过通过这个项目也知道自己很多的不足,下次会继续努力,继续为OpenHarmony贡献出自己的力量。也没什么成品好分享的,主要分享一下这个项目的架构,给大家看看我画的饼。
项目简介
疫情的持续反复对疫情防控的技术提高提出了迫切的要求,本项目聚焦防疫一线的配送工作中存在的“接触感染风险大”这一难题,重点联系联合国可持续发展目标中的“良好的健康和福祉”、“可持续城市和社区”这两方面内容,设计出一款城市社区无人配送小车。
项目以OpenHarmony为核心,软硬件相结合,自主设计完成一套基于鸿蒙操作系统,作用于隔离点,能够替代防疫工作人员与被隔离人员之间接触的配送物资系统以提高的运行效率的解决方案。通过控制端配置配送信息以及下达配送命令,小车端实现自动巡线,路径规划将物资送达客户,并且提供与客户端能够互联的系统来提高交互体验及配送效率。并且,在这套系统的基础上,还能延伸出许多拓展应用场景。例如在这个无人配送的场景下,我们可以加上居民健康监测的功能,只需加上测温模块,以及配置好个人信息的NFC标签,小车上门时只需手机与NFC模块碰一碰,小车系统就会将体温及居民的健康信息录入,上传到云端或者主控端。
系统架构
基于以上场景实现,可以将无人配送系统分为小车平台端和鸿蒙终端(主控终端与客户终端)两部分,小车端是基于润和的智能小车套件以及HiSpark AI Camera 开发套件进行开发的搭载OpenHarmony系统的系统终端,二者都搭载wifi模组,可以与鸿蒙终端进行通讯组网,需要实现一系列组件的驱动以及通讯系统组建,智能语音交互。鸿蒙终端具备消息提醒以及确认交互,小车状态查询及控制,分布式软总线通信,以及鸿蒙原子化服务功能等。可以将系统架构分为南向部分和北向部分。
硬件设计
无人配送小车硬件架构整体由润和的智能小车套件以及HiSpark AI Camera 开发套件以及其他拓展模块组成。
通信架构
无人配送小车系统主要利用串口通信以及TCP/IP协议在Openharmony小车控制系统内部进行信息通信,并且基于此通信方式完成配送机器人系统与鸿蒙分布式控制终端的链接。小车平台与主控平台间也可以建立一个云服务器,通过MQTT协议发布和订阅实现交互,实现远程控制小车与远程监视小车状态。小车平台与客户平台通过NFC进行信息交换,简化通信过程,提高交互效率。通讯网络架构如下:
心得体会
小车套件开发
对于智能小车的开发官方也是给了很多教程,寻迹以及避障的功能也有给出,只需要根据实际情况修改自己需要的逻辑功能即可。
润和小车学习教程:
海思官方教程仓库:https://gitee.com/hihope_iot/HiHope_Pegasus_Doc/tree/master官方学习资料:https://www.hisilicon.com/cn/chip-academy/materiallist。
AI视觉开发
视觉使用的是HiSpark AI Camera 开发套件的NNIE和IVE的硬件加速能力来实现深度学习神经网络。小车的视觉部分是整套系统的关键部分,很可惜的是没有调试出来,中间遇到的太多问题了,研究了海思官方的案例教程,也研究了OpenHarmony的AI子系统,遇到了许多环境配置的问题,模型转换的问题,最终也只是跑通了demo。遇到了教程使用的硬件如LCD与套件不适配,调试的好长好长时间,不得不说小型系统和标准系统的调试过程是还是挺折磨的,调试只能凭感觉调试,每次调试编译烧录还得挺久,也是自身水平还是不够吧,希望未来能重新解决这个问题。
在这里贴上我学习HI3516 AI的教程:
海思官方视频教程:https://www.hisilicon.com/cn/chip-academy/videolist海思官方资料教程:https://www.hisilicon.com/cn/chip-academy/materiallist。
产品说明书工具等:http://www.hihope.org/download/download.aspx。
Hi3516DV300实验开发指导:
https://gitee.com/openharmony/device_soc_hisilicon/tree/master/hi3516dv300/sdk_linux/sample/taurus。
通信方面
这次通信主要用到了TCP/IP协议,通过Hi3861的Wifi模块STA模式连接热点与终端进行通信,以及上位机和下位机之间进行串口通信,还有Hi3861通过MQTT将数据上传的,因为项目前置条件也还没完成,也不好演示,相关教程也有,在这里贴出来,可以学习学习:
润和Hi3861网络教程以及MQTT(第19-26小节)。
Pegasus与Taurus串口互联通信Pegasus与Taurus WiFi互联通信。
其他
NFC:本来是想两个NFC之间的数据交换,发现好像并没有这方面的教程,折腾了挺久也没搞出来,目前有的是通过NFC拉取鸿蒙原子化服务,NFC配网,手机读取NFC数据网页,所以实现起来还是挺困难的,使用的海思3861的外接NFC也没有例程,所以也算是踩坑了。
MLX90614红外温度传感器:移植了老久红外温度传感器驱动虽然最后跑通了,但得到的温度数据有点错误,使用鸿蒙IO来写SMBUS协议属实有点困难,开漏输出也找不到在哪里设置,不过通过IIC还是可以驱动成功了,等以后调完全了也会分享出来。