admin 管理员组

文章数量: 887007

由于内卷严重,想带着孩子(一年级)玩玩编程,所以把树莓派又玩了起来。之前我买的是3B+现在更新到了4b,于是买了8G版本回来。下面把安装过程中的坑和琐事记录下来备忘也可为由类似需求的朋友借鉴。

一、安装树莓派

说到安装树莓派,很多人首先想到的是烧录,用 Win32DiskImager将下载的映像给烧录到SD卡当中。现在有更简洁的软件,官方的,更简洁明了,适合初学或者怕麻烦的同志们用。

1. 访问官网:https://www.raspberrypi/software/,下载安装软件:imager_1.7.1.exe。

我是win10所以下载下面介个,此文件是为在SD卡上安装树莓派操作系统。

2.安装运行


选择要写入的操作系统之后,将SD卡插入读卡器中,选择指定的SD卡,开始烧录。烧录完成之后得到:

将SD卡取出,插入树莓派当中,插上电源(TYPE-C),接上显示器就有可以用了。
歪~!!!!就这么简单吗?是的。

二、配置远程连接

但是,大家一般都希望在windows系统下用远程的方式操作,没有别的,对我来说,树莓派接上显示器,鼠标键盘插上,那个鼠标光标太慢了,着急!所以还是选择远程桌面在自己的PC机器上操作比较酸爽!
于是接下来的事情就是配置远程连接,我走了一条弯路,想着用windows的远程桌面,但是总是没有配置成功,于是放弃,直接上VNC的远程方式:
大家可以参照此文:树莓派 VNC Viewer 远程桌面配置教程
在开始之前,你需要已经登录树莓派,进入到树莓派命令窗口,通过接上显示器和键鼠直接操作或通过 SSH 登录都可以,我是专门花了25大洋从某东上买了一条视频线(micro hdmi 转HDMI母口),反正以后去其他地方也是要用的,然后插显示器上进行调试。

1.启用树莓派 VNC 服务

在终端输入以下命令进入配置界面。

sudo raspi-config

选择3 Interfacing Options ——>VNC——>是,等待系统自动下载安装完成,一切顺利的话 VNC 服务就启动了!




2. 获取树莓派IP

输入:

ifconfig


上面的地址“192.168.1.24”就是本机地址。

3.windows下载VNC客户端

去 RealVNC 官网下载 RealVNC Viewer,它是 RealVNC 的客户端,跨平台。下载你需要的平台的客户端版本即可。

RealVNC 官网


运行VNC Viewer

选择File-new connection

选择连接之后输入树莓派的登录用户名密码,初始用户名 pi,密码为 raspberry。确认之后即可进入树莓派的远程桌面!



如果要修改树莓派的分辨率,可以在终端运行 sudo raspi-config 进入设置界面设置操作,不多说了。

2022年3月15日:
发现VNC viewer登录树莓派4B的时候出现这样的事情:

以为是自启动的事情,按照GEEK的教程设置了自启动的分辨率,还是这样的结果。
后来找了半天,有人说是因为用远程桌面时,树莓派4没有检测到HDMI于是就不知道干啥了,而pi3会切换到混合显示模式,所以pi3可以VCN远程正常显示。
目前对pi4的将就的一个解决办法是对/boot/config.txt文件进行修改“sudo gedit /boot/config.txt”,里面重点修改的就是一个值:

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=0
hdmi_force_hotplug=1

也就是将0 换成1.
不过这样的问题是:
1.在VCN Viewer当中,看到的是小屏幕,无法全屏显示;
2.切换到树莓派直接带显示器的时候,会啥都看不见,还要重新回到远程桌面端,将上述的hdmi_force_hotplug设置为0,或者用“sudo raspi-config”将复合显示关闭,开启HDMI显示。




回到第一级,finish,否则相当于没设置

我先在只能这样,在开启树莓派的时候就将

4、winodws远程桌面控制树莓派

可能对很多和我一样的朋友还是喜欢或者习惯用windows的远程桌面。前几天测试出了些问题,所以没有写上来,今天(2022年3月12日)测试通过就加上来。
(1)卸载已有相关包

sudo apt-get purge tightvnc
sudo apt-get purge xrdp

(2)安装包

sudo apt-get install tightvncserver
sudo apt-get install xrdp

都没有问题就执行下一步
(3)配置windows远程桌面
打开windows远程桌面,不会的直接去win搜索栏里面输入,这里不说了,输入树莓派的IP


到了这里直接输入树莓派的用户名和密码,我发现就一直卡在一个蓝色异次元了面了。

换了一个栏目xvnc,输入密码就进去了。可能我安装的依赖是VNC的吧:

说实话,这个体验比刚才那个VNC的远程要流畅很多,体验很好。

虾米了~!!!发现windows远程登录之后没有root权限,在执行“sudo gedit XXX”的时候会报错~!彻底啊虾米了,VNC还调不回来了,装不上了,重新刷机了。2022年3月12日10:27:02

2022年3月12日21:03:15:
刷机归来!这次我刷了64位的版本

这个版本里最明显的特征就是输入法中文的已经装上了。
这次,我不敢造次,直接用系统自带的VNC,一切顺利。不过我还发现一个事情,就是我们实际不用去找那个什么固定IP地址,因为我们可以在VNC Viewer中直接在IP地址的地方输入树莓派的名字“radpberrypi”,代替IP就可以了。要问我怎么知道自己的树莓派是什么名字呢?来看这里:

Hostname里面就是,不喜欢了自己去换。
在windows里面安装VNC Viewer之后打开,然后在这里如下输入登录:

好了,登录好了。

5、树莓派远程控制windows

更新于2022年5月26日

需要用树莓派登录windows吗?以前不需要但是疫情期间都在家办公就需要了。因为计算机有,但是显示器不够,桌子不够大。于是就用树莓派远程登录一台台式机(不好移动)。查找了资料,绝大多数都是用PC来控制树莓派的。这里根据查找的资料,亲自试验之后跟大家介绍一下。

(1)配置windows

开启远程桌面:
打开 Windows资源管理器,然后找到这台PC 。右键单击,然后选择属性;在系统窗口中,找到远程桌面并开启。

点击用户账户下的“选择可远程访问这台电脑的用户”,添加一个能够登录本PC机器的用户,这个用户应该是PC机上的用户,比如管理员administrator,user或者其他,那么这个用户名要有密码设置,可能有些系统在初装的时候没有设置密码,这个登录就会比较麻烦,特别是administrator用户,大多都没有设置密码。


添加用户之后才能用这个用户登录PC。
注意记录一下PC的IP地址,这个方法很多,可以点击查看网络状态属性,也可以在CMD窗口中输入“IPCONFIG”

(2)配置树莓派

更新树莓派软件库:

sudo apt update
sudo apt upgrade

安装xrdp:

sudo apt install xrdp

安装Remmina:

sudo apt install remmina

好啦,你可以在树莓派的这里看到它了

打开,运行,新建一个远程配置:


完成后点击保存并连接就可以了。
要注意,有的鼠标在树莓派上不太好使,特别是便宜的鼠标,像是在飘,我有一个罗技的,一个IFOUND的,两个插上,前者和正常使用没有区别,可是后者就太完蛋了!差点怪罪到了远程桌面身上了。

三、修改 apt 源 (bullseye版)

1.安装我比较喜欢的文本编辑器gEdit

进入树莓派,命令行输入

sudo apt-get install gedit

2.备份原始文件

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak

如果要删除文件,例如/etc/apt/sources.list.d/raspi.list 会和上面的源有重复或者版本冲突,所以可以在备份之后将/etc/apt/sources.list.d/raspi.list 的删除,防止出现源版本冲突错误:

sudo rm /etc/apt/sources.list.d/raspi.list 

3.编辑 /etc/apt/sources.list 文件(软件源)

sudo gedit /etc/apt/sources.list

将文件里的其他内容注释掉,#注释,把这两行输进去

deb http://mirrors.aliyun.com/raspbian/raspbian/ bullseye main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ bullseye main contrib non-free rpi
sudo apt-get update
sudo apt-get upgrade

不过要提醒的是,如果不是特别需要,或者的确特别慢,一版不要更换源,特别是当OS还是比较新的时候。

4.修改 pip 源

后面要开发一些 python 项目,先将 pip 源更换成国内。

mkdir ~/.pip
sudo nano ~/.pip/pip.conf

在文件中写入下面3行,保存退出

[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple/

四、固定IP(可以不做,直接用Hostname登录)

在使用树莓派的过程中,DHCP往往会自动分配树莓派的IP,因此树莓派的IP地址并不是固定的,那么每次在远程登录树莓派前都需要查看一下树莓派的IP地址,非常麻烦。因此,我们手动给树莓派设定一个静态IP地址后,树莓派的IP地址就是固定的了。
看了很多材料,又是对/etc/dhcpcd.conf进行编辑的,又是对/etc/network/interfaces进行编辑的,还有对
/etc/wpa_supplicant/wpa_supplicant.conf 进行编辑的。而且很多的材料不大负责任,把代码整个写岔行的,反正五花八门。踩了很多雷之后,我总结了如下的内容,可能不够正确,请朋友们斧正。
首先介绍一下三个文件是干什么的。

1、配置文件的作用

  • /etc/network/interfaces:用于设定每个本地网(Localhost)、以太网(通常的有线网)、无线网以及各种虚拟网是获取动态IP还是静态IP;
  • /etc/dhcpcd.conf:设定要接入的热点名称和设定的IP地址和配置。
  • /etc/wpa_supplicant/wpa_supplicant.conf:设定无线网的登录方式,比如SSID名和密码等信息。

2、配置文件的详细说明

(1)/etc/network/interfaces 文件

我的这个文件是这个样子:

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback

iface eth0 inet dhcp#值为“dhcp”:表示以该太网卡自动获取IP,不受/etc/dhcpcd.conf文件设定影响;值为"static"表示该网卡为静态IP,需要在/etc/dhcpcd.conf文件中进行设定

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static#值为“dhcp”:表示以该太网卡自动获取IP,不受/etc/dhcpcd.conf文件设定影响;值为"static"表示该网卡为静态IP,需要在/etc/dhcpcd.conf文件中进行设定
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

重点就是这句话:

iface “网卡” inet “参数” ------------如果“参数”值为“dhcp”:表示以该太网卡自动获取IP,不受/etc/dhcpcd.conf文件设定影响; 值为"static"表示该网卡为静态IP,需要在/etc/dhcpcd.conf文件中进行设定**

(2)/etc/dhcpcd.conf文件

  • 这个文件里面设定要接入的热点名称和设定的IP地址和配置。

比如我用手机开了热点(mybbc)(当然这样当手机重新建立热点的时候,热点的IP会发生变化,但是家里的无线wifi的IP地址一般都是固定的,这里是当做实验说明),PC电脑(win10)配置联网之后,用cmd调出“命令提示符”输入

IPconfig/all

查询该wifi的网络属性如下:

就是说,PC机windows的IP地址是192.168.51.55,网关地址(路由)为:192.168.51.119
于是在树莓派/etc/dhcpcd.conf文件当中,针对热点"mybbc"进行静态IP设置,将如下内容拷贝至文件末尾:


#家里的配置参数,路由器和网关地址不同
SSID mybbc
static ip_address=192.168.51.30/24
static routers=192.168.51.119
static domain_name_servers=8.8.8.8
static domain_search=114.114.114.114

如果在“/etc/network/interfaces”文件中,对以太网等网卡也使用了静态IP(例如声明了“iface eth0 inet static”),则在/etc/dhcpcd.conf文件当中需要进行配置说明。

如果在“/etc/network/interfaces”文件中对此网卡进行了静态指定,则树莓派会从/etc/dhcpcd.conf文件当中获取需要的IP等参数。

如下所示,对两个wifi(lucky和mybbc)以及一个以太网进行了静态地址指定。



#家里的配置参数,路由器和网关地址不同
SSID lucky
static ip_address=192.168.1.120/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
static domain_search=114.114.114.114
 
#公司的配置参数,路由器和网关地址不同
SSID mybbc
static ip_address=192.168.51.30/24
static routers=192.168.51.119
static domain_name_servers=8.8.8.8
static domain_search=114.114.114.114
 
#物理网口,网线接入时的配置信息
interface eth0
static ip_address=192.168.1.140/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
static domain_search=114.114.114.114
如果在“/etc/network/interfaces”文件中对此网卡进行了静态指定,则树莓派会从“/etc/dhcpcd.conf”文件当中获取需要的IP等参数。

(3)/etc/wpa_supplicant/wpa_supplicant.conf:

设定无线网的登录方式,比如SSID名和密码等信息,例如:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN

network={
	ssid="treewifi"
	psk="9879800"
	key_mgmt=WPA-PSK
}

network={
	ssid="mybbc"
	psk="64654321354"
	key_mgmt=WPA-PSK
}

为热点“treewifi”和“mybbc”设定了登录了密码。

总之,设定静态IP,分以下三步:

1.在/etc/network/interfaces 文件中指定哪些网卡需要固定IP或者自动IP;
模式为:iface “网卡” inet “参数”;网卡包括eth0、wlan0等;参数包括动态IP“dhcp”和静态IP"static";


2.在/etc/dhcpcd.conf文件中配置以太网和无线网的IP参数;


3.在/etc/wpa_supplicant/wpa_supplicant.conf文件中指定wifi的热点对应的密码。

五、树莓派扩展分区

查看一下我们的树莓派的存储情况:

df -h


这个容量没有问题,用官方的系统安装软件不会存在存储容量不满的问题。
如果有不满的,可以按下面的方法调试:

1.在命令行输入:sudo raspi-config,然后回车;
2. 选择“ Advanced Options”;
3.选择“ Expand Filesystem”;
4.继续回车,表示确定;
5.点选“Finish”完成,等待重启即可

不详细上图了,这个看界面文字操作就是了。

六、文件共享

1.网络映射

sudo apt-get install samba samba-common-bin
sudo gedit /etc/samba/smb.conf

在文件末尾加上如下内容,其中 /home/pi/shareFolder 为我设置的共享文件夹目录(将其替换为你想共享的目录即可,例如:/home/pi/public):

[public]
   #共享文件夹说明
   comment = public storage
   #共享文件夹目录
   path = /home/pi/shareFolder
   #有效用户
   valid users = pi
   #是否只读
   read only = no
   #创建文件的权限
   create mask = 0777
   #创建文件夹的权限
   directory mask = 0777
   #是否允许访客访问
   guest ok = no
   #是否可见
   browseable = yes

其中 valid users 即 pi 为有效用户,还需要添加其到 Samba 中,命令行执行:

sudo smbpasswd -a pi

重启 samba 以生效配置,命令行执行:

sudo samba restart

注:Samba 默认开机自启,无需为重启担心。

设置文件权限
在 Samba 配置文件设置权限后,还需在系统中将共享文件夹的权限设置为同配置文件中相同的权限,以确保其他用户正常访问及修改文件夹内容,命令行执行:

sudo chmod -R 777 /home/pi/shareFolder

Windows访问共享文件:

在资源管理器地址栏输入:\raspberrypi\public,其中 raspberrypi也可替换为你树莓派的 IP 地址。

在资源管理器当中,选择共享文件夹(这里我选择了pi,这个包含了刚才建立的public),右键,“映射网络驱动器”,这样以后这个文件夹就会当做本地硬盘一样的使用了。

2.VCN 传输

VCN Viewer有个类似windows远程桌面的浮动栏,这里面有几个菜单,可以选择,其中就有文件传输:

点击这里就可以把 主机(远程桌面客户端主机)的文件,传给远程端(VCN服务器主机)
如果要反过来把远程端(VCN服务器主机)当中的文件传给本地主机(远程桌面客户端主机),那么需要再远程vcn viewer中操作:


这里有文件传输,则可以实现远程文件到本地的传输。

七、编程环境

1.python

系统自带python,我的系统中是python3

2.C环境

pi@raspberrypi:~ $ gpio -v
gpio version: 2.52
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Pi 4B, Revision: 05, Memory: 8192MB, Maker: Sony 
  * Device tree is enabled.
  *--> Raspberry Pi 4 Model B Rev 1.5
  * This Raspberry Pi supports user-level GPIO access.

说明GPIO是正确的

继续测试,输入:

gpio readall

结果

pi@raspberrypi:~ $ gpio readall
 +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT5 | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | ALT5 | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI | ALT0 | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK | ALT0 | 0 | 23 || 24 | 1 | OUT  | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | OUT  | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+

说明gpio读取管脚正确。
如果报错,就直接下载安装一个最新的:

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

树莓派上的编程环境有如下两个:

Geany是C的编程环境;thonny是python的编程环境。


更新日志:

更新日期更新内容
2022年3月16日增加编译环境
2022年3月16日增加文件共享VCN传输
2022年3月12日更新windows远程桌面开启
2022年3月12日22:28:14新增共享文件
2022年5月26日新增用树莓派远程登录windows

本文标签: 环境 基础 日志 树莓派