目录
4.2 文件存储
第一章 树莓派基础
1.1 树莓派简介
Raspberry Pi (中文名为树莓派,可简写成PRI\RasPi\RPI),是一款仅有信用卡大小的微型计算机。
1.1.1 起源
Eben Upton 博士研发出的一款小型的计算机设备,并成立了相关的“Raspberry Pi”基金会。
1.1.2 介绍
树莓派是一款开源的硬件,功能完善。目前最新的Raspberry Pi 4 使用1.5GHz ARM 芯片,更高的自选内存,支持双HDMI 4K 显示器、USB 3.0、蓝牙 5.0、无线网和 千兆以太网。
树莓派分为A和B型号,型号B的功能更强大,型号A相对更便宜。可以通过以下命令查看树莓派的型号:
cat /proc/cpuinfo
1.1.3 系统
树莓派主要的系统为Linux系统,目前最流行的两个版本分别是 Raspberry Pi OS( 也称为Raspbian) 和 Pidora,其中 Raspberry Pi OS 是基于Debian 操作系统,Pidora 是基于Fedora 操作系统。
如果想尝试不同的Linux发行版本,但是不确定使用哪个版本时,可以尝试最新生成软件(New out of Box Software ,NOOBS). 第一次或者在启动时按住Shift键,可以选择不同版本的系统。
还有其他的很多选择,树莓派支持的系统非常多,有基于Linux和非Linux,甚至可以利用树莓派设计自己的操作系统。
1.1.4 应用
树莓派不仅拥有计算机的功能,通过GPIO 数模转换接口,可以用来控制各种传感器、电动机。具体有如下应用:
- 连接硬件用来做数据采集、监控、分析、发布等
- 作为小车、飞行器、机器人、智能家具等智能设备的控制中心
- 轻量级的计算机
- 学习编程
- 搭建原型产品
1.2 烧录系统
- 电源:5.0V/3 A。
- 显示器:需要用到Micro HDMI 接口转HDMI接口。
- TF内存卡:闪迪
- 键盘和鼠标:无线,有线皆可
- 可选设备:外科和散热器
- 安装系统:在官网按照教程操作即可
- 无显示器安装系统:参考网上教程
第二章 树莓派使用Python
2.1 树莓派使用
2.1.1 RPi OS 简介
Raspberry Pi OS(Raspbian) 发行版是基于Debian 系统的Linux发行版。
2.1.2 使用LXDE
LXDE 是一个轻量级的桌面环境。
2.1.3 使用终端
超级用户启动:
sudo passwd root
2.1.4 使用SSH
SSH 为 Secure Shell 的缩写,有IETE的网络小组(Network Working Group)制定,SSH为建立在应用层基础上的安全协议。
2.1.5 使用 VNC
VNC 是 Virtual Network Computing 的缩写,是一个桌面共享系统。
2.2 安装Python
2.2.1 安装python
# 1. 安装依赖包
sudo apt-get install -y make build-essential libssl-dev zlib 1g-dev
sudo apt-get install -y libz2-dev libreadline-dev libsqlite3-dev wget curl llvm
sudo apt-get install -y libncurses5-dev libncursesw5-dev libncursesw5-dev xz-utils tk-dev
# 2. 进入待下载的页面
cd ~
# 3. 下载python
sudo wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
# 4. 等待下载结束,执行以下解压命令
sudo tar -zxvf Python
# 5. 进入该文件夹目录
cd Python
# 6. 执行以下命令安装
sudo ./configure --prefix=/user/local/python3
sudo make
# 7.安装完成,创建软链接
ln -s /user/local/python3/bin/python3 /user/local/bin/python3
ln -s /user/local/python3/bin/pip3 /user/local/bin/pip3
python -v
pip3 -v
2.2.2 Python 解释器
解释型语言每检查一条语句,翻译成二进制然后执行。
2.2.3 Thonny
python IDE 集成开发环境。
第三章 Linux命令
3.1 系统管理
3.1.1 用户管理
普通用户:$
超级管理员:#
更改密码:sudo passwd root
增加用户:sudo useradd 用户名
删除用户:sudo userdel 用户名
3.1.2 进程和服务管理
触发一个事务,会开启一个进程,并给予该进程一个PID.
ps -l 查看当前bash下相关进程的全部信息。
pstree 显示整棵进程树。
top 实时的动态显示进程信息。
pidof 指定进程 查看指定进程的PID
kill PID 杀死单个进程
killall 进程名 杀死该程序的所有进程
Linux 服务管理主要有两种方式,即service和systemctl。主要负责控制systemd系统和服务管理器。
Systemctl命令常见用法:
1)列出所有可用单元 systemctl list-unit-files
2)检查某个服务的运行状态 systemctl status nginx
3)列出所有服务 systemctl list-unit-files --type=service
4) 重启、停止、启动服务 systemctl restart/stop/reload/status nginx
5) 查询服务是否激活,以及配置开机启动 systemctl is-active/disable/enable nginx
6) 结束服务 systemctl kill nginx
7) 列出设备的各项设备、挂载、服务
- systemctl list-uint-files -- type
- automount device path snapshot swap timer
- busname mount service socket terget
8) 重启、停止、挂起、休眠系统 systemctl reboot/halt/suspend/hibenate/hybrid-sleep
3.1.3 系统重启和关机
sudo reboot/poweroff/shutdown -h 03:1/halt
3.2 文件管理
文件管理包括文件或目录的创建、删除、查询、移动,由mkdir,rm,mv等命令实现,其中文件查询是重点,用find命令来进行。
3.2.1 创建和删除
mkdir 目录/路径下的目录
rmdir 空目录删除
rm -rf 目录
nano 文件 创建文件
rm 文件 删除文件
mv 文件 移动文件
mv 文件 目录 移动并重命名
cp 文件 目录 拷贝文件
cp -r 目录 目录 拷贝整个目录
创建符号连接
- ln ccccAgain 硬连接
- ln -s cc ccTo 软连接
3.2.2 目录切换
ls: 显示目录信息
pwd: 显示当前目录
cd: 切换目录
3.2.3 权限设置
chmod命令使用直接或者二进制两种方式来修改权限:
1):直接方式 chmod o-wx 文件名
- u 代表文件所属用户
- g 代表与文件所属用户同组的用户
- o 代表其他所有用户
2):数值方式 chmod 755 文件名
- r = 4
- w = 2
- x = 1
3.2.4 查找
find ./-name "core*" | xargs file 搜寻文件或目录
find ./-name ".o" 查找目标文件夹中是否有obj文件
find ./-name ".o" -exec rm {} \ 递归当前目录及子目录以删除所有.o结尾的文件
3.3 软件管理
linux操作系统提供了一个集中的软件包管理系统,帮助用户搜索、安装和管理系统。软件通常以包的形式存储在仓库(repository)中,对软件包的管理和使用称为包管理。
3.3.1 软件安装
Raspberry Pi OS 系统包的格式为.deb 文件,要直接安装生成.deb包时需要使用dpkg命令。
sudo dpkg -i 包名.deb
Raspberry Pi OS 系统使用的是本地数据库存储远程可用的包仓库列表,在安装或升级包之前最好更新这个数据库。
sudo apt-get update
知道某个软件包的名称后,就可以使用以下命令从软件仓库安装:
sudo apt-get install 包名
sudo apt-get install -y 包名 无需提示 直接安装
3.3.2 软件升级
sudo apt-get upgrade
sudo apt-get dist-upgrade
3.3.3 软件搜索
apt-cache search 搜索内容
apt-cache show 包名 查看该软件包的详细说明
dpkg -s 包名 显示当前包的安装状态
3.3.4 软件卸载
sudo apt-get remove 包名 卸载保留配置文件
sudo apt-get -purge remove packagename 卸载并删除配置文件
sudo apt-get autoremove 自动移除已知不需要的包
3.4 性能检测
使用树莓派在系统中部署几个不同功能的程序系统时,这些功能涉及数据库读写,串口读写,Web访问等,对系统的压力较大,经常需要查看当前系统的性能,需要知道了解CPU,内存,和硬盘的使用情况。
3.4.1 使用命令查看
vmstat n m (n 为监控频率, m为监控次数 ) 查看cpu,内存和硬盘的使用情况。
free -m 查看内存使用情况
df -h 查看磁盘空间利用情况
du -sh 查询当前目录下空间利用情况
du -sh 'ls' 该目录下所有文件夹排序后的大小
watch 工具持续监控应用某个数据的变化
3.4.2 使用脚本查看
略过
第四章 常用操作
4.1 树莓派换源
4.1.1 查看系统版本
sudo lsb_release -a 查看系统版本 11 bullseye
4.1.2 更换系统源
- 先备份源文件
- sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
- sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sorces.list.d/raspi.list.bak
- 编辑源文件
- sudo nano /etc/apt/sources.list
- 将初始代码使用#注释,添加新的清华镜像源
4. Ctrl + O 保存,Enter键,Ctrl + X 离开
5. 编辑系统源文件
6. deb Index of /raspberrypi/dists/bullseye/main/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
deb-src Index of /raspberrypi/dists/bullseye/main/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
7. 同步更新更新源
sudo apt-get update
sudo apt-get upgrade
4.1.3 更换pip源
cd ~
mkdir .pip
cd .pip
nano pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
4.2 文件存储
利用树莓派搭建一个文件存储器,实现文件和数据备份
4.2.1 FTP服务
1): 安装vsftpd 服务器 sudo apt-get install vsftpd
2):启动FTP 服务 sudo service vsftpd start
3):编辑vsftpp 的配置文件 anonymous_enable = NO local_enable = YES write_enable=YES local_umask=022
4):重启vsftpd 服务 sudo service vsftpd restart
第二篇 核心技术
第五章 GPIO基础
5.1 GPIO简介
5.1.1 GPIO定义
GPIO(通用型输入/输出) 接口常简称为GPIO,用于输出高低电平或读入引脚的状态是高电平或低电平。
5.1.2 GPIO 引脚布局
有三种情况对树莓派的GPIO引脚进行编号
- 物理引脚编号
- wringPi编号 使用C语言开发,可以通过gpio readall命令查看
- BCM编号,Broadcom SOC的通道号码,pinout查看配置信息和引脚编号
5.2 连接GPIO
5.2.1 直接连接
5.2.2 使用T形扩展版
5.2.3 使用面包板
5.3 使用RPi.GPIO模块
5.3.1 基本用法
import RPi.GPIO as GPIO
# 指定编号规则
GPIO.setmode(GPIO.BoARD)
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# 将引脚设置为输入
GPIO.setup(channel,GPIO.IN)
# 将引脚设置为输出
GPIO.setup(channel,GPIO.OUT)
# 将引脚设置为默认
GPIO.setup(chanel,GPIO.OUT,initial=GPIO.HIGH)
# 一次设置多个通道
chan_list = [11,12]
GPIO.setup(chan_list,GPIO.OUT)
# 读取引脚的输入状态
GPIO.input(channel,state)
# 设置引脚的输出状态
GPIO.output(channel,state)
# 一次设置多个引脚
chan_list = [11,12]
GPIO.output(chan_list,(GPIO.HIGH,GPIO.LOW))
# 释放脚本中使用的引脚
GPIO.cleanup()
#查看RPi 开发板信息和RPi.GPIO版本
GPIO.RPI_INFO
GPIO.VERSION
5.3.2 模块的输入
# 输入引脚处于“悬空”,输入的状态可能会反复变化,可以使用硬件或者软件对电阻进行上拉或下拉
# 获取当前瞬间的引脚信息
GPIO.setup(channel,GPIO.IN,pull_up_down=GPIO.PUD_UP)
# 实时监控引脚状态变化
# 方法一通过轮询的方法
import time
while GPIO.input(channel) == GPIO.LOW
time.sleep(0.1)
# 方法二通过使用中断(边缘检测)
# 1):使用wait_for_egde()
channel = GPIO.wait_for_edge(channel,GPIO.RISING,timeout=5000)
if channel is None:
print()
else:
print()
# 2): 使用add_event_detect(),对引脚进行监听,引脚输入状态发生变化,调用event_detected()函数
GPIO.add_event_detect(channel,GPIO.RISING)
if GPIO.event_detected(channel):
print()
# 也可以使用回调函数
def mycallback(channel):
print()
GPIO.add_event_detect(channel,GPIO.RISING,callback=my_callback)
# 回调可能不止一次被调用,出现“开关抖动”,可以在指定的函数加入bouncetime=参数去抖动
# GPIO.remove_event_detect(channel) 停止检测边缘程序
5.3.3 脉冲宽度调制
脉冲宽度调制(PWM)是指通过改变脉冲信号的频率和高电平的持续时间来实现电压控制。
# PWM功能的简单应用
# 创建一个PWM的实例对象
p = GPIO.PWM(channel,frequency)
# dc代表占空比
p.start(dc)
# 设置新的频率
p.ChangeFrequency(freq)
# 设置新的占空比
p.ChangeDutyCycle(dc)
# 停止 PWM
p.stop()
5.4 控制GPIO输出
5.4.1 硬件连接
5.4.2 测试GPIO输出
5.5 检测GPIO输入
5.5.1 硬件连接
5.5.2 下拉电阻
5.5.3 上拉电阻
5.5.4 反应测试
5.6 拓展GPIO
5.6.1 SPI通信协议
SPI 全称是串行外设接口,
5.6.2 I2C通信协议
5.6.3 串口通信协议
第六章
6.1 LED
6.1.1 控制亮度
实例呼吸灯
6.1.2 改变颜色
RGB-LED
6.1.3 RGB-LED 灯条
6.1.4 LED矩阵
6.1.5 使用OLED
6.2 蜂鸣器
6.2.1 有源蜂鸣器
6.2.2 无源蜂鸣器
5379



被折叠的 条评论
为什么被折叠?



