树莓派3B配置+UART+pytorch环境配置


前言

树莓派纯新手,一点点linux和python基础,磕磕绊绊的使用记录。


材料:树莓派3b、5V-2A的充电线、一张写好了的tf卡(32G)、显示器、键鼠、路由器和网线、校园网

一、开箱

主要参考:https://blog.csdn.net/qq_29225913/article/details/100939347感谢大佬
(文章很详细,我在此仅做一些补充,记录我遇到的问题和最终的解决方法,碎碎念。后续为完整性再补上详细步骤吧)
1、多参考官网提供的安装包、文档和论坛:raspberry官网
2、一点点弯路
问题表现:树莓派上电之后,power的红灯亮,但代表着读取tf卡的ACT灯只亮了一下就熄灭了(应该是读卡读到一半歇菜了),显示器是彩虹屏。
最终解决:重新写一遍tf卡。。。(树莓派是从老师那“继承”的,以为已经写好了。出现上述问题还去官网以及百度了各种别人的解决方法,还以为树莓派已经“光荣”了。。。事实证明,一定要保证tf卡是写好的!!!)

二、设置树莓派

依然参考文章https://blog.csdn.net/qq_29225913/article/details/100939347感谢大佬

1.开机初始化设置

按照提示一步步来,就像电脑和手机第一次开机一样,并无特殊的注意点。

2.config设置

两种方法,一种是在Terminal(ctrl+alt+T)里输入sudo raspi-config调出图形化界面,键盘的上下左右和enter键控制选择;另一种就是在点击桌面任务栏的树莓图标下的Preferences-Raspberry Pi Configuration进行设置。另外,官网中也给出了详细的设置方法,建议参考官网help

2.1 Interfacing Options

按需Enable(我使能了SSH和VNC)

2.2 Advanced Options

Expand Filesystem

引用自文章 :烧录完的 TF卡分成了3个区:boot、系统以及空闲空间,容量有很大部分都未分配,执行一下该过程可以将所有的容量都分配出来给系统,可被用户使用。可以通过df -l命令来查看当前占用的空间。

Memory Split

引用自文章 :分配显存,默认分配128MB,对于用到摄像头、opencv、图形化界面、家庭影院等的用户,可以改成256MB,有助于提高流畅性(性能限制,只能稍微快一点),如果做下载机、文件服务器等不需要界面的,可以保持默认或者改成64MB都是OK 的。 树莓派3的内存只有1G,为方便后续使用,在此分配 256MB 给显存,对于树莓派4的用户,有4G的内存,分个512MB~1024MB都是OK的。

2.3 Network Options

这里是连接WIFI的好地方(雾),SSID代表着wifi名,然后是密码。当然从桌面任务栏也可以连接(就和电脑一样)。需要补充的是Change Wifi Country是在Location Options里设置的。

另一种设置wifi连接的方式就是修改网络配置文件。(建议修改文件的时候,先去对应的路径下看看该文件究竟长啥样——当然肯定没有权限直接修改,然后再在命令行里用nano编辑,具体的放到3里面)

3 网络配置文件(自动连接wifi)

总共需要修改两个文件(文档修改完之后保存、退出)。
Terminate里输入sudo nano /etc/network/interfaces打开文件后我是一个仅有注释的文档。因此在里面添加:

auto lo
iface lo inet loopback
iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

上述代码我也没完全整明白,也是参考的(啊这)。但最后一行提到的这个配置文件,显然也是要继续修改的。
nano编辑底部是有一些保存、退出的快捷键和提示的,在此不赘述。
Terminate里输入sudo nano /etc/wpa_supplicant/wpa_supplicant.conf,如果你已经按照2.3中任意一种方法登过wifi,那么你应当可以看到相应的代码。如果没有登陆过网络,那么可以通过在文件中添加如下代码实现开机自动进行网络连接(我是wifi,其他连接方式应该也有相应的代码):

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network={
		ssid="RpiDebug" #wifi名称
		pkw="002396ap"  #WiFi密码
		key_mgmt=WPA-PSK #加密方式,绝大多数都是WPA-PSK和WPA2-PSK的,可在路由器设置中见到
		priority=1 #网络优先级,1最优先,数字越小优先级越高
}
#校园网设置(我的校园网是连接后需要身份认证的,
#一开始走了许多弯路,后来发现并不需要添加identity什么的,直接设置即可)
#并不知其他学校校园网是怎样的,仅供大家参考吧
network={
		ssid="seu-wlan" #wifi名称
		key_mgmt=NONE #本校园网辣鸡到不加密
		priority=2 #网络优先级,1最优先,数字越小优先级越高
		disabled=1 #disabled  禁用该网络
}

重启reboot之后就可以了。有显示器的话,打开浏览器看看上没上网,无显示器的话就在命令行里ping一下别的网站,比如ping www.baidu.com看看有无回应,有回应就是连上网了。
有必要在此说明,我的路由器也是连接的校园网,即是说,如果没有保存过自动登录校园身份认证的情况下,无显示器启动树莓派的话该方法将无法连接外网(应该有解决方案,目前尚未解决,待填坑)。如果是申请的宽带,或者手机热点,或者其他不需要额外身份认证的网络,就不会有这样的问题。(但路由器可以解决IP地址会变动的问题,方便电脑远程)

4 修改源

更换软件更新的源,修改为国内的镜像,这样以后执行apt-get命令的时候应该会快点。这里需要修改的文件有两个(/etc/apt/sources.list和/etc/apt/sources.list.d/raspi.list,后者是系统更新源,有大佬认为可以不用修改。)
在更改文件之前,如果习惯备份,用sudo cp命令备份这两个文件就好了。

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

4.1 国内的镜像源

官方给出的镜像源RaspbianMirrors(一些国内的高校源)。
其他镜像还有:
阿里云:http://mirrors.aliyun.com/raspbian/raspbian/

4.2 更换软件更新源

Terminate中输入sudo nano /etc/apt/sources.list应该可以看到官方的源。把原来的官方源注释掉,换成你觉得最合适的国内源,我换成了南大的源,有其他文章说清华的源更快,目前试了一下感觉差不多(啊这)。

deb http://mirrors.nju.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.nju.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

修改完保存、退出。
需要说明的是我是Buster版的,Stretch版的有丢丢不一样,照着官方源的格式把mirror地址改了就行。

4.3 更换系统更新源

Terminate中输入sudo nano /etc/apt/sources.list.d/raspi.list,同样的可以看到官方的源,注释掉,换成你觉得合适的国内源,保存文件并退出。

deb http://mirrors.nju.edu.cn/raspbian/raspbian/ buster main
deb-src http://mirrors.nju.edu.cn/raspbian/raspbian/ buster main

4.4 更新软件

Terminate中输入sudo apt-get updatesudo apt-get upgrade,更新软件源及软件。
如果报错不要慌,什么waiting for headers,什么clearsigned file isn’t valid, got ‘NOSPLIT’ (does the network require authentication?)。。。emm多半是和我一样,忘记授权连外网了(校园网的身份认证)。如果不是类似的网络情况,请参考别的博主关于apt-get update报相关错的解决方案。

4.5 修改pip源

如果需要开发python,pip源也可以换成国内的。新建一个文件夹mkdir ~/.pip(这是一个隐藏文件),新建并修改其设置文件sudo nano ~/.pip/pip.conf。在文件中写入:

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

上述是阿里云的镜像,同样的,可以换别的镜像。比如
清华源:https://pypi.tuna.tsinghua.edu.cn/simple

[global]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

如果想要换其他的国内源,可以参考一下这篇文章的总结:国内知名镜像地址

三、远程连接树莓派

1 使用windows自带的远程远程桌面连接

1.1 树莓派端的操作

树莓派本身默认不支持windows的远程桌面连接,可以通过安装相关的应用软件支持。先安装tightvncserver, 命令sudo apt-get install tightvncserver, 之后再安装xrdp , 命令sudo apt-get install xrdp, 启动服务sudo /etc/init.d/xrdp restart
树莓派的ip地址可以通过命令ifconfig查看。
树莓派ip地址查看
上图中wlan0下的inet后面的就是树莓派的IP地址(比如我的树莓派就是192.168.1.101)。

1.2 电脑端的操作(windows系统)

windows中打开远程桌面连接(win+R输入mstsc),输入树莓派的IP地址。
远程桌面连接
然后输入树莓派的username(一般是pi)和密码(默认密码是raspberry,第一次开机时没改过就还是这个,改过的话就是你自己设置的密码)。
远程桌面连接2
成功连上树莓派。
远程连接树莓派

2 电脑或手机/平板通过ssh远程连接树莓派

所介绍的任意一种方法都可以,任选即可(第一种方法已经完全可以满足了),这里只是做一下补充。关于远程连接树莓派,可参考文章Windows远程连接树莓派的三种方法

2.1 树莓派端的操作

按照二、2.1中的方法使能ssh。

2.2 电脑端的操作(windows系统)

下载一个远程连接软件,如putty(下载putty).打开putty.exe
putty
Host Name中输入树莓派的ip地址(同三、1.1的操作可查看树莓派ip).Saved Sessions中可以输入pi(或者别的名字),点击Save可以保存该session的设置。点击open。此时会弹出一个Alert,按照提示选“是(Y)”(选是下次没有这个Alert,当然“否(N)”也可,就是每次都会Alert)。
alert
然后就是输入账号和密码。
输入账号密码
密码输入时是看不到的,注意不要输错。出现树莓派的Terminal端。
成功登陆
该方法仅能通过Termianl控制树莓派。(vnc连接可以看到桌面,放在下一小节。)
补充一下,手机连接树莓派。但我没有亲自试试。

2.3 vnc远程连接

按照二、2.1中的方法使能vnc。
参考文章
电脑端下载tightvnc,下载vnc(同样也提供了移动端的版本)。按照步骤安装,打开TightVNC Viewer。
在这里插入图片描述
树莓派端也需要下载安装tightvncserver, 命令sudo apt-get install tightvncserver
在完成安装后需要对VNC设置一个密码,在命令行输入: vncpasswd (这是连接客户端密码)
然后会询问是否设置一个只能查看桌面(view-only)密码,一般没必要,可选择n。
完成后在控制台输入 vncserver 以启动VNC服务,系统会为VNC服务分配一个数字,在通过其他设备连接时需要用到该数字。
然后在电脑端打开TightVNC Viewer,输入Remote Host,就是树莓派ip地址和刚刚那个数字。
vnc连接
输入设置的vncpasswd。
输入vnc密码
完成远程连接。
vnc连接

三、UART串口通信/GPIO使用

1 树莓派的UART配置

诸位可以参考官方关于UART配置的介绍UART configuration(我就不搬运了)
总结一下:Pi 3有俩可用的UART,一个是 PL011(UART0),一个是mini UART(UART1)。又命名了两种UART,主UART(primary UART)和次UART(secondary UART);主UART指的就是BCM编码下的GPIO.14和GPIO.15,板子上的pin8和pin10;次UART指的是蓝牙端。主UART和次UART在Pi 3中对应的分别为mini UART(UART1)和PL011(UART0)。但是!默认情况下启用的是UART0——也就是说,Pi 3默认启用的是次UART(蓝牙)。。。
树莓派的引脚对照表

Linux deviceDescription
/dev/ttyS0mini UART
/dev/ttyAMA0first PL011 (UART0)
/dev/serial0primary UART
/dev/serial1secondary UART

因为想要把树莓派和TMS320系列的进行数据传递,正常我们想用GPIO.14和GPIO.15来实现通信,这时候就要把UART0对应的次UART(蓝牙)换成主UART(GPIO口14、15)。
首先通过命令ls -l /dev/*serial*查看串口设备对应关系,应该可以看到默认启用的UART0,也就是ttyAMA0对应的是/dev/serial1,而我们需要它对应的是/dev/serial0
打开config设置,sudo raspi-config
选择option 3 - Interface Options ——> 选择 option P6 - Serial Port.
第一个问题:would you like a login shell to be accessible over serial? 选No。
第二个问题:would you like the serial port hardware to be enabled?选Yes。
完成设置的修改,重启后生效。
然后编辑/boot/config.txt文件sudo nano /boot/config.txt,在最后添加:

dtoverlay=pi3-miniuart-bt

实现映射的变换。重启树莓派,再次查看映射关系ls -l /dev/*serial*
在这里插入图片描述
如果想测试一下串口设置是否成功,可以用minicom进行测试:可参考文章
树莓派开发笔记(六):GPIO口的UART的使用(串口通讯)
树莓派3B和3B+的串口使用(附图)
关于串口测试软件minicom树莓派之间的串口通信总结

四、python环境的配置

树莓派自带了python的IDE,不需要额外做什么,下面主要讲的还是我需要用到的pyTorch的安装。

1 树莓派pytorch环境配置

主要参考了这几篇文章:
【1】在树莓派上安装Pytorch (Installing Pytorch on Raspberry Pi) ---- 一个比较详细的版本
【2】树莓派3b+安装pytorch
【3】树莓派4搭建open-cv+pytorch教程
【4】树莓派(7):树莓派4B+安装Pytorch新版本1.3(python3.7)
第一篇文章真的很详细了,感谢大佬的总结;最后一篇文章还给出了python3.7环境下他的编译的whl文件,同样环境的读者可以直接whl安装,很方便,不需要自己编译了。
这里我用的方法是自己在树莓派上编译pytorch源码,费了一些劲的还是。

第零步,更新系统
sudo apt updatesudo apt upgrade。而且,因为编译的时间实在是太久了,建议把树莓派的休眠也关了。
第一步,增加交换区到4G,否则编译会爆内存。。。
打开交换区设置文件 sudo nano /etc/dphys-swapfile,找出常量CONF_SWAPSEIZE,把默认的100改成4096,增加交换区的大小到4G;最大限制的参数CONF_MAXSWAP,把前面的井号标注去掉,也改成4096,保存修改并退出。
然后执行命令:sudo /etc/init.d/dphys-swapfile stopsudo /etc/init.d/dphys-swapfile start,重新启用设置。
为了确保交换区确实被修改,可以输入top查看一下,MIB Swap是否真的改成了4096;如果设置不生效,可以重启试试。
第二步,安装依赖包
sudo apt-get install libopenblas-dev cython3 libatlas-dev m4 libblas-dev cmake。如果安装libblas-dev报错,则按照提示安装libatlas-base-dev,sudo apt-get install libatlas-base-dev
第三步,修改环境变量。树莓派没有CUDA。注意,环境变量的设置只对当前shell生效!在编译的时候千万不要换shell!

export NO_CUDA=1
export NO_DISTRIBUTED=1
export NO_MKLDNN=1
export NO_NNPACK=1
export NO_QNNPACK=1

第四步,git下载pytorch源代码
切换到你喜欢的路径下,比如新建一个~/pytorch_install的路径。输入命令:git clone --recursive https://github.com/pytorch/pytorch
第五步,编译
打开pytorch安装目录:cd pytorch
开始编译,输入python3 setup.py build
然后就是很久很久很久的编译。。。。。真的很久,花了大概八个小时。。。期间还因为树莓派休眠重新开始过几次,所以,先把休眠关了吧。。。当看到“it is no longer to use the "build"or “rebuild” targets. To install:(以下省略)”的时候,恭喜,终于完成了。
第六步,安装
输入python3 setup.py install 安装。
因为本文是安装完之后很久回来总结的,有些细节遗忘了,在安装这一步似乎出现了和【1】类似的问题,说我无权限写入什么什么,但解决应该没啥困难,就是开sudo,sudo python3 setup.py install

第七步,测试
随便哪种方式进入python IDE环境,输入import torch,只要不报错就可以啦。
第八步,后续
安装完之后记得把SWAP空间还改回来。
因为我是自己编译的,所以也顺手生成了whl文件(命令 python3 setup.py bdist_wheel,打包成whl,打包成功后这个文件在dist目录里面),是1.6.0的pytorch,python3.7,如果有用同样环境的可以自取,云盘【有效期限:2025-12-31 访问密码:GN2Q】
此外,其他使用pytorch时可能用到的包有:
matplotlib,直接输入pip3 install matplotlib安装
torchvision,直接输入pip3 install torchvision安装,但树莓派只支持0.2版本的

2 Windows anaconda安装pytorch

参考文章 anaconda安装pytorch,写的很详尽。

总结

有空再补充

主要是树莓派3B的开箱设置,UART串口通信和pytorch的环境配置。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值