给美卡模拟/欧卡模拟2手工撸个硬件行车电脑
我是在20年前入坑SCS的《18轮大卡车:穿越美国》。后来护航,美国长途,欧卡1,极卡1/2,奥卡德卡英卡……一直玩到现在的欧卡模拟2和美卡模拟,铁杆抠门老玩家一枚。最近特别迷美国上世纪六七十年代的老卡车,这些老家伙看上去真是帅呆了:

但是唯一遗憾的是老车的仪表全是英制机械的看着相当痛苦。而我又喜欢沉浸式的游戏体验,不喜欢开HUD。于是开起来非常难受:

所以我开始琢磨为美卡和欧卡2打造一块外接行车电脑。这样即使在游戏里开老车的时候,也可以像开现代卡车一样看数显车速,设置定速巡航等。为了防止你看到这还不知道我在说啥,这里先放上最终成品的效果
当前PC上已有一个叫ETS2 Telemetry Server的开源工具可以导出游戏中卡车的实时状态数据,然后通过手机上打开一个网页来显示模拟仪表板了。所以在此基础上,我要做的只是用单片机硬件实现个客户端,代替那个手机网页来显示车辆信息即可。这需要一块带WiFi功能的开发板以及一块尽可能大的液晶屏。另外由于我一贯的抠门,总成本必须控制在30元以内
主控板选用的是上海合宙的ESP32C3开发板,包含一颗主频高达160MHz的32bit RISCV核心,400kb SRAM,内置WiFi和蓝牙,板载4MB闪存。功能性能强大无比,做工非常精细靠谱,而价格却只要9块9包邮(还能用签到红包)。实乃业界良心,国货之光:

与之对比的是青少年科技制作常用的Arduino Nano,价格10~15元,只有一颗16MHz的8bit AVR核,2kb SRAM,32k闪存,不带任何无线功能,和ESP32C3完全没法比。还在捣腾Nano的朋友不妨也试试这款,绝对有惊喜。
显示器选用带I2C模块的2004单色字符屏,这是15元以内能买到的最大尺寸屏幕
。因为主要为了打游戏不想太刺眼,选择了蓝色反显款(黄绿和灰白色的都是正显)。带I2C模块的很多家卖13元以内包邮的,找一家最便宜的买。至于液晶屏的亚克力支架,2004的就我买的这家店最便宜,如果自己有3D打印机的请无视。

由于是I2C串口屏,只需要4根母对母杜邦线即可。这玩意喜欢捣鼓电子制作的家里一般都囤了上百根。要买的话也很便宜,40根1块多:

至于USB TypeC线那就自行准备了。以上硬件成本可完全控制在25元左右(用上签到和拍拍乐红包)。
全部硬件材料到货:

和常见的1602液晶屏对比,2004堪称巨屏,爽啊

给板子上锡焊排针之前先通电检查一下,上锡后就不能售后了。9块9包邮的板子这种做工,真是无可挑剔:

写个简单的程序点亮板载LED(拉高GPIO4和5),确定工作正常即可:

验货合格后就可以动手焊接配送的2排插针。如果手头有面包板的最方便的就是架在面包板上焊,这样可以保证间距准确,日后也能插入面包板里用:

这块板子的邮票孔焊盘巨大,非常好上锡。以我纯软件码农的手艺也能焊得凑合:

完成焊接后连接显示屏——大概没有比I2C屏更好接的显示屏了:VCC接5V,GND就接随便一个GND,SDA接GPIO4,SCL接GPIO5(没错,就是对应那两颗板载LED的引脚,这样与显示屏之间有数据传输时就会看见LED的亮度有变化):

硬件完成了就是软件的活。由于ESP32C3的性能和内存可以秒天秒地,C/C++,Rust,MicroPython都完全不在话下。本来做HTTP GET+JSON解析这种事情用Python是最方便的,但是我一直找不到Python能用的LCD大字体显示库(用来显示车速),只好改用C来写固件程序(项目已在GitHub开源:https://github.com/megatops/ets2_lcd_dashboard)。
用Arduino IDE刷固件时,板子选“ESP32C3 Dev Module”或“AirM2M CORE ESP32C3”,打开USB CDC(因为9块9这款没有串口芯片,需要通过USB CDC模拟串口),Flash Mode一定要选“DIO”,其它按默认即可:

然后在PC上打开ETS2 Telemetry Server,找一辆车开开,如果不出意外将看到如下显示(如果屏幕没显示,需要用螺丝刀调一调I2C模块上的一个蓝色电位器):

软硬件联调完成,后面就是安装屏幕的亚克力支架:

安装时发现2004的支架设计得非常蠢,侧面打的孔和I2C模块完全对不上(1602支架的孔是准的),没法接线

只好大力出奇迹,把排针一根一根小心掰到这个角度:

大功告成,主控板裸露的针脚用电工胶布随便贴一下做好绝缘,可以全塞到屏幕后面。那个打歪的孔正好用来过USB TypeC供电线(接充电宝或充电器):

屏幕从上到下分别是:
导航剩余里程,剩余时间
定速巡航,时速,当前路段限速
油量表,剩余油量预估里程
在欧卡2里装车跑个300公里路测,和游戏里的行车电脑对比数据完全一致
。只是剩余油量里程估算这块有点问题,因为是根据瞬时油耗计算的所以数字漂得厉害,还在与ETS2 Telemetry Server的作者沟通看有没办法解决:

一番折腾下来,在抠门的预算内完全实现了预想的功能,自己表示比较满意
。终于可以愉快地开着老爷车拉货了,擎天柱走起

完毕。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

茶杯里的下午茶
校验提示文案
platt
校验提示文案
熊樣
校验提示文案
叫我_C少
校验提示文案
tempp
校验提示文案
鹅鹅鹅2018
校验提示文案
白菜大师兄
校验提示文案
熊樣
校验提示文案
xlyags
校验提示文案
tao80
校验提示文案
那晚安小百合
校验提示文案
张老板儿啊
校验提示文案
tempp
校验提示文案
值友6365910624
校验提示文案
值友6365910624
校验提示文案
tempp
校验提示文案
鹅鹅鹅2018
校验提示文案
张老板儿啊
校验提示文案
熊樣
校验提示文案
tempp
校验提示文案
platt
校验提示文案
叫我_C少
校验提示文案
那晚安小百合
校验提示文案
tao80
校验提示文案
茶杯里的下午茶
校验提示文案
xlyags
校验提示文案
熊樣
校验提示文案
白菜大师兄
校验提示文案