1. 项目全景与硬件选型:自动售货机系统架构、核心硬件选型与成本分析

大家好,欢迎来到《自动售货机嵌入式系统从零起步》的第一章。

说实话,做自动售货机这个项目,我一开始是有点犹豫的。为什么?因为市面上方案太多了,从51单片机到树莓派,从步进电机到直流电机,选型稍有不慎,后面就是无底洞。但反过来想,这恰恰是嵌入式工程师最该掌握的能力——在成本、性能、可靠性之间找到平衡点。

今天我们就来聊聊,一个自动售货机到底由哪些部分组成,核心硬件怎么选,以及——嗯,钱花在哪儿最值。

1.1 系统架构:自动售货机到底长什么样?

先画个全景图。自动售货机说白了就是一个「收钱-出货-找零」的闭环系统。但拆开来看,它包含这几个核心模块:

  • 主控单元:大脑,负责调度一切
  • 支付模块:纸币器、硬币器、扫码支付(现在主流)
  • 货道驱动:电机+弹簧/履带,把商品推出来
  • 传感器系统:检测出货是否成功、缺货报警、门状态等
  • 人机交互:按键、显示屏、指示灯
  • 通信模块:4G/WiFi,用于远程监控和补货

我习惯把系统分成三层:感知层、控制层、执行层。感知层负责「看」和「听」,控制层负责「想」,执行层负责「做」。这样分层,调试的时候思路特别清晰。

核心要点:自动售货机的本质是一个「状态机」——等待投币 → 选择商品 → 检测库存 → 驱动出货 → 确认成功 → 找零/结束。每一步都有状态转移,每一步都可能出错。

1.2 主控选型:为什么我选了STM32?

主控芯片的选择,我建议从这几个维度考虑:

  • 外设资源:需要多少路GPIO?几路PWM?几个串口?
  • 处理能力:要不要跑RTOS?要不要做图形界面?
  • 成本:批量采购单价多少?开发工具贵不贵?
  • 生态:资料多不多?遇到问题能不能搜到答案?

我个人最推荐的是 STM32F103C8T6,也就是大家常说的「蓝 pill」或者「C8T6」。为什么?

参数 STM32F103C8T6 备注
内核 Cortex-M3 @ 72MHz 够用,不浪费
Flash/RAM 64KB / 20KB 裸机或轻量RTOS都行
GPIO 37个 控制10个货道绰绰有余
定时器 3个通用+1个高级 PWM驱动电机刚好
串口 3个USART 一个给支付模块,一个给通信,一个调试
单价(批量) 约8-12元 性价比极高

我在项目中遇到过用国产替代芯片的情况,比如GD32、AT32。说实话,性能不差,但坑比较多——比如ADC的线性度、定时器的PWM对齐方式,跟ST原厂有细微差别。如果你刚入门,我建议先用ST的,稳定第一。

我的小技巧:选型时多留几个GPIO备用。我曾经因为少算了一个「门锁检测」的IO口,被迫改PCB,多花了两周时间。嗯,血的教训。

1.3 电机驱动:步进还是直流?

自动售货机的货道驱动,主流方案有两种:

  • 直流减速电机 + 弹簧:便宜、简单,但控制精度低
  • 步进电机 + 履带:精度高、噪音小,但成本高

怎么选?看你的商品类型。

如果是卖饮料、零食这种标准包装,直流电机就够了。电机转一圈,弹簧推一格,商品掉下来。我做过一个项目,用 N20微型直流减速电机,减速比1:100,6V供电,堵转电流约300mA。驱动芯片用 L9110S,一个芯片控制两路电机,成本不到2块钱。

如果是卖盒饭、易碎品,我建议用步进电机。步进电机可以精确控制旋转角度,配合履带,能把商品「温柔地」送到出货口。驱动芯片推荐 A4988DRV8825,带细分功能,运行更平滑。

避坑指南:我曾经在一个项目中,直流电机驱动直接接了IO口,没加续流二极管。结果电机反转时产生的反电动势直接把IO口烧了。后来老老实实加了 1N4007 续流二极管,再也没出过问题。

1.4 传感器选型:怎么知道货卖出去了?

传感器是自动售货机的「眼睛」。没有传感器,你永远不知道商品有没有掉下来,货道是不是空了。

常用的传感器有这几类:

  • 红外对射传感器:检测商品是否通过出货口。便宜,但容易受灰尘干扰
  • 微动开关:检测货道是否缺货。简单可靠,但需要机械接触
  • 霍尔传感器:检测电机是否转动。可以判断电机是否堵转
  • 称重传感器:检测货道重量变化。精度高,但成本也高

我个人的经验是:红外对射 + 微动开关 是最实用的组合。红外对射装在出货口,商品掉下来时遮挡光线,触发信号。微动开关装在货道底部,商品压住开关,缺货时开关弹起。

成本方面,红外对射模块(比如E18-D80NK)大概5-8元一个,微动开关几毛钱一个。一个10货道的机器,传感器成本控制在100元以内。

关键点:传感器不是越多越好。我见过有人给每个货道装了两个红外对射,结果调试时互相干扰,反而更不稳定。够用就好,别过度设计。

1.5 成本分析:钱花在哪儿最值?

最后我们来算一笔账。以一个10货道的自动售货机为例,核心硬件成本大概这样:

模块 型号/方案 单价(元) 数量 小计(元)
主控 STM32F103C8T6 10 1 10
电机驱动 L9110S 2 5 10
直流电机 N20 1:100 3 10 30
红外对射 E18-D80NK 6 1 6
微动开关 普通型 0.5 10 5
电源模块 12V/5V双输出 15 1 15
显示屏 128x64 OLED 25 1 25
通信模块 ESP8266 8 1 8
合计 约109元

你看,核心硬件成本其实不到150元。但注意,这只是BOM成本。实际做产品还要考虑PCB打样、外壳开模、认证费用等等。不过作为学习项目,这个成本完全可以接受。

我个人建议,预算有限的话,优先把钱花在 电机和传感器 上。主控芯片差几块钱影响不大,但电机如果扭矩不够,商品卡在货道里,那才是大麻烦。

省钱小技巧:电源模块可以用旧手机充电器改,5V/2A的输出,带10个电机绰绰有余。我第一个原型机就是这么干的,省了50块钱。

小结

这一章我们聊了自动售货机的系统架构,主控、电机驱动、传感器的选型思路,还有成本分析。说白了,选型就是一场「权衡游戏」——性能、成本、可靠性,你总得放弃一个。

下一章,我们会开始搭建开发环境,点亮第一颗LED。嗯,从最简单的开始,一步步来。

有什么问题,欢迎在评论区留言。我们下章见。