存档:打开摄像机控制板¶
备注
开放式 CCB 还没有商业化 - 我们正在积极寻找制造商。(尽管此主题已归档!)。 如果您想开始制作和销售这种电路板,请联系 CraigElder@统一服务.
开放式相机控制板(OpenCCB)是用于航空摄影的相机遥控接口。它具有 许多功能包括FTDI USB/UART 适配器、USB HOST、数字 IO、模拟 IO、光耦 IO 等。
概述¶
使用的主要摄像机控制协议称为 PTP(图像传输协议),其最初的标准化版本为 PIMA 15740:2000、ISO 15740:2005(V1.0)和 ISO 15740:2008(V1.1)。
自 2005 年以来,几乎所有的摄像机都支持 PTP,但支持的程度往往有限。只有少数相机具有 "PTP 远程控制 "功能。例如,佳能公司在 2009 年的最后一个 PS SDK(PS-ReCSDK 1.1.0e)中取消了其紧凑型产品线(PowerShot 型号)的遥控功能。
幸运的是,PTP hacking 扩展名中的 CHDK 项目 使我们能够将 PTP 控制扩展到更新、更小、更轻的佳能 PowerShot 型号。
CHDK PTP 接口说明如下:
端口映射¶
遥测 UART((飞行)控制器) | |||||
---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 |
5V | 德克萨斯州 | RX | CTS | RTS | 接地 |
I2C (3V3) | |||
---|---|---|---|
1 | 2 | 3 | 4 |
接地 | SCA | SCL | 3V3 |
数字输入输出设备 | |||
---|---|---|---|
1 | 2 | 3 | 4 |
接地 | D2 | D8 | D7 |
模拟输入输出 | |||
---|---|---|---|
1 | 2 | 3 | 4 |
接地 | A1 | A2 | A3 |
光耦合 IO(LANC-C 控制) | ||
---|---|---|
1 | 2 | 3 |
V+ LAN-C(5-9V) | LAN-C 线路 | GND LAN-C |
光耦合 IO(触点闭合触发) | ||
---|---|---|
1 | 2 | 3 |
北卡罗来纳州 | 快门 | 地面 |
USB 连接器类型¶
计算机接线 - 表测试和固件上传¶
(飞行)控制器接线 - 空中摄影¶
固件可在以下网址找到 在 GitHub.
还有一个 压缩文件 的存储库。
获取源代码后,只需按照以下步骤操作即可:
步骤 1:将 Arduino SketchBook 路径设置为主文件夹
步骤 2:选择草图 "ArduCAMPTP_CHDK_APM26"。
备注
如果希望相机在连接后显示镜头,则需要修改文件 __defines.h ,将 AUTOSTART 设为 1,如图所示:
#define AUTOSTART 1 // 启动时曝光镜头(记录模式启动)
第 3 步:编译并上传到 CCB 委员会
第 4 步:将 geoshot.lua 文件复制到相机的 SD 卡(文件夹:/CHDK/SRIPTS/)。
步骤 5:当(飞行)控制器连接到 MissionPlanner 时,像这里一样设置快门:
步骤 6:试拍
之后......任何其他指令都可以使用......因为它的作用就像伺服器一样。
触点闭合 - 示例:佳能 XTi¶
MAVLink 详情¶
目前,代码使用的是 MAVLink 的遥控通道。它的工作原理与虚拟舵机类似,也就是说,这些信息确实反映了(飞行)控制器每个输出通道的状态。
请看文件" "中最重要的一段代码。MAVcomm.h":
个案 mavlink_msg_id_rc_channels_raw: //rc 输入被 apm 绕过:
{
drone_chan[0] = mavlink_msg_rc_channels_raw_get_chan5_raw(及样品;信息);
drone_chan[1] = mavlink_msg_rc_channels_raw_get_chan6_raw(及样品;信息);
drone_chan[2] = mavlink_msg_rc_channels_raw_get_chan7_raw(及样品;信息);
drone_chan[3] = mavlink_msg_rc_channels_raw_get_chan8_raw(及样品;信息);
}
同一文件中的一小段代码对触发进行了标记:
#ifdef DRONE_OUT
如果(cam_ctrl_state.镜头 1500)) cam_ctrl_state.镜头 = 1;
#endif
将标志 "cam_ctrl_state.shot "设置为 "1 "后,电路板就可以进行拍摄,并将其设回 "0"。
默认情况下,上述代码使用的是(飞行)控制器的 RC8。它定义在文件"__defines.h"如图所示:
//定义哪个 FC 输出通道为触发器
#define DRONE_OUT 1 /Shutter RC8
拍摄功能也会使用一些姿态数据:
个案 mavlink_msg_id_attitude:
{
无人机间距 = 至 Deg(mavlink_msg_attitude_get_pitch(及样品;信息));
无人机滚动 = 至 Deg(mavlink_msg_attitude_get_roll(及样品;信息));
drone_yaw = 至 Deg(mavlink_msg_attitude_get_yaw(及样品;信息));
}
断裂;
个案 mavlink_msg_id_gps_raw_int:
{
drone_lat = mavlink_msg_gps_raw_int_get_lat(及样品;信息) / 10000000.0f;
drone_lon = mavlink_msg_gps_raw_int_get_lon(及样品;信息) / 10000000.0f;
drone_fix_type = mavlink_msg_gps_raw_int_get_fix_type(及样品;信息);
可视无人机卫星 = mavlink_msg_gps_raw_int_get_satellites_visible(及样品;信息);
}
断裂;
个案 mavlink_msg_id_vfr_hud:
{
无人机标题 = mavlink_msg_vfr_hud_get_heading(及样品;信息); // 0...360 度,0=北方
drone_alt_asl = mavlink_msg_vfr_hud_get_alt(及样品;信息);
}
断裂;
该功能可将姿态和 GPS 数据发送到相机 SD 卡上的文件中。它可以通过一个本地 CHDK 脚本.
为了使其充分发挥作用,(飞行)控制器应该为整套功能提供特定的信息,而电路板将把这些信息转化为设置和触发。您可以在这里看到建议的条目,尽管在未来的实施中还可以用许多其他方式来表达:
个案 mavlink_msg_id_digicam_control: //mav_cmd_doo_digicam_control:
{
cam_ctrl_state.届会 = mavlink_msg_digicam_control_get_session(及样品;信息);
cam_ctrl_state.缩放位置 = mavlink_msg_digicam_control_get_zoom_pos(及样品;信息);
cam_ctrl_state.锁定 = mavlink_msg_digicam_control_get_focus_lock(及样品;信息);
cam_ctrl_state.镜头 = mavlink_msg_digicam_control_get_shot(及样品;信息);
cam_ctrl_state.command_id = mavlink_msg_digicam_control_get_command_id(及样品;信息);
cam_ctrl_state.extra_param = mavlink_msg_digicam_control_get_extra_param(及样品;信息);
cam_ctrl_state.extra_value = mavlink_msg_digicam_control_get_extra_value(及样品;信息);
}
断裂;
主要的控制点就是这些:
cam_ctrl_state.session:显示或收回镜头
cam_ctrl_state.zoom_pos:确实控制焦距
cam_ctrl_state.focus_lock:锁定或解锁焦点
cam_ctrl_state.shot:已拍摄摄像机