树莓派入坑指南


树莓派入坑指南

配件购买

最好不要一起套装, 自己组一套可以比店里的套装划算很多.

主板

树莓派4B和3B+具有差不多的价格, 但是4B明显性能提升还是挺明显的所以直接买4B

SD卡+读卡器

16/32/64GB都可以, 现在情况16和32的价格差不多, 空间翻一倍, 买32G足够. 据说空间更大的可能导致树莓派无法开机.

风扇+外壳

没有必要买官方原装或者是金属的外壳, 直接买亚克力板的外壳就行, 最好配备风扇, 夏天这玩意跑起来实在是吃不消.

充电器

树莓派4B官方说用5V3A的type-c充电器, 比3B+的要高了0.5A. 充电器最好是买带开关的, 因为树莓派的type-c口拔拔插插的很麻烦, 一个开关可以节省很多事情.

散热片

虽然说官方不建议给CPU配备散热片, 但是散热片也没几块钱, 就买了一小套.

摄像头

那种配置很高的摄像头没必要, 就买500W像素的就够. 就算你图像质量再高, 到DL模型时候还是需要reshape成更低像素的数据, 只是说图像质量高后提供更多的信息, 如果是跑小项目应该没必要. 我觉得买的24块钱的摄像头就足够.

摄像头测试指令:

raspistill -o image.jpg

飞鼠

也就是那种可触控式的鼠标和键盘, 好像挺装逼的, 可以买一个来玩玩, 暂时没啥必要.

烧录系统

  1. 下载Imager和系统镜像现在树莓派官网有更方便的Raspberry imager了, 也就是更方便的SD卡烧录软件. 去官网可以下载

https://www.raspberrypi.org/downloads/

系统中建议用Raspbian, NOOBS会占用很多没有必要的空间.

  1. 先将读卡器插入SD卡中, 然后把USB读卡器插到电脑上

  2. 如果SD卡是新的可以不用清除, 若是旧的则先要用Imager进行卡的擦除.

  3. 下载完镜像.zip后进行解压, 然后打开Imager选择解压完的.img文件和你的SD卡进行系统烧录.

  4. 安装后打开boot盘(不要看错盘符)

  5. 在boot下新建一个名为ssh的文件, 没有任何后缀, 这样可以在树莓派没开机的情况下开启SSH.

  6. 同在boot下新建一个名为wpa_supplicant.conf的文件, 其内容如下

    country=GB
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    network={
        ssid="你的wifi名字"
        psk="你的wifi密码"
        priority=你想设的优先级大小, 数字越大越优先
    }
  1. 安全退出SD卡, 并将SD卡怼入树莓派SD卡插槽中, 准备树莓派的开机之旅.

开机过程

两种指示灯

树莓派有两个指示灯, 一个是红灯, 一个是绿灯.

红灯是电源指示灯, 红灯常亮说明电源接通正常, 若红灯闪烁说明电源质量不佳, 可能是功率问题, 也可能是接触不良等.

绿灯是读写指示灯, 可以通过绿灯闪烁情况观察到储存卡的读写情况.

给树莓派接上电源, 观察到红灯常亮, 绿灯闪烁非常频繁, 这说明树莓派供电良好, 正在初始化系统.正常情况下树莓派4B2G在5分钟以内一定会完成第一次初始化. 当树莓派连入前面设置的wifi后, 初始化就完成了. 接下来就需要找到树莓派的IP, 用电脑和它进行SSH连接.

找到树莓派地址

找到ip地址有很多种花样, 只要会其中一种就行了

  1. 通过wifi寻找

    既然树莓派开机默认连上了wifi, 说明树莓派系统初始化已经完成. 直接登录wifi的管理界面就能看到所有设备信息, 能很容易地找到一台刚加入网络的设备, 肯定是树莓派, 记录下它的ip地址.

    如果不知道自己家路由器ip, 在cmd里敲ipconfig能看到本机网卡的网关, 那个就是路由器地址.

  2. ARP查询

    arp -a

    找到所有的动态IP然后一一排除. 其实与上述办法基本一致.

  3. 局域网扫描

    这个网上有很多软件一抓一大把. 也是与前两种方法一样.

SSH连接

用putty可以轻松完成连接功能, 在连接的IP中输入刚才找到的ip, 端口号默认是22不要动, 会弹出一个命令行

填入用户名pi, 密码raspberry就能连接到树莓派上了, 若出现命令行变色, 且路径发生变化说明连接成功.

用Windows远程桌面连接树莓派

  • 安装xrdp和VNC

    Xrdp是一个开源工具,允许用户通过Windows RDP访问Linux远程桌面。 除了Windows RDP之外,xrdp工具还接受来自其他RDP客户端的连接,如FreeRDP,rdesktop和NeutrinoRDP。 Xrdp现在支持TLS安全层。

    VNC(Virtual Network Console)是虚拟网络控制台的缩写。它 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。

    sudo apt-get install xrdp
    sudo apt-get install tightvncserver
  • 将xrdp启动和添加默认项

    sudo /etc/init.d/xrdp start
    sudo update-rc.d xrdp defaults
  • 然后用Windows自带的远程连接, 连接树莓派ip即可, 账号密码同前.

用VNCViewer连接树莓派

  1. 首先要在电脑中下载VNCviewer

  2. 在树莓派终端中输入sudo raspi-config, 选择Interfacing options, 找到VNC的设置将其打开.

  3. 用VNCViewer连接树莓派ip, 账号密码同前.

    若出现当前桌面无法显示的黑屏情况cannot currently show the desktop, 请在树莓派设置中将Advanced options找到分辨率(Resolution)调高, 反正不是默认的就行.

用TeamViewer连接树莓派

坑 待填

树莓派的关机和重启

  • 树莓派关机

    sudo shutdown -h now
  • 树莓派重启

    sudo reboot

系统配置

将接口配置打开

raspi-configInterfacing options中, 有很多功能选项都可以打开.

Camera:摄像头

SSH:ssh远程通信与登陆

VNC:VNC远程桌面登陆

Serial:串口控制

Remote GPIO:远程GPIO引脚控制

给apt-get换源

在终端中输入:

sudo nano /etc/apt/sources.list

然后用上下左右控制光标, 将唯一有效的默认网址加#注释掉, 然后在最下面加上:

# 编辑 `/etc/apt/sources.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib

ctrl+o提交改动, 再按回车保存, 按ctrl+x退出nano.

# 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

给pip换源

sudo mkdir ~/.pip
cd .pip
sudo nano pip.conf

在pip.conf里输入以下内容

[global]
timeout = 10
index-url =  http://mirrors.aliyun.com/pypi/simple/
extra-index-url= http://pypi.douban.com/simple/
[install]
trusted-host=
    mirrors.aliyun.com
    pypi.douban.com

保存方式同上.

切换Python版本

树莓派默认的python版本是2.7, 但是大多数人早在用python3了, 所以应该及时切换到最新版本

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

如果要切换回python2.7可以用如下指令

sudo update-alternatives --config python

配置中文系统

  • 先装个中文输入法和字体

    sudo apt-get install fonts-wqy-zenhei
    sudo apt-get install fcitx fcitx-googlepinyin fcitx-module-cloudpinyin fcitx-sunpinyin

    可以使用ctrl+空格切换为中文输入法.

说实话中文linux太捞了, 只建议把时区改回中国, 均为sudo raspi-configLocalisation Options中的设置

  • Change Locale 可以更改国家, 等到光标达到zh_CN.UTF-8 UTF-8时按空格, 然后选择默认区域为zh_CN.UTF-8可以改为中文(真的很捞).
  • Change Timezone __可以更改时区, 选择Asia__, Shanghai即为中国时间.
  • __Change Wi-fi Country __ 选择wifi国家, CN China为中国.

安装OpenCV(神坑)

准备工作

首先要在raspi-config中的Advanced Options中的第一个选项Expand Filesystem Ensures...将文件系统的空间扩展至整个SD卡. 之后重启, 重启后用df -h查看磁盘是否已经扩展.

如果空间不够, 可以用删除缓存的方法扩大一些空间

sudo apt-get purge wolfram-engine
sudo apt-get purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

在这之后要例行更新一下系统.

安装各种准备库

//安装Cmake等编译openCV源码的工具
sudo apt-get install build-essential cmake git pkg-config 

// 安装常用图像工具包
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

// 安装视频操作的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev  
sudo apt-get install libxvidcore-dev libx264-dev

// openCV用于图像/GUI展示的功能依赖highgui模块,为了编译它我们需要安装libgtk2.0-dev
sudo apt-get install libgtk2.0-dev

// 安装OpenCV数值优化函数包
sudo apt-get install libatlas-base-dev gfortran

// 安装构建Python扩展所需要的头文件
sudo apt-get install python2.7-dev python3-dev

// 如果缺少其他依赖, 尝试安装下述两个包
sudo apt-get install libhdf5-dev
sudo apt-get install libqt4-test

下载Opencv

一个是Opencv的zip, 还有一个是Opencv_contrib的zip. 经过很多折腾和摸索, 最后发现4.1.0的版本在CMake时编译不会产生错误, 所以最后选择了4.1.0版本.

wget -O opencv-4.1.0.zip https://github.com/Itseez/opencv/archive/4.1.0.zip
wget -O opencv_contrib-4.1.0.zip https://github.com/Itseez/opencv_contrib/archive/4.1.0.zip

设置交换空间

这个交换空间是在内存不够用的时候, 将磁盘空间充当内存空间的方法. 分配太多的Swap空间会浪费磁盘, 甚至对SD卡造成损坏且减少寿命, 一般设置在2G一下. 但是因为编译可能会占用很多的内存, 所以短时间增大Swap空间的大小是可以的.

sudo nano /etc/dphys-swapfileCONF_SWAPSIZE改为2048

sudo /etc/init.d/dphys-swapfile stop

sudo /etc/init.d/dphys-swapfile start

这样才能重启交换服务.

千万不要忘记在安装完后把它改回来.

编译过程

opencv-4.1.0.zipopencv_contrib-4.1.0.zip两个文件进行解压

unzip opencv_contrib-4.1.0.zip
unzip opencv-4.1.0.zip

然后切换至``opencv-4.1.0这个文件夹, 并在其下面新建编译文件准备存放的目录build`

cd ~/opencv-4.1.0/
mkdir build & cd build

然后开始进行编译的配置

cmake -D ENABLE_PRECOMPILED_HEADERS=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.1.0/modules \ -D BUILD_EXAMPLES=ON ..

如果遇到BUG
fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory include “opencv2/xfeatures2d/cuda.hpp”

解决办法:
在CMakeLists.txt增加以下内容:

INCLUDE_DIRECTORIES("你的opencv_contrib路径/modules/xfeatures2d/include")

CMakeLists.txt文件所在路径为:

你的opencv路径/modules/stitching/CMakeLists.txt

下面开始编译, 这个过程十分漫长, 可以加上参数-j4让四个线程同时跑, 如果对自己机器没有信心也可以不加, 编译失败的话可以尝试去掉-j4这个参数直接make. __请注意命令中的opencv_contrib-4.1.0文件夹的位置是否和解压的位置相符.

make -j4 
make install 
make ldconfig

大功告成, 接下来就可以测试你的摄像头好不好使了.

测试

打开Thoony, 以下是测试摄像头的代码, 如果没有摄像头只需要在终端里面进入python, 然后import cv2看看是否报错即可.

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)

while(True)
    ret, frame = cap.read()
    cv2.imshow('frame', frame)

    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()

文章作者: DaNing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 DaNing !
评论
 上一篇
计算机网络-学校 计算机网络-学校
本篇后半部分内容产生格式错乱和渲染错误, 是Ipad导出时所产生的格式混乱所致, 现已无法全部修改, 请转看另一篇计网内容. Chapter 1 Computer Networks and the Internet (about 10%
2020-07-22
本篇 
树莓派入坑指南 树莓派入坑指南
树莓派入坑指南配件购买最好不要一起套装, 自己组一套可以比店里的套装划算很多. 主板树莓派4B和3B+具有差不多的价格, 但是4B明显性能提升还是挺明显的所以直接买4B SD卡+读卡器16/32/64GB都可以, 现在情况16和32的价格差
2020-07-22
  目录