树莓派:开始懂了

Posted Vamei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派:开始懂了相关的知识,希望对你有一定的参考价值。

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。

 

树莓派是一款信用卡大小的超小型电脑,由英国的树莓派基金会研发。由于超小的体积,树莓派从2012年发行起就风靡全球。别看树莓派身板小,它可是一台功能完整的电脑。连接上显示器、鼠标和键盘后,你可以像使用一般台式机那样使用树莓派。对于树莓派3来说,还内置了WiFi和蓝牙的无线支持,可以更方便地进行无线连接。在许多硬件创新项目中,都可以看到树莓派的身影。我将在一系列文章中,介绍树莓派的基本用法。

 

硬件介绍

下图中是一台树莓派3。可以看到,它提供了丰富的接口。

 

图中标出了树莓派的主要接口。第一次启动树莓派,你需要接入USB接口的鼠标和键盘,以及常见的HDMI显示器。此外,你还需要一个输出电压为5V的电源。这个电源线的输出端是Micro USB,与树莓派连接。树莓派官方的电源插座可以直接插到家用的220V电压插座上。或者,你也可以买一根USB转Micro USB的连接线,把USB那一端插入到PC或其他提供电源的USB端口。一旦接上,树莓派就会自动启动。

 

我们可以顺便看一下树莓派上的其他硬件。树莓派正中是博通的ARM CPU,也就是ARM的心脏。除此之外,正面还有一个GPU芯片,主要用于图像处理。芯片背面的方形芯片,是树莓派的内存。树莓派主要靠这三个芯片进行最重要的控制和运算工作。此外,树莓派还提供了很多通往外部世界的接口。图中最右侧有4个USB口和1个以太网口。在以太网接口插入网线,就可以有线地连接到互联网。下侧除了电源接口、连接显示器的HDMI输出口和音频口,还有一个用于连接专用摄像头的排线口。需要注意的是,树莓派只有在开机时检查到显示设备时,才会向HDMI端口输出,所以必须在开机前就连好HDMI接口的显示器。左侧的上面有一个显示的排线口。考虑到HDMI的广泛使用,该插口出场机会不是很高。左侧的下面有一个Micro SD卡的插口。这张SD卡取代了一般电脑中的硬盘。树莓派的上侧还有一排针脚,构成了通用编程接口(GPIO)。GPIO可以用于和很多原始的硬件外设进行底层连接。

 

系统安装和启动

树莓派只是硬件,我们还需要软件来让树莓派跑起来。树莓派上最基础的软件就是它的操作系统。由于树莓派用一张Micro SD卡来作为它的存储空间,所以操作系统也是安装在这张SD卡上。树莓派官网提供了Raspbian的镜像文件,只需要把这个镜像文件烧录到SD卡上,就可以把这张SD卡插入到树莓派中使用了。Raspbian是继承自Debian操作系统。Debian是Linux的一个发行版本,而Linux又遵从Unix的规范。因此,假如你熟悉Unix家族的任何一款操作系统,都能很快上手树莓派。反过来说,当你熟悉了Raspbian,那么也能熟练运用苹果OS X这样的Unix系统。

Raspbian系统的操作界面

 

对于树莓派来说,所有的软件都安装在一张小型SD卡上,操作系统也不例外。缺了这张SD卡,树莓派就根本没法使用。我们需要另外一台电脑来把操作系统的程序存入到这张SD卡中。不用说,这台电脑必须有SD卡的读写口。很多笔记本电脑都自带SD卡插口。即使没有,一个USB接口的读卡器也可以很便宜地买到。此外,你还要到树莓派官网去下载操作系统的源文件。由于操作系统不时会更新,所以文件的名字也会有差异。我在下文中统称文件名为raspbian.image。

 

1)Unix系统

如果你的电脑是Unix系统,如Linux和Mac OSX,我们可以用现成的工具来为树莓派制作操作系统。把SD卡插入电脑的读卡槽后,我们首先要找到SD卡挂载的路径。

 

如果是在Mac OSX下,那么输入下面命令,可以列出挂载的所有存储设备:

diskutil list

从中找到对应SD卡大小的设备,并记下它的路径,如/dev/disk3。如果是Linux系统下,那么可以用如下命令来找出路径:

sudo fdisk -l

 

然后,可以使用UNIX系统下共通的dd工具,把镜像文件写入SD卡:

sudo dd if=/dev/disk3 of=./raspian.image

 

2)Windows系统

在Windows下,有现成的图形化软件来完成上述镜像烧录工作,比如树莓派官网推荐的Win32DiskImager。整个操作过程比UNIX系统更加简单,这里不再赘述。

 

写入完成后,把SD卡插入到树莓派的卡槽中,为树莓派连通电源,就可以从屏幕上看到树莓派的启动画面了。

 

 

桌面

开机完成后,就可以进入到Rapbian的图形化桌面了。图形化桌面提供的主要功能,都包含在上方的导航栏中:

 Raspbian系统的操作界面

导航栏左上角的菜单(Menu) 包含了很多应用软件。菜单中提供了很多功能软件:

  • Programming:编程工具,如动态编程语言Python,用于数学运算的Mathematica,以及用于编程教育的Scratch等。
  • Office:办公软件,即开源的LibreOffice套装。
  • Internet:互联网软件,如电子邮件客户端和浏览器。
  • Games:游戏。这里有点失望,除了Minecraft,就是用于游戏编程的Python Games。
  • Accessories:工具软件,如文件管理器File Manager、终端Terminal、文本编辑器等。
  • Sound & Videos:VLC播放器。

此外,菜单终端Preferences用于系统设置,你可以在里面设置时间、语言、显示等选项。最下方的Shutdown按钮用于关机或重启。

 

紧邻着菜单的是来自菜单的五个常用软件,依次是浏览器、文件管理器、终端、以及进行科学运算的Mathematica和Wolfgram。在我们的教程中,最常用的就是其中的终端。右侧的几个按钮中,从左到右依次是蓝牙、Wifi、声音控制、CPU使用监控、时间。你可以通过Wifi按钮来连接无线网。最右端列出了所有的可插拔设备,如USB存储器。桌面上除了硕大的树莓派标志,就是一个回收箱Wastebasket。

 

树莓派的图形化桌面确实可以让人探索一段时间。但这个桌面可以说有一些简陋。“画面精美”从来都不是Linux的长处。如果你真的想用这样的桌面系统进行办公的话,恐怕要更加失望。那树莓派的浏览器打开网站上的视频,你很可能会遭遇缓慢的页面加载的缓慢和卡顿的视频播放。你要是想开多个窗口工作的话,桌面很容易就会崩溃。毕竟,树莓派的配置很低端,而计算机图形的呈现都相当消耗资源。幸好,Linux提供了更好的与树莓派的方式:Shell。

 

打开终端(Terminal),桌面上就会出现一个黑色背景的窗口。窗口上显示着:

pi@raspberrypi:~ $

这里的pi是你的用户名,raspberrypi是计算机的名字。$是命令提示符。如果你敲击键盘,会发现字符会显示在$提示符的后面,形成一串文本形式的命令。所谓的Shell,就是运行在终端中的程序。它会分析你的文本输入,然后把文本活动转换成相应的计算机活动,不多也不少。

 

比如说输入date命令:

date

敲击回车键Enter后,会显示出系统当前的时间。

 

Shell看起来简陋,但实际上比图形化桌面强大得多。Linux操作系统继承自Unix操作系统。无论是Linux,还是Unix操作系统,最初都只提供了Shell这一种用户操作界面。后来发展起来的图形化的桌面没法提供Shell的所有功能。如果你习惯了这个文本操作界面,还会发现它不但比桌面强大,还比桌面好用得多。现在,我将介绍一些命令,一方面让你更加了解树莓派,另一方面也让你体验一下Shell。

 

了解你的树莓派

1)Linux通用命令

Linux系统提供了各种各样的命令。在Shell中输入这些命令,就可以实现许多功能。我在这里介绍一些命令,帮助你来了解自己的树莓派。首先用lscpu的命令来查询CPU的信息:

lscpu

 

终端窗口中就打印出CPU的信息:

Architecture:          armv7l
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
Model name:            ARMv7 Processor rev 4 (v7l)
CPU max MHz:           1200.0000
CPU min MHz:           600.0000

可以看到,我的树莓派用的是4核的ARM处理器,最高频率可以达到1200MHz。

 

然后,可以用free命令来了解内存使用状况:

free -h

在使用上面的命令时,增加了-h的选项。这里的字母h是human readable的意思,即把原本以字节为单位的结果,转换成更适合显示的单位。结果如下:

             total       used       free     shared    buffers     cached
Mem:          862M       739M       122M        14M        44M       397M
-/+ buffers/cache:       298M       563M
Swap:          99M         0B        99M

可以看到,内存总量是862M,在接下来的列中,还可以看到已用和自由的内存空间。

 

然后,我们可以看看SD卡的存储情况,用命令fdisk: 

sudo fdisk -l

命令fdisk用于显示磁盘信息。选项-l表示列出所有磁盘。我们又看到命令前面增加了sudo。因为fdisk命令的执行需要超级管理员的权限,sudo正是以超级管理员的身份来执行fdisk。结果的最后两行如下:

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        8192   131071   122880   60M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      131072 30318591 30187520 14.4G 83 Linux

整个SD卡被分成了两个分区。一个分区有60M大小,专门用于树莓派的开机启动。另一个分区用于储存其他的所有数据。

 

使用lsusb,可以找到所有的USB外设:

Bus 001 Device 005: ID 0e8f:2517 GreenAsia Inc. 
Bus 001 Device 006: ID 045e:0750 Microsoft Corp. Wired Keyboard 600
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

使用uname -a,可以完整地显示出操作系统的信息:

Linux raspberrypi 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l GNU/Linux

我的系统使用的内核是Linux4.1.19版本。还能从输出结果中看到内核的发布时间是2016年3月15号。

 

最后,你可以用ifconfig命令来查看网络接口。命令运行结果如下:

 

eth0      Link encap:Ethernet  HWaddr b8:27:eb:d8:ed:f4  
          inet6 addr: fe80::9b8b:c0de:d083:6ddd/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:243 errors:0 dropped:0 overruns:0 frame:0
          TX packets:243 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:19020 (18.5 KiB)  TX bytes:19020 (18.5 KiB)

wlan0     Link encap:Ethernet  HWaddr b8:27:eb:8d:b8:a1  
          inet addr:192.168.0.108  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::ba27:ebff:fe8d:b8a1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:45926 errors:0 dropped:4268 overruns:0 frame:0
          TX packets:10469 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:26867855 (25.6 MiB)  TX bytes:1360267 (1.2 MiB)

 

其中eth0代表了以太网接口,wlan0代表了Wifi接口。而lo是虚拟出来的本地接口,用来表示本机。在连接上网的接口中,我们可以看到该接口的IP地址等信息。例如说wlan0的IP地址是192.168.0.108。由于我没有插网线,所以eth0并没有IP地址。

 

2)树莓派专用命令

除了通用的Linux命令,树莓派还提供了vcgencmd命令,用于和树莓派硬件直接互动。比如在Shell中执行:

vcgencmd measure_temp

上面命令中,第二段的measure_temp称为命令的参数。参数是选项之外另一种给命令提供额外信息的方式。上面的命令将返回CPU的温度:

temp=51.5\'C

 

用下面命令测量树莓派的核心电压:

vcgencmd measure_volts core

返回电压值:

volt=1.2000V

 

vcgencmd提供的功能还有很多。除了显示硬件信息,你还能用这个命令来控制硬件。它的用法不再一一列举,具体可参考vcgencmd

 

这一篇介绍了树莓派的硬件和基本操作,并由此开启树莓派之旅。

 

欢迎阅读“骑着企鹅采树莓”系列文章

以上是关于树莓派:开始懂了的主要内容,如果未能解决你的问题,请参考以下文章

Arduinoarm树莓派单片机四者区别和关系

Arduinoarm树莓派单片机四者区别和关系

Arduinoarm树莓派单片机四者区别和关系

树莓派 python 如何将本地文件上传到指定的服务器页面上

CEO亲自写代码登上热榜,从零开始打造“裸金属”树莓派

python代码实现树莓派3b+驱动步进电机