树莓派入门

Page 1

树莓派初级讲座

樊磊编译

CICET©2014.7

终端 计算机上的终端(或命令行)运行用户在很大程度上控制自己的系统(当前 情 况 下 就 是 树 莓 派 ) 。 Windows 用 户 可 能 已 经 遇 到 过 命 令 行 Powershell ,而

Mac OS 用 户 也 许 熟 悉 终 端

Command Prompt

Terminal 。所 有 这 些 工 具 都 允 许 用 户 通

过使用命令来直接操纵其系统。这些命令可以链接到一起组合为复杂的脚本,来 完成一些任务,比那些大得多的传统软件包更有效。

启动 LXTERMINAL 在 运 行 Raspbian 的 树 莓 派 上 , 默 认 的 终 端 应 用 是

LXTerminal , 称 为 “ 终 端 模

拟器”,这意味着它将在图形环境中模拟老式的视频终端(在发展出图形用户界 面之前)。该应用可在树莓派桌面上找到,启动后样子如下:

你应该能看到如下的提示符: pi@raspberrypi ~ $

它向你显示该树莓派的用户名是 个命令。键入

pi ,主 机 名 为 raspberrypi 。现 在 尝 试 运 行 一

pwd ( 显 示 当 前 工 作 目 录 ) 然 后 按 回 车 键 , 应 该 显 示 /home/pi 。

在树 莓派 上导 航 及浏 览 使用终端的一个关键要素是能够导航你的文件系统。首先,运行下列命令: ls -la

你应该能看到类似下图的画面:

1


树莓派初级讲座

命令

ls

樊磊编译

CICET©2014.7

列 举 出 你 当 前 所 在 的 目 录 的 内 容 。命 令 的 -la 部 分 称 为“ 标 记 选 项 ”,

选项用来修饰正在运行的命令。当前情况下,选项

l

表示将目录的内容显示为一

个列表,显示诸如文件大小及上次编辑的时间等信息;选项

a

表示要显示所有文

件 , 包 括 那 些 以 一 个 .开 始 的 文 件 ( 称 为 点 文 件 ) 。 点 通 常 用 作 软 件 的 配 置 文 件 , 而且由于是文本文件,因此可以编辑修改。 为了导航到某个目录,可以使用改变目录命令

cd 。 你 可 以 通 过 指 定 “ 绝 对 ”

目录或“相对”目录说明想去的目录。 因此,如果你想航行到

python_games

目录,你可以键入

/home/pi/python_games,或 者 ,如 果 当 前 在 /home/pi

cd

中 ,直 接 键 入

cd python_games 。

有 一 些 特 殊 情 况 可 能 有 用 : ~的 作 用 有 点 像 是 你 的 主 目 录 的 别 名 , 因 此 ~/python_games

与 /home/pi/python_games 相 同 ;. 和 .. 分 别 是 当 前 目 录 和 父 目 录 的

别 名 。例 如 ,如 果 你 在 /home/pi/python_games 中 ,cd

..

将 会 把 你 带 回 到 /home/pi 。

命令 历史 及自 动 完成 终端允许你通过上箭头和下箭头键在以前运行过的命令中来回滚动,这样就 不 必 键 入 每 个 命 令 来 。如 果 你 在 写 一 个 文 件 或 目 录 名 作 为 命 令 的 一 部 分 ,按 下

tab

键 将 尝 试 自 动 完 成 你 所 键 入 的 名 字 。例 如 ,如 果 在 目 录 中 有 一 个 称 为

aLongFileName

的 文 件 ,则 键 入 一 个

开头的文件和

a

后按下

目录表中选择,你可以选择

tab

键将允许你从当前目录中所有以

a

aLongFileName 。

SUDO 有些命令会对你的系统状态做永久性改变,这要求你有根级权限来运行。命 令

sudo

可 以 为 你 的 帐 号( 如 果 你 不 是 用 root 用 户 登 录 的 )临 时 赋 以 运 行 这 些 命 令

的 权 限 , 只 要 你 的 用 户 名 在 “ 允 许 sudo 用 户 ” 列 表 之 中 。 将

sudo

附加在一个命

令的前面然后回车将向你询问密码,正确回答了你想运行的命令将使用根级权限 来运行。某些需要

sudo

运行的命令可能会对你的系统造成无可挽回的伤害,因此

一定要当心!

通过 APT-GET 安装 软件 除 了 使 用 Pi Store 下 载 新 软 件 外 , 你 也 可 以 使 用 命 令

apt-get , 这 是 “ 程 序 包

管 理 器 ”,包 含 在 基 于 Debian 的 任 何 Linux 发 行 版 中( 包 括 Raspbian)。 apt-get 允许你在树莓派上安装并管理新软件。 要安装新软件,你应该键入: sudo apt-get install <package-name>

其 中 <pacakge-name> 是 你 要 安 装 的 包 名 称 。 运 行 sudo apt-get update

2


树莓派初级讲座

樊磊编译

CICET©2014.7

会更新已经安装在你的系统的软件包的列表。若一个软件包发布了新版本,则使 用 sudo apt-get upgrade

将会把任何老版本的包更新为新版本。最后,使用 sudo apt-get remove <package-name>

从系统中将包删除或卸载。

其它 有用 的命 令 还有几个对你有用的命令,列举如下:  Cp 拷 贝 一 个 文 件 并 将 其 置 于 指 定 的 位 置 ( 基 本 上 就 是 做 “ 拷 贝 -粘 贴 ” ) ,

例如 cp file_a /home/other_user/

会将文件

file_a

从主目录拷贝到用户的

other_user

目录(假设允许你这样

做 )。注 意 如 果 目 标 是 一 个 文 件 夹 ,文 件 名 将 保 持 相 同 ;但 如 果 目 标 是 一 个 文件名,将会给文件以新的名字。  Mv 将 一 个 文 件 移 动 并 放 置 在 指 定 的 位 置 ( 因 此 cp 对 文 件 所 做 的 是 “ 拷 贝 -

粘贴”,而

mv

做 的 是 “ 剪 切 -粘 贴 ” ) 。 这 个 命 令 用 法 类 似 于

cp , 所 以

mv file_a /home/other_user/

会将文件

file_a

从 主 目 录 移 动 到 指 定 的 目 录 。 Mv 也 用 于 为 文 件 重 新 命 名 ,

即将其移到到一个新位置。例如: mv hello.txt story.txt .

 Rm 用 于 删 除 指 定 的 文 件 ( 或 目 录 , 此 时 用 选 项 -r ) 。 警 告 : 按 这 种 方 式 删

除的文件一般是不可恢复的。  Mkdir 用 于 创 建 新 的 目 录 。 例 如 : mkdir new_dir

将在当前工作目录创建新目录

new_dir 。

 Cat 列 出 文 件 的 内 容 。 例 如 : cat some_file

将会显示出

some_file

的内容。

查看 命令 说明 为找出关于一个命令的更多信息,你可以运行 (例如

man

后面跟着你想了解的命令

man ls ) , 关 于 该 命 令 的 手 册 页 面 将 会 显 示 出 来 , 包 括 关 于 该 命 令 的 各 种

选项及带来的影响等信息。

3


树莓派初级讲座

樊磊编译

CICET©2014.7

GPIO 树 莓 派 的 一 个 强 有 力 特 性 来 自 沿 主 板 边 缘 排 列 的 GPIO( 通 用 输 入 /输 出 ) 针 脚,紧挨着黄色的视频输出插孔。

这些针脚是树莓派与外部世界的物理接口。在最简单的层面上,你可以将其想象 为 你 或 者 树 莓 派 可 以 打 开 及 关 闭 的 开 关 。在 26 个 针 脚 中 有 17 个 是 GPIO 针 脚 ,其 余的是电源或地线针脚。

你可以为针脚编程来做些事情并与现实世界进行交互。输入不一定来自物理 开关,例如可以是来自传感器或另一台计算机及设备的输入信号。而输出可以做 很 多 事 情 ,从 点 亮 一 个 LED 灯 到 向 另 一 个 设 备 发 送 信 号 或 数 据 。如 果 树 莓 派 连 接 在一个网络上,你可以从任何位置控制连接在网络上的设备,还可以接收从这些 设备发回的数据。互联以及对因特网上的物理设备的控制是强有力且令人激动的 事情,而树莓派特别适合做这类事情。

GPIO 针脚 工作 原理

输出 警 告 : 如 果 你 严 格 遵 循 指 令 来 控 制 GPIO 针 脚 , 那 么 树 莓 派 是 安 全 的 , 即 使 表 面 看 起 来 有点杂乱。但是,随意将连线和电源插入树莓派可能会毁了它。如果你试图将大功率外 设 连 接 到 树 莓 派 就 可 能 出 现 最 坏 的 情 况 。 例 如 , LED 等 可 以 , 但 马 达 则 不 行 。 如 果 你 担 心 这 个 问 题 ,那 么 应 该 考 虑 使 用 接 线 板 ,如 Pibrella,直 到 你 对 如 何 直 接 使 用 GPIO 有 足 够的信心。

你可以搭建的最简单的电路之一是一块电池连接到一个光源和开关(此处电 阻 用 来 保 护 LED 灯 ) :

4


树莓派初级讲座

樊磊编译

CICET©2014.7

当 使 用 GPIO 针 脚 作 为 输 出 时 , 树 莓 派 代 替 了 上 述 图 形 中 的 开 关 和 电 池 的 作 用。每个针脚可以打开或关闭(或者按照计算的术语叫做高电平和低电平)。当 针 脚 处 于 高 电 平 时 输 出 3.3 伏 (3v3), 针 脚 为 低 电 平 时 则 为 关 闭 。 下 图 是 使 用 树 莓 派 的 相 同 的 电 路 , LED 灯 连 接 到 一 个 GPIO 针 脚 ( 可 以 输 出 +3v3) 和 一 条 地 线 针 脚 ( 0v, 作 用 像 是 电 池 的 负 极 ) :

下 一 个 步 骤 是 写 程 序 告 诉 针 脚 怎 样 处 于 高 或 低 电 平 。 通 常 , 我 们 使 用 Python 来 编 程 , 但 也 可 以 使 用 Scratch。

输入 GPIO 输 出 是 很 死 板 的 : 它 们 或 者 打 开 或 者 关 闭 、 处 于 高 电 平 或 低 电 平 、 3v3 或 0v。 做 不 了 太 多 的 事 情 。 输 入 就 微 妙 多 了 , 这 源 自 数 字 设 备 工 作 的 方 式 。 仅 在 输入和输出针脚之间连接一个按钮看起来似乎很合理,但树莓派会对开关究竟处 于开还是关的状态而迷惑。这样既可能正常工作,也可能相反。这种情况有点像 漂浮在深层空间中:没有参照物你很难得知你究竟是在上升还是在下降(甚至上 升和下降本身意味着什么都很难说)。

MINECRAFT PI Minecraft 是 一 个 非 常 流 行 的 沙 盒 开 发 世 界 搭 建 游 戏 ,Minecraft 的 一 个 免 费 版 本可以在树莓派上运行,它也是该游戏仅有的带有编程接口的版本。这意味着你 可 以 用 This means you can write commands and scripts in Python 代 码 书 写 命 令 和 脚 本,以在游戏中自动或手动的搭建事物。

安装 目 前 ,在 Raspbian 中 没 有 默 认 安 装 Minecraft,如 果 要 安 装 ,你 需 要 从 web 上 下载文件。打开一个终端窗口并键入下列命令: wget http://g oo.g l/o2 a ene - O mc pi.t ar.g z -- n o-che ck-c erti fica te

5


树莓派初级讲座

樊磊编译

CICET©2014.7

你将看到与下载的文件有关的一些信息:

看到

'mcpi.tar.gz' saved

并返回到提示符后,键入 tar x zf m cpi. tar. gz

抽取文件。这会在你的主文件夹中创建一个新目录

mcpi

,该目录就是安装的

Minecraft 文 件 所 在 。

运行 要 运 行 Minecraft, 键 入 cd mc pi ./min ecra ft-p i

Minecraft Pi 完 成 装 载 后 ,点 击 Start Game,然 后 是 Create new,游 戏 就 运 行 起 来 了。

编程 接口 在 运 行 Minecraft 时 , 回 到 你 的 终 端 窗 口 , 点 击 File 和 New Tab 打 开 一 个 新 标 签 页 并 导 航 到 Python API 目 录 : cd ~/ mcpi/api /pyt hon

现在键入

python

mcpi/api/python/

并 回 车 打 开 Python 解 释 器 。 导 入 Minecraft 库 , 它 存 于 目录,这就是必须要导航到这里的原因。

你 既 可 以 在 Python 交 互 模 式 下 键 入 命 令 ,也 可 以 创 建 由 一 系 列 命 令 组 成 的 文 件 , 然 后 随 意 执 行 该 文 件 。 然 后 , 用 以 下 命 令 导 入 Minecraft 库 : impor t mc pi.m inec raft as mi necr aft

这个库可用后,你就可以连接到你的游戏了: mc = mine craf t.Mi necr a ft.cr eate ()

发布消息 要向屏幕发布一条消息(网络上该游戏的所有参与者都能看到),键入下列 Python 命 令 : 6


树莓派初级讲座

樊磊编译

CICET©2014.7

mc.po stTo Chat(“Ty pe y o ur me ssag e he re”)

找到你的位置 要找到你的位置,键入: pos = mc. play er.g etPo s ()

现在

包含了你的位置,用

pos

pos.x

,

pos.y

pos.z

访问位置坐标。获取存于分

离变量中的坐标的另一种很好的替代方法是使用 Python 的 解 包 方 法 : x, y, z = mc. play er.g e tPos( )

现在,

x

,

y

z

包含了你的三个位置坐标。

设置积木块 你可以用

mc.setBlock(x, y, z)

在指定的坐标处设置积木块:

x, y, z = mc. play er.g e tPos( ) mc.se tBlo ck(x + 1 , y, z)

现在一块积木应该出现在你站的位置旁边。注意每次你都要调用位置,因此你可 以到处移动并在不同的位置画出点东西。 在一个循环中尝试做一下: x, y, z = mc. play er.g e tPos( ) for d x in ran ge(1 , 10 1 ): for dy i n ra nge (1, 101) : for dz in rang e(100 ): mc.setBlo c k(x + dx, y + dy, z + dz)

这 应 该 在 你 身 边 画 出 一 个 100x100 的 方 体 。 尝 试 挑 战 范 围 以 避 开 其 它 积 木 : x, y, z = mc. play er.g e tPos( ) for d x in ran ge(1 , 10 1 , 2): for dy i n ra nge (1, 101, 2): for dz in rang e(100 , 2) : mc.setBlo c k(x + dx, y + dy, z + dz)

7


树莓派初级讲座

樊磊编译

CICET©2014.7

PYTHON 游戏 在 Raspbian 桌 面 上 , 你 会 发 现 一 个 带 有 Python 标 记 的 图 标

Python Games

双 击 这 个 图 标 会 打 开 一 个 会 话 框 , 提 示 你 声 音 输 出 设 置 为 是 通 过 HDMI 还 是 耳 机 插孔。选择一个或者就保持原样,然后点击

OK

继续。

现在你会看见一个长条的窗口,其中列出了所有可用的游戏:

选取一个游戏,点击

OK

开始。

实例 8


树莓派初级讲座

樊磊编译

CICET©2014.7

FOUR IN A ROW

FLIPPY

游戏 源代 码 游戏的源代码都保存在树莓派上,在树莓派终端或文件管理器下导航到目录 /home/pi/python_games

你就会看到这些源码。这是终端模式下,

python_games

这是在文件管理器窗口中,

文件夹的内容:

python_games

9

目录中的文件清单:


树莓派初级讲座

下图是在

樊磊编译

IDLE

CICET©2014.7

中 打 开 的 Four in a Row 游 戏 的 Python 源 代 码 :

修改游戏 你可以编辑游戏的源码,为源文件做一个备份,然后检查代码并改变某些数的值, 看看会发生什么。如果你知道了游戏的工作原理,尝试让它更好、让它更难(或更易) 赢,或者为游戏加入一些新的特征。例如,你可以加入 GPIO 交互,使得当你赢了灯光会 闪烁,也可以加入输入按钮。

10


树莓派初级讲座

樊磊编译

CICET©2014.7

照相机模块 树 莓 派 的 照 相 机 模 块 能 够 拍 摄 全 高 清 1080p 照 片 和 视 频 , 并 且 可 编 程 控 制 。

连接 照相 机 树 莓 派 上 连 接 照 相 机 模 块 的 连 接 器 位 于 以 太 网 端 口 与 HDMI 端 口 之 间 , 首 先 拉起连接器顶部的黑色塑料卡扣,将照相机模块的柔性排线缆插入连接器中,让 线 缆 的 银 色 一 端 面 向 HDMI 端 口 。 注 意 柔 性 排 线 缆 要 插 紧 , 而 且 不 能 弯 折 太 大 。 连接好后向下按下连接器的卡扣。

崭新的照相机模块会有一小片半透明蓝色薄膜覆盖着镜头,这是为了保护镜 头的,因此在使用前需要将薄膜小心揭下来。

11


树莓派初级讲座

樊磊编译

CICET©2014.7

要正常使用照相机模块,需要配置树莓派。从终端打开

raspi-config

工具:

sudo raspi-config

选择

Enable camera

并回车,然后选择

Finish , 现 在 会 提 示 你 重 新 启 动 。

使用 照相 机 使 用 照 相 机 的 库 有 两 种 , 即 Shell( Linux 命 令 行 ) 模 式 和 Python 模 式 。 本 节 我 们 先 介 绍 Shell 模 式 下 使 用 照 相 机 模 块 的 方 法 , 后 者 将 在 学 习 了 Python 编 程 以 后再介绍。

RASPISTILL raspistill

是在命令行下用照相机模块捕获静止照片的一个工具。

RASPISTILL 的 基本 使用 方法 将照相机模块连接并配置完毕后,在终端中键入下列命令可拍摄图片: raspistill -o cam.jpg

12


树莓派初级讲座

樊磊编译

CICET©2014.7

在本例中,照相机是倒置的。如果拍照时照相机是这样放置的,拍摄出的图像必 须经过翻转才能正确显示。

垂直翻转与水平翻转 如 果 照 相 机 是 倒 置 的 , 拍 摄 出 的 图 像 必 须 旋 转 180°才 能 正 确 显 示 。 纠 正 的 方 式 是 在拍摄时使用

-vf

-hf

选项:

raspistill -vf -hf -o cam2.jpg

现在就可以正确地拍摄照片了。

分辨率 树莓派的照相机模块可以拍摄分辨率达到

2592x1944

的静止照片,这样的照

片 有 5,038,848 个 像 素 , 或 通 常 所 说 的 5 百 万 像 素 。

文件大小 用 照 相 机 模 块 拍 摄 的 一 张 照 片 大 约 有 2.4MB, 每 GB 大 约 能 存 425 张 照 片 。 也 就 是 说 , 如 果 你 每 分 钟 拍 摄 一 张 照 片 的 话 , 1GB 够 你 拍 上 7 个 小 时 。 用 这 样 的 速 率 拍 摄 你 每 小 时 需 要 144MB, 或 者 每 天 需 要 3.3GB。

基本脚本 你 可 以 创 建 Bash 脚 本 来 用 照 相 机 拍 摄 照 片 。为 了 创 建 脚 本 ,打 开 你 选 择 的 编 辑器,键入下列示例代码: #!/bin/bash DATE=$(date +"%Y-%m-%d_%H%M") raspistill -vf -hf -o /home/pi/camera/$DATE.jpg

这个脚本将拍摄一张照片,并用时间戳来命名该文件。比如说你将该脚本存为 camera.sh

, 我们要先将该文件置为可执行的: chmod +x camera.sh

然后运行它: ./camera.sh

其它选项 不带参数运行

raspistill

会 显 示 一 个 可 用 选 项 的 完 整 列 表 。要 想 滚 动 ,需 要

将 stderr 重 定 向 到 stdout, 并 通 过 管 道 输 出 为

less

raspistill 2>&1 | less

现在可以使用箭头键来回滚动,键入

q

退出。

RASPIVID 13


树莓派初级讲座

raspivid

樊磊编译

CICET©2014.7

是在命令行下用照相机模块捕获视频的一个工具。

RASPIVID 的 基 本使 用方 法 将照相机模块连接并配置完毕后,在终端中键入下列命令可录制视频: raspivid -o vid.h264

运行这个命令将在指定的路径

vid.h264

保存一段 5 秒钟(默认时间长度)的视

频。 记 住 : 像 raspistill 一 样 , 如 果 需 要 , 使 用

-hf

-vf

来访翻转图像。

指定视频长度 要指定录制视频的长度,可用

-t

选项标记按毫秒数来传递。例如:

raspivid -o video.h264 -t 10000

这 将 录 制 10 秒 钟 的 视 频 。

其它选项 不带参数运行 管道输出为

less

raspivid

会显示一个可用选项的完整列表。需要滚动可通过

: raspivid 2>&1 | less

现在可以使用箭头键来回滚动,键入

q

退出。

延时视频 为了创建定格视频,你只需要将树莓派设置为每过一定时间间隔就拍摄一幅 照片,如每分钟拍一张。然后使用一个应用将这些图片组合为一段视频。 按间隔时间段自动拍摄图片的一种很不错的方法是使用

cron

。打开并编辑

cron 表 : crontab -e

这样做将会向你询问使用哪个编辑器,或者在默认的编辑器中打开。文件在编辑 器中打开后,加入下列行就可以预设每隔一分钟拍摄一张照片: * * * * * /home/pi/camera.sh 2>&1

保存并退出,你应该看到如下信息: crontab: installing new crontab

要确保脚本将每幅图片都存为相同的文件名,这样做每次会覆盖前面的图片。

将图 像组 合在 一 起 14


树莓派初级讲座

樊磊编译

CICET©2014.7

现 在 ,你 需 要 将 照 片 组 合 在 一 起 形 成 一 段 视 频 。在 树 莓 派 上 你 可 以 使 用

mencoder

做到这一点,但是过程将会很慢。也许你会更乐意将图像文件传输到台式或笔记 本计算机,然后再处理图像。 导航到包含所有图像的文件夹,并将文件名列在一个文本文件中,这可以按如下 方式做到: ls *.jpg > stills.txt

安装软件包

mencoder

sudo apt-get install mencoder

然后运行下列命令: menco der -nos ound -ov c lavc –la vcop ts vcode c=mp eg4: aspe ct=1 6 /9:vb itra te=8 0000 00 – v f scale =192 0:10 80 - o ti m elaps e.av i -m f ty pe=j p eg:fp s=24 mf: //@s till s .txt

运行完成后,你就会有一个视频文件

timelapse.avi

15

,其来自拍摄的定格图像。


树莓派初级讲座

樊磊编译

CICET©2014.7

用 PYTHON 驱动照相机 Python 2.7( 及 以 上 ) 或 Python 3.2( 及 以 上 ) 有 一 个 关 于 树 莓 派 摄 像 头 的 专 门接口

python-picamera

, 该 库 是 由 Dave Jones 开 发 并 维 护 的 。

安装 在 Raspbian 档 案 中 已 经 包 含 了

python-picamera

库,如果是用

apt

安装,

请遵循下列步骤: sudo apt-get update sudo apt-get install python-picamera

此 外 , Python3 软 件 包 是 用 命 令 sudo apt-get install python3-picamera

来安装的。一个离线版本的文档可以用 sudo apt-get install python-picamera-docs

来安装。

用法 首 先 , 在 Python 提 示 符 或 Python 脚 本 的 顶 端 , 键 入 : import picamera

这将该库可为脚本所用。 现 在 创 建 PiCamera 类 的 一 个 实 例 : camera = picamera.PiCamera()

并拍摄一张图片: camera.capture('image.jpg')

水平与垂直翻转 像

raspistill

命令一样,如果摄像头倒置了,你可以使用水平及垂直翻转,

这可以通过直接改变

hflip

vflip

属性来做到:

camera.hflip = True camera.vflip = True

确保在

True

中使用大写的

T

, 因 为 这 是 Python 中 的 一 个 关 键 字 。

预览 你可以在屏幕上显示一个预览视图: camera.start_preview()

16


树莓派初级讲座

樊磊编译

CICET©2014.7

警 告 : 默 认 情 况 下 , 这 个 视 图 将 覆 盖 你 的 Python 会 话 , 如 果 你 在 终 止 预 览 上 有麻烦,简单按下 你可以使用

Ctrl+D

stop_preview

来 停 止 Python 会 话 , 这 样 就 能 恢 复 显 示 。 方法除去预览覆盖并恢复显示:

camera.stop_preview()

此 外 , 你 还 可 以 从 另 一 台 计 算 机 上 使 用 SSH 来 访 问 Pi、 打 开 Python 提 示 符 、 在 连 接 到 Pi 的 ( 不 是 在 你 所 连 接 的 计 算 机 上 的 ) 监 视 器 上 显 示 预 览 。

摄像头设置 你可以通过编辑属性值改变摄像头的其它配置,例如: camera.brightness = 70

这将亮度设置由默认的

改变为

50

70

( 值 介 于 0 和 100 之 间 ) 。 更 改 其 它 设 置

也是可行的,以下是这些设置及其默认值的一个列表: camera.sharpness = 0 camera.contrast = 0 camera.brightness = 50 camera.saturation = 0 camera.ISO = 0 camera.video_stabilization = False camera.exposure_compensation = 0 camera.exposure_mode = 'auto' camera.meter_mode = 'average' camera.awb_mode = 'auto' camera.image_effect = 'none' camera.color_effects = None camera.rotation = 0 camera.hflip = False camera.vflip = False camera.crop = (0.0, 0.0, 1.0, 1.0)

休眠 你可以使用来自

time

模块的

sleep

在命令之间暂停:

import picamera from time import sleep camera = picamera.PiCamera() camera.capture('image1.jpg') sleep(5) camera.capture('image2.jpg')

你也可以在预览中使用

sleep

来随时间调整设置: 17


树莓派初级讲座

樊磊编译

CICET©2014.7

camera.start_preview() for i in range(100): camera.brightness = i sleep(0.2)

录制视频 下列命令可以录制 5 秒钟的视频: camera.start_recording('video.h264') sleep(5) camera.stop_recording()

使用标准 USB 网络摄像头 除 了 树 莓 派 专 用 摄 像 头 模 组 ,你 也 可 以 使 用 标 准 的 USB 摄 像 头 在 树 莓 派 上 拍 摄 图 片 和 视 频 ,但 专 用 摄 像 头 模 组 的 拍 摄 质 量 和 可 配 置 性 要 比 USB 摄 像 头 好 得 多 。

安装 FSWEBCAM 首先,安装

fswebcam

软件包:

sudo apt-get install fswebcam

基本 用法 键入命令

fswebcam

,然 后 跟 着 一 个 文 件 名 ,网 络 摄 像 头 将 拍 摄 一 幅 图 片 ,并

存为指定的文件: fswebcam image.jpg

运行这条命令将会显示下列信息: --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. Adjusting resolution from 384x288 to 352x288. --- Capturing frame... Corrupt JPEG data: 2 extraneous bytes before marker 0xd4 Captured frame in 0.00 seconds. --- Processing captured image... Writing JPEG image to 'image.jpg'.

18


树莓派初级讲座

樊磊编译

CICET©2014.7

注意默认使用低分辨率,而且出现一个显示时间戳的信息条。

指定分辨率 在本例中,网络摄像头使用的分辨率为 辨率,使用

-r

1280 x 720

,为了指定你想使用的分

标记: fswebcam -r 1280x720 image2.jpg

运行这条命令将显示如下信息: --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. --- Capturing frame... Corrupt JPEG data: 1 extraneous bytes before marker 0xd5 Captured frame in 0.00 seconds. --- Processing captured image... Writing JPEG image to 'image2.jpg'.

图片并不是以网络摄像头的最高分辨率拍摄的,而且出现信息条。

19


树莓派初级讲座

樊磊编译

CICET©2014.7

不显示信息条 现在加入

--no-banner

标记:

fswebcam -r 1280x720 --no-banner image3.jpg

运行后显示下列信息: --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. --- Capturing frame... Corrupt JPEG data: 2 extraneous bytes before marker 0xd6 Captured frame in 0.00 seconds. --- Processing captured image... Disabling banner. Writing JPEG image to 'image3.jpg'.

现在图片是以网络摄像头的最高分辨率拍摄的,而且信息条不再出现。

损坏 的图 像 你可能曾经历过用网络摄像头拍摄的低质量图片,如下面这幅拍坏了图像, 好像是一幅艺术图像片段:

20


树莓派初级讲座

樊磊编译

CICET©2014.7

某些网络摄像头比其它的更可靠些,而这类问题就经常出现在质量差的摄像 头上。如果这样的问题持续存在,要确保你随时更新系统,而且尝试一下其它的 摄像头。但无论如何,树莓派的摄像头模块会得到最佳的性能。

BASH 脚 本 你 可 以 写 一 段 Bash 脚 本 来 用 网 络 摄 像 头 拍 摄 图 像 。为 创 建 脚 本 ,打 开 你 选 择 的编辑器,键入下列示例代码: #!/bin/bash DATE=$(date +"%Y-%m-%d_%H%M") fswebcam -r 1280x720 --no-banner /home/pi/webcam/$DATE.jpg

这段脚本将拍摄一幅图像并用时间戳来命名文件。将脚本存为

webcam.sh

,我们

先要将文件标注成可执行: chmod +x webcam.sh

然后运行: ./webcam.sh

这会运行文件中的命令,并产生通常的输出: --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. --- Capturing frame... Corrupt JPEG data: 2 extraneous bytes before marker 0xd6 Captured frame in 0.00 seconds. --- Processing captured image... Disabling banner. Writing JPEG image to '/home/pi/webcam/2013-06-07_2338.jpg'.

其它 有用 的工 具 使用摄像头模块或网络摄像头时还有其它一些有用的工具: 

SSH 使 用 SSH 可 在 局 域 网 上 远 程 访 问 树 莓 派 。

SCP 在 SSH 上 拷 贝 文 件 以 在 主 计 算 机 上 获 得 树 莓 派 上 拍 摄 的 照 片 。

rsync 使用

rsync

在树莓派和计算机之间同步图像文件夹。

cron

21


树莓派初级讲座

使用

cron

樊磊编译

CICET©2014.7

安 排 以 给 定 的 时 间 间 隔 拍 摄 一 幅 图 片 ,如 每 隔 一 分 钟 捕 获 一 幅 定 格

图片。

22


树莓派初级讲座

樊磊编译

CICET©2014.7

在树莓派上使用 XBMC XBMC 是 可 运 行 在 树 莓 派 上 的 一 个 媒 体 中 心 软 件 ,其 最 早 来 源 于 Xbox 上 的 媒 体播放软件,后来被移植到各种平台上。

在 树 莓 派 的 操 作 系 统 安 装 程 序 NOOBS 中 已 经 包 含 了 XBMC 的 两 个 发 布 版 本 : OpenELEC 和 RaspBMC。

NOOBS 首 先 , 在 SD 卡 上 装 好 NOOBS, 然 后 遵 循 NOOBS 页 面 上 的 安 装 指 令 就 可 以 了 。 SD 卡 上 装 好 NOOBS 后 , 你 应 该 能 够 将 树 莓 派 启 动 到 NOOBS 操 作 系 统 选 择 屏幕:

选 择 OpenELEC 或 者 RaspBMC,点 击 窗 口 左 上 角 的

Install

按 钮 ,安 装 程 序 会

提 示 让 你 确 认( 这 将 删 除 SD 卡 上 的 所 有 数 据 –因 此 如 果 你 以 前 曾 将 Raspbian 安 装

23


树莓派初级讲座

樊磊编译

CICET©2014.7

在 SD 卡 上 , 务 必 先 做 好 备 份 ) 。 确 认 后 点 击

Yes

继续并开始安装。安装过程将

会花点时间,完成后在一个窗口中显示信息: OS(es) Installed Successfully

点击

OK

,树莓派将会重新启动到你所选择的发行版。

使用 XBMC 现 在 你 已 经 将 XBMC 发 行 版 安 装 完 毕 , 可 以 播 放 媒 体 文 件 、 配 置 系 统 并 安 装 插件做更多的事情。 首先显示的是一个欢迎的屏幕,将帮助你配置及开始使用。

电源 你 可 以 使 用 常 规 的 带 有 USB 插 孔 的 墙 面 插 座 为 树 莓 派 供 电 ,或 者 如 果 你 所 连 接 的 电 视 有 USB 端 口 ,也 可 以 将 树 莓 派 用 微 型 USB 线 缆 直 接 连 接 到 电 视 ,这 意 味 着当电视打开时就会给树莓派供电,电视关闭时树莓派也关闭。

控制 你 可 以 使 用 键 盘 和 鼠 标 控 制 XBMC,或 者 也 可 以 买 一 个 带 有 USB 接 收 器 的 电 视遥控器,甚至是带有方向按钮的演讲屏幕指点器。 你 还 可 以 在 智 能 手 机 上 使 用 XBMC 应 用 ( 在 电 话 应 用 商 店 中 搜 索

XBMC

),

配 置 连 接 到 XBMC 树 莓 派 的 IP 地 址 ,你 就 可 以 使 用 手 机 屏 幕 作 为 遥 控 器 控 制 或 选 择待播放的文件。

24


树莓派初级讲座

樊磊编译

CICET©2014.7

播放视频文件 你 可 以 将 视 频 文 件 拷 贝 到 树 莓 派 的 SD 卡 上 , 或 者 放 在 外 部 USB 硬 盘 上 , 播 放 时 只 需 在 主 屏 幕 的 滑 动 条 上 选 择 VIDEOS, 就 可 以 在 源 列 表 中 看 到 插 入 的 媒 体 , 选 择设备并找到要播放的文件,选择后就会开始播放。

连接网络驱动器 你 可 以 通 过 有 线 方 式 连 接 网 络 设 备 , 如 局 域 网 上 的 NAS (Network Attached Storage)。 用 以 太 电 缆 将 树 莓 派 连 接 到 路 由 器 , 为 连 接 到 设 备 , 从 主 屏 幕 选 择 VIDEOS,然 后 点 击 Add Videos...。现 在 出 现 一 个 加 入 视 频 源( Add Video source) 屏 幕 , 点 击 Browse 并 选 择 连 接 类 型 。 例 如 , 对 于 NAS, 选 择 Windows network (SMB), 这 将 使 用 Samba 协 议 ( Windows 文 件 共 享 协 议 的 一 种 开 源 实 现 ) 。 如 果 在网络上可以找到,该设备将会显示出来。将此设备添加为本地,你就可以导航 其文件系统并播放其中的媒体文件。

设置 XBMC 有 很 多 的 可 配 置 选 项 。 你 可 以 改 变 屏 幕 分 辨 率 、 选 择 不 同 的 皮 肤 、 设 定屏保画面、设置文件视图、设置本地化项、配置字幕等等。这一切只需从主屏 幕 进 入 到 SYSTEM 和 Settings。

插件 插 件 为 XBMC 提 供 额 外 的 功 能 , 或 者 使 其 能 够 连 接 到 其 它 Web 服 务 , 如 YouTube。 下 面 是 YouTube 插 件 显 示 的 搜 索 结 果 :

你可以从设置菜单配置插件,从可供浏览选择的插件中选择一个,然后会提示你 安装。每个插件都有自己的配置方法。

25


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.