廉价的 柯达布朗尼相机 是第一款将摄影带给大众的相机。其设计的简单性意味着任何人都可以轻松学会如何使用它。因为它基本上没有需要学习的控件——只有一个快门按钮、取景器和胶卷卷片器——即使与今天的相机相比,它也很容易使用。
在柯达布朗尼相机从 1900 年开始的 60 年寿命中,生产了数百万台,其制造质量意味着其中许多相机仍然可以正常工作。柯达布朗尼相机也是定制改装的不错选择——它在 eBay 或旧货出售会上很容易买到,易于改装,而且价格便宜,即使出现问题也没关系。
我最初的计划是在我之前用树莓派和网络摄像头制作的 针孔数码相机 的基础上构建一个变体。我有一个额外的树莓派 Zero 需要用途,还有一个 柯达布朗尼鹰眼相机,这是 1950 年代的变体,外壳由胶木而不是木头或纸板制成,我以不到 5 英镑的价格在当地的旧货出售会上买到的。唯一缺少的关键部件是网络摄像头。
[参加我们的 树莓派周赠品活动,有机会获得这款街机游戏套件。]
因为我为树莓派 Zero 和柯达布朗尼相机支付了不到 5 英镑,所以我将此设定为网络摄像头的价格上限。在 eBay 列表中搜索,我发现许多卖家以这个价位提供各种 50 兆像素摄像头。这些技术规格是不真实的——永远不会有以这个价格出售的 50MP 传感器——但值得一试,以了解该摄像头的功能。我买的那款只提供 640×480,仅为 0.3MP,只有原始视频,没有 MJPEG,因此也限制了帧率。换句话说,非常糟糕,但只比预期的稍微糟糕一点。优点是它很容易拆卸外壳,这暴露了一个非常紧凑的电路板,非常适合嵌入。

opensource.com
在用临时针孔板测试网络摄像头后,很明显传感器在低光条件下的性能非常差。虽然它可以作为针孔相机,但它只能在明亮的户外条件下使用。我想制造一款用途更广泛的相机,所以我改变了我的计划,以便制造一台“普通”数码相机,而不是针孔数码相机。
有了关键部件,我开始了设计和组装。我最初的想法是保留布朗尼相机的原始镜头,并将裸网络摄像头传感器放置在其后。为了实现清晰对焦,传感器必须位于相对于镜头的相同位置,即胶卷所在的位置。然而,布朗尼胶卷底片每张为 60x60 毫米,而网络摄像头传感器小于 5x5 毫米。测试证实,网络摄像头将具有令人难以置信的狭窄视野,使其几乎不可能用粗糙的取景器镜来构图。
另一种选择是拆卸布朗尼相机并移除其塑料镜头。然后可以将网络摄像头电路板定位,使其镜头正好位于快门后面。电路板稍微大几毫米,无法放入正确的位置,所以我使用 Dremel 工具在外壳内部雕刻了一个槽,以便电路板可以滑入到位。

opensource.com
这使网络摄像头的视野与原始布朗尼相机的视野相似。事实上,视野足够宽,可以覆盖整个快门光圈,因此生成的图像具有圆形暗角。

opensource.com
第二个任务是决定如何在机箱中放置树莓派 Zero。幸运的是,树莓派 Zero 的宽度与柯达布朗尼相机使用的 620 胶卷卷轴的长度完全相同,因此相机的胶卷架可以夹住树莓派 Zero 电路板。
与我之前的针孔网络摄像头一样,该项目使用两个 LED 作为状态指示器:一个在电源开启时亮起,另一个在网络摄像头捕获图像时亮起。我在布朗尼相机外壳顶部的快门按钮旁边钻了两个小孔;LED 从这些孔中伸出,一滴速溶胶水将它们固定在正确的位置。

opensource.com
我的关键设计目标之一是使柯达布朗尼相机的快门按钮触发网络摄像头上的图像捕获。理想情况下,单按一下快门按钮就可以拍摄一张图像。为了实现这一点,我需要在机械快门按钮和树莓派的 GPIO 引脚之间创建一个接口。在思考了一段时间这个棘手的问题后,我想出了一个解决方案,其中涉及一对裸线和一些导电漆。一根导线连接到配置为 上拉模式 输入的可编程 GPIO 引脚。第二根导线连接到 GPIO 接地引脚。为了实施该解决方案,我在外壳上、快门按钮正下方钻了一个孔,导线穿过该孔。我剥掉了导线的绝缘层,并将它们粘在快门按钮下方的位置。最后,我在快门按钮的底部涂了一滴导电漆。当按下快门按钮时,导电漆会使两根导线短路,并将 GPIO 引脚拉低至接地。Pi Zero 检测到此变化并触发快门。

opensource.com
布朗尼相机的快门机构是为具有固定快门速度的胶卷设计的。将图像捕获与快门打开的精确秒数同步是不切实际的。幸运的是,布朗尼相机具有长曝光模式,在该模式下,快门会在按下快门按钮时保持打开状态。通常,此长曝光模式是通过抬起布朗尼相机上的第二个按钮来激活的,但这有点繁琐。在快门机构上贴上一点电工胶带后,我将其永久地钩入长曝光模式。

opensource.com
测试快门机构发现了一个小问题:网络摄像头需要一两秒钟才能自动测量和调整曝光以适应光照条件。因此,如果在按下快门按钮后立即捕获图像,则图像通常会曝光不足。这促使了另一个轻微的设计更改。与其在按下快门时立即捕获单张图像,我编写了软件,使其在按下快门后等待一秒钟,然后连续捕获图像,每秒一张,直到松开快门。换句话说,它充当延时拍摄设备。
剩下的唯一任务是供电。树莓派 Zero 和网络摄像头的组合功耗非常低,最多 200 毫安,USB 锂离子充电宝提供了出色的、持久的电源。问题是,对于当今销售的大多数充电宝来说,物理尺寸并不是一个非常重要的因素,而且我还没有找到一个足够小到可以放入布朗尼相机外壳中的充电宝——它需要小于 6 厘米才有机会在插入 USB 数据线后放入,5 厘米甚至更好。此外,如果电池在外壳内部,则需要在树莓派 Zero 和电池之间安装一个物理电源开关,否则您每次都必须打开相机才能打开/关闭电源。我的简单解决方案是在外壳上钻一个孔用于 USB 数据线,并将电池留在外面。

opensource.com
硬件构建完成后,我将注意力转向控制它的软件。我没有从头开始,而是扩展了 我为 针孔网络摄像头 Arcturus 编写的 代码。由于我的廉价网络摄像头不提供 MJPEG 捕获,因此我引入了 libjpeg,这是一个用于 JPEG 图像读/写的 C 库,用于将 原始 帧编码为 JPEG 静止图像文件。以原始格式捕获图像意味着 USB 设备必须传输大量数据。虽然这在我用于开发的笔记本电脑上不是问题,但树莓派不断从网络摄像头上丢帧或接收不完整的帧。
经过无数小时的调试,我发现问题出在 Pignus(用于树莓派 ARM6 板的 Fedora 分支)使用的 Linux 主线中 USB 控制器的驱动程序上。相比之下,Raspbian 内核具有 USB 控制器的树外驱动程序,事实证明该驱动程序工作正常。我做的另一个软件更改是我上面提到的连续捕获静止图像的更改。
这是我用定制的柯达布朗尼数码延时相机拍摄的第一段视频,拍摄的是在伦敦 邱桥 运行的蒸汽机。
这最初发表在 Red Hat 软件工程师 Daniel Berrangé 的博客 f/138 上,经许可转载。
评论已关闭。