首页 > 代码库 > 卡片机玩出单反机的效果

卡片机玩出单反机的效果

        CHDK是一套用于佳能数码相机的非官方固件“升级”程序,它并非真正对相机内的固件进行升级,而是作为应用程序在相机的OS DryOS 上启动。实现如下功能:

  1. 专业的手动控制拍摄,包括:输出RAW格式照片,手动控制各种曝光参数,连拍模式、包围曝光和录像时变焦等;

  2.  移动探测,捕捉指定区域的变化后触发拍照;

  3. 远程控制相机, 通过USB和PTP协议远程控制相机;

  4. 运行Lua/uBasic脚本灵活实现各种功能,简单的比如延迟拍照,间隔拍照,复杂的完全取决于你的想象和发掘。

      CHDK固件只能用在佳能相机上,包括所有家用普通相机,使用方法如下: 

       使用SD卡灌入固件,按照手册运行软件即可,可选择开机自启动或手动启动。具体方法参考官网http://chdk.wikia.com/wiki/CHDK,或者万能的百度文库上的中文版。

     

         由于不是器材党,对专业摄影基本外行,从可玩性方面主要从如下几个方面入手:

          A. Motion detect 以及其它脚本。 

          B. USB 线控快门

          C. PTP控制相机

          由于这些功能都比较耗电,专门配置了一个外置4.3V电源。

 

A. Motion detect 以及其它脚本

        先介绍其Motion detect 功能,该功能通过在相机上执行lua/basic脚本实现。该脚本可以将捕捉画面按行列切分成块,可定制感兴趣的捕捉区域,定时探测间隔等参数,这个功能除了用于敏感区域监控外,也可以用于不同pose的自拍。

 

具体代码参考

a=6         -- columns to split picture into
b=6         -- rows to split picture into
c=1         -- measure mode (Y,U,V R,G,B) ?U=0, Y=1, V=2, R=3, G=4, B=5
d=300000    -- timeout (mSec)
e=200       -- comparison interval (msec) - less than 100 will slow down other CHDK functions
g=3         -- draw grid (0=no, 1=grid, 2=sensitivity readout, 3=sensitivity readout & grid)  
h=0         -- not used in LUA - in uBasic is the variable that gets loaded with the number of cells with motion detected
i=0         -- region masking mode: 0=no regions, 1=include, 2=exclude
j=0         --      first column
k=0         --      first row
l=0         --      last column
m=0         --      last row
n=0         -- optional parameters  (1=shoot immediate)
o=2         -- pixel step
repeat
    zones = md_detect_motion( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
    if( zones > 0 ) then
        shoot()
    end
until (false)

        借助其强大的脚本支持,除了Motion detect 功能,延迟拍摄、time lapse 摄影和包围曝光实现起来也就是几行脚本的事情。

 

B. USB 线控快门

        这个专业单反相机才有的功能也可以通过CHDK轻松实现。不过需要部分硬件DIY的工作。配套硬件工作原理很简单,只要相机USB的1和4管脚有3-5v的瞬时供电即可触发快门。这个功能需要在CHDK Menu菜单中CHDK设置远程参数和 Enable Remote和设置开关类型。硬件装备上,经过实践,发现直接用带开关的充电宝即可实现简单远程快门功能,当然如果有兴趣,加个单片机控制5v电源的通断脉冲也可实现手动对焦、连拍和包围曝光等专业相机才有的功能。

 

C. PTP控制相机

PTP即 图片传输协议,over在 USB上的一种上层协议,实现照片的预览下载、远程拍照录像等功能,相机广泛支持。客户端方面,Windows上原生支持,Linux上著名的gphoto2 实现对多种相机的PTP控制。

用PI连上我的A650,开启gphoto2 PTP, 悲剧的是不支持远程拍照。

Device Capabilities:

        File Download, File Deletion, File Upload

        No Image Capture, No Open Capture, No vendor specific capture

CHDK扩展了PTP的支持,主要包括:

1. 脚本执行,主机端通过PTP发送脚本到相机远程执行,能本地执行的脚本都能远程执行。

2. 调整各种曝光参数后,然后远程快门或启动录像

3. 远程显示 即远程streaming. 

上瑞士***CHDK试验,需要注意PTP控制和USB线控这两个功能互斥。相机上CHDK已ready,需要主机端PTP Client配合。

PTP Client 之前流行 德国人的ptpcam,现在用chdkptp,网上正好有raspbian的PI版本,省得编译了。

https://www.assembla.com/spaces/chdkptp/documentss

安装新鲜出炉(2014/10/24)的chdkptp,连接相机,进入交互模式: 

sudo ./chdkptp-sample.sh -c -i

rec 进入拍摄模式,shoot 触发快门, rebootshoot 触发快门,照片保存在Pi端而不是SD卡上。

当然还可以发送LUA脚本远程执行。

本文出自 “一网情深” 博客,转载请与作者联系!

卡片机玩出单反机的效果