暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Raspberry pi 一个好玩的派

yBmZlQzJ 2024-01-23
1130

前言

麻雀虽小,五脏俱全

,这句话形容树莓派是再合适不过了,只有信用卡大小的卡片式电脑,内部装有

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/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论