ESP32-CAM ov2640 exposure control/FREX mode
Posted: Fri Jun 21, 2019 12:54 pm
I recently built a global external shutter for (ov5647 sensor) Raspberry v1 camera:
https://github.com/Hermann-SW/Raspberry ... al_shutter
Since ov2640 sensor is a predecessor of ov5647 and has FREX mode as well (that enables starting accumulation of all sensor lines at the same time) I wanted to try to get my ESP32-CAM modules do global external shutter videos as well.
I am using CameraWebServer.ino Arduino sample sketch, and the GUI exposed by that looks nice in the browser.
As first step I wanted to get a "normal" frame with big rolling shutter effect.
Because of exposure time much too high, I disabled "AEC SENSOR".
Immediately new control "Exposure" appeared with range 0..1200.
I did power a mini drone propeller nearly minimally (with 0.13V instead of 3.7V) and got a very slow rotation.
Because the Exposure selection did not show exact values, I did set to 0 and then pressed 15 times "arrow right" key.
So exposure is likely set to 15 (multiple of single line time exposure).
This is a sample frame with quite some rolling shutter effect captured for the propeller:
Next step is to look through CameraWebServer implementation on how to add enabling FREX mode.
For ov5647 it was just writing three I2C registers to get global reset mode enabled:
https://github.com/Hermann-SW/Raspberry ... id_ges#L22
Just as an example for global external shutter multiple exposure frame captured with Raspberry v1 camera:
This is a 9000eps frame (exposures per second) with strobe pulse length 8.33µs.
The 8mm long airgun pellet flies with 96.9m/s(!) through two 5000lm leds (at bottom and top):
https://github.com/Hermann-SW/Raspberry ... nt-9000eps
https://github.com/Hermann-SW/Raspberry ... al_shutter
Since ov2640 sensor is a predecessor of ov5647 and has FREX mode as well (that enables starting accumulation of all sensor lines at the same time) I wanted to try to get my ESP32-CAM modules do global external shutter videos as well.
I am using CameraWebServer.ino Arduino sample sketch, and the GUI exposed by that looks nice in the browser.
As first step I wanted to get a "normal" frame with big rolling shutter effect.
Because of exposure time much too high, I disabled "AEC SENSOR".
Immediately new control "Exposure" appeared with range 0..1200.
I did power a mini drone propeller nearly minimally (with 0.13V instead of 3.7V) and got a very slow rotation.
Because the Exposure selection did not show exact values, I did set to 0 and then pressed 15 times "arrow right" key.
So exposure is likely set to 15 (multiple of single line time exposure).
This is a sample frame with quite some rolling shutter effect captured for the propeller:
Next step is to look through CameraWebServer implementation on how to add enabling FREX mode.
For ov5647 it was just writing three I2C registers to get global reset mode enabled:
https://github.com/Hermann-SW/Raspberry ... id_ges#L22
Just as an example for global external shutter multiple exposure frame captured with Raspberry v1 camera:
This is a 9000eps frame (exposures per second) with strobe pulse length 8.33µs.
The 8mm long airgun pellet flies with 96.9m/s(!) through two 5000lm leds (at bottom and top):
https://github.com/Hermann-SW/Raspberry ... nt-9000eps