第4章 开始使用树莓派
树莓派是一款信用卡大小的超小型电脑。它的长度为8.56cm,宽度为5.6cm,厚度只有2.1cm。树莓派把整个系统集成在一块电路板上的解决方案,被称为SoC(System on Chip)。SoC在手机等小型化设备中很常见,功耗也比较低。树莓派使用SoC的解决方案,正适合其超小型电脑的应用场景。
4.1 解剖树莓派
树莓派是一台功能完整的电脑。现代电脑都采用了冯·诺依曼体系。冯·诺依曼在1945年发表了一份报告,把计算机分为五大组件,如图4-1所示,树莓派也不例外。这五大组件分别如下。
图4-1 冯·诺依曼体系
1.控制器
计算机的指挥部,管理计算机其他部分的工作,决定执行指令的顺序,控制不同部件之间的数据交流。
2.运算器
顾名思义,这是计算机中进行运算的部件。除加、减、乘、除等算术运算外,还能进行与、或、非等逻辑运算。运算器与控制器一起构成了中央处理器(CPU, Central Processing Unit)。
3.存储器
存储信息的部件。冯·诺依曼根据自己在曼哈顿工程中的经验,提出了存储器不但要记录数据,还要记录所要执行的程序。
4.输入设备
向计算机输入信息的设备,如键盘、鼠标、摄像头等。
5.输出设备
计算机向外输出信息的设备,如显示屏、打印机、音响等。
我们拿树莓派和冯·诺依曼体系做一个对比。来自博通公司的ARM CPU位于树莓派的正面,如图4-2所示。CPU中除了运算器、控制器和缓存,还有一块用于图形运算的GPU。内存位于树莓派的反面,提供了1GB的存储器空间,如图4-3所示。树莓派上并没有直接的输入输出设备,但预留了多种多样的接口。你可以通过这些接口来连接输入输出设备,例如用USB口连接键盘、鼠标,用HDMI口连接显示器。加上输入输出设备之后,树莓派就补齐了冯·诺依曼体系的五大组件。
图4-2 树莓派的正面
图4-3 树莓派的反面
为了启动设备,你还需要一个电压为5V的电源。这个电源通过Micro B USB的输出端和树莓派连接。树莓派官方售卖的电源插座可以直接插到家用的220V电压插座上,另一端的Micro B USB就可以插入树莓派。你也可以买一根USB转Micro B USB的连接线,把USB一端插入PC或其他提供电源的USB端口。一旦接上电,树莓派的电源指示灯就会亮起,系统自动启动。
此外,你还需要一张Micro SD卡来作为计算机的外部存储器。这张SD卡插入树莓派的卡槽中,就可以接入系统。冯·诺依曼并未区分内部存储器和外部存储器。但现代的计算机,内存和外存承担了不同的功能。一般家用PC除了内存,也会有磁盘或者固态硬盘这样的外部存储器。通常来说,内存容量较小,读写速度快,因此只用于存储与当前运行程序相关的信息。一旦断电,内存中的数据就会丢失。外存容量较大,外存选取的都是可以长期保存数据的介质,从而在断电期间也能保存数据。因此,需要长期保存的数据,如树莓派的操作系统,就需要保存在这张SD卡上。当树莓派开机时,会加载SD卡中保存的操作系统程序。用户产生的文件,也保存在这张SD卡上。如果你的树莓派硬件出现故障,只需把这张Micro SD卡插入其他树莓派中继续使用即可,而不用担心任何的数据丢失。
除了上面的核心组件外,树莓派还包括了其他接口。
●40 PIN Extended GPIO:广义编程接口,常用于硬件控制。
●10/100 LAN Port:用于有线连接的以太网口。
●CSI Camera Port:摄像头接口。
●3.5mm 4-Pole Composite Video and Audio Output Jack:视频音频输出口。这个接口常用于音频输出。
●DSI Display Port:另一种显示接口。这个接口不常见。
在树莓派3 Model B中,还自带了Wi-Fi和蓝牙模块,可以方便地进行无线连接。在老版本的树莓派中,只能通过USB外接相关适配器,以实现无线连接。
4.2 操作系统的安装与启动
树莓派上最基础的软件就是操作系统。我们说过,树莓派的操作系统保存在它的外部存储器,也就是Micro SD卡上。由于树莓派一开机就需要找到操作系统,所以Micro SD卡上的操作系统程序必须提前写入。树莓派官方推荐使用8GB的SD卡,Raspbian操作系统本身占据的空间不到5GB,剩下的空间就可以由用户使用。不过,为了让空间足够充裕,建议使用更大空间的Micro SD卡。
我们需要一台可以读写Micro SD卡的电脑来烧录。很多笔记本电脑都自带SD卡插口。需要注意的是,这些SD卡插槽会比Micro SD卡尺寸大,所以需要一个Micro SD卡转SD卡的卡套,才能插入插槽。即使没有SD插槽和转换卡套,一个USB接口的Micro SD卡读卡器也可以很便宜地买到。
本书的操作系统是树莓派官方推出的Raspbian。正如名字暗示的,Raspbian继承自Debian操作系统。Debian是Linux的一个发行版本。当你熟悉了Raspbian,就有了使用Linux系统的经验。官网提供了Raspbian的镜像文件,你可以到官网下载。由于Raspbian不时会更新版本,所以下载文件的名字也会有差异。本书后面把该镜像文件统称为raspbian.image。我们需要把这个镜像文件烧录到SD卡上。下面分别列出了多种烧录方式。
1.Windows电脑烧录
Windows系统有现成的图形化软件来完成上述镜像烧录工作,比如树莓派官网推荐的Win32 Disk Imager,如图4-4所示。
图4-4 Win32 Disk Imager界面
安装好Win32 Disk Imager后启动。在界面上的“Image File”栏选择镜像文件,在“Device”栏中选择Micro SD卡对应的盘符,然后单击“Write”按钮。待进度条完成后,Micro SD卡就烧录成功了。烧录完成后,把SD卡插入树莓派的卡槽中,为树莓派连通电源和显示器,就可以从屏幕上看到树莓派的启动画面了。
2.Mac OS X烧录
如果是在Mac OS X下,可以通过终端(Terminal)中的命令来进行烧录。首先,列出挂载的所有存储设备:
$diskutil list
从中找到对应Micro SD卡的设备,并记下它的路径,如/dev/disk3。然后,使用dd命令把镜像文件写入SD卡:
$sudo dd if=/dev/disk3 of=./raspian.image
3.Linux烧录
如果是在Linux系统下,那么可以用如下命令来找出Micro SD卡挂载的路径:
$sudo fdisk -l
Linux下的烧录和Mac OS X类似,可以使用dd命令,把镜像文件写入SD卡:
$sudo dd if=/dev/disk3 of=./raspian.image
4.NOOBS
NOOBS是一种更加简便的安装方式。NOOBS(New Out Of Box Software)是一个简便的操作系统安装程序。首先准备一个格式化为FAT格式的Micro SD卡,然后把解压缩后的NOOBS文件直接复制到SD卡中即可。随后,将此卡插入树莓派中,即可根据图形化界面提醒安装想要使用的操作系统。
4.3 图形化界面
开机完成后,就可以进入Raspbian的图形化桌面了。图形化桌面提供的主要功能都在上方的导航栏中,如图4-5所示。
图4-5 Raspbian桌面
1.导航栏左上角
导航栏左上角的菜单(Menu)包含了很多应用软件,分为下面几类。
●Programming:编程工具,如动态编程语言Python,用于数学运算的Mathematica,以及用于编程教育的Scratch等。
●Office:办公软件,即开源的LibreOffice套装。
●Internet:互联网软件,如电子邮件客户端和浏览器。
●Games:游戏。这里有点失望,除了Minecraft,就是用于游戏编程的Python Games。
●Accessories:工具软件,如文件管理器File Manager、终端Terminal、文本编辑器等。
●Sound & Videos:VLC播放器。
菜单末端还有两个选项。
●Preferences:系统配置,可以在里面设置时间、语言、显示等选项。
●Shutdown:用于关机或重启。
紧邻着菜单的是来自菜单的五个常用软件,依次是浏览器:用于上网;文件管理器:用于浏览和操作文件;终端:以命令行的方式控制操作系统,本书后面将常用到终端;进行科学运算的Mathematica和Wolfgram。
2.导航栏右侧
导航栏右侧通常有树莓派运行状态的几个信息。
●蓝牙。
●Wi-Fi。
●声音控制。
●CPU使用监控。
●时间。
●可插拔设备,如USB存储器。
你可以点击相应的图标进入设置页面。比如点击Wi-Fi图标,可以选择要连接的无线网络,并输入Wi-Fi密码。
导航栏之外的空间,就是桌面。桌面上有一个回收箱(Wastebasket)。此外,你可以把一些文件放在桌面上。如果你打开某个有图形化界面的软件,它的桌面也会显示在桌面上方。接下来,我们来接触两款有图形化界面的软件。
4.4 Scratch
首先,简要地了解Scratch。Scratch是由麻省理工学院开发的一款图形化编程软件。这个软件已经预装在Raspbian中,在“菜单”中找到后点击它,就可以打开,如图4-6所示。
图4-6 Scratch界面
Scratch的界面分为左中右三栏。右边是一只猫,左边是编程可用的命令。把左边的命令拖到中间栏,就可以制作程序。由于左栏提供了所有可用的命令,所以编程时不需要记住任何语法。因此,Scratch经常用于幼儿教育。
我们把下面几个命令组合在一起,就写成了一个小程序,如图4-7所示。
图4-7 Scratch代码
这段程序很直观。当我们点击界面上的旗帜按钮时,猫咪就会说“Hello, World!”。树莓派预装Scratch的目的也很明了:让孩子们尽早享受编程的乐趣。
4.5 KTurtle
Raspbian系统中还可以安装一款叫KTurtle的软件。这款软件有一个图形化界面。整个界面分为左右两栏,如图4-8所示。我们通过左边填写的程序,来控制右栏小海龟的移动。移动的小海龟会在画面上留下行动的轨迹,从而绘制出各种各样的图形。在绘图过程中,小海龟不断移动,左侧程序栏中也会用黄色标明执行到哪一行了,非常有趣。
图4-8 KTurtle界面
我们首先来看KTurtle的下载安装。从树莓派菜单中打开Terminal,依次输入以下命令:
$sudo apt-get update $sudo apt-get install -y kturtle
等命令运行完,KTurtle也就安装好了。
在Terminal中输入kturtle,按Enter键打开KTurtle界面,就可以开始编程了。常见的控制海龟行动的命令如下所示。
●reset:清空画面。
●pencolor:设置画笔颜色。
●forward:小海龟前进,后面跟一个数字,表示前进的距离。
●backward:小海龟后退,后面跟一个数字,表示后退的距离。
●turnleft:左转,后面跟一个数字,表示左转的角度。
●turnright:右转,后面跟一个数字,表示右转的角度。
●go:让小海龟瞬移到某个位置。后面跟两个数字,表示位置。
●print:在屏幕上打印文字。
●repeat:重复某些动作。后面跟数字和花括号,数字表示重复次数,而花括号中的内容表示重复的动作。
此外,还要一些设置命令。
●reset:清空画面。
●pencolor:设置画笔颜色。
●fontsize:设置字体大小。
程序中的文本和数字等数据可以储存在变量中,以便之后反复使用。变量用$a的形式表示。KTurtle中更复杂的命令可以通过它的“帮助”菜单来查询。
下面我们用KTurtle绘制一个花朵。在KTurtle的代码框中输入:
reset canvassize 200, 200 learn circle $x { penup backward $x / 2 pendown repeat 36 { forward $x turnleft 10 } penup forward $x / 2 pendown } learn petal { turnright 90 circle 1 turnleft 90 } go 100, 170 direction 0 pencolor 0, 128, 0 penwidth 5 forward 100 direction 90 pencolor 230, 230, 0 for $x = 0.4 to 2.8 step 0.4 { circle $x } pencolor 190, 0, 0 penwidth 2 penup forward 4.2 turnright 15 pendown repeat 6 { petal turnleft 60 penup forward 16.8 pendown } go 0, 0
运行后,小海龟就开始绘制花朵了,如图4-9所示。
图4-9 绘图结果