1、支付模块概述:自动售货机支付系统架构、支付流程、硬件选型
大家好,我是你们的嵌入式讲师。今天咱们聊聊自动售货机的支付模块。说实话,这个模块是整个机器的“钱袋子”,搞不好会出大问题。我入行那会儿,就见过因为支付模块选型失误,整批机器返工的情况。嗯,咱们今天就把这块掰开揉碎了讲清楚。
1.1 支付系统架构:三层结构
自动售货机的支付系统,说白了就是三层结构:
- 用户交互层:扫码模块、读卡器、显示屏。用户在这层完成支付操作。
- 业务逻辑层:主控MCU。负责处理支付指令、控制出货、管理状态机。
- 通信层:4G模块、Wi-Fi模块。负责与云端服务器通信,完成订单确认和扣款。
我个人习惯把这三层画在一张图上。你想想看,用户扫码后,数据从扫码模块传到MCU,MCU再通过4G模块发给云端。云端确认后,指令原路返回,MCU控制电机出货。这个流程,一步都不能错。
核心要点:支付模块的架构设计,关键在于“隔离”。用户交互层和业务逻辑层之间要有电气隔离,防止静电损坏主控。我在项目中遇到过,因为没加隔离,雷雨天气烧了好几块主板。
1.2 支付流程:从扫码到出货
支付流程其实不复杂,但细节很多。我给大家拆解一下:
- 用户选择商品:按下货道编号,MCU记录商品信息和价格。
- 发起支付:用户打开支付APP,扫码模块读取二维码。
- 支付请求:MCU通过4G模块,将订单信息发送到支付平台。
- 支付确认:支付平台返回支付结果(成功/失败)。
- 出货指令:支付成功后,MCU控制电机出货。
- 状态更新:MCU将出货结果上报云端,更新库存。
这里有个坑,我曾经踩过。支付确认和出货指令之间,一定要加超时机制。为什么?因为4G网络可能延迟,如果用户支付成功但没收到出货指令,就会投诉。我建议超时时间设为5秒,超时后自动重试一次。
经验之谈:支付流程中,状态机设计是关键。我习惯用有限状态机(FSM)来管理,每个状态都有明确的入口和出口。比如“等待支付”状态,收到支付成功信号后,必须进入“出货中”状态,不能直接跳转到“空闲”状态。
1.3 硬件选型:扫码模块、读卡器、4G模块
硬件选型这块,我踩过的坑最多。咱们一个一个说。
扫码模块
扫码模块,说白了就是个摄像头加解码芯片。市面上主流的有两种:
- 嵌入式扫码模块:集成度高,直接输出TTL串口数据。适合空间有限的售货机。
- 外接扫码枪:性能强,但体积大。适合大型售货机。
我个人推荐用嵌入式模块,比如新大陆的EM20系列。为什么?因为它的解码速度快,而且支持多种码制。我记得有一次项目,客户要求支持微信、支付宝、银联三种码,EM20都能搞定。
避坑指南:我曾经选过一款便宜的扫码模块,结果在强光下识别率极低。后来才发现,它的感光元件没有做宽动态处理。所以选型时,一定要看“宽动态范围”这个参数,至少60dB以上。
读卡器
读卡器主要支持IC卡和NFC支付。现在主流的是13.56MHz的NFC读卡器。选型时注意三点:
| 参数 | 要求 | 说明 |
|---|---|---|
| 通信接口 | UART或I2C | UART更稳定,I2C适合短距离 |
| 读卡距离 | ≥3cm | 太近用户体验差,太远容易误读 |
| 功耗 | ≤100mA | 电池供电场景尤其重要 |
嗯,这里要注意。读卡器的天线设计很关键。我见过有人直接把模块贴在金属外壳上,结果读卡距离直接缩到1cm。正确的做法是,天线区域要避开金属,最好用塑料支架隔开。
4G模块
4G模块是支付模块的“命脉”。选型时,我主要看三点:
- 频段支持:必须覆盖国内三大运营商的频段。B1/B3/B5/B8/B34/B38/B39/B40/B41,一个都不能少。
- 功耗:待机功耗要低于10mA,否则电池供电撑不了几天。
- 协议栈:支持TCP/IP、MQTT、HTTP。MQTT我个人最推荐,因为它的心跳机制省流量。
我常用的型号是移远EC20和广和通L610。这两款我都用过,稳定性不错。不过有一次,EC20在低温环境下(-20℃)启动失败。后来加了加热电阻,问题才解决。所以,如果你在北方做项目,一定要考虑低温启动问题。
总结一下:硬件选型没有绝对的好坏,关键看你的应用场景。扫码模块看解码速度和宽动态,读卡器看天线设计和通信接口,4G模块看频段和功耗。选型前,最好做一轮“极限测试”——高温、低温、强光、弱信号,都跑一遍。我吃过这个亏,所以现在特别重视测试环节。
好了,支付模块的概述就讲到这里。下一章,咱们深入聊聊扫码模块的驱动开发。到时候我会带大家手写一个扫码模块的驱动代码,保证干货满满。