前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenGoPro改装.1(潦草写作篇)

OpenGoPro改装.1(潦草写作篇)

作者头像
云深无际
发布2023-05-24 13:43:06
4260
发布2023-05-24 13:43:06
举报
文章被收录于专栏:云深之无迹云深之无迹

本来昨天这个文章可以写的差不多,但是半路出去野了,现在电脑还有点电赶紧补一下。

hhhh,写到中午就润了

答应一个摄影工作室要给他们改装Gopro,拿了人家的机器一个多月了,再不动就不礼貌了。

先分析一些咋控制,一般是越简单越好,控制的粒度越细越好。

其实控制Gopro的方式有这么几种:

  1. 按键的,以前的版本和现在的
  2. 触摸式的,但是这个是需要模拟人手的,就是需要一个复杂的触摸设备,这个复杂不是操作,是我操作后要搞明白两个事情,我有没有触摸了准确的位置而且操作成功,以及现在的界面变成了什么样?我以前的做法是,把界面都写死,就是一些固定的序列,不能有人干预,后面我还做过视觉的方案,太傻逼了,复杂
  3. 第三种就是K大佬的WIFI控制库,优点是全平台的相机都可以控制,而且他的库可能写的更好一些,当然后面也给了BLE的控制,好活
  4. 第三种就是官方的库,协议细节OK,但是就支持9,10,11这些昂贵的相机
  5. 还有一个是蓝牙遥控器
  6. 总结一下,SDK控制才是真正合适的

黑9在手,沉甸甸的,触摸屏幕有点反应迟钝,安霸的方案

老哥把遥控器也给我了,我就小拆一下吧,可爱捏~

直接就是EPS32,带完整的BLE,好活,元件就是一些外围,很简单

上面的按键都是按动的,都有一个肖特基二极管,芯片是充电

使用的是并口的屏幕,真富哥,估计IO多的没的用了

ESP32直接控制的屏幕接口就是这么几个

1. SPI接口:包括SCLK(时钟线)、MOSI(主数据线)、CS(片选线)和DC(数据/命令选择线)四根线。这是OLED屏幕最常见的接口,简单易用。

2. I2C接口:只需要2个线SCL(时钟线)和SDA(数据线)。I2C接口的OLED屏幕在电路设计上更简单一些,但控制起来略微复杂。

3. 8080并行接口:需要8根数据线D0-D7和几根控制线如CS(片选)、DC(数据/命令选择)、WR(写使能)和RD(读使能)。并行接口可以达到较高的传输速率和刷新率,但线路较复杂,所以现在较少使用。

4. 6800并行接口:与8080接口类似,也需要8根数据线和几根控制线,但控制线的功能略有不同。6800接口现在也较少使用。

对于绝大多数OLED屏幕来说,推荐选择SPI接口和I2C接口,这两种接口线路简单,也比较容易控制。如果需要高刷新率和速度,可以选择8080并行接口,但设计难度会大一点。

鄙人是看不懂的,可能是为了程序复杂一些,省物料吧?

大概就是这种的,物料便宜

接口就是8080

接口定义,要12个,8个是数据口

想起来了是,肖特基二极管,好看捏

1. 防止按键抖动。当用户按下按键时,由于手的微小颤抖,会导致按键快速接触和断开,产生多个按键信号。加上一个肖特基二极管可以消除这种抖动,过滤掉过快的按键信号,只让主要的按键信号通过。

2. 防止按键接触时产生的干扰脉冲。当用户按下按键,金属接触片快速接触和离开,会产生一个小的干扰脉冲,这可能会误导mcu产生一个错误的按键信号。加上肖特基二极管可以阻止这种误导性的干扰脉冲传到mcu。

所以,简而言之,在mcu的按键旁边加上肖特基二极管主要是为了滤波和去抖,确保mcu只接收到清晰和有效的按键信号,避免误判和误动作。

这个遥控器卖那么贵,多少是有点品牌溢价了,我也能做着卖~

我接下来贴一下要求,分析一下咋做?

只有相机提供的硬件功能才能实现,已经有相关的API来可以用。

1.破解程序怎么安装?可能需要一个单片机板子吧?

2.改动后是否影响机内原有的其他拍摄模式?希望功能是新增的,不是基于某种模式的修改,不影响其他模式。

3.开机后怎么进入包围曝光拍摄模式?

4.能否突破原有普通照片模式最慢快门0.5s的限制?夜景照片最慢可达10s

5.选择包围曝光模式之后,能否用无线快门遥控拍摄,一次3张?因为手按快门容易抖动。

理想的使用场景开机后手动从菜单调出包围曝光模式,也可以切换到原来其他拍照模式和视频模式。在包围曝光模式下,锁定RAW格式(不需要JPG格式),锁定ISO100,按下遥控器,自动拍摄一组3张,曝光补偿分别为0,-2,+2(或-2,0,+2的顺序也行),其中0这张的快门由测光自动设定。拍完一张不用等待即连拍下一张,直到三张全部拍摄结束。快门最慢可以达到10s,而非0.5s。

而且还是要RAW的文件,因为还能调整一下照片

可以看到最大的需求其实就是这个包围曝光,研究一下:

老哥也贴心的给了一个说明

简单来说:包围曝光是一次拍摄后,以中间曝光值和减少曝光值和增加曝光值的方式,形成3张或者5张不同曝光量的照片。其作用是,在这些不同曝光的照片中,能有比较接近摄影者所需要的曝光量照片。另外,也可以在后期合成制作HDR照片。

接着来看看相机的说明书,看看相机的曝光提供了什么?

这个就是最终的沙雕解决方案了,hhhhh,如果SDK控制不了的话

这个选项应该是可以把快门的时间拉长一些

这个好像又不行

还有一个定时器,可以使用延时来处理

有点糊涂了,我一会儿再看看去这个说明书里面的约束

这个没啥用

这个是另一个约束,快门时间和ISO之间的约束,还是看

这个在SDK里面可以控制

说明书里面有个这个图

这个是我按照上面的需求写的一段代码,具体还没有调试

下面这段本来是另外一篇的,这里就是对OpenGoPro库的一个简单的阅读。

蓝牙控制是全平台的

typing里面

里面有段demo,后面的列表推导缺了个]

所有的代码封装都在这里

不带横线都是内置的方法

这些都是可以设置的选项都是以类封装出现的

这个GoProEnum是一个自定义的Enum类,它具有以下特点: 1. 继承了IntEnum,意味着每个成员都关联一个整数值。 2. 定义了一个metaclass为GoProEnumMeta的元类。这个元类可能定义了一些自定义的行为。 3. 重写了__eq__方法,使得这个Enum类可以通过整数值、字符串名称或其他Enum成员来比较相等。比如:

4. 重写了__hash__方法,使得这个Enum类可以作为字典的key或者set的成员。 5. 定义了两个特殊的成员NOT_APPLICABLE和DESCRIPTOR,这两个成员不会被Enum的迭代器返回。 6.定义了一个_is_proto的属性,来判断这个Enum是否是一个proto enum。如果是,那么只允许与int或str类型比较相等。 所以,总体来说,这个GoProEnum是一个功能较为丰富的Enum类,它自定义了比较、散列和迭代等行为,并且区分了普通Enum和protoEnum两种情况。

在我们定义一个类的时候,常常想对一个类所实例化出来的两个对象进行判断这两个对象是否是完全相同的。一般情况下,我们认为如果同一个类实例化出来的两个对象的属性全都是一样的话,那么这两个对象是相同的。但是如果我们直接用"==”来判断这两个对象知否相等,那么结果一定是不相等的,因为这两个对象的地址一定不同,它们在内存当中的不同区域。

下次写,没电了

哎呀,感谢张同学帮忙拍照(纪念一下机场写作)

别问我为什么闹,就爱闹

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档