2023年底,我接手了一个自动售货机的嵌入式系统升级项目。客户的需求很明确:现有设备太"笨"了------用户投币、按键、电机转一圈出货,全程没有数据产生,库存靠人工盘点,故障靠用户打电话投诉才知道。

目标是把传统设备改造成可远程管理、可数据化运营的智能终端。
老方案为什么跑不动了
原有设备用的是基于STM32F103的单片机方案。控制逻辑倒是稳定,但功能扩展已经到头了------不支持4G远程管理、没有触摸屏接口、跑不了AI识别,连OTA升级都做不了。
2026年的自动售货机需要的能力已经完全不同了:
-
接入4G网络实现远程管理
-
通过触摸屏展示商品信息、支持多支付方式
-
高端机型甚至需要在端侧完成YOLO模型的实时推理
如果只是"出货+收钱"的逻辑,用单片机方案确实够用。但行业主流已经从纯逻辑控制转向了需要Linux/Android系统的智能终端。
方案选型:三个选项的权衡
方案A:继续用MCU(STM32MP1系列)
STM32MP1是ST推出的跨界处理器,能跑Linux,接口丰富,生态成熟。但NPU算力基本为零,跑AI模型只能靠CPU软解。如果项目定位是不需要AI识别的机型,这是一个可选项;但对于要上视觉识别的机型,这条路走不通。
方案B:NVIDIA Jetson Nano
最大的优势是CUDA生态成熟,跑YOLO有现成的优化方案,开发快。但算完BOM成本就放弃了------单套硬件成本接近RK3588方案的三倍,而且供货不太稳定。对于需要批量生产的售货机来说,成本和供应链稳定性是硬约束。
方案C:瑞芯微RK系列
最终选择了瑞芯微方案,但不同机型选了不同芯片。
弹簧机选了RK3568:四核Cortex-A55,内置1 TOPS NPU。虽然跑不了复杂的AI模型,但处理弹簧机的控制逻辑绰绰有余。外设接口需求包括:4路以上RS232串口用于连接支付模块、4G模块和触摸屏;8路以上GPIO用于控制货道电机、检测门开关和读取传感器状态。
开门柜选了RK3588:八核(4颗A76大核+4颗A55小核),内置6 TOPS算力的NPU。这个算力水平,能够在本地完成YOLO系列的实时推理。
工程中的几个坑
串口DMA丢数据:RK3568的UART接口在GPIO和UART同时高负载时,串口数据会出现CRC错误。解决方案是在设备树中调整UART的DMA缓存大小,同时降低UART波特率(从115200降到57600),实测丢包率从5%降到了0.2%以内。
Linux vs Android:操作系统选型也是一个关键决策。Linux的优势是轻量、可控、成本低;Android的优势是支付SDK生态成熟、触摸屏交互开发快。最终根据机型需求做了差异化选择。
写在最后
从STM32到RK3588,不仅仅是芯片的升级,更是整个系统架构的重构。对于正在做类似项目的开发者,我的建议是:先想清楚设备需要什么样的能力,再选芯片,而不是反过来。算力过剩是浪费,算力不足是灾难。