第一章:项目启动与需求分析

各位同学,咱们今天正式开课。做点钞机嵌入式软件,不是上来就写代码。我见过太多人,拿到项目就开干,结果做到一半发现硬件选错了,或者需求没搞清楚,推倒重来。那叫一个痛苦。

所以,第一章咱们先把地基打牢。说白了,就是搞清楚三件事:我们要做什么?用什么做?做到什么程度?

1.1 点钞机行业背景——这玩意儿到底有多刚需?

点钞机,听起来很传统对吧?其实它是个典型的嵌入式实时系统。我入行那会儿,点钞机还只能数张数,现在呢?冠字号码识别、鉴伪、清分,功能越来越复杂。

为什么?因为现金流通量其实没减少。银行网点、金库、大型商超,每天几百万的现金进出,人工数?不现实。点钞机的核心价值就两个字:效率准确

我个人习惯,做项目前先看市场。目前主流点钞机分三类:

  • 小型商用机:超市、药店用,速度要求不高,但价格敏感
  • 银行专用机:要求高速度、高精度,必须支持鉴伪和冠字号码
  • 清分机:面向金库,能区分新旧钞、面额,甚至残损币

咱们这个课程,目标就是做一台银行级点钞机。为什么选这个?因为它的需求最全,学完这个,其他类型你都能降维打击。

1.2 功能需求梳理——数钱不是数数那么简单

你想想看,用户把一叠钞票放进去,按个启动键,机器就哗啦啦数完了。这背后有多少功能?

我列个清单,咱们一条条过:

  1. 进钞与分张:把堆叠的钞票一张张分开,不能连张
  2. 速度控制:通常要求每分钟1000张以上,银行级要1200-1500张
  3. 计数与累加:实时显示当前张数,支持批次累加
  4. 鉴伪功能:紫外、红外、磁性、厚度等多传感器融合
  5. 冠字号码识别:OCR识别每张钞票的编号,用于溯源
  6. 面额与版别识别:区分100元、50元,以及1999版、2005版等
  7. 异常处理:半张、重张、连张、斜张,都要能检测并停机
  8. 人机交互:LCD显示、按键操作、声音提示
  9. 数据通信: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 + 多传感器 + 无刷电机。

下一章,咱们开始搭软件架构。我会从任务划分开始,一步步带你建一个能跑起来的点钞机系统。

记住一句话:好的架构,是改出来的,不是设计出来的。先跑通,再优化。