MQTT上位机通讯协议详解:起终点与命令信息

需积分: 0 0 下载量 184 浏览量 更新于2024-08-05 收藏 131KB PDF 举报
本文档描述了一个上位机通讯协议,主要用于智能小车竞赛中的实时数据交换。协议通过MQTT协议进行通信,涉及到的topic包括路况信息、起终点信息、命令信息和位置信息。通讯连接信息是Broker为mqtt.gycis.me,Port为1883,Username和Password均为smartcar。MAC地址的后三段用于标识小车。 详细内容如下: 1. 路况信息:路况信息的payload由连续的record组成,每个record包含三个字节。第一个字节表示路段的起点编号,第二个字节表示终点编号,第三个字节表示路况等级。路况等级范围为0到9,数值越大代表拥堵程度越高,小车在该路段上的最高电机电压为12 - x伏特。例如,数据0x010x020x03表示从节点1到节点2的路段拥堵等级为3,意味着小车在该路段上最高只能获得9伏的电压。 2. 起终点信息:起终点信息的payload由两个字节构成,分别表示起点和终点编号。这类信息仅在每轮比赛开始时发送一次,并且有效期限为当前比赛轮次。它用于指示小车应从哪个节点出发并驶向哪个节点。 3. 命令信息:命令信息用于控制比赛的开始和结束,其payload是一个单字节的十六进制数组。当字节值为0x00时,表示比赛开始,同时电机电源开启;0x01表示小车到达终点,比赛正常结束;0x02则表示发生异常,如小车冲出赛道。上位机在比赛开始和结束时会发送相应的命令。 4. 位置信息:虽然未提供具体细节,但位置信息topic为/smartcar/{mac}/position,可推断这是用来传递小车当前的位置坐标或者状态,可能包括节点编号或其他定位数据。 在Python中,可以通过以下方式获取MAC地址的后三段,例如: ```python import re with open('/sys/class/net/wlan0/address') as f: mac = re.sub(r'.+((:\w\w){3})\n', r'\1', f.read()).replace(':', '') ``` 然后,可以使用`mac`变量来构建MQTT topic,如`/smartcar/{mac}/xxx`。 这个通讯协议对于实现智能小车竞赛的自动化管理和控制至关重要,确保了上位机与小车之间的高效、准确的信息交互,从而能够实时调整小车行为,适应不断变化的路况。