本文使用的是32位和64位bullseye混杂的内容,树莓派4b,算是一步步摸的记录,对遇到的问题做个整合,装troch时发现要64位,后面内容还是64吧
烧录
首先是下载镜像和烧录软件
由于镜像较大,且在国外,镜像通过清华镜像源下载:Index of /raspberry-pi-os-images/raspios_full_armhf/images/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
烧录软件:Raspberry Pi OS – Raspberry Pi
最新版烧录软件应该是自带下载镜像的,但是如果和我一样最新安装不了的话,找网上旧点版本(不带下载镜像),系统就从镜像站下载吧
烧录完后,插入卡槽,插入hdmi,启动(这里一定要先插hdmi再通电,树莓派默认不能热插拔),进行对网络,语言什么的配置,配置完后,进行重启
如果不幸重启后黑屏,往往是屏幕分辨率问题,修改/boot/config.txt的内容
1 | //2K屏幕,自己实际用到的 |
如果遇到第一次开机没弹出来任何东西的话(第一次开机不是要设置语言什么的),没找出原因,建议换个版本镜像烧录,可能是显示器的问题,网上查到有类似的换了个2K(原本4K)就好了
开启VNC
左上角树莓派图标—>首选项(perference)—> Raspberry Pi Configuration—>Interfaces,开启后,电脑和树莓派位与同一个局域网,通过命令来得到树莓派的IP地址
1 | ifconfig |
在通过VNC Viewer输入树莓派的IP地址,进行连接,输入树莓派的用户名和密码,成功连接,这时就无需树莓派外接屏幕了
但树莓派的IP不一定是固定的,所以连不上时记得看一下手机热点连接的树莓派IP,部分手机(特指某粮食作物手机,貌似高版本安卓也是)无法显示IP的话,问题不大,先确保电脑,树莓派和手机的热点连上,打开电脑命令行输入:ping raspberrypi -4
。-4指的是IPv4地址
换源
树莓派的默认源在国外,下载较慢,执行以下命令,32位系统与64位系统有不同
1 | sudo nano /etc/apt/sources.list |
pip换源
1 | pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple |
有些包仍会到原有镜像下载,pip下载有时间的限制,超时就直接报错,遇到报错的,建议这时在自己电脑上进入那个网站下载,通过vnc传输进来
将原有的内容通过#注释掉,加入以下内容
1 | //armhf为32位 |
gpio口
WiringPi是应用于树莓派平台的GPIO控制库函数,树莓派具有26个普通输入和输出引脚。在这26个引脚中具有8个普通输入和输出管脚,这8个引脚既可以作为输入管脚也可以作为输出管脚。除此之外,树莓派还有一个2线形式的I2C、一个4线形式的SPI和一个UART接口。树莓派上的I2C和SPI接口也可以作为普通端口使用。
4b不支持sudo apt-get install wiringPi进行安装,32位按以下命令安装:
1 | wget https://project-downloads.drogon.net/wiringpi-latest.deb |
命令行输入gpio readall
即可看见引脚功能
串口
从树莓派的相关资料我们可以看到,树莓派有两个串口可以使用,一个是硬件串口(/dev/ttyAMA0),另一个是mini串口(/dev/ttyS0)。硬件串口有单独的波特率时钟源,性能好,稳定性强;mini串口功能简单,稳定性较差,波特率由CPU内核时钟提供,受内核时钟影响,所以这里使用硬件串口,以下内容是如何调用硬件串口。
输入sudo raspi-config,关闭串口登录功能,打开串口调试功能
对config.txt进行修改,输入sudo nano /boot/config.txt ,添加下面两行代码
1 | dtoverlay=miniuart-bt |
输入以下命令,禁用控制台功能,串口用于通讯,或者在开启VNC那个地方也有同样功能的开关
1 | sudo systemctl stop serial-getty@ttyAMA0.service |
重启树莓派后,输入ls /dev -al
后,看到以下内容,说明交换成功
1 | lrwxrwxrwx 1 root root 7 3月 14 11:32 serial0 -> ttyAMA0 |
打开电脑串口助手,设置好相同波特率,用USB转ttl连接上,以下代码现象为先向串口发送,然后命令行显示串口发送的数据,从网上复制一段串口传输代码例程,运行。
1 | import serial |
导入opencv库
32位(装不了torch)
先在命令行中查看Linux架构,python版本
1 | uname -a //Linux架构 |
自己的树莓派的架构,记下armv7,还有armv6的
1 | Linux raspberrypi 5.15.84-v7l+ #1613 SMP Thu Jan 5 12:01:26 GMT 2023 armv7l GNU/Linux |
下载所需的whl包,进入该网站piwheels - opencv-python,点击加号,选择文件,下载
包名基本上为这种格式opencv_python-4.6.0.66-cp39-cp39-linux_armv7l.whl,这种说明是cp39对应python3.9,armv7是由我们在上面通过命令行查询得知的,下载后通过VNC送到树莓派上,通过pip安装
1 | cd Desktop #取决于文件位置 |
安装成功后,极大可能导入时报错,由于numpy的版本问题,不建议使用pip在线安装,自己尝试使用pip3 install -U numpy ,一直显示安装包哈希值对不上,从https://www.piwheels.org/simple/numpy/下载合适版本,与opencv的安装方法类似,我选用的是numpy-1.23.0-cp39-cp39-linux_armv7l.whl
1 | cd Desktop #取决于文件位置 |
导入cv2后,不报错,成功,32位到这就没了,然后换到了64位。
64位
就很方便,一句即可
1 | pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple |
开机自启程序
网上有很多开机自启的方法,写下自己实际使用过的
编辑rc.local实现自启(对于opencv窗口有点问题)
以rc.local实现自启的程序在sudo下进行,就是任何命令以sudo起头,所以按照上面安装的包,在sudo下重新装一遍TT
1 | sudo nano /etc/rc.local |
然后在exit 0输入以下内容
1 | python3 xxxxx(你要运行的python文件的绝对路径) |
如果带的是while死循环的话,结尾补上一个&
1 | python3 xxxxx(你要运行的python文件的绝对路径) & |
如果发现没有如期自启动,输入以下命令
1 | systemctl status rc-local |
根据其报错来搜索对应问题,开机自启对opencv的imshow存在点问题,这还是之后再找吧,对于适用于有无桌面的方法,这种窗口可能不适用。
通过桌面启动
在在/home/pi/.config/下创建autostart(注意:pi不一定是pi,为用户名这是根据你首次开机时取的)
1 | cd /home/pi/.config/ |
在autostart目录下创建my.desktop,并编辑
1 | cd autostart |
往其中加入以下代码
1 | [Desktop Entry] |
将下面代码复制到你的my.desktop文件中,Exec变量更改为你要运行的文件。
现象为一开机就会弹出对应程序,如果cv之类while死循环窗口,按q退出。