raspberry pi

在2015年末,Raspberry Pi Foundation通过发布小型Raspberry Pi Zero震惊了整个世界。 而且,他们在MagPi杂志的封面上免费赠送了它 。 我立即冲了出去,在几个通讯社附近拖网,直到找到该地区的最后两个副本。 我不确定我会用它们做什么,但我知道它们的体积小将使我能够进行全尺寸Pi无法满足的有趣项目。

MagPi杂志的Raspberry Pi Zero。 CC BY-SA.4.0。

由于对天文摄影的兴趣,我以前修改了Microsoft LifeCam Cinema HD网络摄像头,剥去了它的外壳,镜头和红外截止滤光片,以露出裸露的CCD芯片 。 我将其与定制外壳一起使用,代替了用于天文摄影的Celestron望远镜中的目镜。 它捕获了木星,月球陨石坑特写镜头和太阳黑子的令人难以置信的景色(带有适当的Baader安全膜保护层)。

针Kong照相机 ,方法是在机身盖上钻Kong(该盖子可在未安装镜头的情况下保护相机的内部工作),然后将其盖在从汽水罐上切下的薄盘中,并用针刺穿以提供针Kong。 偶然地,有一天,这个针Kong式机身盖坐在我的桌子上,旁边是改进的astrophotography网络摄像头。 我想知道网络摄像头是否具有足够好的低照度性能以从针Kong机身盖后面捕获图像。 使用GNOME Cheese应用程序只花了一分钟即可验证针Kong网络摄像头确实是一个可行的想法。

从这个想法的萌芽中,我有一种使用我的Raspberry Pi Zeros的方法! 人们制作的针Kong相机通常是极简主义的,除了曝光时间和胶卷的ISO等级外,没有其他控件。 相比之下,数码相机具有20个或更多的按钮,并且菜单中还包含数百种设置。 我的数码针Kong网络摄像头的目标是忠实于针Kong摄影的传统,并打造一种极简主义的设备,完全没有控制,甚至没有曝光时间。

由Raspberry Pi Zero,高清网络摄像头和空粉盒创建的数字针Kong相机是我正在开发的一系列针Kong相机中的第一个项目 。 这是我的方法。

硬件

因为我已经有了Raspberry Pi Zero,所以我需要一个网络摄像头来完成该项目。 鉴于Pi Zero在英国的零售价为4英镑,我希望该项目的其他部分的价格也一样。 在相机上花费30英镑与4英镑的电脑板搭配使用时,会感觉不平衡。 显而易见的答案是前往一个著名的互联网拍卖网站并竞标一些二手网络摄像头。 很快,我花了1英镑加上运费就买了一个普通的高清分辨率网络摄像头。 经过快速测试以确保它可以在Fedora上正常运行后,我着手剥离外壳检查电子设备的尺寸。

Hercules DualPix HD网络摄像头,将被去掉电路板和CCD成像传感器。 CC BY-SA 4.0。

接下来,我需要一个手提箱来容纳相机。 Raspberry Pi Zero零电路板仅为65mm x 30mm x 5mm。 网络摄像头的电路板甚至更小,尽管它在CCD芯片周围有塑料安装件,可将镜头固定在适当的位置。 我环顾四周,寻找一个可以容纳两个小电路板的容器。 我发现我妻子的粉末粉盒的宽度刚好适合Pi Zero电路板。 稍微摆弄一下,看起来好像我也可以把里面的摄像头板塞进去。

粉末紧凑型成为针Kong相机的理想之选。 CC BY-SA 4.0。

我着手通过移除一些细小螺丝钉以将内壳从网络摄像头上剥离下来。 网络摄像头的大小几乎无法说明内部或CCD放置位置的电路​​板大小。 我很幸运,这个摄像头很小,布局方便。 由于我正在制作针Kong相机,因此必须卸下镜头以露出裸露的CCD芯片。

塑料支架高约1厘米,太高而无法装入粉饼内部。 我可以用电路板后面的几个螺钉将其完全拆下,但我认为将其保留以阻挡来自外壳间隙的光会很有用,因此我用Craft.io刀将其修整到了4mm高。 ,然后重新附加它。 我弯曲了LED的腿以减小其高度。 最后,由于我不想捕获音频,我砍掉了安装在麦克风上方的第二个塑料管,该塑料管可以使声音漏斗。

卸下镜头后,可以看到裸露的CCD芯片。 圆柱形项圈将镜头固定在适当的位置,并防止电源LED发出的光线破坏图像。 CC BY-SA 4.0。

网络摄像头的USB电缆很长,带有全尺寸插头,而Raspberry Pi Zero使用Micro-USB插座,因此我需要USB到Micro-USB适配器。 但是,插入适配器后,Pi不能装入粉盒中,1m的USB电缆也不能装入。 因此,我用锋利的刀切入了Micro-USB适配器,完全切断了其USB插座,剥去了塑料,露出了通往Micro-USB插头的金属轨道。 我还将网络摄像头的USB电缆剪短至约6厘米,并取下了外部捆和铝箔包裹物,露出了四根单独的电缆线。 我将它们直接焊接到Micro-USB插头的轨道上。 现在,可以将网络摄像头插入Pi Zero,并且该对仍然可以放入粉盒中。

带有网络摄像头USB电缆线的精简Micro-USB插头直接焊接到各个接触条上。 安装后,该插头现在从Raspberry Pi Zero伸出仅约1cm。 CC BY-SA 4.0。

本来我以为这将是我的电气设计的终点,但是经过测试,我意识到我无法分辨相机是在捕获图像还是在打开电源。 我决定使用Pi的GPIO引脚来驱动指示灯LED。 当摄像头控制软件正在运行时,黄色LED点亮,而在网络摄像头捕获图像时,绿色LED点亮。 我通过300ohm限流电阻将BCM引脚17和18连接至LED的正极,然后将两个负极均连接至公共接地引脚。

LED通过串联的300ohm电阻和公共接地连接到GPIO引脚BCM 17和BCM 18。 CC BY-SA 4.0。

接下来,是时候修改粉末压块了。 首先,我卸下了容纳粉末的内部托盘,以用铰链上的刀将其切掉,以释放外壳内部的空间。 我原本打算用便携式USB移动电源电池来运行Pi Zero,但该电池无法放入外壳内,因此我在外壳侧面开了一个用于USB电缆连接器的Kong。 LED需要在外壳外部可见,因此我使用3mm的钻头在盖子上开了两个Kong。

然后,我使用6mm的钻头在机壳底部的中心开了一个Kong,然后用薄金属片覆盖了该Kong,然后用缝纫针在其中心刺穿了一个针Kong。 我确保只刺穿针尖,因为插入整个针会使Kong太大。 我用细的湿/干砂纸打磨针Kong,然后从另一侧重新刺穿,再次仅用针尖刺穿。 针Kong相机的目的是要获得一个干净,圆形的Kong,且不产生任何变形或隆起,并且几乎不允许光线通过。 Kong越小,图像越清晰。

外壳底部带有针Kong。 CC BY-SA 4.0。

剩下的就是组装完成的设备。 首先,我将网络摄像头电路板固定在外壳中,使用蓝色腻子将其固定在适当的位置,以便CCD直接位于针Kong上方。 使用腻子使我可以在需要清洁灰尘点时方便地重新放置CCD(并且作为保险,以防万一我将其放置在错误的位置)。 我将Raspberry Pi Zero板直接放置在摄像头板上。 为了防止两块板之间发生短路,我用几层电工胶带覆盖了Pi的背面。

Raspberry Pi Zero非常适合粉状粉盒,除了电池的USB电缆穿过外壳上的Kong伸出之外,不需要其他任何东西就可以将其固定在适当的位置。 最后,我将LED穿过先前钻的Kong,然后将它们粘在适当的位置。 我在LED的支脚上添加了更多的胶带,以防止在关闭盖子时对Pi Zero板造成短路。

Raspberry Pi Zero插入盒中,边缘仅有1mm的间隙。 连接到摄像头的被破坏的Micro-USB插头在电池的Micro-USB插头旁边。 CC BY-SA 4.0。

软件

当然,如果没有软件来控制它,计算机硬件将毫无用处。 Raspberry Pi Zero可以运行与全尺寸Pi相同的软件,但是由于Zero的CPU速度较慢,引导传统的Raspbian OS映像是非常耗时的过程。 耗时超过一分钟的相机是不会在现实世界中获得太多使用的相机。 此外,运行完整的Raspbian操作系统几乎对本相机没有任何帮助。 即使我禁用了启动时启动的所有冗余服务,启动仍然花费不合理的时间。 我决定只使用U-Boot引导加载程序和Linux内核作为库存软件。 自定义的书面init二进制文件从microSD卡上安装根文件系统,加载驱动网络摄像头所需的内核模块,填充/dev并运行应用程序二进制文件。

应用程序二进制文件是另一个自定义的C程序,它执行控制摄像机的核心工作。 首先,它等待内核驱动程序初始化网络摄像头,将其打开,然后通过低级v4l ioctl调用对其进行初始化。 GPIO引脚配置为通过/dev/mem戳寄存器来驱动LED。

随着初始化的进行,相机进入了循环。 每次迭代都会使用默认的曝光设置以JPEG格式从网络摄像头捕获一个帧,然后将图像直接保存到SD卡,然后Hibernate三秒钟。 该循环将一直持续到拔下电池为止。 这很好地实现了最初的目标,即创建一种与典型的模拟针Kong照相机一样简单的数码照相机。

此自定义用户空间的代码在GPLv3或任何更高版本下可用。 Raspberry Pi Zero需要一个ARMv6二进制文件,因此我使用QEMU ARM仿真器从x86_64主机上构建了它,以从chroot运行带有Pignus发行版工具链的chroot编译器(用于ARMv6的Fedora 23端口/重建)。 两个二进制文件均与glibc静态链接,因此它们是独立的。 我构建了一个自定义RAMDisk,其中包含二进制文件和一些必需的内核模块,并将其复制到SD卡中,引导加载程序可以在其中找到它们。

成品相机完全隐藏在粉盒中。 唯一异常的提示是USB电缆从侧面出来。 CC BY-SA 4.0。

拍照

硬件和软件都完成之后,就该看看相机的功能了。 每个人都熟悉现代数码相机(无论是专业数码单反相机还是移动电话)所产生的出色图像质量。 在这里将期望重置为更现实的水平非常重要。 高清摄像头可捕获1280x1024分辨率(〜1兆像素)。 CCD很难从通过针Kong允许的少量光线中捕获图像。 网络摄像头会自动增加增益和曝光时间以进行补偿,从而产生非常嘈杂的图像。 图像的动态范围也非常狭窄,直方图被挤压可以证明,必须在后期处理中对其进行拉伸才能获得真正的黑白。

最好的效果是在白天在室外拍摄图像,因为大多数室内照明不足,无法记录任何可用的图像。 CCD的直径只有1厘米左右,距离针Kong只有几毫米,从而形成了一个相对狭窄的视野。 例如,在通过将相机握在手臂上而拍摄的自拍照中,人的头部充满了整个画面。 最后,图像处于非常柔和的焦点,这是所有针Kong相机的基本特征。

街道的露台的房子,伦敦。 CC BY-SA 4.0。

范堡罗机场,原航站楼。 CC BY-SA 4.0。

最初,我只是使用相机拍摄少量的静止图像。 后来我将循环延迟从三秒减少到一秒,并使用了用于在几分钟内捕获图像序列的相机。 我使用GStreamer将图像渲染为延时视频。

这是我通过此过程创建的视频:

经过一天的工作后,从银行到泰晤士河畔的班特卢(Waterloo)步行的视频。 以每分钟40帧的速度以每秒20帧的动画速度捕获1200帧。

翻译自: https://opensource.com/article/18/3/how-build-digital-pinhole-camera-raspberry-pi

raspberry pi

raspberry pi_如何使用Raspberry Pi构建数字针Kong相机相关推荐

  1. raspberry pi_如何制作Raspberry Pi游戏手柄

    raspberry pi 我不时地怀念80年代末和90年代孩童时期玩的电子游戏. 尽管我的大多数旧计算机和游戏机已不复存在,但我的Raspberry Pi可以完成我的复古游戏修复. 我喜欢Raspbi ...

  2. raspberry pi_如何使用Raspberry Pi构建WiFi相框

    raspberry pi 数码相框非常好,因为它们可以让您欣赏照片而不必打印出来. 此外,添加和删除数字文件比打开传统框架并在要显示新照片时在内部交换图片要容易得多. 即便如此,从数码相框中取出SD卡 ...

  3. raspberry pi_如何将Raspberry Pi配置为微控制器

    raspberry pi Raspberry Pi体积小,功耗低,因此受到电子爱好者和教育工作者的欢迎. 因此,它与"制造商"场景相关联,有时Arduino (和Arduino风格 ...

  4. raspberry pi_如何使用Raspberry Pi测量颗粒物

    raspberry pi 我们在东南亚的学校定期测量空气中的颗粒物. 这里的值非常高,尤其是在2月到5月之间,那时天气非常干燥和炎热,许多田野都燃烧着. 这些因素会对空气质量产生负面影响. 在本文中, ...

  5. raspberry pi_如何在Raspberry Pi上使用LÖVE游戏引擎对游戏进行编程

    raspberry pi Raspberry Pi以向孩子介绍开源软件和编程而闻名. Pi是负担得起的,实用的专业级计算入门,伪装成可破解的乐趣. Mitch Resnick's Scratch (最 ...

  6. raspberry pi_如何使用Raspberry Pi设置个人Web服务器

    raspberry pi 个人Web服务器是"云",除了您拥有并控制它而不是大型公司. 拥有一点云有很多好处,包括自定义,免费存储,免费Internet服务,通向开源软件的路径,高 ...

  7. raspberry pi_书评:“ Raspberry Pi for Secret Agents”的使用效果不佳

    raspberry pi 许多父母在Opensource.com上看到我女儿的文章,并经常问我:"您是如何使您的女儿开始使用Raspberry Pi的 ?" 一切都从Raspber ...

  8. raspberry pi_如何在Raspberry Pi上创建盒装Internet

    raspberry pi 如果您是家庭学校的父母或预算有限的老师,那么框选式Internet可能正是您想要的. 它的硬件要求非常适中(Raspberry Pi 3.64GB microSD卡和电源), ...

  9. raspberry pi_如何购买Raspberry Pi

    raspberry pi 本系列中有关Raspberry Pi入门的第一篇文章就应该购买哪种型号提供了一些建议. 现在您已经有了所需的版本,让我们了解如何获得一个版本. 最明显(可能也是最安全和最简单 ...

最新文章

  1. 解析.sens数据集
  2. Android公共jar,使用JitPack管理Android项目中公共模块库
  3. C++设计模式--观察员
  4. 亚马逊Alexa已接入2万种设备,22岁开发者月入1万美元
  5. 如何使用JavaScript获取客户端的IP地址?
  6. EasyRecovery解救打工人的崩溃
  7. H264视频编码原理基础分析
  8. 【编程之美】读书笔记:寻找最大的K个数
  9. 自动驾驶工程师的进阶之路
  10. python prettytable输出对齐_漂亮的输出-----prettytable和colorama的使用
  11. 埃拉托色尼筛选法c语言求最大公约数,用埃拉托色尼筛算法求两个数最大公约数C++的实现...
  12. 百度地图查看导航记录,导航路线,记录驾驶路线
  13. OR-Tools:6-路由问题(Routing)车辆路线,旅行商问题TSP
  14. GGDH模型计算浮升力生成项
  15. java 模拟飞秋客户端发消息
  16. 在python中可以用什么关键字来声明一个类_python里的raise是什么意思
  17. nvidia控制面板点了没反应win7_WIN7nvidia控制面板点击没反应 - 卡饭网
  18. 悉尼今晚率先熄灯一小时 抗击全球气候变化
  19. OpenCV4编译链接问题xxxx未定义的引用
  20. 都雪冬 20190912-2 命令行

热门文章

  1. 6.安装使用vue-quill-editor
  2. Pycharm在Ubuntu14.04中的基本使用指南
  3. 判断用户是否已经登录
  4. tar 命令详解 / xz 命令
  5. 基于概率的项目相似度之并行方法
  6. 把对方陷入困境中(博弈论的诡计)
  7. 做诗人,其实真的很冤
  8. MOSS2007服务器端的安装与基本配置
  9. [编程题]数独(JAVA)
  10. 登录界面转换实现html,html5和css3登录注册表单界面切换动画