Corrupted Image (Blue violetish)


I am working on a fully autonomous camera based on Particle Boron platform with OV2640 and custom PCB. Once every 7 or 6 pictures I get a corrupted one that is still visible but heavily blue saturated (see below).


Other ones are ok by my standard:


The test rig is installed comfortably inside and what you see is looking trough a window. Important thing to mention I think: I do shut off the OV2640 board completely between each photos (3 to 24 per day) but I give a 10 seconds warmup time before sending the capture command. I use the supplied dupont cable on this setup.







Can you perform these two tests?

  1. Always turn on the camera, take a picture every 5 seconds to save, test for 10 minutes.
  2. Turn on the camera every 20 seconds to take a picture and save it, then turn off the camera, test for 1 hour.
    After performing the above two tests, please tell us the result whether the phenomenon is still a bad picture every few pictures.

Hello Jyh,

I did those 2 tests, the best I could do is 7 seconds for the first test while keeping most of the context around the image capture. No blue picture has been found on this first test.

On the second test, I did not have any blue picture either.

I found your test to be very interesting and surely rule out any hardware issue. The last step I believe I must take is resetting the whole MCU like I do in production because of deepsleep. I’ll try to do that today.

Is there a recommended warmup time in cold situation? I will use this module in the -10 range for sure.



According to the above test method, the problem of the camera itself can be basically eliminated, and the problem may appear in the usage method. You can simulate your real usage process for testing. As for the test temperature, -10 usually does not require preheating.

Did you ever get anywhere with this issue? I’m using a similar setup, where I power-up the ArduCAM, capture a frame, and then power-down the camera, and I occasionally get similar purple-hued frames. Would be really interesting to know if you narrowed it down to anything.

This issue is related to the I2C bus in arbitration failure state and the inability of the Arducam to set registers. For me I had two separate processes running on separate cores of the ESP32 that were each powering up the camera, setting registers and powering it down again. One would do regullar exposure calculations, and one would take a photo using those exposure values. The camera and I2C bus access had mutex flags to prevent concurrent access.

I solved the problem by doing a dummy Wire.begin(), Wire.beginTransmission(), Wire.endTranmission() before trying to write to the camera.