第3章 树莓派简介 上一章中,学习了如何在Windows上安装Python 3以及如何验证环境,并浏览了Python软件基金会的网站www.python.org。 在本章中,首先将熟悉单板计算机的概念。然后,详细探讨树莓派,它是我们这一代最推崇的一种单板计算机。接着将学习如何使用Raspbian操作系统启动树莓派。然后,通过互联网将树莓派与外界连接,学习如何远程访问树莓派Raspbian桌面和命令提示符。除此之外,还将研究树莓派最新型号的硬件规格。 3.1单板计算机 单板计算机(SBC)是一个位于单个印刷电路板(PCB)上的具有完整功能的计算机。SBC的PCB具有一台功能完整的工作计算机所需的所有组件,例如微处理器、输入/输出端口、内存和以太网端口/WiFi。SBC可用于多种目的,包括学习如何编写程序、构建NAS驱动器、机器人、家庭自动化,以及执行家用计算任务,例如Web浏览、文字处理或电子表格。 SBC最初是为无力购买大型计算机的人提供易于访问的编程平台而开发的。在20世纪70年代、80年代和90年代,台式/个人计算机兴起之前,市场主要由家用计算机控制,而家用计算机基本上都是SBC。 第一台真正的单板计算机称为dynamicro,使用英特尔的C8080A作为CPU,还使用了英特尔的第一个EPROM芯片C1702A。dynamicro于1976年被E&L仪器公司重新命名为MMD1 (MiniMicro Designer 1)。有关MMD1的更多信息,请访问http://www.decodesystems.com/mmd1.html。以下是一个MMD1的早期原型照片,如图3.1所示。 图3.1MMD1的早期原型 英国广播公司(BBC)的Micro是最早出名并广受欢迎的家用计算机之一。以下是BBC Micro的照片,如图3.2所示。 图3.2BBC Micro 随着技术的进步,低成本台式计算机的新时代开始于IBM PC,而家用计算机逐渐淡出人们的视线。但是,随着通用串行总线(USB)等新技术的出现以及半导体制造技术的进步,单板计算机再次兴起。由于使用了片上系统(SoC),SBC的尺寸已经大大缩小到信用卡的大小。SoC是一种集成电路(IC),它将微处理器、内存和I/O等所有组件都集成到一个芯片上。除SBC外,SoC的一个流行实例是移动计算设备,例如手机和平板电脑。SoC还用于嵌入式系统和物联网(IoT)。 以家用计算机形式出现的SBC最初被设想为面向教育部门,并为学生提供编程平台的访问权限。然而,由于其体积小,SBC被广泛应用于工业、科研和诸如IoT(物联网)之类的行业中。 3.1.1单板计算机的优缺点 在讨论SBC时,必须讨论它们的优缺点。SBC在一块PCB上拥有一台功能完整的计算机所需的所有组件,这有助于缩小尺寸。大多数非常受欢迎的SBC都只有信用卡大小,可以轻松放入衬衫的前胸口袋或男式裤子的口袋中。这是SBC的最显著的优点,因为体积小,它们可应用于嵌入式应用程序和物联网项目。小尺寸还可以优化(减少)单位生产成本。因此,价格低于100美元的SBC有几十种。 由于尺寸的限制,SBC无法拥有很强的计算能力。SBC可以满足家庭计算、Web浏览、IoT、工业和嵌入式的需求,但不能完成计算量大的任务。同样地,由于所有组件都在同一块PCB上,因此无法升级单个组件。在台式计算机中,由于组件的模块化,这是可能的。此外,如果SBC的任何组件损坏,由于同样缺乏模块化,因此无法轻易更换。 3.1.2流行的SBC系列 下面介绍几个流行的、低成本的SBC系列。 树莓派是一个非常流行的、只有信用卡大小的单板计算机系列。在接下来的章节中将看到这一点。 另一个流行的单板计算机系列是Banana Pi和Banana Pro,如图3.3所示。 图3.3Banana Pro 英特尔除了有打折的英特尔Edison和Galileo主板外,还在2019年推出了一个名为UP Squared的新平台,如图3.4所示。 图3.4英特尔推出的UP Squared 华硕也推出了名为Tinker Board的SBC,如图3.5所示。 图3.5华硕Tinker Board 甚至是广受欢迎的可编程微控制器系列的Arduino也有许多SBC,例如Arduino Tian,如图3.6所示。 图3.6Arduino Tian 3.2树莓派 树莓派是一个非常流行的单板计算机系列。事实上,许多人将SBC的再度流行归因于树莓派。树莓派基金会和树莓派交易公司管理着树莓派品牌,Eben Upton是树莓派背后的主要人物,目前担任树莓派交易公司的首席执行官,负责树莓派系列的软件和硬件架构。 第一代树莓派,称为树莓派1 Model B,于2012年2月发布,并在商业上取得了巨大成功。实际上,树莓派是销量最高的英国计算机。之后,该公司发布了更多型号的树莓派。 截至2019年4月,树莓派系列的最新成员是树莓派3 Model B+。以下是Model B+型的规格(表3.1)。 表3.1Model B+型规格 SoCBroadcom BCM2837B0 CPU4×CortexA53 1.4GHz FPUVFPv4+NEON GPUBroadcom VideoCore IV (GPU 3D部分 @ 300 MHz,GPU视频部分 @ 400 MHz) 内存与GPU共享1GB RAM 网络选项以太网端口和WiFi USB 2.0端口4 生产状态将生产至2023 当使用树莓派尝试本书中的图像处理编程示例时,上面提供的信息非常有用。树莓派还有一些其他特性,例如GPIO引脚,不在本书的讨论范围之内。 以下是树莓派3 Model B+的俯视图照片,如图3.7所示。 图3.7树莓派3 Model B+的俯视图 在图3.7的左上角,可以看到GPIO引脚。在左下角,可以看到电源的微型USB接口。与它相邻的是HDMI视频输出端口。在右侧,有USB和以太网端口。我们将在本书中使用这些端口。图3.8展示了以太网端口和4个USB 2.0端口。 图3.8树莓派3 Model B+以太网端口和USB 2.0端口 图3.9展示了树莓派的所有I/O端口和电源端口。 图3.9树莓派3 Model B+端口 图3.10是树莓派的底视图,其中MicroSD卡的插槽清晰可见。 图3.10树莓派 3 Model B+的底视图 在图3.10的左侧,可以清楚地看到MicroSD卡的插槽。 有关树莓派其他型号的规格的更多信息,请访问https://www.raspberrypi.org/products/。 3.3Raspbian操作系统 树莓派能够运行许多操作系统,包括Raspbian(将详细介绍)、Ubuntu和Windows 10 IoT Core。Raspbian是树莓派的官方操作系统。它是Debian的变体,是一种流行的Linux发行版,针对树莓派硬件进行了优化。对于初学者,建议从树莓派基金会的下载页面https://www.raspberrypi.org /downloads/raspbian/下载Raspbian映像文件。可以在其主页https://www.raspbian.org上找到有关Raspbian项目的更多详细信息。 3.4设置和启动树莓派 设置并启动树莓派。 3.4.1设置所需的硬件 下面介绍树莓派设置所需的硬件组件列表。 1) 树莓派板 这里使用树莓派3 Model B+开发板,所有型号的安装说明大致相同。如果有什么不同,那么将在说明中提及。 2) Windows计算机 需要使用Windows台式计算机或笔记本电脑,也可以使用Linux或Mac。但是,大多数读者更倾向于使用Windows。 3) 键盘和鼠标 需要一对USB键盘和鼠标连接树莓派。 4) 网络连接 还需要高速互联网(WiFi或以太网)下载软件。 5) MicroSD卡 必需要一张至少有8GB存储空间的MicroSD卡。笔者更喜欢使用16GB存储空间的10级MicroSD卡,作为树莓派的辅助存储,将在此MicroSD卡中安装Raspbian操作系统,如图3.11所示。 图3.118GB MicroSD卡 6) 电源供应 树莓派需要5V电源。建议电流为2.5A,以便与任何型号的树莓派一起使用。请记住,树莓派需要一个微型USB类型的电源。可以在https://www.raspberrypi.org/products/raspberrypiuniversalpower supply/找到树莓派通用电源插座。它将适用于所有树莓派型号,如图3.12所示。 图3.12树莓派通用电源 7) 读卡器和MicroSDSD卡转换器 许多笔记本电脑都内置SD卡读卡器。如果计算机中没有内置读卡器,则需要如图3.13所示的读卡器。 图3.13内存卡读卡器 如果有树莓派1 Model B等较旧型号的树莓派,则需要一个MicroSDSD卡的转换器,如图3.14所示。 图3.14内存卡适配器/转换器 8) 显示器 可以使用HDMI显示器进行图形显示。为此,需要HDMI公对公电缆。以下是HDMI公连接器,如图3.15所示。 图3.15HDMI公端口 如果打算使用VGA显示器,则需要VGA公对公连接器,如图3.16所示。 图3.16VGA公对公连接器 如果使用VGA显示器和公对公电缆,还需要HDMIVGA信号转换器,如图3.17所示。 图3.17HDMIVGA信号转换器 以上就是设置和首次启动树莓派板所需硬件的列表。 3.4.2设置所需的软件 将Raspbian OS写入充当树莓派存储设备的MicroSD卡中。有两种方法可以在卡上写入操作系统。第一种是NewOut of the Box Software(NOOBS)。本书不会讨论NOOBS,因为手动将操作系统写入卡可以有机会在需要时更改设置。在本节中,将看到如何手动调整MicroSD卡中的设置。因此,下面介绍如何手动准备MicroSD卡。为此,需要下载准备MicroSD卡所需的免费软件。 1)下载Raspbian OS映像 打开浏览器,访问https://www.raspberrypi.org/downloads/raspbian/,将出现以下页面,如图3.18所示。 图3.18各种Raspbian OS映像 有三个选项。下载Raspbian Stretch with desktop and recommended softwore压缩文件。该映像具有图像处理编程练习的所有必需软件,并且将获得一个完整的桌面,此后无须安装大量软件。 2) WinZip或WinRaR 映像为zip压缩格式。必须下载如WinZip或WinRaR的解压软件。因此,可以从https://www.winzip.com或https://www.winrar.com下载并安装软件后,提取映像文件。 3) Win32磁盘映像器 解压的映像是ISO格式的文件,必须将其写入MicroSD卡。因此,需要从https://sourceforge.net/projects/win32diskimager/上下载并安装Win32磁盘映像器。 3.4.3将操作系统写入MicroSD卡 一旦安装了Win32磁盘映像器,就可以在MicroSD卡上写入ISO映像文件。将MicroSD卡插入读卡器,然后将其连接到台式计算机/笔记本电脑。等待一段时间,直到计算机检测到MicroSD卡,它将显示为新磁盘。打开Win32磁盘映像器,对话框如图3.19所示。 图3.19Win32磁盘映像器 从设备下拉菜单中选择适当的磁盘。如果选择了错误的磁盘,则它将覆盖该磁盘中的数据。因此,谨慎选择磁盘。选择磁盘后,单击蓝色文件夹图标,从映像文件中选择要解压的ISO文件,这将启用Write按钮。单击Write按钮。如果写入保护卡槽被打开,则会出现以下错误对话框,如图3.20所示。 图3.20Win32磁盘映像器 切换写入保护卡槽。然后,再次单击Write按钮。这将使我们能够将ISO文件写入MicroSD卡。但是,在继续之前,将显示警告消息,如图3.21所示。 单击Yes按钮以继续。开始将数据写入MicroSD卡。数据写入完成后,将出现以下消息,如图3.22所示。 图3.21MicroSD卡覆盖警告消息 图3.22成功信息 Raspbian OS映像已写入MicroSD卡。 如果打算使用VGA显示器,那么需要修改config.txt文件。断开MicroSD读卡器与计算机的连接,然后重新连接,它将显示为名为boot的新驱动器。这是Raspbian OS的启动分区,读取MicroSD卡时,Windows只能访问此分区。现在,需要对config.txt文件进行以下更改。  将 #disable_overscan=1更改为disable_overscan=1。  将 #hdmi_force_hotplug=1更改为hdmi_force_hotplug=1。  将#hdmi_group=1更改为hdmi_group=2。  将#hdmi_mode=1更改为hdmi_mode=16。  将#hdmi_drive=2更改为hdmi_drive=2。  将#config_hdmi_boost=4更改为config_hdmi_boost=4。  保存文件。 完成这些更改后,请从Windows计算机安全断开MicroSD卡读取器的连接。 3.4.4启动树莓派 使用准备好的MicroSD卡进行第一次树莓派的启动。执行以下操作。  如果有HDMI显示器,使用HDMI公对公电缆将显示器直接连接到树莓派的HDMI端口。如果有VGA显示器,请使用HDMIVGA适配器将HDMI信号转换为VGA,然后使用VGAVGA电缆连接到该显示器。  将MicroSD卡插入树莓派的MicroSD卡插槽。  将USB鼠标和USB键盘连接到树莓派。  确保此时已关闭电源。用微型USB电源线将树莓派连接到电源。将显示器也连接到电源。  检查所有连接,然后打开树莓派和显示器的电源。 此时,树莓派将开始启动。 对于所有采用单核处理器型号的树莓派,启动屏幕在左上角显示一个树莓果实的图像。对于采用四核处理器型号的树莓派,启动屏幕在左上角显示四张树莓果实的图像。 树莓派启动后,以下是Raspbian OS的屏幕截图,如图3.23所示。 图3.23Raspbian OS桌面 3.5config.txt和raspiconfig 树莓派没有台式计算机那样的BIOS。BIOS代表二进制输入输出语句。BIOS存储用于启动计算机的设置。由于树莓派系列的计算机没有任何BIOS,因此所有设置都存储在boot分区中名为config.txt的文件中。如果读取到装有Raspbian OS的MicroSD卡,则在Windows和Mac计算机中显示为一个名为boot的磁盘,将无法从Windows和Mac计算机中读取其他分区。如果使用Linux分布式计算机读取同一张卡,则它将显示所有分区。在本章中已经介绍了如何为VGA显示器编辑这个文件,还可以通过修改config.txt调整其他设置。但是,这是一个烦琐的过程,因为Raspbian OS附带了几个实用程序。将要讨论的是raspiconfig实用程序,可以从Raspbian OS命令行LXTerminal启动。还可以在Raspbian任务栏的左上角找到LXTerminal图标,如图3.24所示。 图3.24Raspbian OS桌面图片 单击该图标,将出现以下窗口,如图3.25所示。 图3.25LXTerminal窗口 这是Linux的命令行实用程序。可以在此处运行命令并直接与操作系统进行交互。运行以下命令。 sudo raspi-config 调用该实用程序,如图3.26所示。 图3.26raspiconfig实用程序 首先设置本地化选项。最重要的是键盘布局。您可能希望将其更改为美国键盘布局而不是英国键盘布局。更改其他设置,如Locale(区域)、Timezone(时区)和WiFi Country(WiFi国家),如图3.27所示。 图3.27本地化选项 还必须更改Interfacing Options(接口选项)并启用SSH和VNC,如图3.28所示。 图3.28接口选项 在Advanced Options(高级选项)下的Memory Split(内有分割)中,为GPU分配16MB。然后,选择Expand Filesystem(扩展文件系统)。 这将使我们能够使用整个MicroSD上的存储空间,如图3.29所示。 图3.29高级选项 另外,一旦启用互联网访问(在下一节中将看到),不要忘记从主菜单中选择Update选项更新raspiconfig实用程序。在主菜单中选择Finish选项后,将要求重新启动。这将重新启动树莓派,并再次启动到桌面。 3.6连接到网络 现在,学习如何将树莓派连接到网络和互联网。可以通过手动编辑/etc/network/interfaces文件或通过GUI完成。下面将介绍这两种方式。 3.6.1连接WiFi 在右上角,可以看到WiFi图标,通过该图标可以找到WiFi网络并通过提供凭据进行连接,如图3.30所示。 图3.30高级选项 也可以通过手动编辑/etc/network/interfaces文件连接WiFi。 在终端运行以下命令。 sudo mv /etc/network/interfaces /etc/network/interfaces.bkp 该命令将备份原始文件,以便在出现问题时还原该文件。 在终端中运行以下命令编辑文件。 sudo leafpad /etc/network/interfaces 将以下代码粘贴到文件中。 source-directory /etc/network/interfaces.d auto lo iface lo inet loopback auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-ssid "ASHWIN" wpa-psk "internet" 必须根据自己的WiFi网络在上述各行中更改SSID和密钥。完成后,运行以下命令。 sudo service networking restart 这将重新启动树莓派的网络服务并连接WiFi。 3.6.2连接有线网络 可以使用以太网端口连接有线网络。将其插入网络电缆,并在/etc/network/interfaces文件中复制以下代码设置静态IP地址。 source-directory /etc/network/interfaces.d auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet static # Your static IP address 192.168.0.2 # Your gateway IP gateway 192.168.0.1 netmask 255.255.255.0 # Your network address family network 192.168.0.0 broadcast 192.168.0.255 如果想利用网关(路由器/调制解调器)的动态主机配置协议(DHCP),请使用以下设置。 source-directory /etc/network/interfaces.d auto lo iface lo inet loopback auto eth0 allow-hotplug eth0 iface eth0 inet dhcp 进行更改后,使用以下命令重新启动网络服务。 sudo service networking restart 通过以太网将树莓派连接有线网络。 3.6.3检查连接状态 通过运行以下命令检查连接状态。 ifconfig 这将返回网络的详细信息,包括分配给树莓派的IP地址。 还可以通过运行以下命令检查与互联网的连接情况。 ping -c4 www.google.com 这将检查树莓派是否可以访问www.google.com。 3.7远程连接树莓派 还可以通过网络远程连接树莓派。现在,将学习如何在本地网络中实现,首先确保启用了SSH和VNC。 3.7.1使用PuTTY和Bitvise SSH客户端访问命令提示符窗口程序 如果想访问树莓派的命令提示符,可以使用PuTTY SSH客户端。从https://www.putty.org/下载并安装PuTTY客户端。完成后,通过在Windows搜索栏中搜索PuTTY打开客户端。客户端对话框如图3.31所示。 图3.31PuTTY客户端 在上面的对话框中(图3.31),输入树莓派的IP地址,然后单击Open按钮,即可连接树莓派。默认情况下,使用的用户名和密码分别是pi和raspberry。完成后,将弹出一个窗口,如图3.32所示。 图3.32PuTTY客户端 这是树莓派的终端。可以从这里运行任何不涉及调用GUI的命令。PuTTY客户端对于初学者已经足够友好。但是,还有更多高级客户端可用于终端远程连接。笔者更喜欢使用Bitvise SSH客户端。它具有如保存用户名/密码组合以便重复使用以及主机之间进行FTP文件传输的功能。以下是Bitvise SSH客户端运行的屏幕截图,如图3.33所示。 图3.33Bitvise SSH 客户端 以下是文件传输窗口的屏幕截图。可以看到Windows文件系统在左侧,Raspbian文件系统在右侧,如图3.34所示。 图3.34Bitvise文件传输窗口 因为增加的功能和易用性,笔者更喜欢Bitvise。 3.7.2带有RDP和VNC的远程桌面 前面已经介绍了几种可以远程连接树莓派,访问其命令提示符窗口以及传输文件的方法。但是,很难使GUI应用程序与SSH一起工作,因此,下面将介绍一些远程连接桌面的方法。 1. 远程桌面协议 可以使用远程桌面协议(RDP)从Windows连接Linux远程桌面。为此,首先需要使用以下命令在树莓派上安装xrdp。 sudo apt-get install xrdp 然后,使用以下命令重新启动树莓派。 sudo reboot -h now 这将重启树莓派。在Windows搜索栏中搜索远程桌面连接。打开应用程序。输入所有详细信息,如IP地址和凭据,如图3.35所示。 图3.35远程桌面连接 单击Connect按钮后,必须输入凭据才能连接树莓派。远程桌面窗口如图3.36所示。 图3.36远程桌面窗口 2. VNC VNC代表虚拟网络计算。它用于从其他设备访问Linux桌面。使用以下命令在树莓派上安装VNC服务器。 sudo apt-get install realvnc-vnc-server 从https://www.realvnc.com/en/connect/download/viewer/下载并安装Windows VNC查看器。 打开RealVNC查看器,从File菜单创建新连接。以下是创建新连接的窗口,如图3.37所示。 图3.37创建新连接的窗口 创建连接后,双击该连接即可。将要求提供以下凭据,如图3.38所示。 图3.38新的连接对话框 以下是运行中的RealVNC的屏幕截图,如图3.39所示。 图3.39运行中的RealVNC 3.8更新树莓派 可以更新树莓派中各个方面的软件,如raspiconfig、固件和Raspbian OS。下面一一介绍如何更新。 在主菜单Update选项中更新raspiconfig,如图3.40所示。 图3.40更新raspiconfig 使用以下命令更新固件。 sudo rpi-config 使用以下命令更新Raspbian OS和软件包。 sudo apt-get update sudo apt-get dist-upgrade -y 3.9关闭并重新启动树莓派 使用以下命令关闭树莓派。 sudo shutdown -h now 使用以下命令重新启动树莓派。 sudo reboot -h now 3.10为什么使用树莓派 树莓派是世界上最受欢迎的单板计算机,是一台低成本、低功耗的计算机。如果预算有限,但仍然想学习编程,那么树莓派是市场上最实惠的选择。如果学习者遇到任何障碍,可以在线获得大量文档、书籍、示例和帮助。 3.11小结 在本章中,学习了单板计算机的基础知识及其历史,介绍了许多SBC的样板。然后,详细学习了当下最著名的SBC,即树莓派。学习了如何设置树莓派以及如何远程连接它。在第4章中,将学习Python 3的基础知识。学习如何编写一个简单的Hello World!程序,在不同平台上以不同方式进行编程和执行。还将介绍用于Python 3编程的各种集成开发环境(IDE)。 练习 要更深入地了解树莓派和Raspbian OS,请完成以下练习。  浏览Raspbian OS中的所有实用程序。  本章没有介绍raspiconfig实用程序中的所有选项,请探索其余选项。  访问并浏览本章提供的所有URL。