第一章:项目启动与需求分析
各位同学,咱们今天正式开课。做点钞机嵌入式软件,不是上来就写代码。我见过太多人,拿到项目就开干,结果做到一半发现硬件选错了,或者需求没搞清楚,推倒重来。那叫一个痛苦。
所以,第一章咱们先把地基打牢。说白了,就是搞清楚三件事:我们要做什么?用什么做?做到什么程度?
1.1 点钞机行业背景——这玩意儿到底有多刚需?
点钞机,听起来很传统对吧?其实它是个典型的嵌入式实时系统。我入行那会儿,点钞机还只能数张数,现在呢?冠字号码识别、鉴伪、清分,功能越来越复杂。
为什么?因为现金流通量其实没减少。银行网点、金库、大型商超,每天几百万的现金进出,人工数?不现实。点钞机的核心价值就两个字:效率和准确。
我个人习惯,做项目前先看市场。目前主流点钞机分三类:
- 小型商用机:超市、药店用,速度要求不高,但价格敏感
- 银行专用机:要求高速度、高精度,必须支持鉴伪和冠字号码
- 清分机:面向金库,能区分新旧钞、面额,甚至残损币
咱们这个课程,目标就是做一台银行级点钞机。为什么选这个?因为它的需求最全,学完这个,其他类型你都能降维打击。
1.2 功能需求梳理——数钱不是数数那么简单
你想想看,用户把一叠钞票放进去,按个启动键,机器就哗啦啦数完了。这背后有多少功能?
我列个清单,咱们一条条过:
- 进钞与分张:把堆叠的钞票一张张分开,不能连张
- 速度控制:通常要求每分钟1000张以上,银行级要1200-1500张
- 计数与累加:实时显示当前张数,支持批次累加
- 鉴伪功能:紫外、红外、磁性、厚度等多传感器融合
- 冠字号码识别:OCR识别每张钞票的编号,用于溯源
- 面额与版别识别:区分100元、50元,以及1999版、2005版等
- 异常处理:半张、重张、连张、斜张,都要能检测并停机
- 人机交互:LCD显示、按键操作、声音提示
- 数据通信:USB或串口上传数据到PC
核心要点:这些功能不是孤立的。比如鉴伪和速度是矛盾的——跑得越快,传感器采样时间越短,误判率越高。怎么平衡?这就是架构设计的艺术。
1.3 非功能需求——速度、精度、可靠性
功能需求是「做什么」,非功能需求是「做到什么程度」。我当年第一个点钞机项目,就是栽在非功能需求上。功能全实现了,但一跑起来就卡顿,客户直接退货。
咱们重点看三个指标:
| 指标 | 要求 | 我的经验 |
|---|---|---|
| 速度 | ≥1200张/分钟 | 相当于每张50ms,包括检测、识别、计数 |
| 精度 | 漏检率≤0.01%,误报率≤0.1% | 一万张里最多错一张,否则银行不认 |
| 可靠性 | MTBF≥5000小时,连续工作8小时无故障 | 电机、传感器、机械结构都要扛得住 |
避坑指南:我曾经遇到过速度指标定得太激进,结果电机选型过大,导致整机发热严重。后来不得不降速到1100张/分钟。所以,指标要留余量,别把MCU和电机跑在极限上。
还有一个容易被忽略的——实时性。点钞机是典型的硬实时系统。从传感器检测到钞票边缘,到电机调速、鉴伪算法执行,必须在几毫秒内完成。否则钞票就飞出去了。
1.4 硬件平台选型——MCU、传感器、电机
软件架构离不开硬件。我选型有个原则:够用就好,但别抠门。选太弱的MCU,后面优化到哭;选太强的,成本压不住。
1.4.1 MCU选型
点钞机需要什么?
- 主频:至少200MHz,最好带FPU(浮点运算单元)
- 内存:512KB Flash + 128KB RAM起步,冠字号码识别需要大缓存
- 外设:多路定时器、PWM、ADC、DMA、USB、UART
- 实时性:支持中断嵌套,响应时间<1μs
我个人习惯用STM32H7系列或者国产GD32F4系列。为什么?生态好,资料多,出了问题好找人问。你想想看,要是选个冷门芯片,遇到bug连个讨论的人都没有。
1.4.2 传感器选型
点钞机的传感器,说白了就是「眼睛」和「手」:
- 紫外传感器:检测钞票荧光反应,鉴伪用
- 红外传感器:检测红外透射特性,识别面额
- 磁性传感器:检测油墨磁性,真钞有特定磁分布
- 厚度传感器:检测钞票厚度,发现胶带、重张
- 图像传感器:CIS(接触式图像传感器),拍冠字号码
小技巧:传感器布局要合理。我见过一个方案,把所有传感器挤在一起,结果电磁干扰严重。建议模拟信号走线远离电机驱动,ADC采样加硬件滤波。
1.4.3 电机选型
电机是点钞机的「心脏」。常见方案:
- 步进电机:控制简单,但高速时扭矩下降快
- 直流无刷电机:效率高,寿命长,但控制复杂
- 伺服电机:精度最高,但成本也高
我推荐直流无刷电机+编码器的方案。为什么?步进电机在1200张/分钟的高速下容易丢步,伺服电机又太贵。无刷电机配合FOC(磁场定向控制),速度和精度都能满足。
嗯,这里要注意:电机驱动电路要加过流保护和温度检测。我曾经有一次,电机堵转了没检测到,直接把驱动芯片烧了。从那以后,我每个项目都加硬件保护。
小结
这一章咱们把需求理清楚了。说白了,就是:一台能高速、准确数钱,还能鉴伪和识别的嵌入式设备。硬件平台选型也定了:STM32H7 + 多传感器 + 无刷电机。
下一章,咱们开始搭软件架构。我会从任务划分开始,一步步带你建一个能跑起来的点钞机系统。
记住一句话:好的架构,是改出来的,不是设计出来的。先跑通,再优化。