做个暗金计数器吧

暗Bai金Gei计数器(StatTrak)

在CS:GO中,有些武器具有一个名为StatTrak的装置,这个装置可以记录玩家在游戏内杀敌数量。
觉得这个装置很有意思,于是想做一个出来。
preview-in-game
为了近距离观察这个装置,我斥8.8元巨资购买了一把格洛克18型(StatTrak™)|烈焰天使,并在人机对战中大杀四方。

由于只是个计数器,本质就是个可以自定义显示内容的显示屏。

方案1 = OLED12832+Arduino

谷歌一番后,发现有YouTuBe上一个老哥干过类似的事情,他使用的方案正是12832 OLED+Arduino,但是OLED只有白色和蓝色,那么如何实现游戏里的橙色效果呢?
答案就是添加一层橙色滤膜,这位老哥使用的滤膜价格起飞,还只有小小的一块。不就是个橙色塑料片吗,窗户用的就不行吗,于是我斥巨资购买了老大一张橙色半透明塑料膜。贴到了OLED上,效果还挺好的。
StatTrak_P1
我当时觉得这个太小了,不好微型化,(2020-11-21现在回想一下,已经没有太大难度了)。

方案2 = LED57+Arduino

在某宝畅游一番以后,发现并没有找到合适的点阵屏幕。不过有个30mm高的倒是符合一些要求,遂决定等比放大做出实物。
每块屏幕使用MAX7219驱动,并联起来。
电路板使用KiCad绘制,于是就有了如下的效果图。
StatTrak_P1
焊接好以后就是这样,至于为啥看起来不一样,因为…我…第一次失败了…点阵屏卖家给的资料是错的…自己测是测出来了,结果画原理图的时候,又搞错了。
preview-in-game
preview-in-game
加上一层黑色滤镜后,显示效果还凑合的样子。然而觉得外观实在是太丑了,就放弃了。
effect

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

方案3 = HDSP2072+Arduino

有次逛闲鱼,发现了有个屏幕的参数挺符合要求的,一问价格72,打扰了,就咬咬牙买了下来。
这块屏幕是上个世纪的库存了,原来是用于大哥大上的。
好在这个世纪的Arduino也可也正常驱动
然后觉得这次可以直接画一块完整的板子,不使用外接的Arduino了,是练手的好机会。
就照着SparkFun提供的Pro Micro原理图一顿抄(精简),一天时间总算是画的差不多了。
hdsp-stattrak
然后找5块钱24小时加急顺丰包邮送到家的JLC加工。24小时后,板子就到家了。
pcb
finish-pcb
不得不说,Type-C接口比QFN44还难焊.由于我是从ProMicro上拆下来的Atmega32U芯片(掏芯窝子),所以不需要烧写bootloader.

这个方案内部电路部分还是挺满意的,于是就开始着手于外壳制作,结果第一版的外壳长这样,还真是个壳子。
shell-v1
屏幕宽度占了整体宽度的一半,直接加壳子就像一个BB机一样了,或者说好像一个收音机啊。

或许我可以让PCB斜着放

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

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

让我们致敬乐视的ID无边框吧
shell-v2

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

effect-v2

参考资料

Pro Micro - 5V/16MHz
SparkFun Qwiic Pro Micro - USB-C (ATmega32U4)
Real life StatTrak
MAX7219LedMatrix
HDSP2000_Display

做个桌面像素小屏幕吧

给自己做个桌面像素小屏幕吧

展示一下自己制作迷你版本的像素显示屏的过程

背景

之前疫情期间(2020-02~2020-03)做过一个大号的像素屏幕作为生日礼物送人了,当时使用的芯片是ESP32,开发语言是micropython。
那个初号机的性能表现不是很好,所以计划做一个使用C/C++的版本,能够更高帧率运行。

如果只是纯粹的重写固件,那么和大多数人做的AWatrix就没多大区别了,所以决定做一个迷你版本的像素显示屏出来。

很多地方是参考了AWatrix的代码,因为AWatrix除了必须连接服务器才可以使用以外,真的是非常优秀的一个固件。
AWatrix使用到的一些库很具有参考价值,比FastLED_NexPixel如它把LED点阵当作一块”屏幕”来使用,可以很方便的绘制出一些基础图形。
开发工具为PlantformIO,也是一个很方便的工具了,VSCode装上插件就好了。

开始整活

0x01 绘制电路板

万能的某宝上能够找到的内置WS2812的LED贴片灯最小的就是2020LED,长宽各为2mm,比常规AWatrix使用的5050或者3535小很多。
奈何没有现成品,就只能自己画一个电路板了,好在电路非常简单,就是一个接一个,然后绕成S型就好啦。

这次选择的PCB绘制软件为Eagle PCB,因为免费小巧。(但是我打算以后用KiCad画电路图了,因为开源强大)
磨磨唧唧的画完了电路图。

然后提交Gerber文件到厂家,等待3天后就收到了成品。

0x02 焊接LED贴片灯

这一步没什么好说的,我用的是锡膏,熔点在182度,于是先涂抹在板子上,然后风枪对着就是一阵吹。

大概花费了半天时间才焊完所有的贴片灯,因为实在是太麻烦了啊,不小心就碰掉了一个,然后发生一系列连锁反应。

0x03 获取代码,修改参数

代码位于Github
下载以后,使用PlantformIO导入工程。

  • 修改位于gmatrix_config.h中的B站ID和城市以及天气的Key
1
2
3
#define SUNING_TIME_URL "http://quan.suning.com/getSysTime.do"
#define BILIBILI_SUBSCRIPTION_URL "http://api.bilibili.com/x/relation/stat?vmid=哔哩哔哩UID"
#define WEATHER_URL "http://api.openweathermap.org/data/2.5/weather?q=城市的拼音&appid=天气api"
  • 修改位于Gmartix.cpp中的WiFi名称和密码。
    1
    2
    3
    4
    // WiFi名称
    const char *ssid = "CloseWrt_9.6G_D96AS5";
    // WiFi密码
    const char *pwd = "have5seeds";
    然后直接使用PlantformIO的编译或者下载到板子

0x04 烧录固件

使用PlantformIO可以直接下载到板子上,也可也Build以后使用其他烧录工具烧录。
我使用的烧录软件是NodeMCU Firmware Programmer

插上板子选择对应的端口号,然后点击Flash就可以进行烧录了。

0x05 接线&组装

材料清单

序号 名称 数量 备注
1 WeMos D1 mini 1
2 LED板 1 自制
3 htu01d 1 温湿度传感器
4 导线 ?
5 3D打印外壳 1
6 亚克力光栅 1
7 A4纸 1
8 深色半透亚克力 1
9 后盖 1 可以采用任意材料自制

接线

WeMos D1 mini引脚名称 htu01d
5V VCC
GND GND
D3 SDA
D1 SCL
WeMos D1 mini引脚名称 LED屏幕
不接 正面从上至下第2个孔
GND 正面从上至下第2个孔
5V 正面从上至下第3个孔
D2 正面从上至下第4个孔
WeMos D1 mini引脚名称 散热风扇
5V 红线
GND 黑线

光栅制作使用的是定制亚克力,而外壳使用的3D打印,按照下图的顺序组装,需要注意的是光栅与深色半透亚克力之间需要加一层A4纸进行柔光。

0x06成品展示

参考资料:
AWatrix

materialpalette

© 2025 Do U Find IT? All Rights Reserved.
Theme by hiero