本文章来自程序汪背后的私活小团队,开发的共享口罩售卖机的小程序,希望把这些真实案例分享出来,大家能学到点东西,比如硬件怎么通过手机蓝牙操控,商业项目怎么推广,软件怎么和硬件配合,自动售卖机技术方案是什么样的等等。
B站【我是程序汪】有具体视频说明
下面是测试机器设备
人员及技术选型情况
前端 技术栈 vue 小程序及PC端页面
后端 TPshop(二开商城)
硬件部分用 C 修改的协议 控制板
硬件周期20天(研发+硬件制作)
软件开发周期30天
开发人数 2人
数据库Mysql
整体费用是8万
小程序蓝牙接口
走的公司合同
阿里云服务器1台
项目背景
疫情当下口罩需求已经是刚需了,去医院去银行等等公共场所都需要带口罩进去,有时候大家也经常忘记带口罩,这个时候如果有一个自动口罩售卖机就非常方便了,程序汪这个项目就是在这个背景下诞生
小程序(蓝牙API)
蓝牙控制,这跟程序汪以前接的共享充电宝项目类似
小程序本身功能比较简单,核心就是一个扫码下单购买口罩的功能
注意支付成功和调用蓝牙接口通知吐口罩是找一个事物里,口罩吐成功会上行反馈结果然后更新订单的状态。
PC端
目前主要功能
PC端基本功能如下列菜单,其实就是一个电商的项目拿过来改吧改吧,反正核心流程就是下单购买口罩,目前商品很单一就是口罩而已
下面就是一个商城的后台管理系统拿过来二开下就行
这是PC管理后台的源码,二开商城可以参考下
PC后端源码 点击下方公众号
后台回复「338」即可获取项目地址
蓝牙通信协议修改
硬件厂家会把蓝牙通信协议文档提供给我们的,我们肯定需要修改的,就是加点字段什么的 (时间戳或标示什么的,具体的就不泄露了)
文档里就修改3.1 和 3.9 这两个协议
获取令牌用来鉴权是不是我们的小程序发生的连接
开锁就是小程序支付成功后吐口罩的动作
消息根据接口文档转成16进制,然后进行蓝牙传输
AES-128 密钥
加密解密DEMO
参考以下 AES-128 数据加密的 JAVA 实现:
public static byte[] Encrypt(byte[] sSrc, byte[] sKey){
try{
SecretKeySpec skeySpec = new SecretKeySpec(sKey, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(sSrc);
return encrypted; }catch(Exception ex){
return null; }
}
参考以下 AES-128 数据解密的 JAVA 实现:
public static byte[] Decrypt(byte[] sSrc, byte[] sKey){
try{
SecretKeySpec skeySpec = new SecretKeySpec(sKey, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] dncrypted = cipher.doFinal(sSrc);
return dncrypted; }catch(Exception ex){
return null;
}
硬件部分
这块不是程序汪弄的,就简单描述下啊
根据上面那个蓝牙通信接口文档开发出来的(蓝牙接口文档定义好了会丢给硬件小哥)
研发花了10天左右样子,然后送到工厂烧控制板花了10天左右
下图这玩意成本价不贵就几十元,弄好了安装到口罩售卖机里面
调用微信支付
参考资料
https://developers.weixin.qq.com/miniprogram/dev/framework/device/bluetooth.html 微信小程序蓝牙接口
点下方原文链接观看B站视频版本