前言
“
麻雀虽小,五脏俱全
”
,这句话形容树莓派是再合适不过了,只有信用卡大小的卡片式电脑,内部装有
Linux
Wifi
热点,还可以用于智能家
居。自问世以来,受众多计算机发烧友和创客的追捧,曾经一
“
派
”
难求。本文从组装,系统,应用,实际开发等角度,由浅入深的介绍了树莓派这个有意思的派。
适用人群
本文是为新手所准备的,可以帮助他们玩转树莓派,体验极客应用。
学习前提
你需要准备相应的硬件,还要对
Linux
系统有一定的了解。
鸣谢:
全速前行
1
开源硬件
开源之风从软件吹到了硬件,三个比较有代表性的是
Raspberry Pi
(树梅派)、
Arduino
(阿尔杜伊诺,好吧,原谅我的发音)和
BeagleBone Black
。所谓的开源精神,有人总结为四种维
度:
第一,人人可用;第二,人人可探;第三,人人可改;第四,人人可再发布。
说白了,就是我们可以窥探这些硬件是设计的细节,比如如何走线、排板啦,或更厉害的,使用芯片的技术细节我们也可以知道。这增加了我们再次开放的可能性,使可玩性更高。喜
欢折腾的硬件黑客
\GEEK
把这些板子变成最好玩的玩具,在折腾的过程中收获了乐趣喜悦和技术。
开源是个褒义词。什么东西沾了开源的边都会散发着自由精神的光辉,它意味着我们可以拿过来就用而不用付出金钱,只需要我们把自己折腾的结果给更多人展示就好了。而往往这
样,我们也收获了成就感和个人价值,我们也为开源事业贡献了自己的一份力量。就像软件行业中,很多商业软件也会使用一些开源库一样,我们依然可以把自己的硬件产品用上这些
开源的东西。前提还是要了解一下人家使用的开源的许可(
License
)是什么,免得惹上官司。
上面提到目前最流行的开源硬件中,
Raspberry Pi
和
BeagleBone Black
可以归为微型电脑一类(
soc
),而
Arduino
是功能更弱小的单板机。所以你会看到
Arduino
既可以更
Pi
一起玩耍
有可以
BeagleBone
一起共事。在这个系列中,我主要玩耍的对象是
Raspberry Pi
,有时也会邀请
Arduino
客串出场。
先来简单介绍一下
Raspberry Pi
,它是英国
Raspberry Pi
基金会在
2012
年推出的迷你电脑,其宗旨是推广科技,尤其是教育领域。请注意它是电脑,这体现了硬件和软件高智能化。它
只有信用卡大小,小巧但功能不弱。下图便是最新推出的
B+
板子。
配置虽然没有太大的升级,但是也足够我们使用。下面是其硬件配置:
1.
博通的
soc
(
Broadcom BCM2835
)
700MHz ARM1176JZFS
处理器,带
FPU
和
VideoCore IV
双核
GPU
GPU
提供开放式
GL ES 2.0
、硬件加速
OpenVG
和
1080p30 H.264
高端解码
GPU
可以实现
1Gpixel/s
、
1.5Gtexel/s
或
24GFLOP
,并提供纹理过滤和
DMA
基础架构
512MB SDRAM
2.
其他接口
HD 1080p
视频输出
复合视频
(PAL/NTSC)
输出
立体声音频输出
10/100 BaseT RJ45
以太网插座
HDMI 1.3
和
1.4
视频
/
音频插座
3.5mm 4
极音频
/
复合视频输出插孔插座
4
个
USB 2.0
插座
15
路
MPI CSI-2
连接器,用于
Raspberry Pi
高清摄像机
(775-7731)
15
路显示串行接口连接器
MicroSD
卡插座(
TF
卡)
从
MicroSD
卡启动,运行
Linux
操作系统(
raspbian
等)
GPIO
和串行总线的
40
引脚管座(与
Raspberry Pi
型号
A/B 26
引脚管座兼容)
JTAG
连接器管座空间
电源:
+5V @ 2A
,
MicroUSB
插座(现在手机的数据线接口)
有了这样的板子,我们都可以干什么呢?
Raspberry Pi
的优势是视频能力,从
HD 1080p
输出接口就可以推断出来。有了这个优势,我们首先就可以拿它来做个电视盒子。至于下一步,那么研究用它做个轻型服务器,再然后
呢,可以串通一些各个硬件联网,一个主打智能家居的物联网环境就可以有雏形了。
其他方面,比较热门的智能机器人领域也可以施展
Raspberry Pi
的拳脚,只要发挥我们的想象力,一切皆有可能。
参考:
1.
开源硬件平台(
3
)
2.
百度百科
3.
官网
2
Startup
一季介绍了开源硬件中
Raspberry pi
的一些情况,这一季就来说说在
Linux
环境下如何烧写系统和启动配置。(话说我这一季有点短,一季就是一集的内容)
B+
板子到手后,很是小
兴奋的说。先看看它的包装照:
我顺道买了个外壳,虽然没有安装说明,但是很容易就被我装成了。
但我们还需要制备其他零部件才可以让它正常运转。首先是它的硬盘装备,
B+
现在使用的是小
SDCard
,也是俗称的
TF
卡,我从京东买的
SanDisk
的
32G
卡,
Class10
的,传输速度应
该对得起那个价,
>10M/s
。
一会就说如何把系统烧写到卡中。那么有了
“
硬盘
”
了,还缺显示器啊,鼠标键盘啊,电源啊。
B+
板子自带
4
个
USB
口,所以不用外接
USB Hub
就可以插键鼠无压力。而与显示器或
者电视连接,需要
HDMI
线,如果显示设备不支持
HDMI
,那就要想办法转换接口啦。而电源是
MicroUSB
,就是当前手机数据线就可以。我直接在连接电视,一切准备就绪。就差系
统烧写完毕呢。
首先在官网下载系统镜像,我下载的是
raspbian
,放在
~
/raspberrypi
目录下。(这目录是没有要求的,只要你能够找到就可以)用读卡器把
SDCard
插到电脑上,在终端执行下面指
令:
df -h
19:28linc@Linc-Ubuntu:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 30G 32K 30G 1% /media/3964-3130
记下我的
sdcard
名称。
将其卸载
19:30linc@Linc-Ubuntu:~$ umount /dev/sdb1
烧写
警告:烧写时目标是
/dev/sdb
而不是刚才的全名
/dev/sdb1
(去掉
1
)
19:37linc@Linc-Ubuntu:~$ sudo dd bs=4M if=~/raspberrypi/2014-09-09-wheezy-raspbian.img of=/dev/sdb && sync
bs
是一次读写的数据大小,我这里用
4M
,因为机器和
sdcard
都是可以承受的。
if
是源文件,当然是
raspbian
的
img
了
of
是目的地,我的
sdcard
默认命令的执行是没有回显的,但可以新开一个终端输入:
sudo pkill -USR1 -n -x dd
在回过头来看刚刚的终端,有显示进度了:
424+0 records in
423+0 records out
1774190592 bytes (1.8 GB) copied, 99.316 s, 17.9 MB/s
781+1 records in
781+1 records out
3276800000 bytes (3.3 GB) copied, 272.398 s, 12.0 MB/s
781+1 records in
781+1 records out
3276800000 bytes (3.3 GB) copied, 272.398 s, 12.0 MB/s
速度还是够快的吧。
烧完别忘记
sync
一下
sudo sync
因为上面已经执行过一次了,就当我是强迫症吧。
用
fdisk
来看看我的
sdcard
情况:
sudo fdisk -l
Disk /dev/sdb: 31.9 GB, 31914983424 bytes
64 heads, 32 sectors/track, 30436 cylinders, total 62333952 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00090806
Device Boot Start End Blocks Id System
/dev/sdb1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/sdb2 122880 6399999 3138560 83 Linux
启动它
把
SDCard
退出电脑,插到
B+
板子上,将
HDMI
、键鼠都连好,现在开始接电启动!
Raspberry pi
开始启动了!
看来一切顺利,进入系统配置界面:
第一项是扩展文件系统,是系统完全使用你的
SDCard
:
第二项是修改密码,这个值得一做:
第三项是选择开机启动后进入哪个界面,我选择了第二个,图形界面。
剩下的选项我暂时没有设置,接下来重启,然后顺利进入系统桌面。本次
Startup
圆满完成!
子的购买:
我是从官网上找到国内的代理商
ickey
购买的,当时正是双十一尾声,结果真没想到下单的第二天就邮到了。
参考:
http://qdosmsq.dunbar-it.co.uk/blog/2013/06/noobs-for-raspberry-pi/
https://github.com/raspberrypi/noobs/blob/master/README.md
Linux
下烧写
SD
卡:
http://www.raspberrypi.org/documentation/installation/installing-images/linux.md
3
After Startup
在成功启动系统后,先给系统来个升级吧!我下载的是最新版的
Raspbian
,
14
年
9
月
9
日的,但是我感觉还是有些软件不是最新的,抱着新比旧好的想法,升它一下。
$ sudo apt-get update && apt-get upgrade
vim
在此系统不是默认安装的,
vi
是。
Raspbian
中有个很轻便易用的文本编辑器
nano
。但是我还是习惯与
vim
,所以也安装一下吧。
上一季太过兴奋,以至于在系统烧完启动后没有做合理的配置,导致现在有如下两个问题:时间不对,键盘布局不对。
本以为在
Raspbian
的图形环境中可以很容易的找到相应的系统设置项,但是很可惜,我没有找到。
这是我能找到的唯一一个设置键盘的选项。好吧,如果
GUI
系统中没有,就只好用命令行来完成了。
时区的设置
用
tzselect
命令对时区进行设置,截图如下:
首先要选择大洲,我们当然是
Asia
。然后是国家
China
,最后是时区
Beijing Time
。不过这些配置完,还是没有结束,看看下面的提示:
我们需要在
“.profile”
文件中加入
TZ
那一行,然后重新
login
就可以啦。如下图:
键盘的设置
默认键盘布局是英国的,也就是说
@
和
“
是互换的,还有一些与我们风格很不同的布局,所以我们要改成我们或美国的键盘布局(一样的)。
Raspbian
是基于
Debian
的,我尝试了
dpkg-reconfigure
命令,唤出配置
GUI
,一切还算顺利。
sudo dpkg-reconfigure keyboard-configuration
重启之后,设置生效。好了,一切准备就绪,开始尽情玩耍吧。
4
NOOBS
今天换个玩法,不继续深入探索
Raspbian
系统了,研究一下官网推荐的另一种安装方法
NOOBS
。
那么什么是
NOOBS
呢?它是专为
Raspberry pi
打造的简单易用的图形界面的操作系统管理工具。全称为:
New Out Of the Box Software
。
官方截图如下:
本工具的初衷就是简化
Raspberry pi
安装系统的繁琐,因为
Raspberry pi
的板子买来是不带系统的,我们需要额外购买
SDCard
来安装系统。对很多新手来说,命令行的东西肯定是没有
图形界面来得简单易懂。正是由于每个
sdcard
上面代表着安装好的系统,我们可以通过多买几个
sdcard
就可以持续性的体验不同的系统,只需通过换个
sdcard
搞定,真是特别方便。
下面来说说我是如果在另一张
8G
卡用
NOOBS
安装系统
Raspbian
的。
第一步,下载
NOOBS
官网链接,记得自己是在
Ubuntu
下用
Firefox
浏览器下载的,可以断点续传。
第二步,格式化
SDCard
如果你的
SDCard
本来就是
FAT32
文件系统,那么跳过这一步。不要被这一步吓到,如果不用格式化,那么
NOOBS
安装只需要三步:下载、解压、在
Raspberry pi
上启动。
Linux
下将
SDCard
格式化成
Fat32
文件系统。用
fdisk
命令,需要
root
权限,或者
sudo
。插上
SDCard
卡,执行如下命令:
#fdisk -l
Disk /dev/sdb: 8054 MB, 8054112256 bytes
49 heads, 29 sectors/track, 11070 cylinders, total 15730688 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 8192 15730687 7861248 b W95 FAT32
看来我的
8G
卡现在已经是
FAT32
系统了,而且就这一个分区。不要紧,过程我还是要执行一遍。
#fdisk /dev/sdb1
Command (m for help): d
No partition is defined yet!
Command (m for help): p
Disk /dev/sdb1: 8049 MB, 8049917952 bytes
248 heads, 62 sectors/track, 1022 cylinders, total 15722496 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-15722495, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-15722495, default 15722495):
Using default value 15722495
Tips
:回车(
Enter
)键选择默认项。
Tips:Enter is means you select default option.
上面创建了一个主分区,
1
号分区。并且设置了启动和结束的扇区值。我们再来看看创建的情况:
Command (m for help): p
Disk /dev/sdb1: 8049 MB, 8049917952 bytes
248 heads, 62 sectors/track, 1022 cylinders, total 15722496 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1p1 2048 15722495 7860224 83 Linux
好的,我们的分区类型是
linux
,下面我们再把它转换成
FAT32
。
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): l //attention!This is L! Not number 1.
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list codes): b
Changed system type of partition 1 to b (W95 FAT32)
Command (m for help): p
Disk /dev/sdb1: 8049 MB, 8049917952 bytes
248 heads, 62 sectors/track, 1022 cylinders, total 15722496 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1p1 2048 15722495 7860224 b W95 FAT32
此时需要将新的分区写入到
sdcard
,使用
w
命令:
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
mkfs.vfat /dev/sdb1
mkfs.vfat 3.0.12 (29 Oct 2011)
mkfs.vfat: /dev/sdb1 contains a mounted file system.
值得注意的是,我上面的
format
操作貌似没有成功。因为在
sdcard
中还可以看到原有文件,也许是因为写保护?还是什么别的原因?好像我的一系列操作都没有成功似的。
第三步,将
NOOBS
文件解压到
SDCard
如果
SDCard
本来就是
FAT32
系统,那么直接就可以做这一步,这也就是用
NOOBS
工具安装系统的方便之所在。
解压过程:此时我在
sdcard
的目录下,直接执行
unzip
。
unzip ~/raspberrypi/NOOBS_v1_3_10.zip
Archive: ~/raspberrypi/NOOBS_v1_3_10.zip
inflating: BUILD-DATA
inflating: INSTRUCTIONS-README.txt
extracting: RECOVERY_FILES_DO_NOT_EDIT
inflating: bootcode.bin
creating: defaults/
creating: defaults/slides/
inflating: defaults/slides/A.png
creating: os/
creating: os/Raspbian/
inflating: os/Raspbian/root.tar.xz
inflating: os/Raspbian/boot.tar.xz
inflating: os/Raspbian/partition_setup.sh
extracting: os/Raspbian/Raspbian.png
creating: os/Raspbian/slides_vga/
inflating: os/Raspbian/slides_vga/G.png
inflating: os/Raspbian/slides_vga/B.png
inflating: os/Raspbian/slides_vga/C.png
inflating: os/Raspbian/slides_vga/D.png
inflating: os/Raspbian/slides_vga/E.png
inflating: os/Raspbian/slides_vga/F.png
inflating: os/Raspbian/slides_vga/A.png
inflating: os/Raspbian/partitions.json
inflating: os/Raspbian/flavours.json
extracting: os/Raspbian/Raspbian_-_Boot_to_Scratch.png
inflating: os/Raspbian/os.json
inflating: os/Raspbian/release_notes.txt
creating: os/Data_Partition/
extracting: os/Data_Partition/Data_Partition.png
inflating: os/Data_Partition/partitions.json
inflating: os/Data_Partition/os.json
extracting: os/Data_Partition/data.tar.xz
inflating: recovery.cmdline
inflating: recovery.elf
inflating: recovery.img
inflating: recovery.rfs
inflating: riscos-boot.bin
第四步,启动
现在可以把
SDCard
从电脑上退下来,插到板子上,加电启动。如下图所示:
在安装中,拷贝速度是
1.4MB/s,
明显比直接用
dd
命令将
img
拷贝到
sdcard
中慢。
经过漫长的安装过程,终于成功了。启动画面与上一季完全一样。
参考:
官方安装文档:
http://www.raspberrypi.org/documentation/installation/noobs.md
5
无线网卡
Raspberry pi
的板子由于成本原因是没有加无线模块的,不想被网线束缚的我们,需要自备
USB
无线模块。在购买板子时,看见官方推荐
EDUP
无线网卡,价格还算合适,就直接入手
了。
采用
REALTEK8188
芯片,
802.11n
,传输速度
150Mbps
,适用范围
130
平方米。
将其插到任一
U
口即可,如下图:
由于外壳阻碍了电源插孔,所以只好先裸着了,图中已经加电,
HDMI
的另一头是电视机。
接下来的任务就是如何让这个无线网卡工作,连接到我已经开启的无线路由器。
wpa_gui
在进入
Raspbian
后,桌面上我们就可以看到一个
Wifi Config
的图标,双击启动它,进入到
wpa_gui
界面。
Adapter
已经认出
wlan0
,说明系统已经有此无线网卡的驱动了,当然我们可以用
lsusb
命令来看一下:
最后一项
Realtek
就是此无线网卡。
再来说说这个
wpa_gui,
它是大名鼎鼎的
wpa_supplicant
(一个开源的无线网络配置工具,
Android
同样用它来管理
wifi
)的图形界面,使用
QT
开发。但是我们觉得默认的版本很低,如
下图:
现在,我们先扫描一下附件的
wifi
热点,点击
scan
按钮。
从
SSID
列表中找到你的目标,双击它,打开配置页面,如下图:
SSID
是热点名称,
Authentication
是无线路由使用的认证方式,这里是
WPA2-PSK
,紧接着
Encryption
是
WPA2-PSK
的加密算法,图中显示的
CCMP
。
打开下拉列表,还有一个加密算法是
TKIP
。问题就出现在这里了,因为这是两个过时的加密算法。现在的
WPA2-PSK
推荐
AES
加密,因为这样更安全,传输速度更快。所以,这里
就有一个矛盾,我的无线路由是
AES
加密,而
wpa_gui
中没有这个选项,那么连接肯定是不能了。为了解决这个问题,我把无线路由的
AES
加密改成了
TKIP
。
接着是
PSK
,就是你输入
wifi
密码的地方。点击
Add
,主界面中
Network
就会出现你刚刚添加的热点。然后点击
Connect
,如果一切顺利就会连接成功,如下图:
用自带的浏览器尝试上网,成功!如下图:
二、终端下配置
wpa_gui
没有
AES
加密的不足,我们可以通过直接使用自己配置
wpa_supplicant
方式来解决。
编辑
/etc/network/interfaces
文件
pi@Lincoln ~ $ sudo vim /etc/network/interfaces
做如下修改,请注意参考:
#allow-hotplug wlan0
#iface wlan0 inet manual
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa.conf
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
创建文件:
/etc/wpa.conf
pi@Lincoln ~ $ sudo vim /etc/wpa.conf
加入如下内容:
network={
ssid="linc"
key_mgmt=WPA-PSK
psk="xxx!@#$"
}
重启树莓派,查看网络状态,确认已经连接成功。
另外,还可以使用
wpa_cli
这个命令行客户端来配置,请参考树莓派实验室的
这篇文章
。
重要的命令如下:
$ sudo wpa_cli -i wlan0
>scan
OK
>scan_results
bssid / frequency / signal level / flags / ssid
add_network
set_network 0 ssid "linc"
set_network 0 key_mgmt WPA-PSK
set_network 0 psk '"xxxxxxxxxx"'
enable_network 0
quit
好了,现在我们的树莓派已经可以上网了,那么更加有意思的玩法等着我们呢。继续探索吧!
参考:
http://blog.lixin.me/archives/29694/
http://blog.alexchi.me/archives/751
http://www.douban.com/note/449341604/
http://www.eeboard.com/bbs/thread-5191-1-1.html
http://shumeipai.nxez.com/2013/09/30/use-wpa-cli-command-line-to-configure-wi-fi-wireless-lan.html
http://wireless.kernel.org/en/users/Documentation/wpa_supplicant
http://www.raspbian.org/
6
Model B+
硬件概览
在继续探索之前,我觉得有必要再把板子的一些硬件情况叙述一下,因为软件是建立在硬件基础之上的,对硬件了解多一些,对
Raspberry pi
的了解就会更深入一些。毕竟这是开源硬
件嘛。基于目前我对硬件知识的不足,所以这一季先来个概览,等随着研究的不断深入,我会继续对硬件
Hack
并总结。下面开始说一说
Raspberry pi
硬件的背景故事。
Model A
和
B
的故事
就像在本专栏开篇中提到的那样,
RPi
的初衷是推广科技,尤其是鼓舞下一代成为熟悉计算机的人才。据说树莓派基金会的计划书上写的是
“
我们要让孩子们喜欢上编程。
”
最初的
RPi
板子都是在中国制造的,但后来转移到了英国威尔士。在我的
B+
板子上就刻着
Made in the UK
。
目前看,板子在欧美国家销售火爆,但亚洲和南美较差。不过开源硬件是
大势所趋,国内的热潮也要来到,因为中国极客的数量在逐步增加。
在
2012
年板子上市时就有两个版本,
Model A
和
Model B
。
B
比
A
的配置要高一些,比如
B
的
RAM
是
512M
而
A
是
256M
;
B
是两个
USB
(
2.0
)口,而
A
只有一个;
A
没有网卡。
A
的功耗更低接口更少,更适合嵌入式的项目。
A
和
B
板子如下图。
从图上看,两个板子只是差了网卡。
就在今年
A
和
B
都推出了各自的升级版
A+
和
B+
版本,如下图:
A+
的尺寸更小、功耗更低并且价格也下降了(从
25$
降到
20$
),
RAM
仍然是
256M
没变,
GPIO
端口数从
26
增加到
40
个,这与
B+
是一样的。
SDcard
也同
B+
一样使用了小卡
(
Micro SDCard
)。
目前这四个板子的片上系统(
SOC
)都是使用
Broadcom
的
BCM2835
。
下面重点来看看
Model B+
。
B+
概览
Model B+
板子的硬件配置在第一季中已经说过,它对
Model B
的升级如下:
•
GPIO
针脚从
26
增至
40
•
USB(2.0)
口从两个增加到四个
•
使用了
Micro SDCard
•
电源方面从原来的线性调节器
(linear regulator)
改成开关调节器
(switch regulator)
,功耗降低
0.5
到
1
瓦。
•
音频电路方面增加了一个低噪声电源是音质更加完美。
官方的一幅器件布局图:
与之对比的我拍摄的实景全图:
1.soc
在哪里?
板子的核心器件是博通的
soc
,你发现它在哪里了吗?
没有?那就对了,因为它藏起来了。看到树莓(
Raspberry
)图标右边的芯片了吗,那是三星的
RAM
芯片,
soc
就在它的下面。就像我给
Nexus4
换屏幕时找不到骁龙芯片一样。
2.smsc
芯片
板子上另一块芯片是
SMSC
公司的
LAN9514
芯片,这是一块
USB
集线器和以太网控制方案芯片。
3.U
口
自带
4
个
USB2.0
口,布局到板子的右上方,图中
U
口中插我另外购置的无线网卡。
4.
网卡
板子右下方布局有线网卡,并且标有
EDAC
,应该是带有错误检测与纠正功能吧(
Error Detection And Correction
)。
5.GPIO
板子上方是
GPIO
,
40
针脚。
6.
音频接口
板子下面网卡右边是
3.5mm
音频接口,上面提到,有了低噪声电源会提高音质。
7.
摄像头接口
音频接口左边是摄像头接口,摄像头芯片我们需要另购。我后期会购置,很期待的说。
8.HDMI
再左边是
HDMI
接口,注意这里使用的标准的
HDMI
接口,并没有使用手机上的
Micro HDMI
。
9.PWR IN
再左边是电源口,使用的是手机上普遍使用的
Micro USB
接口。
注意不是
Mini Usb
。
另外要注意的是,这个接口只是用来提供电源接口用,并不用来传输数据。
对电源适配器的选择上,我做了一些尝试,首先是要用输出是
5V
的适配器,区别在于它们的输出电流。家里两个普通的适配器都是输出
500mA
,不是启动不了就是启动过程中不断重
启;而三星手机充电器是
700mA
。目前运行良好。此外我还尝试了
iPad
的适配器,
5.2V
,
2.4A
,好像直接过流保护不工作了。
10.DISPLAY
板子最左边的插口与摄像头接口样子相同,但具体分工有不同。详情有待探索。
三、结语
开源的板子加开源的软件令小小的树莓派一经推出就风行起来,原本给小朋友学习之用,没想到老极客们却喜欢的昏天暗地,从智能家居到航拍项目,只要你敢想,一切皆有可能。这
样一个引爆想象的小家伙,让我们一起来探索吧。
参考:
1.
官网文档:
https://github.com/raspberrypi/documentation
2.github
上文档:
https://github.com/raspberrypi/documentation
3.35
美元计算机:
Raspberry Pi
的故事:
http://tech2ipo.com/57628
4.A+
和
B+
黑色图片来自:
http://www.mcmelectronics.com/content/en-US/raspberry-pi
7
Raspbmc
(上)
Raspberry pi
的一个优势是它具有很强的视频解码能力,用它来播放视频是个不错的选择。接下来的两季要用它来做家庭的媒体中心,而
XMBC
软件和
Raspbmc
发行版将使这一切变
为可能。
一、
XMBC
和
Raspbmc
XMBC(
即将更名为
Kodi)
是开源媒体中心软件中的佼佼者,最初是为
XBOX
开发的,现在可以运行在多个平台,其中就包括
Raspberry pi
运行的
Linux
系统。而更妙的一件事是有人已
经把
XMBC
直接集成到系统中,变成了一个
XMBC
的专用系统,名为
Raspbmc
,这个人就是
Sam Nazarko
。现仍在伦敦国王学院学习计算机科学,
2015
年毕业。有了
Raspbmc
,我们
可以省去安装
XMBC
的步骤,直接安装好系统就可以享受家庭媒体中心带来的快乐了。
二、
Raspbmc
的安装
在
Raspbmc
官网和
Raspberry pi
官网都可以找到
Raspbmc
的下载地址,鉴于我们的网络速度慢,推荐下载离线包。
Raspbmc
官网
standalone
版的下载地址。
安装的步骤可以参考
Raspbian
系统的安装。不过由于上一次用
NOOBS
安装
,SDCard
的环境略有些不同,过程如下:
1.
解压
其实才
200
多
M
大小的压缩包,但要经过漫长的等待。下载完成后需要解压成
img
文件。
$ gunzip raspbmc-final.img.gz
$ ll *.img
-rw-rw-r-- 1 linc linc 1363148800 Dec 9 23:10 raspbmc-final.img
2.
查看挂载的盘符
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb3 31M 4.4M 25M 15% /media/SETTINGS
/dev/sdb6 6.6G 2.4G 3.9G 39% /media/root
/dev/sdb5 60M 9.6M 50M 17% /media/BOOT
3.
卸载
$ umount /dev/sdb3
$ umount /dev/sdb5
$ umount /dev/sdb6
4.
烧写
$ sudo dd bs=4M if=raspbmc-final.img of=/dev/sdb && sync
[sudo] password for linc:
218+0 records in
218+0 records out
914358272 bytes (914 MB) copied, 28.8593 s, 31.7 MB/s
325+0 records in
325+0 records out
1363148800 bytes (1.4 GB) copied, 100.093 s, 13.6 MB/s
5.
查看结果
$ sudo fdisk -l
Disk /dev/sdb: 8054 MB, 8054112256 bytes
4 heads, 32 sectors/track, 122896 cylinders, total 15730688 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3ac32cfc
Device Boot Start End Blocks Id System
/dev/sdb1 4096 147455 71680 c W95 FAT32 (LBA)
/dev/sdb2 151552 2662399 1255424 83 Linux
6.
启动
将
SDCard
插到
RPi
中,加电启动。效果图如下:
主界面就是
XMBC
的炫彩画面,接下我们可以通过鼠标键盘或者手机来控制它。
后续内容将在下一季中介绍。
参考:
http://www.raspbmc.com/download/
http://kodi.wiki/view/Official:Kodi_name_change_FAQ
http://kodi.wiki/view/HOW-TO:Install_XBMC_for_Android
https://github.com/xbmc/xbmc
http://kodi.tv/xbmc-for-android/
http://kodi.wiki/view/Official:Kodi_name_change_FAQ
8
Raspbmc
(下)
上一季安装好
Raspbmc
就等着这一季好好玩耍呢。我们要在这一季中完成如下任务:调整分辨率、连接
wifi
并在无线路由器中设置固定
IP
、手机遥控
Raspbmc
、改变语言为中文、远
程访问
Raspberry pi
、安装插件(
add-ons
)、观看中文电影。这么多有趣的任务,让我们现在就开始吧!
零、新装备
前几季作为
Raspberry pi
显示器的是家里的电视,每周日、三、五被老爸征用去看
CBA
,所以我就需要把我
8
年前的老古董液晶显示器改造成
Raspberry pi
的显示设备,老显示器没有
HDMI
接口而只有
VGA
接口,那么我需要一个
HDMI-VGA
的转换头。从购物网站淘一个,
30
块大洋,装上发现工作良好,如下图:
调整分辨率
电视与显示器的分辨率貌似不同,电视分辨率使用
1680x1050p
合适,而显示器用
1280x1024p
合适。那么在哪里设置呢?
System--->Settings--->System--->Video output,
在
Resolution
中做选择。
连接
wifi
这次我们直接在
Raspbmc
图形界面中配置无线网络。
主界面中
Program
下的
Raspbmc Settings--->Network Configuration,
在
Network Mode
中选择
Wireless
(
WIFI
)
Network
,
WIFI SSID
中直接写上
AP
名字,我家的
linc
,
WIFI Security
中选择
WPA/WPA2
,
WIFI KEY
中填写
AP
的密码,
Update Now
选中,然后
OK
。
你会发现无线网络配置成功。
在
System--->System Info
中可以看到当前的
IP
地址。
设置固定
IP
将
Raspberry pi
的
IP
固定,对以后远程访问和手机遥控都是益处多多。
在无线路由器中设置
Raspberry pi
的固定
IP
过程如下:
•
进入无线路由管理界面,比如我的
TP-LINK
地址是
192.168.1.1.
•
点击
DHCP
服务器,进入
DHCP
服务界面,启用
DHCP
服务器(默认会启用)
•
点击客户端列表,查看已经连接的客户端,找到
RPi
的
MAC
和当前
IP
,记下来。
•
点击静态
IP
保留,添加新条目,将刚刚记下的
MAC
地址和
IP
输入,这样
RPi
的
IP
就固定下来了,方便我们的管理。
用手机来遥控
Raspbmc
除了键盘和鼠标,用其他方式来控制系统是一件很酷的事情。
Yatse
软件是时下最流行的
XMBC
的手机遥控软件,我下载了
Android
版安装到我的
Nexus4
中
.
其实
Yatse
是个商业软
件,高级功能是要收费的。如果你是一个需要挖掘高级功能的玩家,那就花费点银子购买吧。不过最基础的遥控功能是不需要收费的。使用起来也十分简单,启动程序后,添加
Host
,只要当前局域网中有
XMBC
在线它都会搜到,我们只要一添加就
ok
了。进入到遥控界面,都是图形没有文字,十分易用。详情见下图:
改变
Raspbmc
语言为中文
Raspbmc
最大的功能当然是媒体功能,如果我们只观看国外视频源,那么对语言没有要求,默认的英文就可以。但是如果你跟我一样要看国内的中文视频源,那么语言必须要改成中
文,否则中文字体在系统中不认的,即中文不显示。
SYSTEM--->Settings--->Appearance--->Skin
,在右侧选择
Font
,翻页选中
Arial based
,稍等几秒钟再设置
Appearance--->International,
在右侧选择
Language
,翻页选中
Chinese (Simple)
,
稍等几秒钟,设置成功。
稍等这几秒钟足以说明硬件的速度不够快呢。但是话又说回来,在看
1080p
的视频时十分顺畅,这是很多笔记本电脑都达不到的效果。凡事有强项有弱项,这是正常。
远程访问
Raspberry pi
通过远程访问我们可以做到身临其境操作
RPi
的效果。
1.
终端下的访问
在
Windows
上我们可以使用
putty
,在
Linux
下直接使用
ssh
工具就可以啦。
用法也是非常简单,在
putty
中输入
IP
,端口号(
Port
)默认是
22
,
Connection type
选择
SSH
,
Open
!此时熟悉的命令行界面就出现了,在
login as
:输入
pi
,接着输入密码就顺利远
程登录
RPi
了。
Linux
终端下只需要输入命令:
ssh pi@192.168.1.110
即可。
2.
图形界面访问
可以尝试
vncserver
和
TightVNC
3.
复制文件
Linux
可以使用
scp
命令,
windows
下使用
WinSCP
工具
。
用法参照
ssh
和
putty
,
WinSCP
是图形界面的,如下图:
左边选择
PC
上的文件,右键,
upload
,文件就拷贝到
pi
上了;类似的,右边选择
pi
中文件,右键,
download
,文件就拷贝到
PC
上了。
安装插件(
Add-ons
)
我们这个媒体中心最重要的当然是看视频影像了,上文也提到如果要看中文(字幕)电影,需要有国内的影视源。目前比较流行的是:
repository.hdpfans.xbmc-addons
repository.xbmc-addons-chinese
将这两个
zip
文件拷到
pi
中任意目录下。在
Raspbmc
图形界面中,一次选择
系统
--->
设置
--->
插件
--->
从
zip
文件安装。(相信你一定会找到的,如果没有,尝试点击
“..”
回退到第一级
界面。)此时找到你刚刚拷贝来的
zip
文件,系统就为你安装插件了。
截图还是英文界面时候呢。
下一步需要选择
“
获取扩展功能
”
,此时会看到各个视频的插件,点击安装即可。
观看中文电影
在主界面的视频项选择插件,会看到刚刚你安装好的各个插件,点击其中一个,比如我选择
soho
,然后在继续操作如下图,电影播放就这样顺利的开始了。
至此,一个媒体中心就这样打造完毕,
Enjoy
。
参考:
http://blog.sina.com.cn/s/blog_5408140f0101cro2.html
9
第九季
Raspbmc
最佳实践
使用
Raspbmc
近一个月了,这期间有过欢乐也有过丢脸的小插曲,现整理成
Raspbmc
最佳实践给大家。
散热片
长时间播放视频各芯片的温度就会比较高,加个散热片会延长硬件的寿命。在当初买板子的时候带了几个散热片,现在是时候用它们了。请见下面效果图。
升级到
kodi
14
年圣诞节过后,
XMBC
做了一次升级。在前文中也提到了改名的事,
kodi
是最新的名字,从
15
年开始启用。那么这次的圣诞升级就直接把
kodi
的名字显示在屏幕的右上角了。
Raspbmc
的升级是自动的,你不用刻意去关心它。但是这次升级过后,出现了一个令我很是纠结的问题,那就是
CPU
占用过高,一直在
100%
左右徘徊。
这么居高不下的
CPU
使用率,使其每次操作都变得十分卡顿,用户体验直线下降。
就是因为这事,我跟
“
许三爷
”
提了一下,他找到了解决的办法。而我的办法是将系统迁移到
Openelec
。这是后话。
使用电视遥控器控制
KODI
CEC
:
Consumer Electronic Control
,直译成消费电子控制。它提供使用遥控器来控制通过
HDMI
连接的设备。而我们树莓派和
Raspbmc
系统已经从硬件和软件层面对其支持了。接下
来就要看我们自己家的电视是否也支持此功能。判断的方法之一是,当
Raspbmc
启动时右下角出现提示
“CEC
支持的适配器已连接
”
,说明你的电视机支持此功能,就可以使用遥控器
来控制我们的
Raspbmc
了,这个功能真正的释放了手机。个人认为用手机控制,只是用来在朋友面前炫耀。
知道你的电视机支持
CEC
,我们还要对其进行设置一下,因为默认没有启动此功能。下面是我家
Samsung
电视机的设置:
四、中文搜索
下图的搜狐视频插件自带了中文搜索功能,这对于想要在茫茫电影名中找到自己要看的电影的我着实方便了不少。而其他源如风行也提供了此搜索功能。
优酷
TV
推荐它是因为界面就是为电视机量身打造的,而且片源的清晰度也很好。弱项是播放的时候是分段的,几分钟一段,中间切换的时候会黑屏。请见下图:
10
看
Kodi
,用
OpenELEC
为什么又选择
OpenELEC
Raspbmc
的体积庞大功能较多,相应的速度和性能要弱;
OpenELEC
是一个精简版,体积小功能少,相应的速度和性能都有提升。这就要看我们的选择了,如果像我一样用多个
sdcard
玩树莓派,那么用
OpenELEC
做家庭媒体中心就最合适不过了。
它的体积很小,请参考如下:
4.0.5
版:
•
OpenELEC-RPi.arm-4.0.5.img.gz 99.7M
•
OpenELEC-RPi.arm-4.0.5.img 164M
5.0.0
版:
•
-rwxrwxrwx. 2 linc linc 306184192 Dec 28 06:41 OpenELEC-RPi.arm-5.0.0.img
•
-rwxrwxrwx. 2 linc linc 99263770 Jan 3 17:56 OpenELEC-RPi.arm-5.0.0.img.gz
安装
还是从官网下载比较新,点击这里。
安装过程与
Raspbmc
相似,我直接在原
Raspbmc
的
sdcard
上安装,过程如下:
[linc@localhost ~]$ sudo fdisk -l
Disk /dev/sdb: 15.9 GB, 15931539456 bytes
64 heads, 32 sectors/track, 15193 cylinders, total 31116288 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002db69
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 264192 131072+ c W95 FAT32 (LBA)
/dev/sdb2 266240 331776 32768+ 83 Linux
[linc@localhost ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_localhost-lv_root
24G 22G 1.3G 95% /
tmpfs 1.3G 480K 1.3G 1% /dev/shm
/dev/sda7 485M 30M 430M 7% /boot
/dev/sdb2 15G 173M 15G 2% /media/db413a9b-4a10-4f3d-ae2a-c34947d04ac8
/dev/sdb1 128M 109M 20M 86% /media/4DBB-CE4E
/dev/sda5 26G 24G 1.5G 95% /media/Work
[linc@localhost ~]$ umount /dev/sdb1
[linc@localhost ~]$ umount /dev/sdb2
[linc@localhost ~]$ sudo dd bs=4M if=/media/Work/OpenELEC-RPi.arm-5.0.0.img of=/dev/sdb && sync
[sudo] password for linc:
73+0 records in
73+0 records out
306184192 bytes (306 MB) copied, 29.0638 s, 10.5 MB/s
使用
用法与
Raspbmc
一样,都是
Kodi
嘛。
启动
这里还是乖乖的默认英文,因为选择简体中文后,都是乱码。可以在设置中改成中文,参考
Raspbmc
。
Host Name
SSH
很重要,选择上。
SMB
是默认就选择的。
SSH
默认的用户名和密码是什么?
Username: root
Password: openelec
CPU
使用率很低,反应速度很快
网络设置,连接
wifi
参考:
http://kodi.wiki/view/Video_library#Adding_videos_to_the_library
http://wiki.openelec.tv/index.php/OpenELEC_FAQ
http://kodi.wiki/view/Raspberry_Pi/FAQ
http://wiki.openelec.tv/index.php/Ssh_commands
更多信息请访问
http://wiki.jikexueyuan.com/project/raspberry-pi-funny/




