树莓派初级讲座
樊磊编译
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