2022-4-5 16:30:16 [显示全部楼层]
24620浏览
查看: 24620|回复: 0

[教程] 【思兼】DFRobot 5寸触摸屏试用zhi一

[复制链接]

前言

原创文章,转载引用请务必注明链接, 水平有限,如有疏漏,欢迎指正交流。

收到 DFRobot 寄来的树莓派 DSI 接口 5寸彩色触摸屏有一段时间了,最近疫情看重,事情比较多,今天大概整理一些内容,抛砖引玉吧。最近迫于生活,把手里的树莓派 4b 4GB 版本卖了,然后把 RPi 3b 花 100 大洋修好了,也就是今天的主角。其实个人更喜欢 RPi 3 代,但是各代树莓派在我手里都容易坏。

1、产品简介与改动

核心参数:

  • 支持 5 点电容触控
  • 800*480 分辨率显示
  • 树莓派 DSI 显示触摸接口
  • M2.5*8 铜柱
  • M2.5*6 螺丝
  • 支持电位器调节屏幕亮度,实测最暗~最亮之间电流差异约 5v@0.2A

新版改动

image-20220404225315545

image-20220404225523892

此次试用版对比原理图,主要改动如下:

  • 主控芯片更换GD32VF103C8T6 | 旧版采用 STM32F103C8T6,目前进口芯片价格飞涨,希望更多国产芯片站出来。这也是本次最大的改动,估计是为了测试新款芯片的稳定性。
  • 电位器下方添加了 2 枚芯片:P524,TVS?具体没查到
  • 触摸接口上方添加了 2 颗 10K 贴片电阻
  • ICN6211 | MIPI转RGB芯片

最上面一排5个触点,查阅原理图是 SWD 引脚,可用于给主控芯片烧录、升级固件等。

2、问题与建议

  • SD 卡插槽被 DSI 排线挡住,取出插入比较麻烦,我是借助镊子完成
  • 共 8 个安装孔(内 4 外 4) ,采用 M2.5 规格:
    • 内圈兼容 RPi 3 和 4,这点比较好。
    • 外圈用于架高,建议换成采用 M3 孔径,毕竟此规格铜柱更常见,量了一下需要的铜柱长度至少 2cm 。
    • 当然也可以配 4 个 M2.5 规格的铜柱。
  • 屏幕底部,平放时部分显示内容会被挡住。正视时无问题,使用支架立起来就可以了,不过我们也发现此屏幕可视角度挺大,显示效果较好。

image-20220404231657916

图中我们也看到时不时报错 Under-voltage detected! (0x00050005) 低电压警告,对树莓派也是无力吐槽,供电电压 5.1V 才行,正常能见到的都是 5.0v 输出,谁能给我解释一下这是不是树莓派设计能力不行。

3、基本使用:Raspberry Pi OS

  • 树莓派 Raspberry Pi OS 即插即用,无需安装驱动,无需额外设置即插即用

  • 之前实际对比测试以及参考 这篇文章 ,认为对触摸功能支持最好的桌面环境为 Gnome3 和 Unity,不过目前没有直接支持,后续再行测试

  • 本次使用 RPi OS 就挺好。其共有三个版本:lite、normal、full(分别是无桌面版、桌面版、预装各种软件的桌面版),我们选择普通桌面版进行测试。

  • 根据 DISPLAY=:0 xinput --list / cat /proc/bus/input/devices / lsmod / modinfo edt_ft5x06 / dpkg -l | grep xorg等命令,可推知此屏幕触摸采用 ft5x06 芯片,I2C 接口通讯,不支持压感。此设备使用 libinput 驱动, DietPi 系统中识别为 raspberrypi ts

    image-20220405000617263

  • 可以通过 evtestxinput-calibrator 等工具进行调试校准触摸。

  • 更多相关调试信息可以参考 Multitouch/Testing

4、触摸功能优化

Chromium 浏览器对触摸屏优化很好,但是通用程序则缺少相关优化,使用中遇到两个问题影响了触摸使用体验:

  • 触摸不支持右键,不支持拖动,不支持自定义功能
  • 不支持屏幕键盘

4.1 屏幕键盘

个人习惯使用 onboard 这个工具,网友也有使用 matchbox-keyboard

sudo apt install onboard
# sudo apt install matchbox-keyboard

前者占用空间大些,功能更多也更美观。后者有些简陋,需要命令行启动默认不创建图标。

image-20220405001925168

4.2 多点触摸手势

我们这里使用 Touchégg 工具,其有一个配置软件 Touché,以及 xdotool。后者在此 5 寸屏上显示不全,干脆先直接修改配置文件吧。默认 RPi OS 软件源里没有上述工具,我们添加 Raspbian Addons 源并进行安装,参考文档软件列表

https://tutorials-raspberrypi.com/tips-tricks-faq-official-7-raspberry-pi-touchscreen/

https://www.raspberrypi.com/documentation/accessories/display.html

MatchProduct "ft5x06"

https://unix.stackexchange.com/questions/58117/determine-xinput-device-manufacturer-and-model

https://www.x.org/releases/current/doc/man/man5/xorg.conf.5.xhtml

https://docs.sunfounder.com/projects/ts-7c/en/latest/settings_for_raspberry_pi.html

https://forum.openmarine.net/showthread.php?tid=2727

https://maker-tutorials.com/en/raspberry-ri-touch-screen-setup-right-click-with-twofing/

https://github.com/PeterCxy/evdev-right-click-emulation/pull/5

https://github.com/PeterCxy/evdev-right-click-emulation/issues/16

https://github.com/PeterCxy/evdev-right-click-emulation/issues/3

collect2: error: ld returned 1 exit status
make: *** [Makefile:19: out/evdev-rce] Error 1

# 将仓库的 GPG 公钥添加至系统
curl -fsSL https://apt.raspbian-addons.org/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/raspbian-addons-archive-keyring.gpg
# 添加该仓库
echo "deb [signed-by=/usr/share/keyrings/raspbian-addons-archive-keyring.gpg] https://mirrors.ustc.edu.cn/raspbian-addons/debian precise main" | sudo tee /etc/apt/sources.list.d/rpirepo.list
# 更新软件包缓存
sudo apt update
# 安装 touchegg 和 touche
sudo apt install touchegg touche

xserver-xorg-input-synaptics

https://neosmart.net/blog/2020/multi-touch-gestures-on-linux/ | Syngestures

https://dev.to/iberianpig/fusuma-multi-touch-gesture-for-linux-updated-to-v2-11i0 | fusuma

sudo gpasswd -a $USER input
newgrp input
sudo apt-get install libinput-tools
sudo apt-get install ruby
gem sources  #列出默认源
gem sources --remove https://rubygems.org/  #移除默认源
gem sources -a https://mirrors.ustc.edu.cn/rubygems/  #添加科大源
sudo gem install fusuma
sudo apt-get install xdotool

4.3 双屏显示

如果我们相连接多屏显示如何操作?我感觉目前 RPi 3 可以实现 DSI+HDMI+GPIO 三屏显示,后续有时间测试。目前展示下 DSI+HDMI 屏幕。参考 Archwiki Multihead 页面。

我们首先看看已连接的显示器,和触摸设备,可见两个屏幕支持的分辨率和最大帧率,目前 DSI-1 为主显示器 (primary)。

image-20220405011536588

通过 RPi OS 自带的 Screen Layout Editor 工具,可以设置两个显示器的位置、分辨率等,非常方便,原本想要两个屏幕并排显示,这样更符合日常使用习惯,但是由于我的 HDMI 显示器为 2560*1440,超出了 RPi3 的显示能力,所以只能暂时上下显示,估计 4b 可以实现。我们除了使用上述工具,也可以使用终端工具 xrandr、直接修改 Xorg 配置文件进行设置。

# 可见 RPi3 默认单个 Screen 只能输出 2048x2048 分辨率的内容
pi@raspberrypi:~ $ DISPLAY=:0 xrandr --output DSI-1 --auto --output HDMI-1 --auto --left-of DSI-1
xrandr: screen cannot be larger than 2048x2048 (desired size 2720x1080)

关于 DISPLAY、SCREEN、MONITOR 的解释:

  • Monitor refers to a physical display device, such as an LCD panel.
  • Screen refers to an X-Window screen (that is: a monitor attached to a display).
  • Display refers to a collection of screens that are in use at the same time showing parts of a single desktop (you can drag windows among all screens in a single display).

image-20220405012935566

4.4 双屏触摸

4.4.1 触摸绑定屏幕

我们发现,同时连接 HDMI+DSI 输出后,触摸鼠标光标会出现在 HDMI 显示器上,由于两者分辨率不同且差距较大,导致无法正常使用这里参考 Archwiki TouchScreen 页面进行设置。上面我们已经查询了已连接屏幕和输入设备,我们将触摸屏绑定到 DSI 屏幕:

# 在 MobaXterm 中运行而非图形界面内,所以前面添加 [DISPLAY=:]
# 绑定 [generic ft5x06 (ff)] 设备至 DSI-1 屏幕
DISPLAY=:0 xinput --map-to-output 'generic ft5x06 (ff)' DSI-1

此时鼠标光标回到了 DSI 触摸屏上,必要时设置主显示器。这种方法有两个问题:

  1. 重启失效,可以修改 ~/.xinitrc 实现开机启动规则
  2. 绑定关系随着显示设备离线以及再连接而失效

4.4.2 自动绑定(待测试)

这里介绍一个工具 xrandr-watcher 可以通过后台服务监听显示设备接入并实现自动绑定,需要 nodejs v13 进行编译,各位可以自行测试。

4.4.3 双屏触摸矩阵校准(待测试):

DSI 屏幕触摸光标显示在 HDMI 时,就相当于一个触摸板,但是由于双方分辨率差距较大,所以无法直接使用。这里需要进行校准,有兴趣的朋友可以参考文档 Calibrating Touchscreen

5、作为副屏使用

  1. Weylus – 共享屏幕,屏幕分辨率不匹配且只支持共享屏幕,不支持分屏显示,那么就没有什么意义。
  2. Barrier – 共享键盘鼠标
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail