树莓派资源整理汇总及分享
防背刺声明:'
本仓库克隆于 xinxingli/Raspberry-Pi:master 但是很多连接已经失效,因此重新进行数据整理,方便用户直接按图找数据
二次整理日期:2023.09.17
本文收集了树莓派使用过程中经常需要用到的资源,主要包括树莓派系统镜像、树莓派硬件介绍、树莓派GPIO引脚编号、 树莓派电路原理图下载、树莓派应用、加上笔者踩坑经验、部分常用的Linux命令
所有资源均来自此网址:
树莓派快速开机资源大全 :包括树莓派快速开机指南 、系统镜像下载、烧录软件,帮助您快速上手。
无屏幕连接树莓派的核心有两个
- 让树莓派连上网
- 获得树莓派的IP地址,网上有很多方式,我这里主要是采用查看路由器后台的方式获得IP地址
截至:23.9.22号 :树莓派官方烧录软件,已经可以默认配置WIFI密码 开启SSH账号功能
具体烧录,可以参考这个网址,烧录步骤比较详细
(如果是4B及以上版本,建议直接采用64位系统,据说,同配置4B 4G版本,64位性能超过32位系统 50%以上,有利于性能释放)
https://zhuanlan.zhihu.com/p/612338843
PS:
后面的Miniconda 的安装,暂时不建议看,貌似,现在miniconda 安装后 Pip 安装的库,都会出问题,引用不出来,因此 不建议下载此软件,管理Python包
如果用此步骤,烧录完成后,等待5分钟左右,路由器后台,就会出现一个 名称叫Pi的账号(建议烧录的时候名字就叫pi,方便区分 和辨识)
网线连接,不需要wifi配置(不知道为啥,我明明烧录的时候wifi是对的,但是一直树莓派没显示,大概率是我密码配置错了) 网线连接后,通过烧录的账号和密码,进行登陆
登录后,按照 树莓派wifi配置 这个步骤去操作一下,大概率就没问题,然后拔掉网线,让他用wifi连接即可
树莓派(raspberrypi)常用镜像高速下载 :收集了超过12种树莓派系统镜像,同时带有介绍,你可以选择一个最佳的树莓派系统,在页面即可下载系统镜像,非常方便。
目前 树莓派烧录软件中 有多个内置的系统镜像,可自行研究
GPIO编号:树莓派GPIO引脚对照表
由于树莓派软件在国外地址不方便更新,因此考虑更换到清华源,但是又可能存在一些问题,可能缺少公钥,或者是由于 架构问题,更新数据失败,因此需要多参考别人的先进经验
踩坑指南:一定要看一下自己的架构、型号,即:
uname -m
按照代码去下放的链接中,找到对应的源,进行更新,否则就会出现各种各样的报错。
网址如下:
http://btharp.com/article/2022/6/24/107.html
树莓派若需在公网去访问,就需要内网穿透,进行内网穿透数据。 个人公网要求较低,因此主要详细介绍花生壳内网穿透方式
每月限制1G流量,1MB带宽,2条映射
官方介绍已经很详细了,可以直接按照他的步骤来,本人亲测好评 内网穿透
另外一种内网穿透的补充 如果是后面对公网要求流量大,可以试试这个 4MB带宽,优惠后,一年25块钱;
DDNSTO内网穿透 没试过树莓派使用这个DDNSTO,但是胜在带宽会大点,后面如果有需要,可做备选
树莓派花生壳内网穿透配置介绍
1、树莓派安装花生壳 我们先去花生壳找符合自己树莓派系统的安装包,这里我的树莓派是64位系统, 会提供一个wget的网址命令,下载完成。
接着输入sudo depkg -i pi.deb等待安装完毕即可。 安装完毕后就会显示设备账户初始信息,包括SN码和初始密码, 以及远程管理网址,当然之后也可以通过命令sudo phddns status来查看:
sudo phddns ,输入此命令,可以查看花生壳的内网穿透状态
sudo 主指令:phddns
phddns start(启动 花生壳) phddns version(查看版本 花生壳) phddns stop(停止 花生壳)
phddns restart(重启 花生壳) phddns reset(重置 花生壳)
phddns enable(开机自启动 花生壳) phddns status(状态 花生壳),查看状态这里面有SN码。
在浏览器输入网址http://b.oray.com进入远程管理接口, 在终端中输入SN账号和密码 输入对应的SN码和密码,就能进去管理页面,然后进行绑定手机和重置密码等简单操作。
然后在设置映射关系,把得到的网址和端口 映射出来,就可以使用这个网址和端口,进行SHH操作。
找运营商,索要IPV4/6的公网IP,此网址大多为动态IP(这一步难度有点大)
利用ipv4/6 开通公网,然后设置 路由器,开启 IPV6相关功能,这一步属于相对简单
购买一个域名,这个域名注册简单,但是还需要备案,备案步骤繁琐,暂时不想搞(需要购买云服务器等设备)
(更新: 问了腾讯云客服,购买域名, 不用80和403端口,主要用来做解析,固定公网ip 是大概不用备案,先确定自己的账号是不是 已经开放公网ip 然后在折腾一下,路由器刷个固件升级,说不定才可以整,步骤太多了,如果后面稳定下来在整 没必要为了这种事情,瞎折腾 )
这个域名,主要是为了 把动态的公网地址, 转化成静态的 域名地址信息,方便进行转换。
仅整理自己想要尝试的项目,更多项目,在此链接中寻找
- Pi Dashboard (Pi 仪表盘) --- > 目前已经被弃用,直接远程连接后,使用htop 即可显示树莓派当前状态
- 在树莓派闲置的时候,上传PCDN 利用网心云赚点钱 具体链接 (PS:如果链接挂了,可以直接点击此 跳转到首页,待补充) (这个PCDN,暂时废弃, 据说现在是不让上传PCDN 会被警告。
建议按照这上面的行为进行部署到树莓派中
https://zhuanlan.zhihu.com/p/267836740
PS:
还有一种做法,就是在开发机上,直接进行编写代码,提交到Github上
在树莓派中,进行git pull并合并 拉取项目,运行项目
当前就是采用这种模式进行数据的拉取和更新。
不需要 自己把文件传输给树莓派,浪费 花生壳流量
在此处阅读 raspberry-pi-beginners-guide-zh-cn-v1.1.pdf
Raspberry Pi 树莓派已经发布了很多个版本。每一版树莓派都有唯一的版本代号,通过下面这行命令可以查看这个代号:
cat /proc/cpuinfo
最后三行表示主板的硬件型号、版本代号和唯一的序列号
1.散热问题:如果不常用的话,散热就整个小风扇吹一吹就可以;如果常用的话,且4核CPU 占用100%,那么就需要注意散热问题。
超过85度,CPU会自动降频;
笔者使用了一个金属结构的被动散热,加上两个小风扇,吹一吹。 CPU全开的情况下,2个小时CPU温度不超过55度 ,差点觉得 CPU会被冻感冒 =-=
2.树莓派配置推荐
个人 设备介绍: 树莓派4B, 内存卡128GB (京东50+买的)(实际上16G内存应该也够用) 有土豪金散热装置 读卡器
由于树莓派他是基于Linux进行编译,跟习惯于Windows 的人来说, 会非常不习惯的界面和操作。很容易直接被vi 代码,直接进行劝退。
因此,我在此也分享对一些关于Linux的一些操作 和相关的介绍,知识点相当浅薄,要用的时候,建议多使用chatgtp进行合理提问和开发。
树莓派是属于通电即开机,因此常用的命令为 sudo reboot;这个命令为重启电脑,关机为 shutdown
树莓派类似Windows电脑任务管理器的界面:htop,他可以看到多核CPU的运行情况,内存,详细的任务视图,下方还有一些可以对这个界面进行自定义,显示相关数据,基本满足你对树莓派基本的监控需求
1.树莓派查看CPU温度 vcgencmd measure_temp
2.查看内存空间 free -h
3.查看硬盘空间 df -h
Linux的文件权限要求,编辑,查看数据的步骤繁琐
linux 返回上一层级 cd ..
linux 查看目录 ls
linux 查看目录下内容 此命令会 跳转到 pi文件夹里 cd /Home/pi/
linux 授予该目录 读取 写入 执行权限 chmod 777 filepath:如果你无法写入文件的时候,可能是你在普通模式下 ,没有这个文件的写入权限,因此 使用chmod 权限可以授予所有用户这个权限
linux 读取文本的内容 cat xx.txt
linux 编辑文本信息,这里暂时建议使用 nano 进行文本编辑,原因是 所见即所得,比较适合操作习惯 常用的就是保存和退出ctrl+O ctrl+X符号
如图
crontab 定时任务 用crontab写每月第二周周五运行名为a.py的Python脚本,需要使用以下写法:
*/15 * * * 5#2 /usr/bin/python3 /path/to/a.py
详细说明:
*/15 * * * 5#2:
*/15 设置每15分钟运行一次 表示每月每年 5 表示周五 #2表示该月的第二周 /usr/bin/python3:
指定使用 python3解释器执行脚本 /path/to/a.py: 确保自己常用的Python,是安装在哪个地方的
指定要运行的Python脚本路径 总体来说:
每15分钟执行一次 在每月第二周的周五 使用python3运行脚本/path/to/a.py 所以这条crontab可以实现每个月第二周的周五定时运行a.py这个Python脚本任务。
当任务需要在指定时间、日期运行时,通过结合分钟、小时、日期、月份、周几等字段以及#加周数语法就可以方便描述出来。
发现一个非常好的github项目,涉及到非常多的linux命令,可以 一个学习的项目: linux项目 使用的时候,直接在搜索即可
使用wget 下载文件 wget -O file:name https://xxx 格式 下载文件
dpkg Debian Linux系统上安装、创建和管理软件包 这个是本地安装的命令,可以手动安装包
- dpkg -i package.deb # 安装包
- dpkg -r package # 删除包
- dpkg -P package # 删除包(包括配置文件)
Zsh 完全兼容 bash,支持强大的智能命令补全功能, 支持大量的界面主题和插件,功能和效率都极大的增强和提高。
关键词:
tar,gzip,zip,unzip
在Linux中,rm是一个用于删除文件或目录的命令。
以下是一些常用的rm命令选项和用法:
-
删除一个文件:
rm filename -
删除多个文件:
rm file1 file2 file3 -
删除一个目录及其内容:
rm -r directory使用
-r选项来递归删除目录及其内部的所有文件和子目录。 -
静默删除文件,不发出任何警告或确认:
rm -f filename使用
-f选项会强制删除文件,而不会询问确认。 -
删除空目录:
rmdir directory使用
rmdir命令可以删除空目录。 -
删除目录和目录里面的文件
rm -rf directory
请注意,rm命令是不可逆的,删除后的文件将无法恢复。因此,在使用rm命令时要小心确认你要删除的文件或目录。特别是在使用-r选项递归删除目录时,请务必谨慎操作,以免误删重要文件。
(10.17号 更新,利用docker 部署clash 进行代理加入,主要原因,有一些软件需要代理,而gg是没有代理功能的)
树莓派可以通过脚本进行代理,加快访问外网的速度
参考链接:GitHub国内加速:在Linux服务器利用gg代理优化访问
如果只想代理某一条语句的执行,比如下载文件(使用 curl 或 wget 命令)或者克隆仓库, 推送更改等(git),直接在需要执行的语句前加上 gg 就可以
如果需要代理整个ssh会话的所有命令,只需要执行 gg bash
当在Linux中使用find、whereis和which命令时,以下是更详细的用法和示例:
-
find命令:- 基本用法:
find [目录路径] [选项] [条件] - 示例:
- 搜索当前目录及其所有子目录下扩展名为
.txt的文件:find . -name "*.txt" - 搜索指定目录下的大于100MB的文件:
find /path/to/directory -size +100M - 查找以
.jpg和.png为扩展名的文件,并删除它们:find /path/to/directory \( -name "*.jpg" -o -name "*.png" \) -delete
- 搜索当前目录及其所有子目录下扩展名为
- 基本用法:
-
whereis命令:- 基本用法:
whereis [选项] [命令/文件名] - 示例:
- 查找
ls命令的可执行文件、源码和帮助文档的路径:whereis ls - 查找
gcc命令的可执行文件和帮助文档的路径:whereis -b -m gcc
- 查找
- 基本用法:
-
which命令:- 基本用法:
which [命令名] - 示例:
- 查找
ls命令的完整路径:which ls - 查找
python3命令的完整路径:which python3
- 查找
- 基本用法:
这些命令的具体用法和选项可能因不同的Linux发行版而有所差异,
你可以通过查看命令的手册页(使用man命令)来获取更详细的信息。
例如,使用man find、man whereis和man which
来查看它们的详细用法和选项说明。
find, whereis 和 which三个命令在Linux下都可以用于查找文件和命令,它们的主要异同点如下:
同点:
-
都是Linux下常用的查找命令
-
都可以用于查找文件路径或命令路径
不同点:
查找目标:
- find可以查找文件系统下任何文件
- whereis主要查找命令相关文件(binary,源码,manpage等)
- which查找将被调用的具体命令路径
查找范围:
- find可以查找整个文件系统
- whereis范围限于系统默认路径下
- which只查找PATH环境变量定义的路径
匹配条件:
- find支持各种匹配文件的条件匹配如名称,类型,大小等
- whereis只支持通过命令名称匹配
- which直接根据命令名称匹配
应用场景:
- find适用于需要在文件系统深层次搜索文件的情况
- whereis适用于快速查找某命令相关文件的位置
- which用于明确将调用哪个命令的实际路径
总之,find功能较强大,但whereis和which操作更简单高效。 主要区别在于它们查找的目标和范围不尽相同。 在实际操作中需要根据不同需求选择正确的命令。
当前有一块斐讯的1T移动硬盘,通过特殊的Type-C接口传入数据。
利用sms 挂载硬盘,备注:当前挂载出点问题,当在/etc/fstab中,修改开机自启后,树莓派重启之后,直接死机。 建议重启的时候,手动挂载。
利用树莓派进行接收和存储数据,把数据保存到移动硬盘中。 利用smb 进行存储和局域网共享,通过 多终端分享文件系统。
后续开了公网IP之后,可以把剧 存储在这上面, 利用MX浏览器,进行远程访问媒体。(已经开通公网+桥接, 路由器不断电,就不会换域名)
确实是因为很多剧,不能在线看,或者 资源比较少。 还不如直接找一下资源,手机能看,电脑能看,电视都能看, 只要访问自家的NAS就可以。
这样就可以无缝切换,实现影音全关注
PS:10.23号更新:
当前使用alist包的webdav的形式,而不是SMB的方式进行多媒体播放 webdav 用户配置和管理数据相对轻量简单。
安卓 使用 nplay 进行视频播放
sudo apt-get
在Linux Debian版本中,sudo service是用于管理系统服务的命令。它允许普通用户以超级用户(root)权限运行系统服务的相关命令。
以下是一些常用的sudo service命令:
apt install 可以安装包,他会把各种文件归类 可执行文件会放在/usr/bin 之中,这样会方便执行文件
启动一个服务: sudo service <service_name> start
停止一个服务: sudo service <service_name> stop
重启一个服务: sudo service <service_name> restart
查看一个服务的状态: sudo service <service_name> status
启用一个服务,使其在系统启动时自动启动: sudo service <service_name> enable
禁用一个服务,使其在系统启动时不自动启动: sudo service <service_name> disable
需要注意的是,“<service_name>”应该替换为实际的服务名称。你可以使用sudo service --status-all命令来获取所有可用服务的列表,并查看其名称。
树莓派系统备份恢复 方式一: 使用树莓派烧录工具,Win32DiskImager 工具的读取功能,如下图。优点是操作简单,缺点也很明显,因为是全盘读取,所以读取的备份文件非常大,不利于传播分享。所以pi3及以上的系统就不推荐了 方式二:开源工具,优点是按实际文件占用空间进行压缩打包,缺点是步骤比方式一多一点,不过还是可以接受的,具体步骤如下: 备份
首先 clone 该脚本:
git clone https://github.com/nanhantianyi/rpi-backup.git && cd rpi-backup
然后要安装依赖项,这里我用的是 Manjaro-arm 系统。在 Manjaro 系统中该脚本无法自动安装依赖项,需要运行这行命令 sudo pacman -Sy && pacman -S dosfstools parted multipath-tools rsync 来安装依赖。 如果你是用 apt 进行安装软件的系统,可以跳过这一步,该脚本会自动安装依赖项。 然后运行
sudo ./back.sh youImageName.img
该脚本就会开始备份,如果不指定文件名则会自动命名,并存放在当前目录下。 如果你的内存卡剩余空间不够的话就挂载 U 盘,将 img 直接保存在 U 盘中,要注意U盘务必挂载到 /media 目录下,不要挂载到 /mnt,因为脚本会对 /mnt 目录进行备份操作,会导致递归性的备份,总之就是不要挂载到 /mnt 目录,切记! 恢复
该脚本就会开始备份,如果不指定文件名则会自动命名。 如果你的内存卡剩余空间不够的话就挂载 U 盘,将 img 直接保存在 U 盘中,要注意U盘务必挂载到 /media 目录下,不要挂载到 /mnt,因为脚本会对 /mnt 目录进行备份操作,会导致递归性的备份,总之就是不要挂载到 /mnt 目录,切记!
用原来数据进行烧录一份
(树莓派的 烧录软件也不错,优先用官方的)
备份镜像恢复可以直接用烧录软件直接烧录,这里我使用的是 Etcher,界面简洁明了,选择镜像,选择要刷入的磁盘,Flash! Etcher下载地址:https://www.balena.io/etcher/
在烧录完毕后不要着急,我们还要一项操作没有做, tf 卡的分区有一部分空闲分区没有被分配。 进入系统后执行 git clone 来的 resize.sh 脚本进行tf卡分区扩展操作:sudo resize.sh,脚本运行完毕后会自动重启。 如果部分系统会无法运行,推荐用 DiskGenius软件先进行磁盘扩展,在开机进系统
参考链接: CSDN参考链接
- 需要把docker容器停止后,进行备份
- 如果挂载硬盘,需要把硬盘取消挂载,或者挂载到 /media路径下(这个路径下,脚本不会自动备份)
二进制包 一般是通过 apt 的形式,直接从仓库中获取二进制包,而且这种包,已经可以直接运行了。 而源代码包,需要把文件下载下来, 比如wget 下载源文件,解压文件后,需要使用chmod 设置可执行,才可以运行么?
是的,你理解得很正确。
对于二进制包,你可以使用包管理器(如APT、YUM等)直接从软件仓库中获取它们。这些二进制包已经经过编译,并且可以直接在你的Linux系统上安装、运行和使用,无需进一步的编译过程。包管理器会自动处理软件的安装、依赖关系和配置等。
对于源代码包,你需要将源代码文件下载到本地,可以使用工具如wget来下载或直接从软件开发者的网站上获取。解压后,你通常需要进入源代码目录并按照软件提供的安装说明进行编译、安装和配置。这个过程可能涉及运行编译命令,生成可执行文件,并在需要的时候使用chmod命令将其设置为可执行。
需要注意的是,不是所有的源代码包都需要手动编译和设置为可执行。有些源代码包提供自动化的安装脚本,这些脚本将负责编译和安装过程,使得安装过程更加简单。而有些源代码包可能只是提供了源代码,需要用户根据特定的编译和构建过程来完成安装。
总的来说,二进制包直接可用,而源代码包需要下载、解压、编译和设置为可执行,根据软件的不同,安装过程也会有所差异。
在Linux中,"./"(点斜杠)表示当前目录的路径。
当你在终端中运行一个.sh脚本文件时,"./"告诉操作系统去当前目录中查找该文件。
默认情况下,Linux终端的执行路径是$PATH环境变量中定义的一系列目录,用于搜索可执行文件。如果你想运行存储在当前目录下的脚本文件,你需要明确地指定路径以告诉操作系统在当前目录下查找脚本文件。
因此,"./script.sh"表示你要在当前目录中查找并运行名为"script.sh"的脚本文件。使用"./"前缀告诉操作系统在当前目录中执行命令,而不是在$PATH环境变量中搜索。
如果你将脚本文件的目录添加到$PATH环境变量中,你可以直接键入脚本文件的名称运行,而无需使用"./"前缀。但为了避免与系统自带的命令或其他同名程序发生冲突,建议始终使用"./"前缀来明确指定脚本文件的路径。
~/在Unix/Linux系统下代表的是当前用户的家目录(home directory)。
具体来说:
每个用户在系统里面都有一个个人目录,如/home/username
这个目录通常被称为这个用户的“家目录”或home目录 cd ~是一个环境变量,它指向当前登录用户的home目录路径
所以~/file.txt实际上代表/home/username/file.txt
例如:
当前用户是jack,家目录是/home/jack
那么:
~指向/home/jack
~/file.txt就是/home/jack/file.txt
使用~可以让路径写得更简洁,不用每次输入完整的/home/用户名。
查询树莓派 当前公网ip地址 :curl http://members.3322.org/dyndns/getip ,返回的就是公网ip XX.XX.XX.XX
zram 是 Linux 内核中的一个内核模块,它可以将内存中的数据压缩后,写入到一个文件中,从而减少内存的使用。
zram 主要有两个作用:
- 减少内存占用
- 加快内存写入速度
他和swap相比,zram 最大的优势在于,它可以将内存中的数据压缩后,写入到一个文件中,从而减少内存的使用。
不需要写入到硬盘中,避免了频繁IO操作, 导致内存卡损耗。
在树莓派中安装zram的办法,具体步骤如下:
# remove the old dphys version
$ sudo /etc/init.d/dphys-swapfile stop
$ sudo apt-get remove --purge dphys-swapfile
# release 2 GB of disk space used by the old dphys version
$ sudo rm /var/swap
# install zram
$ sudo wget -O /usr/bin/zram.sh https://raw.githubusercontent.com/novaspirit/rpi_zram/master/zram.sh
# set autoload
$ sudo nano /etc/rc.local
# add the next line before exit 0
/usr/bin/zram.sh &
# save with <Ctrl+X>, <Y> and <Enter>对zram 进行调整:
$ sudo chmod +x /usr/bin/zram.sh
$ sudo nano /usr/bin/zram.sh
# alter the limit with * 2
mem=$(( ($totalmem / $cores)* 1024 * 2))
# or in latest zram.sh versions
mem=$(( $totalmem * 512 ))
# save with <Ctrl+X>, <Y> and <Enter>
$ sudo reboot详细步骤参考此链接:


