如何使树莓派驱动GPIO屏幕并显示

总结一下我安装各种树莓派系统驱动GPIO屏幕的经验。

GPIO屏幕是什么

有两排针脚可以插在树莓派上的那种屏幕。

驱动安装

首先克隆git仓库:LCD-show,然后根据你的屏幕型号(一般就写在屏幕背面)运行对应脚本。详细说明请阅读该仓库Readme。

如何令屏幕显示内容

Raspbian桌面版

恭喜你,对于有xserver的系统来说,你的屏幕应该已经正常显示了。如果出现了tty only的系统不显示的问题请往下看。

原理

Linux系统提供了若干虚拟终端/dev/ttyx,其中x是数字编号,0是第一个。一般来说,树莓派的Linux系统总是默认显示到tty0里,而将tty1分配给HDMI。因此,使GPIO屏幕显示内容,就有两种做法:

  1. 设置tty1默认显示到GPIO屏幕上;
  2. hdmi的输出复制到GPIO屏幕上。

第一种办法

/boot/cmdline.txt文件行末(只有一行,务必不要再加行)添加以下内容:

1
fbcon=map:10 fbcon=font:ProFont6x11

该方法适用于刷新率不高的屏幕比如LCD-xx。有关fbcon各类参数的文档请看这里

第二种办法

如果你的屏幕像素足够,可以考虑令GPIO屏幕显示跟HDMI一样的内容。 rpi-fbcp可以实现上述功能。先提供一段bash代码供参考(从LCD-show中摘抄出来并添加注释):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 从 GitHub 克隆仓库
sudo git clone https://github.com/tasanakorn/rpi-fbcp
# cmake 之后 make
sudo mkdir ./rpi-fbcp/build
cd ./rpi-fbcp/build/
sudo cmake ..
sudo make
sudo install fbcp /usr/local/bin/fbcp
cd - > /dev/null
# 测试是否安装成功
type fbcp > /dev/null 2>&1
# 接下来的部分可以手动实现
if [ $? -eq 0 ]; then
# 在 xserver 里注册该组件,不装桌面的系统可以跳过了
sudo cp -rf ./usr/99-fbturbo-fbcp.conf /usr/share/X11/xorg.conf.d/99-fbturbo.conf
# 相当于在 /etc/rc.local 里添加一行 fbcp &,即开机自启动
sudo cp -rf ./etc/rc.local /etc/rc.local
fi

该方法适用于刷新率高的屏幕比如MHS-*

HDMI分辨率

使用了fbcp,我们当然希望HDMILCD保持一致的分辨率。

编辑/boot/config.txt,添加或修改以下设置:

1
2
3
4
5
6
7
8
# frame buffer
framebuffer_width=480
framebuffer_height=320

# hdmi
hdmi_group=2
hdmi_mode=87
hdmi_cvt 480 320 60 4 0 0 0

其中,framebuffer_*设置为和LCD屏幕分辨率一样的数值,hdmi_mode=87意为最大化适配LCD屏幕(可以发现,hdmi_mode的其他数值没有支持长宽比3:2的屏幕的)。 hdmi_cvt的前三个参数分别为长、宽和帧率,第四个参数是缩放比例,4意为5:4。

控制台字体

1
sudo dpkg-reconfigure console-setup

运行上方指令,一路选择UTF-8Guess optimal character setTerminusBold8x16,获得在3.5LCD屏幕上也能看清的字体大小。一般来说这是即时生效的,不需要重启。

Fin.

0条搜索结果。