用树莓派打造一个带WIFI的数码照相机

这个项目使用了Adafruit PiTFT触摸屏和树莓派摄像头模块来制作一个一按即拍的数码相机。你也可以选择性的加入WiFi和Dropbox(一个云存储同步服务)来自动的把拍摄的照片传到另一台电脑上以供编辑。

它不是要代替你的数码相机(甚至是手机的摄像头)。它只是一个简单的学习锻炼的产物而不是精美的消费品。但因为它是开源的,你可以给它定制一些普通相机做不到的功能。

你需要的东西

因为有以太网口和两个USB接口,Model B更容易安装。而Model A更省钱更省电…但是只有一个USB接口并且没有以太网口,它需要你花更多的力气来让所有软件加载起来。

下面是可选部分:

WiFi适配器,它使你能够把照片上传到Dropbox上(需要账户,免费的)。

移动电源,它使整个相机变成可携带的。如果使用WiFi和/或Model B型树莓派,你需要一个可以提供1A电流的强劲移动电源(有些最大输出只有500mA)。

某些情况下一个USB转TTL串口线是访问和配置树莓派更好的选择,如果你没有备用的键盘和显示器。

一些所需的额外组件,工具和技术:烙铁和焊锡用于把头部与PiTFT屏焊接到一起;一些把组件组装到一起的方法–从简单的使用橡皮筋,到一个钻孔的电子元件板,再到精心设计的3D打印外壳。这一切都取决于你手边可用的资源。浏览一下看看这个项目需要哪些东西,然后根据你自己的情况想出解决办法把。 另一种树莓派一按即拍的相机! James Wolf在原始的外壳(除了电池)里制作了一个树莓派一按即拍相机。他自己做了一块板子来集成所需的线缆,带有电阻和按钮 ,拍摄的图片和Python文件链接可以在他的网站上找到。

树莓派设置

为了确保所有相互依赖的软件正常工作,最简单的方法是从一个干净的系统开始。 格式化4GB或者更大容量的SD卡(也可以用带转接卡的microSD)并且写入2013-09-25版本的Raspbian Wheezy操作系统。这篇教程介绍了如何为树莓派准备一张SD卡。 最重要的一点是使用2013-09-25版本的Raspbian,而不是之后的2013-12-20版本。虽然最新版本总是那么的诱人,但是TFT屏还不能在之后的版本上完全正常工作。修复工作正在进行中,这个问题可能会在后续的发布中得到解决。 点击这里下载2013-09-25版本Raspbian 接上显示器和键盘(或者USB转串口线),用手机的USB充电器或者有源的usb hub为树莓派供电,然后进行第一次启动配置。 以下选项是必须的:

Expand Filesystem

Enable Camera

以下选项非常有用推荐设置:

在Internationalization Options更改Change Timezone和Change Keyboard Layout为与你相对应的区域。

以下配置是可选的:

在Advanced Option,选择Hostname来为树莓派指定一个唯一的名字(比如”picam”)来与网络内的其他树莓派区别开。

在Advanced Option,选择SSH来打开远程命令行访问(对日后的配置和查找问题很有帮助)。

其他你喜好的配置

不应该使用下列选项:

Overclock.这是一个便携式,电池供电的项目并且超频更费电。超频的系统很有可能烧坏SD卡。不要打开这个选项。

一旦基础配置完成,你可以配置无线网络如果你打算用它的话。可以参考这篇教程。 一旦所有配置完成,下一步设置PiTFT。

至少完成Assembly,Software Installation, Touchscreen Install & Calibrate 和 Using the Console pages几步。其余的部分(例如播放视频,加入关机键)对于这个项目来说没那么重要,但你可以根据自己的喜好完成。一旦你启动树莓派并且在2.8存TFT屏上看到了登录提示信息,你就离成功不远啦。 同样的,PiTFT可选的实体按键对这个项目来说也不是必须的。你可以为其他的功能安装它,但是相机的软件是完全基于触摸屏的。

获取相机的软件只需要额外的几步… 首先,为树莓派相机安装Python库:

sudo apt-get install pip python-pip sudo pip install picamera==0.8

(使用0.8版本非常重要,而不是更新的1.0版本。在新版本上我们使用的功能还有一点点不稳定。一旦状况改变,我们会发布一个修订版本修正这个问题。) 然后获取Python相机应用:

wget https://github.com/adafruit/adafruit-pi-cam/archive/master.zip unzip master.zip

最后,我们来试一下吧。软件必须以root身份运行(通过sudo命令)来在TFT屏上显示:

cd adafruit-pi-cam-master sudo python cam.py

如果一切正常,几秒钟的初始化之后,你应该能在屏幕上看到一个取景窗以及两个按钮。 如果没有,那应该有一个错误信息指导你排除错误:缺少类库或者驱动等。这也是为什么我们推荐先完成TFT教程部分。 如果我们想用Dropbox,还有一些工作要做,所以现在退出相机应用吧。按一下齿轮图标(设置),再按左箭头,最后是确认按钮。你现在应该回到命令行了。

专用模式

如果你喜欢把树莓派调成相机专用模式,可以从让命令行输出到PiTFT(请参考PiTFT教程)开始并且为开关电源分配一个额外的电源键,这样你就可以轻松安全的关闭树莓派而不用登录或连接键盘了。 一旦这些都完成了,通过编辑/etc/rc.local加入下面exit 0之前的代码来使树莓派一启动就进入相机软件。

再次重启的时候你

会看到命令行字符然后直接打开了picam软件。要关机的话,可以使用刚才分配的按键来切换。

Dropbox配置

Dropbox是一个”云”文件存储和同步服务。一个基础账户是免费的并且提供2G存储空间。我们可以利用它把树莓派里的相机导出到其他设备上(例如你的桌面电脑等)而不需要数据线或者替换存储卡。 这就需要WiFi链接了;试想一下一个连接着网线的相机是多么令人讨厌啊。它也需要在你的无线网络范围内,并给你的树莓派合适的访问设置。 下面的在RasPi.TV上的教程介绍了如何在树莓派上配置Dropbox使它们能一起工作。

步骤包括:

创建一个Dropbox账户如果你还没有。

在树莓派上下载和配置Dropbox Uploader(通过命令行完成)

创建Dropbox应用并得到访问认证

下面是一些我在Dropbox开发者网站为相机创建新app时的配置:

额外的一步:

通过在树莓派上上传一个文件(什么都行)来测试Dropbox Uploader程序。

如果工作正常,下次你运行cam.py脚本时你就可以进入Settings并且选择Dropbox作为存储介质。以后的照片将会保存在”Photos”文件夹里并且上传到Dropbox上。

使用相机

你可能已经在测试时看到了相机的界面。现在我们来更详细的介绍下它是如何工作的还有哪些选项是可用的。 启动之后,相机程序会显示一个取景窗和两个按钮。屏幕的主要部分本身是一个快门“按扭” — 按一下它来拍照。 在屏幕的底部有2个按钮。左边的(一个小齿轮图标)将会呈现很多设置。右边的按钮(带有”Play”标志)使你能够浏览之前拍摄的照片(如果你什么都没拍,相机会提示你是”empty”的)。

Settings菜单提供了很多相机的设置。这没有列出所有的树莓派相机功能,只有几个让你快速上手的必备选项。 通过屏幕顶部的左/右箭头在选项之间切换:

Storage屏有3个不同的选项,每一个的优缺点如下:

Photos Folder :图片将存储到树莓派你的home目录里的”Photos”文件夹下(如果不存在将被创建)。树莓派上的其他程序可以很容易的访问到他们,但是在别的电脑上访问这一分区就不那么容易了。

:图片将存储到树莓派你的home目录里的”Photos”文件夹下(如果不存在将被创建)。树莓派上的其他程序可以很容易的访问到他们,但是在别的电脑上访问这一分区就不那么容易了。 Boot Parition :图片将会存储到boot分区的”/boot/DCIM/CANON999″目录下。当SD卡插入到其他电脑上,它将类似于一个数码相机的存储卡并且自动导入照片,取决于你的系统设置。缺点是boot分区的空间非常有限。你可能只能存储十几张照片。

:图片将会存储到boot分区的”/boot/DCIM/CANON999″目录下。当SD卡插入到其他电脑上,它将类似于一个数码相机的存储卡并且自动导入照片,取决于你的系统设置。缺点是boot分区的空间非常有限。你可能只能存储十几张照片。 Dropbox:正如前面讨论的,图片将会存储到Photos文件夹下并且上传到Dropbox(如果WiFi已经连接并且配置好了Dropbox)。

Size屏可以选择3种尺寸:

Large (2592×1944,4:3比例):这是树莓派相机所支持的最大的尺寸(500w像素)。实际拍摄的要远大于取景窗里的显示。

(2592×1944,4:3比例):这是树莓派相机所支持的最大的尺寸(500w像素)。实际拍摄的要远大于取景窗里的显示。 Medium (1920×1080,16:9比例):HD分辨率,宽屏,200w像素。

(1920×1080,16:9比例):HD分辨率,宽屏,200w像素。 Small (1440×1080,4:3比例):150w像素。

后两种模式应该能够在取景窗显示实际拍摄的照片范围,但是实际上不是这样(相机类库的文档有些和实际情况不一致)。这个问题还在解决当中。

Effect屏是所有乐趣发生的地方。这里有16种不同的艺术特效可以应用到照片上(算上”normal”,就是没有特效)。把你的照片弄得看起来像幅油画,或者铅笔素描,或者是奇奇怪怪的颜色!这些效果都是可以实时预览的。

ISO屏调整相机的光感度。这你得自己权衡…高感光度在光线暗的情况下效果更好,但是图像会有很多噪点。ISO没有实时预览,只会在拍照的时候起效。

最后一屏是退出相机程序选项,回到命令行。按一下红色的按钮退出,按箭头移到其他设置,或者按Done按钮取消。

“Done”按钮会返回取景模式。 所有的设置将会被保存,下次运行脚本的时候所有的设置会生效。

接下来的事情…

这仅仅只是次尝试,接下来要做什么取决于你自己…

摄像头模块可以换成红外版本

cam.py里的图标和按钮非常简陋,但是对于你自己的触屏程序(不管是拍照相关的还是别的)来说足够了。

相机代码可以被扩展去做别的事情。这有很多我们没有提及的相机设置。可以添加其他的功能例如自拍,定时器或运动检测。或者录制视频。

看看这个令人尴尬的组装,它用的是橡皮筋!也许一个合适的外壳更好…如果你能用到激光切割或者3D打印的那最好不过了。

盒子的尺寸可以考虑缩减;在PiTFT和树莓派之间有很大的空间(即使是使用Model A的板子)。更高级的玩家可以考虑压缩电池和5V变压器尺寸,连接到TFT板子右边头部突出部分来代替USB电源连接。结果将是与现存的消费级数码相机大小相似。