这是一份关于如何将芯步“智能2路交流远程控制模块”集成到无人售货机软件项目中的解决方案。
1. 为什么需要这个“两路”控制器?
在无人售货机(特别是格子柜或弹簧螺旋货道机型)的实际场景中,仅控制电机转动是不够的,辅助仓位控制往往决定了用户体验的好坏。
以最常见的“饮料+外卖柜”组合为例:
第一路(控制主柜):控制弹簧电机转动,将商品“推”出货道。
第二路(控制加热/制冷/照明):控制柜内的压缩机或灯带开关。
芯步的这款 UNI-KZQ-AC-2 智能控制器,本质上是一个 Wi-Fi 继电器。它就像一个可以用网络控制的“开关”,负责切断或接通 220V 交流电。把它装进步进电机或灯带的供电线路中,软件项目就能远程“按下开关”。
2. 硬件接线:怎么看这个“两路”?
在写代码之前,需要明确物理接线,这直接影响代码逻辑:
输入侧:接入 220V 交流电(L 火线,N 零线)。
输出侧
线路 1 (Power1):连接“货道 1”的电机供电线或“主柜灯带”。
线路 2 (Power2):连接“制冷模块”或“加热模块”。
软件层只需要记住:给 Power1 通断指令,就是控制售货机出料;给 Power2 通断指令,就是控制环境设备。
3. 核心集成步骤:HTTP 接口调用
芯步的接口比较友好,不需要处理复杂的 TCP 长连接,只要设备连上网,你的后端服务器直接发 HTTPS 请求即可,任何编程语言(Java, Python, Go, PHP)都能做。
第一步:准备三要素
在芯步的控制台里找到以下三个关键值:
AppID:你的应用 ID,相当于“账号”。
AppSecret:你的密钥,相当于“密码”,用于签名。
Device ID:设备的序列号,贴在控制器壳上的那个数字。
第二步:搞定签名(这是关键点)
芯步的接口通过 sign 和 ts(时间戳)来防止篡改。签名的生成算法(伪代码)如下:
第三步:下发控制指令(最核心的 API)
这是集成中最常调用的接口地址:POST https://api.thingboot.com/{你的AppID}/device/control/
假设你的售货机接到用户扫码支付成功的回调,需要出货(控制第一路接通 1 秒后断开,模拟点动),具体操作如下:
请求体案例(控制货道电机“点动”):
注意:如果需要延迟断开,可以在代码里写 sleep(1) 再发一条 "power1": 0 的指令。如果硬件支持,也可以直接使用 reset1(先断后通)或 point1(先通后断)命令来复位。
控制加热/制冷(第二路):如果运营人员在后台点击“开启保温”:
第四步:获取执行结果(异步消息)
硬件接口返回的 code 200不代表电机真的转了,只代表命令成功发到了云端。
为了确认电机是否真的把货推出了,配置消息推送在芯步控制台配置一个 HTTP 回调地址(或使用 MQTT)。当设备真正执行了命令后,云端会给你的服务器发一个 Webhook,包含 extra 字段里的订单号。收到这个通知后,再给用户发“请取货”的通知,逻辑最严谨。
4. 软件逻辑中的“坑”与优化
在集成过程中,针对“两路”控制,有两个特别实用的经验:
① 关于“互锁”逻辑由于这个控制器只有两路,如果同时控制“加热”和“制冷”,物理上它们是同一设备,绝对不能同时通电。:在软件代码里加上判断逻辑: