树莓派的使用
禁不住好评如潮,开始折腾树莓派。型号4B,操作系统Ubuntu server 20.04
(无GUI)。
0、查看系统信息
1 | echo "" |
将上述命令存为shell脚本,如info.sh
然后执行即可 1
2vi info.sh
bash ./info.sh
输出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 ----------当前计算机信息---------------
系统版本: Ubuntu 20.04.1 LTS
内核版本: Linux 5.4.0-1026-raspi
CPU型号:(详细信息可使用 lscpu 查看)
Model : Raspberry Pi 4 Model B Rev 1.2
PCI设备:
00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2711 (rev 10)
01:00.0 USB controller: VIA Technologies, Inc. VL805 USB 3.0 Host Controller (rev 01)
以太网信息:
内存容量: 3831216 kB
硬盘信息:
NAME SIZE TYPE MOUNTPOINT
loop0 48.5M loop /snap/core18/1883
loop1 48.9M loop /snap/core18/1949
loop2 63.6M loop /snap/lxd/16103
loop3 59.9M loop /snap/lxd/18152
loop4 27M loop /snap/snapd/10494
loop5 27M loop /snap/snapd/10709
mmcblk0 14.9G disk
-------------DONE---------------------
1、修改软件更新源
外网速度令人发指,改为国内镜像,速度快、ipv6不计流量,价格便宜量又足...
1 | # 先保留备份 |
注1: 请在对系统进行修改前,对原始文件进行备份
注2: 如果使用apt
更新时提示ssl
错误,则先把https://mirrors.tuna...
改为http://mirrors.tuna...
更新,再使用https
即可。
2、安装raspi-config
,配置外设
1) 安装raspi-config
;
进入工大镜像,找到最新的raspi-config
(点击进入下载);
1 | # 最新为 raspi-config_20210119_all.deb |
2) 使用raspi-config
配置树莓派
1 | # 以下开始使用 raspi-config 配置树莓派 |
注1: 当开启Camera,如果出现固件过时的错误时:
解决方法:
1 Your firmwave appears to be out of date (no start_x.elf). Please ...
1
2
3
4
5 # 查看boot分区所在的设备号,设备号可能是:/dev/mmcblk0p1
df -h
# 将该设备号挂载在/boot上
mount /dev/mmcblk0p1 /boot
注2: 如果上述命令显示用户无权限,那么可以通过添加一个用户在来解决(以下方法未测试)
1
2
3
4 sudo groupadd i2c (group may exist already)
sudo chown :i2c /dev/i2c-1 (or i2c-0)
sudo chmod g+rw /dev/i2c-1
sudo usermod -aG i2c *INSERT YOUR USERNAME*
注3: 也可以通过配置文件打开spi/i2c/uart/1-wire等设备:
sudo vi /boot/config.txt
:
1
2
3
4
5
6
7 dtparam=spi=on
dtparam=i2c_arm=on
# For the best performance, tweak the I2C core to run at 1MHz.
# By default it may be 100KHz or 400KHz
dtparam=i2c_baudrate=1000000
enable_uart=1
dtoverlay=w1-gpio
参考:https://blog.csdn.net/sinat_25259461/article/details/108353324
3、安装 net-tools
、wireless-tools
、I2C
和蓝牙工具
1 | # net-tools -> ifconfig命令等 |
4、配置无线网络
无线网络的配置有两种模式,1) 首次系统启动前,在已安装系统的SD卡上修改;2) 非首次启动,进入系统后修改(需要本地/SSH登录)
1) 第一种方式:
(未测试)进入SDK的system-boot
分区,编辑network-config
文件,添加 Wi-Fi
信息. network-config
文件已经内含了一个简单示例:
1 | wifis: |
2) 第二种方式:
编辑/etc/netplan/01-netconfig.yaml文件(没有就创建)
1 | network: |
5、安装python
、pip
和opencv
1) 安装 python
严格来说,这不叫安装。Ubuntu 20.04
已经自带Python
3.8版本.如果只需要使用python 3
,并且不愿每次都输入python3
来执行脚本,那么简单的做一个软链接即可:
1 | sudo ln -s /bin/python3.8 /bin/python |
2) 安装pip
1 | # 方法一,通过Ubuntu安装 |
3) 通过pip
安装常用的python
第三方包和OpenCV
OpenCV
的部分依赖库,需要cmake
联网下载,直接安装会出错,
1 | # 首先安装常用的python库 |
OpenCV
的安装如果能成功,可以略过以下步骤。
1 | # 以下为OpenCV源码编译安装, |
注意:上述安装过程中,可能需要安装相应的编译工具。
6、安装配置 nginx
、uWSGI
、flask
;
1) 安装;
1 | sudo apt-get install nginx uwsgi uwsgi-plugin-python3 |
2) 配置:
7、非管理员访问硬件:
使用管理员权限进行硬件操作太过危险,还是使用非管理员权限比较安全,以下将用户ubuntu
添加至device
用户组,修改device
用户组,使之具有各个设备的访问权限:
1 |
|
测试时发现,貌似仅在当前session中执行后有效(原因不明),可以将上述命令作为服务,每次启动自动运行一次:
创建启动服务my-start-up
:
1 | sudo vi /etc/init.d/my-start-up |
添加如下内容: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
### BEGIN INIT INFO
# Provides: ferret
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Make devices accessiable at boot time
# Description: None.....
### END INIT INFO
# 将用户添加至devices组,以直接访问外设
sudo chown :devices /dev/i2c-1 #(or i2c-0)
sudo chown :devices /dev/spidev0.0
sudo chown :devices /dev/spidev0.1
sudo chown :devices /dev/gpiochip0
sudo chown :devices /dev/gpiochip1
sudo chown :devices /dev/gpiomem
sudo chmod g+rw /dev/i2c-1
sudo chmod g+rw /dev/spidev0.0
sudo chmod g+rw /dev/spidev0.1
sudo chmod g+rw /dev/gpiomem
sudo chmod g+rw /dev/gpiochip0
sudo chmod g+rw /dev/gpiochip1
sudo usermod -aG devices ubuntu
# 退出,重新登录,测试
i2cdetect -y 1
执行以下命令,创建启动服务 1
2
3
4
5
6
7
8
9
10
11
12
13# 自动创建
sudo update-rc.d my-start-up defaults
# 如果创建失败,以下可以手动创建
# 手动创建
# cd /etc/rc2.d
# sudo ln -s ../init.d/my-start-up S20my-start-up
# cd /etc/rc3.d
# sudo ln -s ../init.d/my-start-up S20my-start-up
# cd /etc/rc4.d
# sudo ln -s ../init.d/my-start-up S20my-start-up
# cd /etc/rc5.d
# sudo ln -s ../init.d/my-start-up S20my-start-up
8、使用红外遥控
安装: 1
2
3
4
5# 安装libgpiod库
sudo apt install libgpiod2
# 安装 adafruit-circuitpython-irremote
sudo pip install adafruit-circuitpython-irremoteadafruit
的blinka
库自带一个libgpiod_pulsein
,使用file
命令查看,为32位版本,需要使用64位替换: 1
2
3
4
5
6
7
8file /usr/local/lib/python3.8/dist-packages/adafruit_blinka/microcontroller/bcm283x/pulseio/libgpiod_pulsein
# 以下为编译`libgpiod_pulsein`64bit版本
sudo apt install libgpiod-dev
#git clone https://github.com/adafruit/libgpiod_pulsein.git
cd libgpiod_pulsein/src
make
待续
X、更新Ubuntu
和各个python
库
1) 添加一个alias
,方便更新
1 | sudo vi ~/.bash_aliases |
XX、题外话
1. 如果使用的是树莓派自己的系统(2020-12-02-raspios-buster-armhf-lite,非ubuntu),首先需要卸载自带的vim-common 安装完整版的vim,才能正常使用vim。
1 | sudo apt remove vim-common |
2. 如果希望在 Ubuntu Server
下使用桌面,命令: 1
sudo apt insatll ubuntu-desktop