做个暗金计数器吧:CS:GO StatTrak 硬件复刻全记录
暗金计数器 (StatTrak) 复刻实战
在 CS:GO 中,有些武器具有一个名为 StatTrak 的装置,这个装置可以记录玩家在游戏内的杀敌数量。觉得这个装置很有意思,于是想做一个出来。

为了近距离观察这个装置,我斥 8.8 元巨资购买了一把 格洛克18型(StatTrak™)|烈焰天使,并在人机对战中大杀四方。
方案迭代历程
由于只是个计数器,本质就是个可以自定义显示内容的显示屏。但要做到「形神兼备」,选型和细节设计非常关键。
方案 1:OLED 12832 + Arduino
谷歌一番后,发现 YouTube 上有位老哥干过类似的事情,他使用的方案正是 12832 OLED + Arduino。
问题:OLED 只有白色和蓝色,那么如何实现游戏里的橙色效果呢?
解决方案:添加一层橙色滤膜。这位老哥使用的滤膜价格起飞,还只有小小的一块。不就是个橙色塑料片吗?窗户用的就不行吗?于是我斥巨资购买了老大一张橙色半透明塑料膜,贴到了 OLED 上,效果还挺好的。

我当时觉得这个太小了,不好微型化。(2020-11-21 现在回想一下,已经没有太大难度了)
方案 2:LED 点阵屏 + MAX7219
在某宝畅游一番以后,发现并没有找到合适的点阵屏幕。不过有个 30mm 高的倒是符合一些要求,遂决定等比放大做出实物。
| 技术要点 | 详情 |
|---|---|
| 驱动芯片 | MAX7219(SPI 接口级联) |
| 点阵规格 | 8x8 LED 模块 x N |
| PCB 设计 | KiCad 绘制 |

焊接好以后就是这样,至于为啥看起来不一样……因为我第一次失败了。点阵屏卖家给的资料是错的,自己测是测出来了,结果画原理图的时候又搞错了。


加上一层黑色滤镜后,显示效果还凑合的样子。然而觉得外观实在是太丑了,就放弃了。

真的丑啊,我是在什么情况下才会有要使用黑色记号笔涂黑的念头啊。
方案 3:HDSP2072 古董屏 + 自制核心板
有次逛闲鱼,发现了有个屏幕的参数挺符合要求的,一问价格 72,打扰了。不过咬咬牙还是买了下来。
这块屏幕是上个世纪的库存了,原来是用于大哥大上的。
| 硬件规格 | 详情 |
|---|---|
| 屏幕型号 | HDSP-2072 |
| 主控芯片 | ATmega32U4(从 Pro Micro 上拆下) |
| 接口 | Type-C(16P) |
| PCB 工艺 | JLC 5元24小时加急顺丰包邮 |
然后觉得这次可以直接画一块完整的板子,不使用外接的 Arduino 了,是练手的好机会。就照着 SparkFun 提供的 Pro Micro 原理图一顿抄(精简),一天时间总算是画的差不多了。

然后找 JLC 24小时加急。24小时后,板子就到家了。


不得不说,Type-C 接口比 QFN44 还难焊。
由于我是从 Pro Micro 上拆下来的 ATmega32U4 芯片(掏芯窝子),所以不需要烧写 bootloader。
外壳设计迭代
这个方案内部电路部分还是挺满意的,于是就开始着手于外壳制作。
外壳 V1:BB 机风格(失败)

屏幕宽度占了整体宽度的一半,直接加壳子就像一个 BB 机一样了,或者说好像一个收音机。
或许我可以让 PCB 斜着放……
或者就让他有这个大下巴了,我是救不了了……
不行,不可以在这里妥协啊!于是被迫想出了第二个方案。
外壳 V2:ID 无边框设计
让我们致敬乐视的 ID 无边框吧!

只要不点亮屏幕,你就永远无法知道我的实际显示区域是多少。

技术要点总结
| 阶段 | 踩坑点 | 经验教训 |
|---|---|---|
| 方案 1 | OLED 尺寸过小 | 先做尺寸验证再决定方案 |
| 方案 2 | 点阵屏引脚资料错误 | 永远自己测量验证,不要盲信卖家资料 |
| 方案 2 | 外观过于粗糙 | 外观设计应与电路设计同步进行 |
| 方案 3 | Type-C 焊接困难 | 准备助焊剂和细尖头烙铁 |
| 方案 3 | 外壳比例失调 | 考虑「ID 无边框」等视觉欺骗手法 |
项目开源
本项目的所有设计文件(原理图、PCB、固件代码)均已开源,欢迎参考和改进。
参考资料
做个暗金计数器吧:CS:GO StatTrak 硬件复刻全记录

