一,型号
第一代Raspberry Pi 1 Model B
第一代升级版 Raspberry Pi 1 B+
第二代 Rasberry Pi 2 Model B
第三代及升级版 Rasberry Pi 3 Model B/B+
第四代 Rasberry Pi 4 Model B
Model A版
比B版便宜
Zero 版
售价更便宜
总结
二,树莓派接口
如下图4B树莓派所示,左侧最上方的两个接口为USB接口,最左侧最下方的比较大的接口为以太网接口(配备了两个信号灯来表示信号的状态)。蓝圈所示为耳机接口,让我们的音视频得以输出。在它的右边有一个摄像机模块的排线接口。黄圈所示为两个HDMI接口,可以将视频进行输出,支持4K视频输出,红圈所示为typec电源接口。板子下方有一排GPIO连接器(40针),可以方便链接各种各样的传感器,在其左边有四个小的针脚,它是支持POE供电的
SD卡插在树莓派的背面,如下图所示
三,开机启动
1,外设准备
1,需要一个电源供电。下图所示充电器有一个开关,这可以使我们不需要对书没票的电源插口进行拔插,有利于延长树莓派使用寿命
2,SD卡和读卡器。用来存储树莓派的系统,建议8G以上 ,读卡器建议用高速的,这会直接影响树莓派的运行速度
3,带有USB接口的鼠标和键盘,显示屏(用HDMI线与树莓派之间进行连接)
2,烧录
1,使用官方的Rasberry Pi Imager。选择好系统烧录即可
2,自定义安装包,自由选择系统,详细的设置调整。使用如下烧录工具
3,连接外设
系统烧录完成之后就可以开始连接我们所有的外设 ,打开电源即可在显示屏上看到系统。
接线顺序:1,选连接显示屏HDMI到树莓派接口。2,连接电源线并通电
4,常见问题
- 树莓派一直重启
- 原因:电源供电问题。
解决方法:电源必须满足两个条件:1,电源功率不能低于5V/3A.2,保证电源输出稳定性。两个条件无法保证就会出现各种各样的问题,重启只是问题的一种
- 关机问题
如果把树莓派电源开关给拔掉,这样会对树莓派系统造成损失
正确关机方法:1,使用终端命令
在终端中输入sudo poweroff或sudo shutdown -h now(将-h改为-r可以用来重启。将now改为+2表示树莓派将在两分钟后关机)回车即可
2,使用桌面图标:点击桌面左上角的树莓派标志,如下图。会弹出提示窗口,选择关机即可,如下图
四,无显示屏连接,网络远程连接
1,有线连接
进行以下四步。连线,即将网线一端连接树莓派,另外一端插在笔记本上即可。共享,是将笔记本的网络共享给树莓派。查找,查找树莓派IP地址。连接,利用树莓派IP地址连接树莓派
共享:
打开Windows设置,选择网络,在更改网络设置中找到更改适配器选项,然后选择第一个无线网,双击后打开属性,在上方切换到共享,勾选允许其他网络用户通过此计算机的Internet连接来连接
查找:
打开Windows的CMD窗口 ,输入命令arp -a,回车会出现好多地址,为了找到树莓派的IP地址,在刚刚打开的网络设置中右键以太网选择属性,找到下图鼠标指针所在处的网络协议,双击
双击后,可以看到以下界面,将IP地址与之前的众多IP地址进行对照,可以看到有两个是符合的
192.168.137.255是广播IP,所以剩下的192.168.137.106就是树莓派地址,保险起见可以在CMD中ping一下看看通不通,如下图所示是ping的通的,所以这个IP地址就是树莓派IP地址
连接:
连接到树莓派的工具有很多,其中一种是putty,一种基于SSH协议的连接工具
所以需要我们开启树莓派的SSH接口。取出树莓派的系统卡,在笔记本上打开,直接在其中新建一个文本文档 ,将其名称修改为ssh(小写),去掉后缀.txt,完成之后就可以将系统卡装回树莓派开机,这时树莓派就打开了SSH接口。
打开putty界面,输入我们查到的树莓派IP地址,点击打开,会出现一个登陆选项,如下图
用户名输入pi,密码输入raspberry,回车后即可打开树莓派
在下方输入命令即可控制树莓派。所以putty只支持命令行操作
2,无线连接
通过笔记本热点共享或其他无线网络,使笔记本和树莓派之间进行无线网络数据和信息传递
树莓派连接上笔记本共享的无线网络:
首先,取出树莓派的系统卡,插入到电脑上,电脑会自动弹出SD卡之中的内容(弹出窗口中取消格式化),以下界面即为SDK文件的内容。在此文件夹中新建一个文本文件,用记事本打开,在此文件中写入要给树莓派配置的信息,如下图代码
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="无线网名字"
psk="密码"
priority=10
}
写入内容后将文件名改为wpa_supplicant.conf.这样网络配置就完成了
查找树莓派IP地址:
笔记本开启热点之后,连接该热点的设备,能够直接看到IP地址
连接树莓派:
(1)利用软件putty
有了IP地址之后,我们就可以使用远程工具putty来连接和操作树莓派了,也可以使用win10自带的远程桌面连接
(2)利用远程桌面连接
使用远程桌面连接首先要给树莓派安装对应工具xrdp(利用putty连接上树莓派,利用命令行来给树莓派安装软件,命令行输入sudo apt-get install xrdp),然后给利用远程桌面连接输入树莓派IP地址连接即可
然后输入树莓派用户名和密码,如下
然后就可以见到树莓派系统了
(3)利用VCN连接
VNC是一个图形桌面共享系统。一台计算机或移动设备(运行VNC查看器)远程控制另一台计算机(运行VNC服务器)的桌面。
VNC查看器将键盘和鼠标的操作传输到VNC服务器,并接收VNC服务器返回的屏幕更新
在这里,树莓派就是VNC服务器,笔记本电脑就是VNC查看器。首先在电脑上安装VNC查看器,再在树莓派上安装VNC服务器,最后通过树莓派IP地址使两者建立连接
1,VNC服务器建立
树莓派是自带VNC服务器的,只是在默认情况下是关闭的。
打开方式:可以通过系统桌面来打开。找到系统桌面左上方树莓派标志,选择首选项中的Raspberry Pi Configuration,打开它。
然后将第三行VNC选择为Enable即可
第二种可以通过命令行(树莓派桌面命令行或者通过putty打开命令行都是可以的)
输入终端命令sudo raspi-config,回车即可看到以下界面,通过键盘移动到第三个选项回车
再选择第三个选项回车
再选择是回车
2,VNC查看器建立
在桌面上打开网址输入realvnc.com .进入官网当中选择VNC Connect
然后选择Download中的VNC Viewer
然后下载安装包即可
3,树莓派和笔记本进行连接
打开树莓派系统的终端窗口,输入命令行vncserver,直接回车VNC就运行了,在最后一行会给一个IP地址,将其复制,如下图
在刚刚安装的VNC Viewer上输入刚才复制的IP地址,回车
输入树莓派账户和密码
3,配置静态IP地址
静态IP地址,即不会发生变化的IP地址,这样就不用每次都去查看了
(1)查找默认网关
在笔记本cmd中输入命令ipconfig后回车,最后一行就是我们需要的默认网关
(2)分配给树莓派ip地址
查找路由器分配给树莓派的IP地址,直接用此地址作为树莓派静态IP地址
树莓派系统桌面右上角有WLAN图标将鼠标放在上面就可以看到IP地址
也可以使用命令行查看,输入hostname -I即可查看
(3)修改树莓派DHCP配置文件
在终端窗口中输入命令sudo nano /etc/dhcpcd.conf ,回车后在末尾添加上配置信息:
interface wlan0
static ip_address=你的ip地址/24
static routers=你的默认网关
static domain_name_servers=你的默认网关
粘贴完成按ctrl+s写入,再按ctrl+x退出 ,最后再重启一下树莓派就配置好了静态IP地址
五,文件传输
1,文件传输方法
(1)U盘传输
U盘传输较为快捷,简单,而且电脑和树莓派均有U盘接口。但是需要U盘且树莓派和电脑都在附近
(2)VNC传输
目前VNC Viewer(VNC查看器)自带文件传输功能。VNC连接后就可以直接传输。树莓派需要开启VNCserver,个人电脑需要安装VNCviewer
将树莓派VNCServer设置为开机自启:打开树莓派系统中的终端窗口,输入命令sudo nano /etc/init.d/vncserver,然后复制粘贴以下配置文件。粘贴复制之后ctrl+s保存,再ctrl+x退出
#!/bin/sh
export USER='pi'
eval cd~$USER
case "$1" in
start)
#启动命令行。此处自定义分辨率、控制台号码或其它参数。
su $USER -c '/usr/bin/vncserver -depth 24 -geometry 1920x1080:1'
echo "Starting VNCServer for $USER"
;;
stop)
su $USER -c '/usr/bin/vncserver -kill:1'
echo "VNCServer stopped"
;;
*)
echo "Usage: /etc/init.d/vncserver {start/stop}"
exit 1
;;
esac
exit 0
然后将这个文件加上权限,输入命令:sudo chmod 755 /etc/init.d/vncserver,然后回车
再输入命令设置为开机自启,输入命令:sudo update-rc.d vncserver defaults
最后输入命令sudo reboot重启树莓派
从电脑传输文件到树莓派:
树莓派重启之后,在VNC Viewer中输入树莓派地址(在地质后加一个:1) ,然后回车连接树莓派
在树莓派桌面系统中,将鼠标移到上方会出现7个图标,如下图,点击第四个图标出现如下框,点击框左下角的Send Files
就可以浏览电脑文件了,双击所要传输的文件就可以传输到树莓派桌面上
从树莓派传输文件到电脑:
点击右上角指针所在位置的图标,会出现以下框,再点击右上角菜单
选择File Transfer
然后点击左下角Send Files
找到想要传输的文件,双击即可传输到电脑上
(3)FTP文件传输协议
六,配置编译环境(Python)
官方系统已经内嵌了python2和python3,所以在使用时只需要注意使用的python版本
在树莓派系统终端窗口中输入python可以进入带python2版本,输入python3可以进入到python3版本。
exit()为退出命令
pip install ...:给python2安装python库。比如pip install pandas来安装python2的pandas库
pip3 install ...: 给python3安装python库。比如pip3 install pandas来安装python3的pandas库
当然,树莓派系统自带像pycharm一样的IDE,可以像下图一样打开。需要注意Thonny仅仅支持Python3.5以上的版本
设置中文环境
七,Linux系统操作命令和编辑器的使用
- sudo:大部分命令用普通用户pi就可以使用。但有些命令需要高级权限才能打开
- pwd:显示当前所在目录
- cd+文件路径:切换到指定文件目录
- cd~:切换到主目录(/home/pi),~也可以省略不写
- cd ..:切换到上一级目录
- ls:展示当前目录下所有的文件和文件夹(不包含隐藏文件)
- ls -a: 展示当前目录下所有的文件和文件夹(包含隐藏文件)
- mkdir +目录名:创建目录
- touch +文件名:创建文件
- cat +文件名:查看文件所有内容
- more +文件名:查看文件所有内容
- head +文件名:查看文件前10行
- tail +文件名:查看文件后10行
- rm +文件名:删除文件
- rm -r +目录名:删除目录
- mv +文件名1 +文件名2:如果文件名2不存在,则将文件名1改为文件名2.如果存在,则文件1覆盖掉原文件2,并更名为文件名2
- mv +文件名 +目录名:将文件移动到目录
- nano +文件名:使用nano编辑器编辑文件。如果文件不存在,则创建文件。以下为nano编辑器常用快捷键
在终端输入nano t.txt即可进入以下界面来编辑t.txt文件
- vi +文件名: 使用vi编辑器编辑文件。如果文件不存在,则创建文件。以下即为进入了vi的命令模式。想要写入内容需要切换到插入模式
vi有三种模式:
插入模式下按esc可切换到命令模式
八,系统备份与还原
树莓派系统备份就是对root分区和boot分区这两个分区进行系统备份
系统备份方式共有以下两种
1,全卡备份
全卡备份需要准备树莓派SD卡1,一张容量不小于SD卡1的SD卡2,读卡器
全卡备份方式共有以下三种
这里讲方式二
首先打开树莓派系统桌面,找一张新的系统卡插入到树莓派中 ,会弹出一个窗口,输入密码后确定
点击取消
就可以发现新的SD卡就在桌面显示了
点击左上角树莓图标,按下图方式找到SD Card Copier
出现以下界面
From选择从系统卡,To选择刚才的新卡 ,点击Start
选择Yes
出现以下界面说明复制完成
2,压缩备份
准备:树莓派SD1卡,空的SD2卡,读卡器
在树莓派终端窗口中输入df -h,查看一下系统卡当前的剩余空间,查看是否能够存放备份文件,备份文件大小为:已用空间X1.2.如果剩余空间足够存放备份文件,那就直接备份文件存放在系统卡上,如果剩余空间不足够存放备份文件,那就需要另外空的SD卡,将备份文件存储在新SD卡上
然后执行以下第一行代码
然后执行第二行代码
sudo ./back.sh +备份镜像名字(可以任意取名,但必须以.img结尾)
备份完成之后可以输入ls看看当前目录下是否有刚刚备份的文件
3,系统还原(使用备份系统)
如果使用的是全卡备份的方式二和三,那么就可以把备份之后的SD卡直接插入到树莓派中直接使用。如果使用的是全卡备份的方式一或者是压缩备份,那么就需要把备份后生成的系统镜像重新烧录到SD卡中
九,GPIO管脚
电路板边缘的GPIO引脚。新版具有40针GPIO接头,老版本有26针接头
1,引脚分类
2,引脚编码方式
树莓派引脚编码方式共有三种,同一个引脚在不同编码方式上的代号是不同的
(1)板载编码
这种编码方式是按照树莓派主板上引脚排针编号,分别对应1~40号引脚。能够直接看见。注意查看引脚排列顺序,数编号时按下图顺序来数
(2)BCM编码
这种方式是参考BroadcomSOC的通道编号侧重CPU寄存器。是Python程序中常用的编码方式,如果做项目使用的是Python语言,就要注意自己的引脚编码是不是BCM编码
(3)WiringPi编码
把扩展GPIO端口从0开始编码。使用C语言控制
(4)在终端窗口查看代码
在树莓派终端窗口输入 pinout可以查看板载编码。输入gpio readall可以查看全部编码
3,控制引脚
(1)通过终端命令
先进入GPIO目录:cd /sys/class/gpio. 然后ls查看目录内容,出现下图内容
然后输入:echo 引脚编码(BCM编码) > export。打开编码表找到我们使用引脚的BCM编码,然后将上述命令的引脚编码修改即可
回车之后再来查看一下目录,而可以看到多了一个引脚目录,使用cd gpio26进入到该目录下
进入之后就可以使用终端命令来控制引脚了
输入第一行代码设置输出方向: echo out > direction
然后输入第二行代码:echo 1 > value(输出高电平)
echo 0 > value(输出低电平)
使用完成之后需要注销GPIO引脚:cd ..
echo 26 > unexport
- 也可以直接使用gpio命令控制:
如下图所示是对编号为4(BCM编码)的引脚进行控制
对照编码图可以看到,如果我们连接了7号引脚,则它对应的BCM编码标号为4,所以以上对板载编码的7号引脚,BCM编码的4号引脚进行操作
(2) 通过Python
首先cd Desktop/切换到桌面目录,使用nano编辑器直接新建python文件,如下
然后在编辑器内输入以下代码
然后ctrl+s保存,再ctrl+x退出
然后输入python3 led.py运行写好的代码即可
(3)通过C语言
创建led.c文件
运行文件先输入命令:gcc -o led led.c -lwiringPi
然后输入:sudo ./led再回车就运行了
十,串口通讯
1,树莓派串口介绍
2,利用串口通讯
需要4个步骤:
(1)安装
主要目的就是将硬件串口设置为主串口(只有主串口可以使用引脚通讯)
首先在终端输入ls /dev -al查看串口打开情况,可以发现主串口没有打开,ttyAMA0被分配到了辅助串口serial1,这表示mini串口没有显示
打开mini串口。在Raspberry Pi Configuration中
将Serial Port勾选为Enable。将Serial Console 勾选为Disable
它会提示我们重启树莓派,选择Yes
重启后再 ls /dev -al查看串口打开情况,就可以看到mini串口(ttyS0)打开了。但是硬件串口仍然是辅助串口,所以需要将硬件串口设置为主串口
输入命令sudo nano /bppt/config.txt回车
在这个文件末尾添加两行代码
dtoverlay=pi3-miniuart-bt
force_turbo=1
ctrl+s保存,ctrl+x退出即可
再输入sudo reboot重启树莓派
(2)安装串口调试工具
在树莓派上安装minicom串口助手
输入命令sudo apt-get install minicom
在电脑上安装串口调试工具XCOM
(3) 连接树莓派和电脑
三根引脚分别连接GND,TXD,RXD
连接完成后回到树莓派终端,输入命令运行minicom:minicom -D /dev/ttyAMA0 -b 9600
电脑串口波特率设置为9600就可以用电脑给树莓派发送数据了
可以看到数据发送和接收了
退出minicom:先按下ctrl+a再按下z可以弹出菜单,再按下x,选择Yes即可退出
十一,实例1:交通信号灯
数字传感器和模拟传感器:数字传感器是数字量,模拟传感器是模拟量。数字量是离散的,比如一个灯泡的开关,它只有开和关两个状态。模拟量是连续的,比如可调电灯,它可以从暗调到亮,这个过程是连续的。
此次实例所用的LED传感器就是一个数字传感器。这个传感器有3个引脚。通常来说,LED灯只需要一个电源和一个接地通过高低电平就可以控制LED灯亮与灭,实际上这样是有安全隐患的,当输出高电平时,接收信号这个引脚既接收了高电平信号,又作为一个供电引脚,那这样就会造成传感器引脚负荷,所以进行了改善,改为三个引脚
一个LED连线方式
代码:
十二,实例2:直流电机与PWM
python控制PWM
PWM控制直流电机
十三,实例3:超声波传感器
连线方式
工作原理
距离=高电平时间*声速/2
程序实现:分为4步
- 第一步:给传感器发送触发信号
GPIO.output(TRIG,GPIO.HIGH)#给TRIG引脚高电平
- 第二步:等待回波信号
传感器一旦接收到回波信号,ECHO引脚会马上输出高电平。通过循环来检测ECHO引脚
while not GPIO.input(ECHO):
pass
- 第三步:获取回响信号的时长
while not GPIO.input(ECHO):
pass
t1=time.time()
while GPIO.input(ECHO):
pass
t2=time.time()
- 第四步:根据公式计算距离
(t2-t1)*340/2