Skip to content

KingDoum/Raspberry-Pi

 
 

Repository files navigation

Raspberry-Pi

树莓派资源整理汇总及分享

防背刺声明:'

本仓库克隆于 xinxingli/Raspberry-Pi:master 但是很多连接已经失效,因此重新进行数据整理,方便用户直接按图找数据

二次整理日期:2023.09.17

本文收集了树莓派使用过程中经常需要用到的资源,主要包括树莓派系统镜像、树莓派硬件介绍、树莓派GPIO引脚编号、 树莓派电路原理图下载、树莓派应用、加上笔者踩坑经验、部分常用的Linux命令

一、快速上手

所有资源均来自此网址:

树莓派快速开机资源大全 :包括树莓派快速开机指南 、系统镜像下载、烧录软件,帮助您快速上手。

补充说明无屏幕连接树莓派

无屏幕连接树莓派的核心有两个

  1. 让树莓派连上网
  2. 获得树莓派的IP地址,网上有很多方式,我这里主要是采用查看路由器后台的方式获得IP地址

1. 树莓派烧录方式

截至: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,方便区分 和辨识)

2. 网线连接

网线连接,不需要wifi配置(不知道为啥,我明明烧录的时候wifi是对的,但是一直树莓派没显示,大概率是我密码配置错了) 网线连接后,通过烧录的账号和密码,进行登陆

登录后,按照 树莓派wifi配置 这个步骤去操作一下,大概率就没问题,然后拔掉网线,让他用wifi连接即可

二、系统镜像

树莓派(raspberrypi)常用镜像高速下载 :收集了超过12种树莓派系统镜像,同时带有介绍,你可以选择一个最佳的树莓派系统,在页面即可下载系统镜像,非常方便。

目前 树莓派烧录软件中 有多个内置的系统镜像,可自行研究

三、硬件介绍

树莓派开箱-上手简评

GPIO编号:树莓派GPIO引脚对照表

四、树莓派软件源 & 镜像源

1、国内常用软件源

由于树莓派软件在国外地址不方便更新,因此考虑更换到清华源,但是又可能存在一些问题,可能缺少公钥,或者是由于 架构问题,更新数据失败,因此需要多参考别人的先进经验

踩坑指南:一定要看一下自己的架构、型号,即:

uname -m

按照代码去下放的链接中,找到对应的源,进行更新,否则就会出现各种各样的报错。

网址如下:
http://btharp.com/article/2022/6/24/107.html

五、树莓派内网穿透

树莓派若需在公网去访问,就需要内网穿透,进行内网穿透数据。 个人公网要求较低,因此主要详细介绍花生壳内网穿透方式

(一)、花生壳内网穿透

1.花生壳免费额度

每月限制1G流量,1MB带宽,2条映射

2. 操作步骤

官方介绍已经很详细了,可以直接按照他的步骤来,本人亲测好评 内网穿透

另外一种内网穿透的补充 如果是后面对公网要求流量大,可以试试这个 4MB带宽,优惠后,一年25块钱;

DDNSTO内网穿透 没试过树莓派使用这个DDNSTO,但是胜在带宽会大点,后面如果有需要,可做备选

3.花生壳以前整理的知识点

树莓派花生壳内网穿透配置介绍

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操作。

(二)、获取公网IP,直接公网访问

找运营商,索要IPV4/6的公网IP,此网址大多为动态IP(这一步难度有点大)

利用ipv4/6 开通公网,然后设置 路由器,开启 IPV6相关功能,这一步属于相对简单

购买一个域名,这个域名注册简单,但是还需要备案,备案步骤繁琐,暂时不想搞(需要购买云服务器等设备)

(更新: 问了腾讯云客服,购买域名, 不用80和403端口,主要用来做解析,固定公网ip 是大概不用备案,先确定自己的账号是不是 已经开放公网ip 然后在折腾一下,路由器刷个固件升级,说不定才可以整,步骤太多了,如果后面稳定下来在整 没必要为了这种事情,瞎折腾

这个域名,主要是为了 把动态的公网地址, 转化成静态的 域名地址信息,方便进行转换。

六、树莓派应用

仅整理自己想要尝试的项目,更多项目,在此链接中寻找

树莓派可以用来什么?

个人尝试的项目

  1. Pi Dashboard (Pi 仪表盘) --- > 目前已经被弃用,直接远程连接后,使用htop 即可显示树莓派当前状态
  2. 在树莓派闲置的时候,上传PCDN 利用网心云赚点钱 具体链接 (PS:如果链接挂了,可以直接点击此 跳转到首页,待补充) (这个PCDN,暂时废弃, 据说现在是不让上传PCDN 会被警告。

Pycharm 远程部署

建议按照这上面的行为进行部署到树莓派中

https://zhuanlan.zhihu.com/p/267836740

PS:

还有一种做法,就是在开发机上,直接进行编写代码,提交到Github上

在树莓派中,进行git pull并合并 拉取项目,运行项目

当前就是采用这种模式进行数据的拉取和更新。

不需要 自己把文件传输给树莓派,浪费 花生壳流量

七、树莓派相关手册

在此处阅读 raspberry-pi-beginners-guide-zh-cn-v1.1.pdf

八、树莓派其他配套相关知识

1.树莓派版本

Raspberry Pi 树莓派已经发布了很多个版本。每一版树莓派都有唯一的版本代号,通过下面这行命令可以查看这个代号:

cat /proc/cpuinfo

最后三行表示主板的硬件型号、版本代号和唯一的序列号

有兴趣请点击此链接了解详情

九、其他碎碎念

1.散热问题:如果不常用的话,散热就整个小风扇吹一吹就可以;如果常用的话,且4核CPU 占用100%,那么就需要注意散热问题。

超过85度,CPU会自动降频;

笔者使用了一个金属结构的被动散热,加上两个小风扇,吹一吹。 CPU全开的情况下,2个小时CPU温度不超过55度 ,差点觉得 CPU会被冻感冒 =-=

2.树莓派配置推荐

个人 设备介绍: 树莓派4B, 内存卡128GB (京东50+买的)(实际上16G内存应该也够用) 有土豪金散热装置 读卡器

十、Linux 命令辅助

由于树莓派他是基于Linux进行编译,跟习惯于Windows 的人来说, 会非常不习惯的界面和操作。很容易直接被vi 代码,直接进行劝退。

因此,我在此也分享对一些关于Linux的一些操作 和相关的介绍,知识点相当浅薄,要用的时候,建议多使用chatgtp进行合理提问和开发。

1. 树莓派常规维护和编辑

树莓派是属于通电即开机,因此常用的命令为 sudo reboot;这个命令为重启电脑,关机为 shutdown

树莓派类似Windows电脑任务管理器的界面:htop,他可以看到多核CPU的运行情况,内存,详细的任务视图,下方还有一些可以对这个界面进行自定义,显示相关数据,基本满足你对树莓派基本的监控需求

img.png

2. linux 相关信息查询

1.树莓派查看CPU温度 vcgencmd measure_temp

2.查看内存空间 free -h

3.查看硬盘空间 df -h

3. 树莓派的编辑和查看文件

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符号

如图

img.png

3. 定时任务

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脚本任务。

当任务需要在指定时间、日期运行时,通过结合分钟、小时、日期、月份、周几等字段以及#加周数语法就可以方便描述出来。

img.png

4.下载文件

发现一个非常好的github项目,涉及到非常多的linux命令,可以 一个学习的项目: linux项目 使用的时候,直接在搜索即可

使用wget 下载文件 wget -O file:name https://xxx 格式 下载文件

5.安装和卸载软件

dpkg Debian Linux系统上安装、创建和管理软件包 这个是本地安装的命令,可以手动安装包

  • dpkg -i package.deb # 安装包
  • dpkg -r package # 删除包
  • dpkg -P package # 删除包(包括配置文件)

6. 命令补全软件-oh-my-zsh

Zsh 完全兼容 bash,支持强大的智能命令补全功能, 支持大量的界面主题和插件,功能和效率都极大的增强和提高。

网页教程介绍

7.Linux 文件压缩和解压

关键词:tar, gzip, zip, unzip

8.删除文件

在Linux中,rm是一个用于删除文件或目录的命令。

以下是一些常用的rm命令选项和用法:

  1. 删除一个文件:

    rm filename
    
  2. 删除多个文件:

    rm file1 file2 file3
    
  3. 删除一个目录及其内容:

    rm -r directory
    

    使用-r选项来递归删除目录及其内部的所有文件和子目录。

  4. 静默删除文件,不发出任何警告或确认:

    rm -f filename
    

    使用-f选项会强制删除文件,而不会询问确认。

  5. 删除空目录:

    rmdir directory
    

    使用rmdir命令可以删除空目录。

  6. 删除目录和目录里面的文件

    rm -rf  directory
    

请注意,rm命令是不可逆的,删除后的文件将无法恢复。因此,在使用rm命令时要小心确认你要删除的文件或目录。特别是在使用-r选项递归删除目录时,请务必谨慎操作,以免误删重要文件。

9.代理节点

(10.17号 更新,利用docker 部署clash 进行代理加入,主要原因,有一些软件需要代理,而gg是没有代理功能的)

树莓派可以通过脚本进行代理,加快访问外网的速度

参考链接:GitHub国内加速:在Linux服务器利用gg代理优化访问

1.小技巧

如果只想代理某一条语句的执行,比如下载文件(使用 curl 或 wget 命令)或者克隆仓库, 推送更改等(git),直接在需要执行的语句前加上 gg 就可以

如果需要代理整个ssh会话的所有命令,只需要执行 gg bash

10.查找文件命令

当在Linux中使用findwhereiswhich命令时,以下是更详细的用法和示例:

  1. 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
        
  2. whereis命令:

    • 基本用法:whereis [选项] [命令/文件名]
    • 示例:
      • 查找ls命令的可执行文件、源码和帮助文档的路径:
        whereis ls
        
      • 查找gcc命令的可执行文件和帮助文档的路径:
        whereis -b -m gcc
        
  3. which命令:

    • 基本用法:which [命令名]
    • 示例:
      • 查找ls命令的完整路径:
        which ls
        
      • 查找python3命令的完整路径:
        which python3
        

这些命令的具体用法和选项可能因不同的Linux发行版而有所差异, 你可以通过查看命令的手册页(使用man命令)来获取更详细的信息。 例如,使用man findman whereisman which 来查看它们的详细用法和选项说明。

1.三者的异同点

find, whereis 和 which三个命令在Linux下都可以用于查找文件和命令,它们的主要异同点如下:

同点:

  • 都是Linux下常用的查找命令

  • 都可以用于查找文件路径或命令路径

不同点:

查找目标:

  • find可以查找文件系统下任何文件
  • whereis主要查找命令相关文件(binary,源码,manpage等)
  • which查找将被调用的具体命令路径

查找范围:

  • find可以查找整个文件系统
  • whereis范围限于系统默认路径下
  • which只查找PATH环境变量定义的路径

匹配条件:

  • find支持各种匹配文件的条件匹配如名称,类型,大小等
  • whereis只支持通过命令名称匹配
  • which直接根据命令名称匹配

应用场景:

  • find适用于需要在文件系统深层次搜索文件的情况
  • whereis适用于快速查找某命令相关文件的位置
  • which用于明确将调用哪个命令的实际路径

总之,find功能较强大,但whereis和which操作更简单高效。 主要区别在于它们查找的目标和范围不尽相同。 在实际操作中需要根据不同需求选择正确的命令。

树莓派安装qt,做NAS

当前有一块斐讯的1T移动硬盘,通过特殊的Type-C接口传入数据。

利用sms 挂载硬盘,备注:当前挂载出点问题,当在/etc/fstab中,修改开机自启后,树莓派重启之后,直接死机。 建议重启的时候,手动挂载。

利用树莓派进行接收和存储数据,把数据保存到移动硬盘中。 利用smb 进行存储和局域网共享,通过 多终端分享文件系统。

后续开了公网IP之后,可以把剧 存储在这上面, 利用MX浏览器,进行远程访问媒体。(已经开通公网+桥接, 路由器不断电,就不会换域名)

确实是因为很多剧,不能在线看,或者 资源比较少。 还不如直接找一下资源,手机能看,电脑能看,电视都能看, 只要访问自家的NAS就可以。

这样就可以无缝切换,实现影音全关注

PS:10.23号更新:

当前使用alist包的webdav的形式,而不是SMB的方式进行多媒体播放 webdav 用户配置和管理数据相对轻量简单。

安卓 使用 nplay 进行视频播放

11. 软件安装和配置

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参考链接

备份之前提示

  1. 需要把docker容器停止后,进行备份
  2. 如果挂载硬盘,需要把硬盘取消挂载,或者挂载到 /media路径下(这个路径下,脚本不会自动备份)

一些小疑问

apt下载包、手动下载和编译

二进制包 一般是通过 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 教程

zram 是 Linux 内核中的一个内核模块,它可以将内存中的数据压缩后,写入到一个文件中,从而减少内存的使用。

zram 主要有两个作用:

  1. 减少内存占用
  2. 加快内存写入速度

他和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

详细步骤参考此链接:

树莓派使用zram 教程

About

树莓派资源整理汇总及分享

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published