Welcome back. This is Eric. Speaking of the ESP32 Camera,
it's ESP32 AI-Thinker model usually. I love ESP32 AI-Thinker. Because it's very cheap and can do a lot of
fun projects. Although ESP32 AI-Thinker is very useful,
we can see a lot of noise in the Jpeg image obtained from OV2640. When we want to get a higher-quality image,
we don't have many options. Projects based on Raspberry Pi not only allow
much more versatility but also USB-based cameras. This is far from what we're trying to do because
it's a completely different category of project. How about using a lens other than OV2640 while
using ESP32? This is today's hero, OV5640. Because it has a 1/4-inch 5-megapixel CMOS
image sensor, it's possible to acquire images
of up to 2592x1944. In today's video, I'm gonna connect this OV5640
to the ESP32 AI Thinker board and show you how it works. The most worrying part was that the core voltage
is slightly different from the OV2640. But, since ESP32 officially supports OV5640,
I thought there is no problem. The frame table looks fantastic. It would be great if we could get the full-frame
rate out of the ESP32 environment, but it seems almost impossible. I'll remove the OV5640 from the board. I bought the product that came with the board
to use later in my Raspberry Pi project. Since it is fixed with double-sided tape,
it was carefully separated not to damage the connector. Put the OV5640 into the 24-pin connector on
the existing AI Thinker board. For your information, this OV5640 is a 170-degree
fisheye lens. The focal length is pretty long. I'm wondering what kind of images can be taken. In this way, ESP32 and OV5640 are ready. It looks good. For quality comparison, OV2640 was also prepared. For OV2640, I attached this
because the 160-degree fisheye lens has the widest angle of view among the OV2640 lenses
I have. The red breadboard is for OV5640
and the blue breadboard is for OV2640. They have ESP32 Camera Web Server example
code in advance each. I think this is probably the first example
we try after purchasing the ESP32 Camera. Also, the ESP32 board version in the Arduino
environment is 2.0.1. Okay, all looks good. First, let's check the image quality. OV5640 on the left and OV2640 on the right. You can see the title of ESP32 OV5640 on the
top left. This is because the board has detected the
OV5640 with VID and PID values. The ESP32 camera example code has been updated. So unlike the previous version, you can directly
control the XCLK and change the registry right away. That's really cool. Compared to the OV2640, you can see
more diverse menus on the OV5640 page. It feels like advanced features are activated. Click Start Stream to check images. Turn on Vertical Flip as the OV5640 is upside
down. If you look closely at the OV2640, you can
see the noise. You can still see a little bit of noise in
the incoming image. But the image from the OV5640 is very clear
without any noises. It's great. The OV5640 has more configuration options. In addition, the range of detailed settings
has been expanded. For example, you can adjust the brightness
from -3 to 3, and adjust the exposure level. Additionally, the Gain Control can be operated
manually. This seems to be useful for special purposes
in a space where light is blocked. ESP32 uses an 80 MHz APB clock
and this clock can power the I2S bus and have sampling up to 20 MHz
in parallel mode. So XCLK can be set up to 20MHz. The OV5640 allows you to select the maximum
resolution of QSXGA 2560x1920. On the other hand, the OV2640 can only select
up to its maximum resolution, UXGA, 1600x1200. Let me choose the maximum resolution of the
OV5640. Unfortunately, my monitor's height is less
than 1920, so I can't see the full image right away. But the images are really sharp and the quality
is really good. The problem is that it takes a lot of time
after acquiring a Jpeg image to transfer it via WiFi. Also, a single 5MP image has a large file
size so it takes more time than the smaller images. Anyway, we'll see the speed test later in
this video. Other available resolutions also show great
quality. I will try to select the maximum resolution
of the OV2640 for both. There is a difference in the angle of view
and the focal length so please take this into account. Both are FRAMESIZE UXGA, 1600x1200. You can clearly see that there is noise in
the image coming from the OV2640. I couldn't see any noise in the OV5640's images
while doing this test. This test is for the frame per second. It does not output the JPEG image obtained
from the lens on the screen or stream it through WiFi. Purely measures the FPS it takes to get a
single image buffer. Only PSRAM and ST7789 display are connected
to this PCB. The display is simply meant to show the FPS
and how many images were taken. OV5640 on the left and OV2640 on the right. The first test at VGA resolution. The OV2640 is faster. It's keeping it at 25 FPS. However, the OV5640 is not reaching 25 FPS
in the same environment. This time it's a Jpeg image of UXGA,
which is the maximum resolution of the OV2640. Here the difference is even greater. The OV2640 maintains 12 FPS, but the OV5640
has a hard time maintaining 5 FPS. The conclusion of today's test is like this. I can't say the environment I've created is
the best. However, OV2640 can do faster FPS than OV5640
in the same environment. Also, if image quality is important,
OV5640 seems to be able to satisfy it. Not only do you get 5MP images,
but the many options allow you to make advanced settings for your project needs. I think this can be very useful. Personally, I was surprised at how well the
OV2640's FPS came out. If image data can be retrieved effectively,
it seems that the image can be drawn faster on the connected device. When the environment where the OV5640 can
be used properly is completed, I will test it again. If you have any questions,
please comment below. Thanks for watching. See you in the next project.
That's awesome. I think you've just inspired me to grab one and try it out. I've got a half-dozen ESP32cams and they're great as indoor cameras for a small-apartment where low resolution still gets you everything that matters, but higher resolution might make them more useful outdoors too. Hoping esphome supports the increased resolution. Thanks for taking the time to compare these in this video.
Post saved!
I enjoy your videos. Thanks for sharing.
If you wanted a higher FPS rate with the OV5640 with high resolution, is there a microcontroller that can do it? Or would you use a computer like a Raspberry Pi?
Or alternatively, is it a limitation of the sensor and not of the ESP32?
Great video thanks.
We're trapping rats, possums, ferrets. If someone can make ESP32cam do night vision, and run for a few months recording to sdcard we'd buy hundreds from you.
we need 1080 but 4fps is good enough - and some PIR to trigger.
How are you overcoming the choppy frame rate caused by GPIO0?
Hey, how to you get that toggle with all the options on your browser? Is it a library in arduino? Trying to replicate what you do;)
Hi, can you share the arduino sketch for ov5640 which you have tested
Did you have to any code or did esp recognized OV5640 automatically? I attach OV5640 to ESP32 cam using their web server example but I cannot get any higher resolution