cyy的垃圾堆


  • 首页
  • 归档
  • 标签
  • 关于CYY
  • 友链

© 2025 CYY

Theme Typography by Makito

Proudly published with Hexo

树莓派食用指北

发布于 2023-07-22 Linux 

本文使用的是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
2
3
4
5
6
7
8
//2K屏幕,自己实际用到的
hdmi_force_hotplug=1 //打开热插拔,开了也好像没用
hdmi_group=2
hdmi_mode=85
//4K屏幕,没试过
hdmi_force_hotplug=1 //打开热插拔
hdmi_group=2
hdmi_mode=95

如果遇到第一次开机没弹出来任何东西的话(第一次开机不是要设置语言什么的),没找出原因,建议换个版本镜像烧录,可能是显示器的问题,网上查到有类似的换了个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
2
3
//armhf为32位
deb [arch=armhf] http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi

gpio口

WiringPi是应用于树莓派平台的GPIO控制库函数,树莓派具有26个普通输入和输出引脚。在这26个引脚中具有8个普通输入和输出管脚,这8个引脚既可以作为输入管脚也可以作为输出管脚。除此之外,树莓派还有一个2线形式的I2C、一个4线形式的SPI和一个UART接口。树莓派上的I2C和SPI接口也可以作为普通端口使用。

4b不支持sudo apt-get install wiringPi进行安装,32位按以下命令安装:

1
2
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

命令行输入gpio readall即可看见引脚功能

串口

从树莓派的相关资料我们可以看到,树莓派有两个串口可以使用,一个是硬件串口(/dev/ttyAMA0),另一个是mini串口(/dev/ttyS0)。硬件串口有单独的波特率时钟源,性能好,稳定性强;mini串口功能简单,稳定性较差,波特率由CPU内核时钟提供,受内核时钟影响,所以这里使用硬件串口,以下内容是如何调用硬件串口。

输入sudo raspi-config,关闭串口登录功能,打开串口调试功能

对config.txt进行修改,输入sudo nano /boot/config.txt ,添加下面两行代码

1
2
dtoverlay=miniuart-bt
force_turbo=1

输入以下命令,禁用控制台功能,串口用于通讯,或者在开启VNC那个地方也有同样功能的开关

1
2
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service

重启树莓派后,输入ls /dev -al 后,看到以下内容,说明交换成功

1
2
lrwxrwxrwx   1 root root           7  3月 14 11:32 serial0 -> ttyAMA0
lrwxrwxrwx 1 root root 5 3月 14 11:32 serial1 -> ttyS0

打开电脑串口助手,设置好相同波特率,用USB转ttl连接上,以下代码现象为先向串口发送,然后命令行显示串口发送的数据,从网上复制一段串口传输代码例程,运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import serial
import time
ser = serial.Serial("/dev/ttyAMA0",115200)
if not ser.isOpen():
print("open failed")
else:
print("open success: ")
print(ser)
ser.write(b'piRaspberry pi') # 向串口发送Raspberry pi
while True:
size = ser.inWaiting() # 获得缓冲区字符
if size != 0:
response = ser.read(size) # 读取内容并显示
print (response)
ser.flushInput() # 清空接收缓存区
time.sleep(0.1) # 软件延时

导入opencv库

32位(装不了torch)

先在命令行中查看Linux架构,python版本

1
2
uname -a   //Linux架构
python //python版本

自己的树莓派的架构,记下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
2
cd Desktop #取决于文件位置
pip install opencv #然后按tab自动补全

安装成功后,极大可能导入时报错,由于numpy的版本问题,不建议使用pip在线安装,自己尝试使用pip3 install -U numpy ,一直显示安装包哈希值对不上,从https://www.piwheels.org/simple/numpy/下载合适版本,与opencv的安装方法类似,我选用的是numpy-1.23.0-cp39-cp39-linux_armv7l.whl

1
2
cd Desktop #取决于文件位置
pip install numpy #然后按tab自动补全

导入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
2
cd /home/pi/.config/
mkdir autostart

在autostart目录下创建my.desktop,并编辑

1
2
cd autostart
nano my.desktop

往其中加入以下代码

1
2
3
4
[Desktop Entry]
Type=Application
Name=Test
Exec=/usr/bin/python3 /home/pi/Yourpy.py

将下面代码复制到你的my.desktop文件中,Exec变量更改为你要运行的文件。

现象为一开机就会弹出对应程序,如果cv之类while死循环窗口,按q退出。

最后,配合yolo,就能识别东西了,附上一个识别的小代码。

treasure.rar

图片2

分享到 

 上一篇: Altium Design笔记 下一篇: 如何成为solidwork拉伸切除大师 

© 2025 CYY

Theme Typography by Makito

Proudly published with Hexo