本文章来自程序汪背后的私活小团队,线上娃娃机的项目,希望把这些真实案例分享出来,大家能学到点东西,比如硬件怎么通过手机APP操控,软件怎么和硬件配合,在线娃娃机方案是什么样的等等。
B站【我是程序汪】 (变秃了也变强了)
<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="FirVTcn4-1711625575473" src="https://player.bilibili.com/player.html?aid=218526621"></iframe>程序汪8万接的线上娃娃机项目,开发周期40天
今年行情变差了,私活项目也变少了,客户价格压的也越来越卷啊,建议大家一定先把本职工作做好,有额外精力可以考虑接点
开发人员(2人)
-
前端 uniapp APP
-
后端 技术栈 springboot
-
开发周期40天
-
开发人数 2人 1软1硬
-
整体费用是8万(硬件3万软件5万)
-
走的公司合同
-
云服务器1台 4核8G
技术选型
-
核心框架:Spring Boot
-
数据库连接池:Druid
-
数据库:mysql
-
MQTT Apollo
-
APP uniapp
1.Apollo下载
下载地址:http://activemq.apache.org/apollo/download.html
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议
详细需求
我们也是在原有盲盒项目上改造的,从头开发真要累死,功能还是满多的,包含了电商(积分商城)的所有功能
项目背景
由于疫情影响线下的娃娃机如今搬到了线上。所谓在线抓娃娃,是通过手机APP操控线下真实的娃娃机。这个娃娃机可能安置在某个仓库内,而你随时随地都可玩,摄像头会直播抓取过程,程序汪发现这几年疫情会导致产生很多类似的在线游戏诞生。
远程操控
这里程序汪重点把硬件改造点列下
-
定制控制板,在原有的硬件设备上增加一个4G通讯模块,这部分是硬件兄弟负责
-
摄像头,需要现场直播娃娃机这里采用的海康威视的360度全景摄像头
简单描述下整个消息链路,涉及硬件部分大家有兴趣可以自己了解下串口协议
APP 后端服务----》TCP(MQTT服务器)-----〉 网络通讯(4G模块)-----》调用硬件的串口---〉最终操作娃娃机
抓娃娃机串口通信协议
下面是娃娃机硬件本身的 串口接口的部分文档内容
我们后端构建的报文数据格式就是根据本文档构建的
1、向左移动机械抓(指令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
2、向右移动机械抓(指令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
3、向前移动机械抓(指令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
4、向后移动机械抓(指令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
5、停止移动机械抓(指令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
6、机械抓执行抓取(指令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细节我不细聊了,大家可以去官网开放平台研究一波
特别说明下当软件的操作结果和硬件操作结果不一致时,平台提供了申诉功能
如下直播的画面,我们直接调用的监控摄像头的画面
硬件部分
其实目前市面上有现成对在线娃娃机的设备,甲方感觉贵才让我们自己定制下,硬件部分核心是需要开发通讯模块,方便远程操作对接。
历史私活项目案例分享
欢迎添加程序汪个人微信 itwang009 进粉丝群或围观朋友
标签:03,校验位,55,开发周期,8A,40,万接,指令,ID From: https://blog.csdn.net/u011091199/article/details/137121982