东风帅客,车载电脑坏了两年了,终于抽空给做了一个,windows 11 arm64 + raspberry pi 4b。

原厂

diy

实现功能:

  1. 电子模块外置,原来的机位改成了收纳空间
  2. 屏幕采用10.1英寸电容屏。微雪的屏不支持lineageOS。
  3. windows系统。对比了ubuntu、rasbian、android【国外的一个开源组弄的lineageOS,还蛮有名】,感觉这个windows 11 arm64最流畅,而且目前也没有哪家的车载电脑采用windows

模块:

  • 屏幕 * 1
  • 树莓派4b * 2,一块用来装系统,一块用来做路由器。操作系统的树莓派4b 8G内存版,做路由器的树莓派4b 2G内存版。
  • 功放模块 * 1
  • 电源模块 * 3,把车载12v降压到5V3A,分别给树莓派主板和屏幕供电
  • 开关模块,用洞洞板飞线

其他结构件均废物利用,如:

  • 收纳空间的外壳是学校里面工业设计实习学生用剩下的木板
  • 树莓派3b的支撑板是从废的亚克力板上裁下来的一块
  • 屏幕的支持结构是报废笔记本屏幕上拆下来的

问题与解决

对比尝试了raspbian arm32、ubuntu 21.04 arm64和window 11 arm64,还是windows最流畅,但是Windows由于不是官方发布,是国外的大神从预览版修改而来的,没有预置wifi的驱动,所以不支持无线网卡。为了解决这个问题,将一块2G内存的树莓派刷openwrt做路由,wifi用client模式接手机热点,桥接到以太网口,windows通过以太网口接入。

update 2021.7.31.

bug:

关机的时候直接切断电源导致

1、windows 11某应用程序配置文件丢失

2、树莓派3b上的openwrt的sd卡被置为只读,下次开机无法连接手机热点,且无法修改配置

上述问题,判断皆由非安全关机导致,解决办法:

1、开启openwrt的root账户ssh登录,且使用公钥和私钥,不用密码,这样可以实现在命令行用ssh命令免密码自动登录,适用于批处理。

2、用poweroff指令远程关机openwrt。尝试中发现openwrt的关闭过程很漫长,所以后续批处理需要判断openwrt是否已经关闭。如果不做判断,windows关闭后将失去对openwrt的控制

3、判断openwrt是否成功关闭,我采用ping命令,并判断回显中是否带有TTL字符串,如果能够ping通,则回显字符串中包含TTL,如果ping不同,则不包含TTL。

4、当openwrt关闭后,批处理关闭windows 11。

脚本代码如下:

rem @ echo off
title poweroff monitor
set ip=192.168.1.1
ssh root@%ip% poweroff

:p
timeout /nobreak /t 5
ping %ip% | find “TTL”
if %errorlevel% == 0 (
echo remote poweroff failed
goto p
)

echo remote poweroff success, shutdown local immediately
timeout /nobreak /t 3
shutdown /t 0 /f /s

最后,批处理执行关机,需要给管理员权限,这个失误耽误了我个把小时。

update 2022.7.30.

最近做了一次大升级:

  1. raspberry pi4b替换成Celeron J4125。主要为了获取视频播放高清解码的能力,树莓派无法播放4k视频,x86上很流畅
  2. 电源管理部分更换了统一的DC12vtoDC5v电源转换器。减少空间占用,走线更精简有序,便于维护管理
  3. 4个usb电源接口,主机和屏幕用2个,剩余2个保留给以后的扩展设备
  4. 屏幕下方加了支架,行车途中不会上下颠簸,保持屏幕稳定