树莓派安装触摸屏和摄像头

因为打编译竞赛的时候组委会发了一个树莓派,最近闲着没事,就想在树莓派上做点小东西。目前主要是买了一个铝合金散热外壳、3.5英寸触摸屏和一个500W像素的CSI摄像头。下面主要记录一下系统和硬件安装过程中踩的坑。


前期准备

软件

  • SD Card Formatter(用于格式化存储器)
  • Raspberry Pi Imager(树莓派官方的烧录工具)
  • Raspberry Pi OS(这里我用的是legacy,后面说原因)
  • LCD-show(触摸屏的店家提供的驱动)

硬件

  • Raspberry Pi 4 Computer 4GB
  • 读卡器
  • SandDisk Ultra microSD 128GB
  • 外壳+散热片
  • 3.5英寸触摸屏(MHS-3.5inch RPi Display)
  • 500W像素CSI摄像头
  • 网线(可选)
  • microHDMI数据线(可选)

系统烧录

格式化

首先将SD卡放入读卡器内插入电脑,然后使用SD Card Formatter选择插入的卡,直接使用quick format进行格式化。

烧录系统

我一开始用的是第三方的烧录工具win32diskimager,但是需要自己配置用户名密码、WIFI连接,配了几次WIFI都连不上以后,发现树莓派官方的烧录工具可以在图形化界面上直接配置用户名、密码和WIFI,于是果断转用了Raspberry Pi Imager。

而另外官方烧录工具可以在烧录的时候选择想安装的系统,自动下载,这样就省去了自己去官网上找系统的麻烦。

我这里烧录的系统是Raspberry Pi OS(Legacy,32bit),一开始选择的是最新版的32位系统,但是后面装触摸屏和摄像头的时候一直失败,折腾了一晚上和一上午才想到是不是需要换个系统。

后来了解到,Raspberry Pi OS是基于Debian开发的,而Debian于23年6月发布了版本号为12的最新版,代号Bookworm,树莓派也因此做了更新。而Legacy是基于Debian11也就是Bullseye开发的,所以可能我买的触摸屏和摄像头的驱动都无法适配Bookworm,而能在Bullseye成功运行。

选择完系统后,在烧录前,点击右下角的设置,配置用户名密码、WIFI等内容。

选择开启SSH服务-使用密码登录

然后在下面填入用户名和密码,这里使用的是默认的密码raspberry

如果需要连接WIFI,还可以将要连的WIFI的信息填入,这里注意除了名称和密码,还有选择国家

配置完成后点击保存,选择要烧录的SD卡,点击烧录,等待几分钟即可。

通电启动

烧录完成后拔下SD卡,插入树莓派中,再连上type-C接口的电源,这里我直接用的手机充电器。

由于触摸屏的驱动还未安装,没法直接从屏幕上操作树莓派,所以需要通过其他方法连接,我尝试过的方法主要有以下三种:

网线连接

  • step1,以太网配置

首先准备一根网线分别插入树莓派和电脑的以太网接口,然后在电脑上进行如下配置:

找到设置-网络和Internet-状态-更改适配器选项,然后双击打开自己正在连接的网络

点击活动-属性

选择共享-允许其他...连接-以太网,点击确定

  • step2,获取IP

然后稍等一会,按win+R打开命令行窗口,输入

bash 复制代码
ping raspberrypi -4

如果出现下面的内容说明连接成功,显示的IP就是树莓派当前的IP

获得IP后就可以通过SSH、Windows远程桌面或VCN等方式连接树莓派了。

  • step3,连接树莓派

SSH连接可以使用VScode、MobaXterm、putty等工具,网上资料很多,这里不做过多介绍。VCN方式连接我没试过,这里也不介绍了。下面主要说一下远程桌面连接的方法。

windows远程桌面使用的协议是rdp,因此在连接树莓派前,我们需要先通过ssh登录树莓派,执行如下命令安装好rdp协议相关的服务:

bash 复制代码
sudo apt-get install tightvncserver
sudo apt-get install xrdp

其中tightvncserver 为xrdp提供基础服务,xrdp 是一个开源的远程桌面服务器。

之后我们打开windows远程桌面连接,填入刚才获取的ip,点击连接:

进入后Session选择Xorg,输入烧录时设置的账号和密码,点击OK:

成功进入树莓派桌面:

WIFI连接

之前在烧录的时候已经配置过WIFI账号和密码,树莓派启动后会自动连接所指定的WIFI。同时要求电脑和树莓派连接同一个WIFI,之后同样执行命令:

bash 复制代码
ping raspberrypi -4

获取树莓派的IP,然后进行连接。

连接显示器

如果你有一台显示器和一根microHDMI的数据线,那么可以直接将树莓派连接到显示器上,在图形化界面上进行操作。

连接触摸屏

硬件连接

在成功烧录镜像并连接后,可以开始连接触摸屏。首先关机断电,将3.5英寸触摸屏的接口插入到树莓派对应的GPIO接口上。

通电重启后,可以看到屏幕一片白色,此时还需安装驱动。

安装驱动

根据店家给的教程,登录后需要执行如下指令,下载并安装驱动:

bash 复制代码
cd /boot
sudo git clone https://github.com/lcdgogo/LCD-show.git
sudo chmod -R 777 LCD-show
cd LCD-show
sudo bash ./MHS35-show

这里遇到的问题主要是连不上github,于是我直接先下载到电脑,然后复制到了树莓派上。

由于我的屏幕是MHS-3.5inch RPi Display,所以执行的是MHS35-show,其他型号的屏幕需要执行不同的命令,具体可以看仓库的readme。

在执行MHS35-show时出现了dpkg的报错:

go 复制代码
dpkg: error processing package ...

查阅资料可以通过apt -f install解决:

bash 复制代码
 sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/
 sudo mkdir /var/lib/dpkg/info/
 sudo apt-get update
 sudo apt-get -f install
 sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old/
 sudo rm -rf /var/lib/dpkg/info
 sudo mv /var/lib/dpkg/info_old/ /var/lib/dpkg/info/

成功执行后树莓派会自动重启,再次打开时应该就可以显示画面了。

屏幕校正

第一次打开时触摸笔点击的位置、屏幕的旋转可能都不那么符合需要,因此需要做一些校正。

点击校准

进入LCD-show目录,安装校准程序并执行校准:

bash 复制代码
cd /boot/LCD-show/
sudo dpkg -i -B xinput-calibrator_0.7.5-1_armhf.deb
DISPLAY=:0.0 xinput_calibrator

此时会要求点击屏幕的四个角,按要求点击完后,程序会输出一段校准后的配置代码:

vbnet 复制代码
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        Option  "MinX"  "7418"
        Option  "MaxX"  "61120"
        Option  "MinY"  "6110"
        Option  "MaxY"  "61268"
        Option  "SwapXY"        "0" # unless it was already set to 1
        Option  "InvertX"       "0"  # unless it was already set
        Option  "InvertY"       "0"  # unless it was already set
EndSection

进入配置文件

bash 复制代码
sudo vim /etc/X11/xorg.conf.d/99-calibration.conf

将上面的代码替换掉配置文件中的内容,保存,重启。

屏幕旋转

打开系统配置文件/boot/config.txt

添加代码:

ini 复制代码
dtoverlay=mhs35:rotate=0

其中xx为旋转的角度,可以为:0,90,180,270

保存,重启。

触摸旋转

打开屏幕配置文件

bash 复制代码
sudo vim /etc/X11/xorg.conf.d/99-calibration.conf

在其中添加一行

rust 复制代码
Option  "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1"

表示触摸旋转矩阵。其中:

90:0 1 0 -1 0 1 0 0 1
180:-1 0 1 0 -1 1 0 0 1
270:0 -1 1 1 0 0 0 0 1

其他

有可能第一次打开显示屏时显示的是命令行而非桌面,这时需要进入树莓派设置:

bash 复制代码
sudo raspi-config

选择SystemOptions - Boot/Auto Login - Desktop Autologin,然后选择finish,重启。

连接相机

这里我使用的是树莓派最先发布的一款500W像素的CSI摄像头,目前官方似乎已经停止售卖了,但是3B+和4B仍然支持该摄像头。

硬件连接

关机断电后开始连接相机。

相机线路最底端一面有纹路,一面贴了一张蓝色贴片,在安装时需要将相机底端插入板子上标有camera的接口,与该接口外形相同的还有一个是连接显示器用的,上面标有display,注意不要插错了。插入时需要先将黑色盖子抬起,然后将蓝色铁片一面朝向以太网接口、有纹路的一面朝向MicroHDMI接口,插入后盖紧。

启动树莓派,进入设置。

bash 复制代码
sudo raspi-config

依次选择Interface Options - Legacy Camera - Enable,允许相机打开。

然后重启。

配置驱动

由于该相机已经不被树莓派官方所支持,所以还需进行一些配置才能使用。

此时执行

bash 复制代码
vcgencmd get_camera

会发现supported和detected都为0。

下面首先进入/boot/config.txt,进行如下修改:

隐掉camera_auto_detect=1

添加 gpu_mem=128

添加 start_x=1

添加dtoverlay=ov5647

然后进入/etc/modules,添加bcm2835-v4l2

保存重启。

然后重新执行vcgencmd get_camera,如果成功的话supported和detected都为1。之后执行libcamera-hello,检查摄像头是否正常,如果正常此时应该会出现几秒钟的摄像头画面。

如果返回的结果是supported=1 detected=0,可以将/boot/config.txt中的修改还原,然后关闭Legacy Camera,重启后再打开Legacy Camera再重启,重新执行vcgencmd get_camera应该就好了。但是这时候libcamera可能还是没法用,可以尝试再按上面的步骤修改/boot/config.txt

安装motion

motion是树莓派的一款监控软件,可以直接用apt-get安装

bash 复制代码
sudo apt-get install motion

安装完成后需要进行一些配置,首先进入/etc/default/motion,添加一行

ini 复制代码
start_motion_daemon=yes

然后进入/etc/motion/motion.conf,进行如下修改:

将daemon修改为on

修改stream_localhost off

修改framerate 50

stream_maxrate 50

保存后关闭正在运行的motion进程:

bash 复制代码
sudo killall -TERM motion

然后重启motion

bash 复制代码
sudo service motion start
sudo motion

此时通过浏览器访问localhost:8081,应该可以看到摄像头画面

相关推荐
异域天使phy5 天前
树莓派安装FreeSWITCH
树莓派·freeswitch
WIZnet6 天前
W55RP20芯片介绍
树莓派·wiznet·w55rp20
无所谓จุ๊บ7 天前
树莓派开发相关知识十 -小试服务器
服务器·网络·树莓派
哦豁灬12 天前
树莓派5使用 MobileNet v2 实时推理相机视频
pytorch·深度学习·树莓派·mobilenet
xm一点不soso13 天前
树莓派基本设置--8.播放音频和视频
树莓派
xm一点不soso13 天前
树莓派基本设置--6.设置屏幕休眠
树莓派
哦豁灬13 天前
树莓派5实时时钟(RTC)
树莓派·rtc·实时时钟
juelianhuayao20 天前
树莓派使用Node.js 将蓝牙设置成BLE外设
node.js·树莓派·ble外设
天飓23 天前
听一听语音助手的声音
树莓派·sherpa-ncnn·espeak
RedWolf19991 个月前
树莓派刷入OpenWrt后扩容overlay的方法
树莓派·overlay·openwrt