玩转树莓派入门系列——1.从裸机到连接
一、拆箱
一直都想体验下树莓派4b,这次直接购买了项目套装系列,包括了一大堆的传感器,图片中只包括树莓派硬件系列,包括,主板,外壳,风扇以及散热片
主板
首先贴上散热片,博通是祖传的火炉,加上树莓派4B性能很大幅度提高,所以发热很严重,所以最好贴上散热片
风扇也是散热的一大法宝,所以最好加上风扇,风扇红色线是正极,接在5V引脚上。黑色是负极,接地。查看主板的GPIO引脚。
最后拼接亚克力外壳,放进主板,就组装完成了。效果如图
接上Type-C电源,就可以正常启动了。
二、参数
从上图可以看出,树莓派4b主板上,提供了以下接口
a、CPU:Broadcom BCM2711,四核Cortex-A72(ARM v8)64位SoC @ 1.5GHz
b、内存:有2G,4G和8G LPDDR4-3200 SDRAM
c、网卡:2.4 GHz和5.0 GHz IEEE 802.11ac无线
d、有线网卡: 千兆以太网,POE以太网供电
e、USB接口: 2个USB 3.0端口;2个USB 2.0端口,USB管理芯片
f、3.5mm音频口:输出音频使用
g、CSI摄像头: 2通道MIPI CSI摄像机端口
h、电源输入: 通过USB-C连接器5V DC(最小3A )
i、DSI屏幕: 2通道MIPI DSI显示端口
j、蓝牙:提供蓝牙5.0BLE
k、GPIO引脚: Raspberry Pi标准40针GPIO接头连接器(与以前的板完全向后兼容)
l、内存卡插槽: Micro-SD卡插槽,用于加载操作系统和数据存储
工作温度: 0 – 50摄氏度环境
其他参数:
GPU:500 MHz VideoCore VI
最大分辨率:4k 60Hz+1080p 或 2*4k 30Hz
多媒体:H.265(4kp60解码),H264(1080p60解码,1080p30编码)OpenGL ES1.1,2.0,3.0 graphics
三、装系统
树莓派购买回来后,默认是没有系统的,所以必须给裸板安装上系统。
这里可以使用官方提供的烧写工具Raspberry Pi Imager,
或者直接下载镜像后用win32diskimager进行烧写
Raspberry Pi Imager下载链接:https://www.raspberrypi.org/downloads/
Raspbian系统镜像下载链接:https://www.raspberrypi.org/downloads/raspbian/
1.格式化SD卡
将SD卡插入电脑中,用SD Card For matter进行格式化
2.烧写镜像
从官网上下载最新的镜像后,用win32diskimager进行烧写
3.等到提示成功后,拔出sd卡,插入到树莓派的SD卡槽中就可以启动了。
三、连接
树莓派提供多种连接操作的方式,比如
1.用micro HDMI接入
树莓派4b 提供两个高清4K/60Hz的micro HDMI接口,如果有micro HDMI接口,或micro HDMI转接口,可以连接到屏幕上进行显示。
2.远程桌面连接
可以通过在树莓派系统中,安装远程桌面xrdp插件,那么就可以在Windows端,通过远程桌面登录树莓派桌面了
apt install xrdp
安装完后,就可以在windows端,通过远程桌面登录。
默认账号密码是:pi/raspberry,当然你也可以和linux下操作一样,创建自己的账号和密码
3.无线网络WIFI
在有显示器的情况下,直接就可以通过终端或桌面对wifi进行配置
在没有显示器的情况下,有两种情况,一种是可以使用终端,一种是没法登陆终端
a.有显示器的情况
通过GUI为树莓派设置wifi是最简单的方法,在桌面右上角选择wifi图标,进去后选择对应的wifi输入密码进行配置。
b.可以使用终端的情况
修改wifi配置文件
vi /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="SSID"
psk="Password"
}
之后重启端口即可
ifconfig wlan0 up
ifconfig wlan0 down
c.无法使用的终端
将SD卡插入电脑,在SD卡的boot分区,新建wpa_supplicant.conf 文件,并且配置 WiFi 的 SSID 和密码
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID"
psk="密码"
}
4.有线网络
自动获取:在局域网中,树莓派默认是有线网卡使能的,只需用网线接入到局域网中,即可以自动获取IP
手动获取:如果树莓派与电脑直连,则配置vi /etc/dhcpcd.conf
在后面添加
interface eth0
static ip_address=xxx.xxx.xxx.xxx/24 //设置IP地址
static routers=xxx.xxx.xxx.xxx //设置默认网关
static domin_name_servers=xxx.xxx.xxx.xxx //设置DNS服务器域名地址
之后,再把电脑网卡设置为同一个网段即可以互通。
5.ssh登录
树莓派默认是没有开启vnc和ssh的。
有两种情况,一种是可以操作桌面,一种是没法操作桌面
a.可以操作桌面
在树莓派的桌面界面中配置,点击开始菜单(左上角)——Preferences(首选项)——Raspberry Configuration(树莓派配置)——Interface(接口)中,可以选择开启SSH
b.没法操作桌面
将SD卡插入电脑,在SD卡的boot分区,新建ssh文件即可。
通过ssh登录,首先要给树莓派一个IP地址,通过以上方法获取到相应的IP地址后,就可以用ssh进行登陆了,默认的账号密码是:pi/raspberry,同样的,如果要想创建自己的账号密码,就如在linux上操作一样,使用useradd,passwd等操作命令。
6.Uart连接
串口线的VCC不接,GND接14号GND,RXD接8号TXD,TXD接10号RXD,将usb那头插入电脑(见上面GPIO引脚图定义)
a.没法操作系统
将系统镜像写入SD卡后,进入boot盘,编辑config.txt文件,在文件最后添加“enable_uart=1”,然后保存,将SD卡插入树莓派
b.进入系统后
修改文件/boot/config.txt
在文件最后添加“enable_uart=1”。
四、常用配置(更新中)
1.修改root远程ssh登录权限
vi /etc/ssh/sshd_config #修改sshd_config文件
PermitRootLogin yes #新增RermitRootLogin权限
2.用户+密码操作
树莓派默认账户密码是:pi/raspberry
usermod -l new_name pi #修改pi用户名
groupmod -n new_name pi #修改pi用户组名
mv /home/pi /home/new_name #修改pi的home目录
usermod -d /home/new_name new_name #修改/etc/passwd中的新用户home目录地址
或者
```bash
ps -aux | grep pi #查看所有pi的进程号
kill -9 xxxx #杀死所有pi的进程
deluser pi #删除pi用户
adduser new #创建new用户
#新用户修改权限,修改/etc/sudoers文件
pi ALL=(ALL) NOPASSWD: ALL
#改为
yourname ALL=(ALL) NOPASSWD: ALL #此操作需要查看配置文件是否限制了用户权限
#修改账号密码
sudo passwd new_name
#或者使用adduser/deluser等命令
adduser new_name
vi /etc/sudoers
new_name ALL=(ALL:ALL) ALL
deluser old_name
### 2.换源+时区
```bash
#备份源文件
cp /etc/apt/sources.list /etc/apt/sources.list.bak
#修改apt源
vi /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
#修改系统源
vi /etc/apt/sources.list.d/raspi.list
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
#更新源
apt update
apt upgrade
#查看时区
date
#修改时区
dpkg-reconfigure tzdata #选择Asia/Shanghai
3.设置固定IP
a.固定无线IP
vi /etc/dhcpcd.conf
修改以下注释为无线IP局域网
当然,interface应该是wlan0而不是eth0
b.固定有线IP
如3.a修改无线IP一样,只是网卡名当然修改为eth0的有线网卡名,手动设置静态IP一般只用于和电脑直连的情况,如果接入交换机等二三层设备,一定要选择dhcp,要不分配不到IP无法上网。
4.新增WIFI连接
a.图形界面操作
很容易的操作,就和windows上一样,右上角找到wifi图标,选择要连接的wifi,输入密码登录
b.没法操作桌面
这里有两种情况,一种是无法使用命令行,二是可以使用命令行
如果可以使用命令行的时候
vi /etc/wpa_supplicant/wpa_supplicant.conf
#添加以下内容
network={
ssid="WiFi的SSID1"
psk="WiFi密码1"
}
network={
ssid="WiFi的SSID2"
psk="WiFi密码2"
}
如果无法使用命令行的时候
将SD卡插入电脑,在boot分区下,新建 wpa_supplicant.conf 文件,conf文件内容如下
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="WiFi的SSID1"
psk="WiFi密码1"
}
network={
ssid="WiFi的SSID2"
psk="WiFi密码2"
}
之后将SD卡插入树莓派后重启,就可以自动连接上该WIFI了。
5.sd卡扩容
树莓派上插了16G的SD卡,但有效空间只用了8G,操作系统占一下,就所剩不多了。。
运行 sudo raspi-config,在选项中找到 Expand Filesystem 这个选项,设置一下,再重启就可以了
6.安装samba
安装samba服务
apt install samba samba-common
打开/etc/samba/smb.conf位置文件,在最末尾加上
[incubator]
comment = Share
path = /
browseable = yes
writable = yes
设置账号密码
smbpasswd -a incubator
五、开发环境配置
一般常用的开发环境为C语言或Python,对应的,C语言开发常用的开发库为WiringPi,Python开发常用的库是PythonGPIO
1、WiringPi
a、安装
apt update
apt upgrade
apt install git
git clone git://git.drogon.net/wiringPi
cd wiringPi
b、测试
./build
gpio -v
有输出版本代表成功。
c、常用命令
gpio readall //查看gpio管脚图
gpio -v //查看版本
d、常用函数
函数 | 作用 |
---|---|
int wiringPiSetup (void) | 初始化引脚 |
void pinMode (int pin, int mode) | 配置引脚的IO模式 |
void digitalWrite (int pin, int value) | 让对一个已近配置为输出模式的 引脚 输出指定的电平信号 |
int digitalRead (int pin) | 读取一个引脚的电平值 LOW HIGH |
void pullUpDnControl (int pin, int pud) | 对一个设置IO模式为 INPUT 的输入引脚设置拉电阻模式 |
e、编译
动态库编译,在gcc编译后链接上库,加上参数 -lwiringPi
2、PythonGPIO
a、安装
apt update
apt upgrade
apt install get
wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-x.x.x.tar.gz
tar zxvf RPi.GPIO-x.x.x.tar.gz
cd RPi.GPIO-x.x.x
sudo python setup.py install
b、导入库
import PRi.GPIO as GPIO
import time
c、GPIO输出
GPIO.setmode(GPIO.BCM)
GPIO.setup(11, GPIO.OUT)
六、系统备份
树莓派没有系统恢复这个操作,一旦断电或者突发情况,可能会导致系统丢失,如果想恢复之前的系统,则需要备份系统。
方法一
可以使用Win32diskimager工具进行系统备份,创建一个img文件后,选择读出(read)即可。
之后可以用这个img文件,再通过Win32diskimager工具写入,即可恢复之前的系统镜像。
方法二
使用SD卡插入读卡器,再接入到树莓派的usb接口上,
使用命令
sudo dd bs=4M if=/dev/mmcblk0 of=/dev/sda
如果想显示进度,执行
watch -n 5 pkill -USR1 ^dd$