做个暗金计数器吧:CS:GO StatTrak 硬件复刻全记录

暗金计数器 (StatTrak) 复刻实战

在 CS:GO 中,有些武器具有一个名为 StatTrak 的装置,这个装置可以记录玩家在游戏内的杀敌数量。觉得这个装置很有意思,于是想做一个出来。

游戏内预览图

为了近距离观察这个装置,我斥 8.8 元巨资购买了一把 格洛克18型(StatTrak™)|烈焰天使,并在人机对战中大杀四方。


方案迭代历程

由于只是个计数器,本质就是个可以自定义显示内容的显示屏。但要做到「形神兼备」,选型和细节设计非常关键。

方案 1:OLED 12832 + Arduino

谷歌一番后,发现 YouTube 上有位老哥干过类似的事情,他使用的方案正是 12832 OLED + Arduino

问题:OLED 只有白色和蓝色,那么如何实现游戏里的橙色效果呢?

解决方案:添加一层橙色滤膜。这位老哥使用的滤膜价格起飞,还只有小小的一块。不就是个橙色塑料片吗?窗户用的就不行吗?于是我斥巨资购买了老大一张橙色半透明塑料膜,贴到了 OLED 上,效果还挺好的。

OLED 方案效果图

我当时觉得这个太小了,不好微型化。(2020-11-21 现在回想一下,已经没有太大难度了)


方案 2:LED 点阵屏 + MAX7219

在某宝畅游一番以后,发现并没有找到合适的点阵屏幕。不过有个 30mm 高的倒是符合一些要求,遂决定等比放大做出实物。

技术要点 详情
驱动芯片 MAX7219(SPI 接口级联)
点阵规格 8x8 LED 模块 x N
PCB 设计 KiCad 绘制

StatTrak PCB 渲染图

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

焊接失败 - 正面
焊接失败 - 背面

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

最终效果 - 方案2

真的丑啊,我是在什么情况下才会有要使用黑色记号笔涂黑的念头啊。


方案 3:HDSP2072 古董屏 + 自制核心板

有次逛闲鱼,发现了有个屏幕的参数挺符合要求的,一问价格 72,打扰了。不过咬咬牙还是买了下来。

这块屏幕是上个世纪的库存了,原来是用于大哥大上的。

硬件规格 详情
屏幕型号 HDSP-2072
主控芯片 ATmega32U4(从 Pro Micro 上拆下)
接口 Type-C(16P)
PCB 工艺 JLC 5元24小时加急顺丰包邮

好在这个世纪的 Arduino 也可以正常驱动

然后觉得这次可以直接画一块完整的板子,不使用外接的 Arduino 了,是练手的好机会。就照着 SparkFun 提供的 Pro Micro 原理图一顿抄(精简),一天时间总算是画的差不多了。

HDSP StatTrak PCB 设计

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

PCB 成品
焊接完成

不得不说,Type-C 接口比 QFN44 还难焊

由于我是从 Pro Micro 上拆下来的 ATmega32U4 芯片(掏芯窝子),所以不需要烧写 bootloader。


外壳设计迭代

这个方案内部电路部分还是挺满意的,于是就开始着手于外壳制作。

外壳 V1:BB 机风格(失败)

外壳 V1

屏幕宽度占了整体宽度的一半,直接加壳子就像一个 BB 机一样了,或者说好像一个收音机。

或许我可以让 PCB 斜着放……

或者就让他有这个大下巴了,我是救不了了……

不行,不可以在这里妥协啊!于是被迫想出了第二个方案。

外壳 V2:ID 无边框设计

让我们致敬乐视的 ID 无边框吧!

外壳 V2 设计

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

最终效果 - V2


技术要点总结

阶段 踩坑点 经验教训
方案 1 OLED 尺寸过小 先做尺寸验证再决定方案
方案 2 点阵屏引脚资料错误 永远自己测量验证,不要盲信卖家资料
方案 2 外观过于粗糙 外观设计应与电路设计同步进行
方案 3 Type-C 焊接困难 准备助焊剂和细尖头烙铁
方案 3 外壳比例失调 考虑「ID 无边框」等视觉欺骗手法

项目开源

本项目的所有设计文件(原理图、PCB、固件代码)均已开源,欢迎参考和改进。


参考资料

做个暗金计数器吧:CS:GO StatTrak 硬件复刻全记录

https://chaosgoo.com/2020/11/20/StatTrak/

作者

Chaos Goo

发布于

2020-11-20

更新于

2026-01-18

许可协议