第一章:项目概述与硬件选型
各位同学,大家好。我是你们这门课的老朋友。
做嵌入式开发这么多年,我越来越觉得,选对芯片和模块,项目就成功了一半。今天咱们要聊的充电宝租借终端,说白了就是个「无人值守的共享充电宝小卖部」。你想想看,用户扫码、借出、归还、扣费,这一套流程背后,硬件得扛得住7x24小时不间断运行。
1.1 功能需求分析
先别急着看芯片手册。咱们得把需求理清楚。
这个终端要干哪些活?我列了个清单:
- 用户交互:用户扫码后,终端要能识别订单,打开对应的锁。
- 通信能力:得跟云端服务器实时通信,上报状态、接收指令。
- 电量管理:每个充电宝的电量得实时检测,低于20%得提醒运维。
- 安全控制:电磁锁得可靠,不能误开,也不能打不开。
- 信息显示:屏幕上要显示二维码、设备状态、操作指引。
嗯,这里要注意。很多新手容易忽略「异常处理」需求。比如网络断了怎么办?锁卡住了怎么办?我在项目中遇到过,用户借了充电宝,锁死活弹不开,最后只能人工介入。所以设计时一定要考虑「掉线模式」和「手动复位」机制。
1.2 系统架构设计
整体架构其实不复杂。我习惯把它分成三层:
| 层级 | 组成 | 职责 |
|---|---|---|
| 应用层 | 云端服务器、手机APP | 订单管理、支付、数据统计 |
| 通信层 | 4G模块、MQTT协议 | 数据上传、指令下发 |
| 控制层 | STM32主控、外设驱动 | 锁控制、电量采集、显示驱动 |
说白了,STM32就是那个「大脑」。它负责接收云端的指令,然后指挥各个外设干活。同时,它也要把本地采集到的数据(比如电量、温度)打包上传。
核心设计思路:主控芯片不直接处理业务逻辑,只做「指令翻译」和「硬件控制」。业务逻辑全部交给云端。这样后期升级维护会轻松很多。
1.3 主控芯片选型:STM32F103C8T6
为什么选这颗芯片?我给大家算笔账。
STM32F103C8T6,江湖人称「F103小蓝板」。它的优势很明显:
- 性价比高:零售价不到10块钱,批量更便宜。做产品嘛,成本是第一关。
- 性能够用:72MHz主频,64KB Flash,20KB RAM。跑个FreeRTOS、处理几个外设,绰绰有余。
- 生态成熟:库函数、HAL库、各种开源项目,网上资料一抓一大把。遇到问题好解决。
- 外设丰富:USART、I2C、SPI、ADC、GPIO,该有的都有。
我的个人经验:如果你只是做原型验证,用「最小系统板」就行。但如果是量产,建议直接用贴片封装,自己画PCB。我曾经因为用了排针连接的开发板,结果在震动测试中频繁接触不良,教训深刻。
当然,它也有短板。比如Flash只有64KB,如果你要跑复杂的GUI或者OTA升级,可能有点紧张。但咱们这个项目,64KB完全够用。
1.4 外设模块选型
接下来聊聊各个外设。我一个个说。
4G模块:Air724UG
通信是终端的生命线。我选的是Air724UG,原因有三:
- 支持4G全网通,移动、联通、电信都能用。
- 内置TCP/IP协议栈,AT指令操作,开发简单。
- 功耗控制不错,待机时电流能降到几毫安。
嗯,这里要提醒一下。4G模块的天线布局很重要。我在项目中遇到过,天线离金属外壳太近,信号直接掉了20dB。后来把天线引到外壳顶部,问题才解决。
读卡器:RC522
用户扫码后,终端怎么知道哪个充电宝被借走了?靠的是读卡器识别充电宝上的RFID标签。
RC522是13.56MHz的高频读卡器,支持Mifare卡。成本低、稳定性好。通过SPI接口跟STM32通信,读写距离大概3-5厘米。
避坑指南:我曾经遇到过RC522读卡距离忽远忽近的问题。后来发现是电源纹波太大。给RC522单独加了个LDO稳压,问题就消失了。所以,模拟电路部分的电源一定要干净。
电磁锁:推拉式电磁铁
充电宝的锁,说白了就是个电磁铁。通电吸合,断电释放。
我选的是12V推拉式电磁铁,吸力5N左右。驱动方式很简单:用MOS管控制通断。但要注意,电磁铁是感性负载,断电时会产生反向电动势。一定要加续流二极管,否则容易烧MOS管。
电量检测:电阻分压+ADC
充电宝的电量怎么测?最直接的方法就是测电池电压。
用两个精密电阻分压,把电池电压降到0-3.3V范围,然后送进STM32的ADC引脚。STM32的ADC是12位的,精度够用。
但要注意,锂电池的电压和电量不是线性关系。我一般会建一个查表,把电压值映射成百分比。这个表需要实际测试标定。
显示屏:0.96寸OLED
显示部分,我选了SSD1306驱动的OLED屏。128x64分辨率,I2C接口,功耗极低。
为什么不用LCD?因为OLED在户外阳光下看得更清楚。而且它不需要背光,省电。
总结一下:这套硬件方案,成本控制在50元以内(不含充电宝本身),性能稳定,开发周期短。如果你手头有这些模块,现在就可以开始搭电路了。
好了,第一章的内容就到这里。下一章咱们聊聊「STM32开发环境搭建与工程模板创建」。到时候我会手把手教你怎么建一个干净、可复用的工程。