线上娃娃机项目开发经验分享:从硬件改造到串口通信协议
线上娃娃机项目开发经验分享:从硬件改造到串口通信协议
线上娃娃机项目是一个结合了硬件控制和软件开发的物联网项目。本文将详细介绍该项目的技术选型、开发团队、开发周期、费用预算等信息,并重点描述硬件改造和串口通信协议的实现细节。
开发团队与预算
- 开发人员:2人(1软1硬)
- 开发周期:40天
- 整体费用:8万(硬件3万,软件5万)
- 技术选型
- 核心框架:Spring Boot
- 数据库连接池:Druid
- 数据库:mysql
- MQTT
- APP:uniapp
项目背景
由于疫情影响,线下的娃娃机搬到了线上。所谓在线抓娃娃,是通过手机APP操控线下真实的娃娃机。这个娃娃机可能安置在某个仓库内,而你随时随地都可玩,摄像头会直播抓取过程。
远程操控
这里重点介绍硬件改造点:
- 定制控制板:在原有的硬件设备上增加一个4G通讯模块,这部分是硬件兄弟负责
- 摄像头:采用海康威视的360度全景摄像头
简单描述下整个消息链路:
APP -> 后端服务 -> TCP(MQTT服务器) -> 网络通讯(4G模块) -> 调用硬件的串口 -> 最终操作娃娃机
抓娃娃机串口通信协议
下面是娃娃机硬件本身的串口接口的部分文档内容:
我们后端构建的报文数据格式就是根据本文档构建的
- 向左移动机械抓(指令ID:03)
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 03 03 01 无 07 55
示例:8A 03 03 01 07 55
下位机应答:
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 03 03 02 无 08 55
示例:8A 03 03 02 08 55
- 向右移动机械抓(指令ID:04)
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 03 04 01 无 08 55
示例:8A 03 04 01 08 55
下位机应答:
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 03 04 02 无 09 55
示例:8A 03 04 02 09 55
- 向前移动机械抓(指令ID:05)
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 03 05 01 无 09 55
示例:8A 03 05 01 09 55
下位机应答:
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 03 05 02 无 0A 55
示例:8A 03 05 02 0A 55
- 向后移动机械抓(指令ID:06)
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 03 06 01 无 0A 55
示例:8A 03 06 01 0A 55
下位机应答:
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 03 06 02 无 0B 55
示例:8A 03 06 02 0B 55
- 停止移动机械抓(指令ID:07)
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 03 07 01 无 0B 55
示例:8A 03 07 01 0B 55
下位机应答:
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 03 07 02 无 0C 55
示例:8A 03 07 02 0C 55
- 机械抓执行抓取(指令ID:08)
开始码 数据长度 指令ID 指令类型 指令数据 校验位 结束码
8A 04 08 01 抓力 累加和 55
示例:8A 04 08 01 C8D5 55表示要求机械抓执行抓力为 C8(200)的抓取动作
如果抓力数据为FF 表示本次抓取的抓力为机器的内部默认值
如果抓力数据为00 表示本次抓取的抓力为机器内部的中奖电压,配合模式1可以自己控制中奖概率。
具体串口文档分享地址
链接: https://pan.baidu.com/s/1AbTgitHk_WWW3xA13Rhcog 密码: gjtp
摄像头每分钟抓取
直播时是实时的
固定位置移动
软件和硬件结果不一致情况时(申述----历史视频 )
摄像头
这里我们采用的海康威视的设备,360度全景这样在线爪娃娃看的更清楚些,下面是用的播放库SDK,具体SDK细节我不细聊了,大家可以去官网开放平台研究一波
特别说明下当软件的操作结果和硬件操作结果不一致时,平台提供了申诉功能
如下直播的画面,我们直接调用的监控摄像头的画面
硬件部分
其实目前市面上有现成对在线娃娃机的设备,甲方感觉贵才让我们自己定制下,硬件部分核心是需要开发通讯模块,方便远程操作对接。
本文原文来自CSDN