
索尼决定在运动相机市场中脱颖而出,发布了一系列HDR设备。 公司以诱人的填充物吸引客户-优质的矩阵,快速处理器,蔡司光学器件和重量轻的电子图像稳定器,展现了其“资本主义的真实面孔”。
为了控制摄像机,释放了可通过WiFi观看视频的遥控器。 遥控器价格昂贵且供不应求-现在只能在各种电子跳蚤市场上购买。

但是有WiFi,因此您可以通过手机控制它吗? 您是否尝试过使用智能手机滑雪或滑水? 但是,这种不便仍然不够:
索尼完全不关心客户,于是从Google Play中删除了PlayMemories Mobile应用程序,以通过任何手机通过WiFi控制其运动相机,将其替换为smartwatch应用程序。 取而代之的是,它启动了
Imaging Edge Mobile-非常不舒服,并不断从相机上掉下来。 iPhone应用程序使用相同的歌曲。
作为
受骗的贡献者 ,HDR AS100相机用户,我决定寻找替代解决方案,并遇到了一个非常有趣的存档
-Sony Camera Remote API beta SDK该SDK旨在通过Android和iOS设备上的WiFi开发SONY相机控制应用程序。
归档文件中有两个目录,其中包含用于开发适用于Android和iOS的Java应用程序的示例。 最有趣的是
Camera Remote API beta的PDF文档
API参考 。 确定-我将用自己的双手进行遥控器
您的API中有什么?
首先,有一张2017年2月支持的设备表。
根据表,具有不同程度功能的API与几乎所有从AS15到AS300的HDR动作相机,FDR相机,DSC,ILCE和NEX系列具有WiFi接口的相机兼容。
接下来,我将描述如何使用具有最新固件2.0.0的HDR AS100摄像机,这意味着必须与其他设备兼容。
其次,摄像机控制协议。 此列表中的每个SONY设备都是一个HTTP服务器,该服务器执行请求,还发布JPEG格式的单独帧和流式视频。
我的目标是为SONY相机开发一个紧凑且最便宜的遥控器
首先,您需要确保在相机菜单中打开了WiFi:
[设置]-> [配置]-> [Wi-Fi]-> [开]
标识符和密码必须在相机的使用说明书中的单独标签上。 如果此标签丢失,则可以通过MicoUSB将相机连接到运行Microsoft Windows的计算机,然后将其打开。 屏幕上出现[USB],并且计算机上有两个网络驱动器-相机中插入了存储卡以及PMHOME相机的内部存储器。 我们对第二张碟片感兴趣
文件:\\ INFO \ WIFI_INF.TXT包含用于通过WiFi访问摄像机的标识符和密码,文件\\ INFO \ WPS_PIN.TXT包含用于通过WPS连接的密钥。 信息访问权限是只读的,因此无法更改标识符,密码或密码。
现在,您可以使用此数据连接到相机。 连接后摄像机的IP地址为192.168.122.1。 要控制摄像机,您需要将HTTP POST请求发送到地址
192.168.122.1:10000 / sony / camera。
以下地址可用于不同型号的相机:
10.0.0.1:10000 /相机
10.0.0.1:10000 /索尼/相机
192.168.122.1:8080 /索尼/相机
192.168.122.1:10000 /索尼/相机
第三,请求和响应的结构。 每个请求都包含JSON格式的命令,并且还以JSON格式返回响应。 完整的命令列表以及使用示例包含在同一PDF文件中。
同样,通过HTTP协议,返回带有图片的完整文件和可从相机观看的视频流。
最困难的协议是信息请求。 根据请求的版本(1.0-1.3),它会以JSON格式生成一个由34到62个参数组成的数组,该数组又可以是数组,并且具有两种操作模式-可以立即响应以获取有关摄像机状态的完整信息,并可以响应任何事件在相机上(例如切换模式或开始录制)
第一个煎饼... LUTOM
该设备的心脏将是一台
火热的马达 -最便宜的带有WiFi的MK-中国ESP8266。 没错,看着使用SPI在240×320图形屏幕上沉闷地重画图像时,我决定推迟制作带有实时视频预览的Sonykovsky远程控制面板的副本,并选择了带有模式选择的普通开/关开关功能。 该显示器为0.91英寸单色OLED,分辨率为32×128,通常用于廉价的健身手镯中。
原型方案:

电路板设计:


好吧,LUT的受害者:


韧体
我建议跳过这部分内容,因为我是在安装有ESP8266 Core的Arduino IDE中开发固件的。 为了方便起见,我使用了其他库:
使用图形库,一切都变得清晰。 它们需要与OLED显示器一起使用。 WiFiManager是一个非常方便的库,用于在ESP中设置WiFi连接。 在进入设置模式的情况下,它会将访问点提升到ESP及其简约的WEB服务器,并在连接时重定向到该服务器。 您可以在自动模式下启动,但是设置模式将在没有相机连接时每次启动。 我选择长按“ BOOT / MODE”按钮进入设置模式,并在120秒超时后退出。
WiFiManager库也很方便,因为您可以添加自己的字段以进行自定义(这在本项目中对我没有用)以及处理事件-进入设置模式并保存设置。
配置用于连接相机的设置后,程序将建立连接,并写入屏幕。 如果建立了连接,则程序每秒会向摄像机发送一个有关当前状态的请求,并在屏幕上显示更改。 这样做是为了使您可以直接从摄像机上的按钮跟踪摄像机控件。
使用“启动/模式”按钮,我们周期性地切换三种主要的摄像机模式-“视频”,“照片”和“ LAPSE”。 使用PLAY / STOP按钮在VIDEO或LAPSE模式下启用/禁用记录,并在PHOTO模式下记录单张照片。 录制打开时,红色LED亮起。 录制时,照片闪烁一次。
GPIO14上还有一个附加输入,该输入实质上与“ PLAY / STOP”按钮相同。 需要此输入来连接外部触发器,该触发器可以将延时快照的照片捕获与外部事件同步。 我打算将此输入连接到3D打印机并拍摄延时视频打印部件。
在其他功能中,程序会定期测量ADC输入的值,分压器直接从电池连接到ADC输入,并用图标显示电池状态。 该程序在R12 = 1.6K和R11 = 10K的分配器以及锂电池上进行校准。
不幸的是,AS100不支持记录时间的JSON输出和延时模式下的拍摄张数。 在草图中,这些参数被写入变量,如果有人重复,则也可以在其他摄像机上显示它们。
“工业”样本
最近,我
懒得沉迷于在
JLCPCB上订购电路板,而现在,在最后一个100x100的订单中,有可用空间。
该设计最终确定为双向安装,并且在电路中为TP4056添加了锂充电:



中国人胆怯地告诉我,我一次订购了几块板。 但是我们不习惯撤退-我将所有电路板与一个共同的框架在丝网印刷上结合在一起,我将不同电路板的Zeil连接起来(无论如何都要剪裁),甚至用俄语写出这是一个电路板)))

没错,您必须手动切割木板,为此可以使用优质的金属剪刀。
结果,我们得到了这样的产品


3D打印机上最简单的情况:



运作方式:
现在一个小应用
为什么启动外部触发器的输入。 我想尝试使用SONY HDR AS100相机在3D打印机上拍摄TimeLaps打印。 为此,我进入了控制器并为外部触发器输入了信号。 有几种方法可以将信号发送到此输入。
连接到控制器的空闲引脚,并使用附加的G代码命令将对输入的控制缝制到打印机固件中。
使用
OptoLapse插件
安装OctoPrint ,并将遥控器输入连接到免费的Orange PI / Raspberry PI端口。
安装一个连接到控制器的附加限位开关,并拍摄打印机的头部以拍摄每一帧的图像,以便按下该开关。
我尝试了第三种方法:


他很快就用PHP在膝盖上编写了一个脚本,在打印完每一层后,将头部回缩代码插入到限位开关的位置。
<?php $file1 = $argv[1]; $file2 = $argv[2]; if (!file_exists($file1)) { printf("Can't open %s\n",$file1); exit(1); } $flag = 0; $f1 = fopen($file1,"r"); $f2 = fopen($file2,"w"); while( !feof($f1) ){ $s = fgets($f1, 1024); $n = strpos($s,";LAYER:"); if( $n !== false )$flag = 1; if( $flag == 1 ){ $n1 = strpos($s,"G0 "); if( $n1 !== false ){ fprintf($f2, ";TIMELAPSE BEGIN\n"); fprintf($f2,"G10\n"); fprintf($f2, "G91\n"); fprintf($f2, "G0 F1000 Z10\n"); fprintf($f2, "G90\n"); fprintf($f2, "G0 F5000 Y230\n"); fprintf($f2, "G0 F5000 X178 Y230\n"); fprintf($f2, "G4 P1000\n"); fprintf($f2,"%s",$s); fprintf($f2,"G11\n"); fprintf($f2, ";TIMELAPSE END\n"); $flag = 0; } else { fprintf($f2,"%s",$s); } } else { fprintf($f2,"%s",$s); } } fclose($f1); fclose($f2); ?>
每层之后的G代码如下所示:
;TIMELAPSE BEGIN G91 G0 F1000 Z10 G90 G0 F5000 Y230 G0 F5000 X178 Y230 G4 P1000 G0 F6000 X93.168 Y92.836 Z0.3 ;TIMELAPSE END
不幸的是,我无法立即处理打印机的retrac,所以第一个视频的名称为“ Printing snot”)))
“但这是一个完全不同的故事”©
整个开源项目。 固件
源 ,电路板设计文件,电路和外壳型号
可以在GITHUB上获取 。
我博客上的原始文章