从其他朋友处得知的这个 DIY 项目,因为可以薅羊毛,而且用的板子是国内很少买到的 Adafruit 的ESP32 S3 还带TFT 屏幕的板子。而且M5的光线DLight 传感器和按键模块,我刚好也没有。这个诱惑就太大了。在项目报名结束的最后两天成功报名下单。
然后就是经历了2周的等待最终收到了漂洋过海的板子。
然后收到了其他参赛者定制的扩展版,这样传感器,按键,舵机可以直接用grove 接口接到了主板。
解决连接问题。结下就是学习项目要求,并编程了。
测光表项目是一个很实用的项目
在制作测光表之前,需要了解以下关键摄影概念:
1. 光线强度和 EV 值
EV(Exposure Value)是曝光值,用于表示场景的亮度水平。EV 值越高,表示环境光线越强。通常 EV 值范围在 -6 到 20 之间:
EV -6 到 0:夜景、星空等暗光环境- EV 1 到 7:室内、黄昏等低光环境- EV 8 到 14:日常室外光线- EV 15 到 20:强烈阳光、雪地反光等
2. 快门速度
快门速度决定感光时间长短,通常以秒为单位,如 1/1000、1/250、1/60、1/30 等。
高速快门(如1/1000秒):适合拍摄运动物体- 慢速快门(如1秒):可以获得动态模糊效果
3. 光圈值
光圈值(f值)控制进光量,常见值包括 f/1.4、f/2、f/2.8、f/4、f/5.6、f/8 等。
大光圈(小f值):景深浅,适合人像摄影- 小光圈(大f值):景深深,适合风景摄影
4. 曝光模式
了解不同的曝光模式对测光很重要:
**快门优先(S/Tv):**摄影师设定快门速度,相机自动调节光圈值- **光圈优先(A/Av):**摄影师设定光圈值,相机自动调节快门速度- **手动模式(M):**完全手动控制快门速度和光圈值
5. ISO 感光度
ISO 值影响传感器对光线的敏感程度,常见值包括 100、200、400、800 等。
较低的 ISO 值图像质量更好,但需要更多光线;较高的 ISO 值在暗光环境下更实用,但可能产生噪点。
大概了解了一下这几个关键参数的关系,可以总结出数据的处理应该包括。
从光线传感器读取当前光亮数值 lux,然后换算成对应的 EV 值,在根据 EV 值去匹配快门和光圈。默认是用 ISO100 的感光度,所以可以忽略感光度的因素。这之前有很多的运算,但因为在MicroBlocks 中没有小数和复杂计算功能,而且最终需要的也只是对应刻度划分下的数值。最后所有的计算都变成了一个查表的过程。具体算法会在程序部分讲解。
搞清楚了过程,接下来就是要搞定编程工具了。我只会拼积木,所以需要使用MicroBlocks 对这块板子进行编程。Adafruit 的板子都有对应的 pio 配置说明,所以可以自己编译一个对应的 ESP32 S3 带 TFT 屏幕的MicroBlocks固件。
固件编译成功刷上MicroBlocks 固件就可以在 MicroBlocks 中用积木对这块 ESP32 板子进行编程了。
还有个问题需要解决,就是光线传感器的问题,在MicroBlocks 中没有对应驱动。还好是个 I2C 接口的,有对应的arduino驱动,MicroBlocks 中有个类似芯片的,所以自己写一个也不是很难。
按键和舵机包括屏幕都有对应的积木库支持。接下来就是编写程序。
程序逻辑部分不复杂,读入光线强度做一系列查寻操作就可以。
最核心的计算都在这个方法里了:
请主动忽略各种错误混搭的命名。
计算过程还区分了光圈优先和快门优先两种情况的计算顺序。逻辑跑明白,后面就是画个好看的界面。MicroBlocks 的TFT 库可以事实的看到屏幕绘制效果,所以编写屏幕虽然有点琐碎但也还好。
还做了个 EV 的标尺,上半部分是现实亮度,光圈,快门值。以及当前是快门优先还是光圈优先模式。
主板其他的按键设置快门/光圈,切换模式,按下快门也都用 MicroBlocks 中的消息机制轻松完成。
接下来就是扩展任务了,手机需要用蓝牙连到板子获取数据,同时可以在手机上遥控舵机按下快门。
这个需求继续用图形化编程平台 Snap!完成,之前MicroBlocks 社区以及完成了Snap 与 MicroBlocks VM 板子的蓝牙连接测试。同时还提供了一个很好用的消息调用框架。功能不麻烦还是需要画个UI。在 Snap 中使用了动画文字做了一个字排版的表格,同时也画了个拍照项目,以及快门特效。
在 Snap 中去使用 MicroBlocks 库可以方便的使用蓝牙连接到 MicroBlocks VM 中实时调用消息传输方法获取信息和发出指令。
程序搞定了,只需要在手机端用支持蓝牙的浏览器,(苹果手机需要用 bluefy)打开对应的 Snap程序,可以通过——回复可见内容——">https://snap.codelab.club/snap.html#open:https://r.fabrie.cn/files/67515c32051a0f4667898ee3/6751b141db8246ef31140498/cegpp.xml[/hid] 直接打开链接的方式在手机加载程序。然后用蓝牙连上板子就可以读取数据,并操控拍照了。
最终的呈现视频可以在B站看到
【Let's do活动第三期:DIY一个电子测光表】 https://www.bilibili.com/video/BV1KziRYaEsV/?share_source=copy_web&vd_source=fd8a044e6289c1cbf9e05a43445442cd
测光表是个很有意思的项目,在其他参与者的帮助和互相促进下,最终完成了一个功能比较满意的测光表。
再次感谢组织方,其他参与者的帮助和支持。
MicroBlocks 地址:https://microblocksfun.cn/
程序代码:
板子:
https://microblocksfun.cn/run/microblocks.html#project=https://r.fabrie.cn/files/67515c32051a0f4667898ee3/6751dc321d57051c9c1bfa38/%E6%B5%8B%E5%85%89%E8%A1%A8wip2.ubp
有想一起学 MicroBlocks 欢迎私信聊天。