品牌  【直播】  50强   整机  ​【联盟】  机构  【视界】  展会  招聘  云服务          微博   公众号AIrobot518 
【​今日焦点
【行业动态】
NEWS / 新闻中心
基于MQTT的轻量级AGV小车系统设计
来源: agv吧 | 作者: agv吧 | 发布时间: 1734天前 | 3587 次浏览 | 分享到:
文中设计了一套应用于物联网的轻量级AGV小车的系统,主控使用STM32F103单片机,结合NFC芯片实现循迹以及路径定位的功能,并将信息由SIM7600LTE芯片通过MQTT协议传递到服务器。同时设计了移动端APP,实现轻量级的AGV实时监控与调度管理系统。相对于传统的MES系统,所提系统使用模块化的设计理念,具有更友好的UI界面和更灵活的功能。


此次使用LTE芯片是SIMCOM公司的SIM7600CE芯片,它可支持GSM,TD-SCDMA,CDMA,WCDMA,TDD-LTE和FDD-LTE等频段,支持TCP/IP/IPV4/IPV6/MQTT等,可以根据实际情况灵活选择通信协议和方式,支持LTE-CAT4,上行最大速率50Mb/s,下行最大速率150Mb/s,经过实物调试,可以满足AGV于服务器之间的数据信息交互[5]。

3 服务器端及移动APP设计

3.1 基于MQTT协议的服务端与小车客户端通信部分设计

MQTT 消息队列遥测传输(Message Queuing Telemetry Transport)是ISO标准(ISO/IEC PRF 20922)[6] 下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布 / 订阅型消息协议 [7]。
相较于传统的 HTTP 查询,MQTT 具有以下的优势 [8] :
(1)MQTT 使用发布 / 订阅范式,可以提供双向的链接。
(2)MQTT 带有 QoS(Quality of Service)功能,对于容量有限的网络可以提供高传输保证,共有三个 QoS 等级 :保证尽力交付 ;保证消息至少传送一次 ;保证每个消息仅被对方接收一次。
(3)MQTT 带有遗言(Last Will and Testament)和保留信息(Retained Messages)功能,前者使客户端在异常离线之后服务端能及时接收到客户端异常离线的信息,后者使上线后客户端能及时接收到服务端发送的信息。

一种 MQTT 连接(QoS 0)的示例如图 3 所示。

图 3 一种 MQTT 连接(QoS 0)的示例

表 1 为分别使用两种方式请求云服务器 10 次,并收到服务器返回字符串 {“hello”:“world”} 字符串的抓包统计数据,从统计结果可知,MQTT 协议相较于 HTTP GET 方式在传送数据包个数以及数据包长度上均有明显优势。

表 1 MQTT 协议和 HTTP 协议网络流量统计

本次使用的 MQTT Broker 为 EMQX,其提供有方便的Docker 部署以及便利的仪表板可用作 Broker 的管理和信息的发送接收,通过编写 Dockerfile 和 Docker-composer 封装成容器之后,可以在其他服务器中简单的配置好环境,配置环境如命令如下 :

$ docker pull emqx/emqx :v3.1.0
$ docker run -d --name emqx31 -p 1883 :1883 -p 8083 :8083 -p 8883 :8883 -p 8084 :8084 -p 18083 :18083 emqx/emqx :v3.1.0

当 Broker 收到消息后转发给服务器后端进行处理,本例服务器端采用Eclipse Paho MQTT Python Client接收Broker转发的信息。Eclipse Paho MQTT Python Client除了支持以非阻塞的模式运行以外,还提供了许多回调函数可供在不同情况下使用与处理回调信息 [9]。
本文通过使用on_message回调函数,自动将MQTTClient接收到的信息存储到变量msg中,再通过调用自行编写的write_payload函数传递给主程序进行处理。多线程架构如图 4 所示。

图 4 多线程架构

为了提高服务器后端的工作效率, 本文中分别对RESTful API和MQTTClient创建了一个进程, 通过使用threading库调度两个线程协同运作。

3.2 基于 RESTful API 的服务器与 APP 通信部分设计

表现层状态转换(Representational State Transfer,REST)是Roy Thomas Fielding于2000年在他的博士论文 [10] 中提出来的一种万维网软件架构风格,目的是便于不同软件 /程序在网络中互相传递信息。
RESTful API 将服务器上存储的数据抽象成为一个资源,并用 URL 作为其标识,使用通用的 HTTP 请求方法(GET,POST,PUT,DELETE)对其进行增改删查的操作。相较于普通的 API,RESTful API 建模的过程与面向对象的建模过程类似,因此也比较契合 Python 的编程思想。

服务器后台程序基于以上原理使用 Python 进行编写。Python 有非常方便的库用于构建 RESTful API 和处理 Json格式数据,同时也可以移植到其他系统。本文中 APP 使用wx.reguest 向服务器请求数据后可以直接解析调用,十分方便。
APP 分为总览、车辆管理和包裹管理三部分。总览部分可以看到一些基本的统计信息,车辆管理部分可以对小车进行下线和召回等的管理,包裹管理可以对包裹进行新增、修改、分配小车运送等的管理。APP 界面如图 5 所示。

​​​​第六期“全国移动机器人行业巡回调研活动”合作商招募中

​报名热线:400-0756-518​​​​

活动时间:2023-09-01至11-30

  • 旷视接待21国驻华使节 共探智慧城市新机遇
  • 优必选与东风柳汽签订人形机器人采购合同,已收到预付款
  • 受邀参加央视《赢在AI+》,九曜智能亮相2050大会
  • 破解具身智能"数据困局"!松灵发布具身数据服务方案
  • 亮相LogiMAT China!磅旗科技携医药全场景AI无人化方案圈粉无数!
  • 安森美:AMR移动机器人一站式解决方案供应商,站在“巨人的肩膀上”平地高楼起
  • 大模型技术助力交管智能升级,海康威视亮相第十五届交博会
  • 天链机器人亮相成都工博会 以创新科技驱动产业升级