Back to Blog
Find the best ESP32 camera module for your project. Compare OV2640, OV5640, OV3660 and OV7670 on image quality, night vision, specs, prices and real-world performance.

Best ESP32 Camera Module - OV2640, OV5640, OV3660 and OV7670 Compared

Find the best ESP32 camera module for your project. Compare OV2640, OV5640, OV3660 and OV7670 on image quality, night vision, specs, prices and real-world performance.

Reviews & Comparisons

Best ESP32 Camera Module - Quick Picks

Most projects: OV2640
QR codes / photos: OV5640 AF
AI / face detection: OV3660
Learning only: OV7670

The Camera Module Confusion #

My first ESP32-CAM project was a doorbell camera. The board came with a camera, I flashed some code, and it worked. Mostly.

Daylight was fine. But in my hallway? Blurry, grainy, unusable. I spent hours tweaking settings before realizing: the sensor was the problem, not the code.

Not all ESP32 camera modules are the same. The sensor you choose affects image quality, frame rate, low-light performance, and whether autofocus is even possible. This guide breaks down the differences.

What's the OV Series? #

The "OV" cameras you'll see everywhere - OV2640, OV5640, OV3660 - are all made by OmniVision, a company that's been making image sensors since the 90s. They're in everything from laptops to medical devices.

Why does ESP32 use OmniVision sensors? A few reasons:

  • Proven compatibility. Espressif (the company behind ESP32) built their camera drivers around these sensors.
  • Built-in JPEG compression. Most OV sensors can output compressed JPEG directly, saving your ESP32's limited processing power.
  • Affordable at scale. They're mass-produced for phones and IoT devices, so they're cheap.
  • Good documentation. Well, relatively good. Compared to random no-name sensors, at least.

The number in the name roughly indicates resolution:

OV2640
2MP
OV5640
5MP
OV3660
3MP (newer)
OV7670
0.3MP (legacy)

What to Look For When Buying #

New to this? Just buy a complete board (ESP32-CAM, Freenove S3) with camera pre-attached. Standalone modules are for upgrades, replacements, or custom builds.

Connector compatibility: OV2640, OV5640, and OV3660 share the same 24-pin ribbon connector - you can swap them on most ESP32-CAM boards. Just update your code. (OV7670 is different - no ribbon cable.)

WhatOptions
LensStandard (~66°) / Wide-angle (120-160°) / Fisheye (180°+)
FocusFixed / Manual / Autofocus (AF)
IRStandard / NoIR (for night vision)

Before buying: Check seller reviews, verify "AF" if you need autofocus, look for real photo samples.

Quick Decision Guide #

Building This?Get ThisWhy
First ESP32-CAM projectOV2640It just works. Best docs.
Security / doorbell cameraOV2640Reliable streaming, low latency
Baby monitor / pet camOV2640 NoIR + IRNight vision for dark rooms
QR code scannerOV5640 AFAutofocus is essential
Time-lapse photographyOV56405MP matters for stills
Face detection / AIOV3660 + ESP32-S3Better low-light for ML
Video streaming to Home AssistantOV2640 + ESPHomeNative esp32_camera support
Drone / flying cameraOV2640Lightest, lowest power draw
PIR-triggered snapshot cameraOV2640Fast wake, reliable JPEG
Learning experimentsOV7670Cheap to break

Which Is the Best ESP32 Camera Module? #

Short answer: OV2640 for most projects.

It's not the highest resolution. It's not the newest. But it's the sensor that Espressif built their drivers around, the one every tutorial references, and the one least likely to give you problems at 3am when you're debugging a project.

If you need autofocus or high-resolution stills, step up to the OV5640 AF. If you're running face detection or AI inference on an ESP32-S3, the OV3660 gives you better low-light frames that make predictions noticeably more reliable. The OV7670 is a teaching tool - buy it to learn how camera interfaces work, not to build something real.

GoalBest camera module
General streaming, securityOV2640 (best overall value)
High-quality photos, QR scanningOV5640 AF
AI, face detection, low-lightOV3660
Learning camera interfacesOV7670

OV2640 - The One You Should Start With #

RECOMMENDED 2MP $2-5 Fixed Focus

The OV2640 is the default camera that ships with most ESP32-CAM boards, and there's a good reason. It's not the highest resolution, it's not the newest - but it's the most reliable.

I've used this sensor in 20+ projects. Video doorbells, wildlife cameras, a failed "smart mirror," plant monitoring... it handles all of them without drama.

What I Like

  • It just works. Every tutorial uses this sensor.
  • Fast frame rates. 25-30fps at VGA, ~15fps at 720p.
  • JPEG on-chip. No CPU overhead for compression.
  • Cheap & available. $2-5 everywhere.

Limitations

  • Fixed focus. Can't adjust for close-ups.
  • 2MP only. Fine for video, meh for stills.
  • Average low-light. Gets grainy indoors.

Pro tip: At VGA resolution (640x480), you can hit 25-30fps with smooth streaming. Bump to 720p and you're still getting ~15fps - fine for most applications.

OV2640 Camera Module (Standard)

OV2640 Camera Module (Standard)

The go-to camera for ESP32-CAM projects. 2MP, fixed focus, JPEG output. If you're just starting out, this is the one.

Where to Buy:

Prices may vary. Click to check current pricing:

OV2640 Wide Angle / Fisheye (160°)

OV2640 Wide Angle / Fisheye (160°)

Same sensor with a fisheye lens for wide field of view. Great for security cameras that need to cover more area.

Where to Buy:

Prices may vary. Click to check current pricing:

OV2640 NoIR - Night Vision Version #

The OV2640 also comes in a NoIR variant. Same sensor, but with the infrared cut filter removed from the lens.

Standard camera modules block IR light to keep daytime images looking natural. Remove that filter and the sensor can pick up infrared light that's invisible to the human eye. Pair it with IR LEDs and you have a working night vision camera.

Trade-off: daytime images have a noticeable pink or purple tint from ambient infrared in sunlight. If you're building a dedicated night camera (wildlife, baby monitor), that's acceptable. If you need accurate daytime colors, keep the standard OV2640 and use external IR LEDs instead.

Full setup details are in the night vision section below.

OV5640 - When Resolution Matters #

BEST FOR PHOTOS 5MP $8-15 Autofocus Available!

The OV5640 is what I reach for when image quality matters - specifically still image quality, not video streaming.

I used this for a plant timelapse where I needed enough resolution to crop and zoom later. OV2640 images looked fine on my phone, but blown up on a monitor? Pixelated mess. OV5640's 5MP held up much better.

Autofocus Warning

OV5640 comes in fixed focus and autofocus versions. Check your listing! "5MP" ≠ autofocus.

When You Need Autofocus #

QR Code Scanning

Different distances

Document Scanning

Close-up text

Macro Photography

15cm or closer

✓ What I Like

  • 5MP resolution. Actually useful for stills.
  • Autofocus option. Game changer for QR codes.
  • Better color. More accurate reproduction.

✗ Limitations

  • Slower at max res. ~5fps at 5MP.
  • More power. Autofocus motor draws current.
  • Board compatibility. Check your ESP32-CAM.
OV5640 Autofocus Camera Module

OV5640 Autofocus Camera Module

5MP with autofocus - my recommendation for QR code scanning, document capture, or any project where you need sharp close-up shots.

Where to Buy:

Prices may vary. Click to check current pricing:

OV2640 vs OV5640 - What's the Difference? #

The short version: OV2640 is faster and more compatible, OV5640 takes better photos.

OV2640OV5640
Resolution2MP (1600x1200 max)5MP (2592x1944 max)
Frame rate30fps at VGA30fps at 720p
AutofocusNoOptional (check listing)
Low-lightAverageAverage
Price$2-5$8-15
CompatibilityUniversalMost ESP32-CAM boards
Best forStreaming, monitoringStills, QR scanning

For video and live streaming, the OV2640 wins: lower cost, faster at streaming resolutions, and zero compatibility headaches. For anything where you need a sharp still - documents, plant monitoring, product photos - the OV5640's extra resolution earns its price.

OV3660 - The AI Specialist #

BEST FOR AI/ML 3MP $6-12 Better Low-Light

The OV3660 is the underdog. Not as popular as OV2640, not the resolution of OV5640, but it does something neither do well: low-light performance.

Espressif bundles this with ESP32-S3 AI development kits for a reason.

Why Low Light Matters for AI

Face detection works great in good lighting and falls apart in dim rooms. The OV3660 has better sensitivity = clearer frames = better predictions.

I tested both sensors at dusk. OV2640 kept detecting my bookshelf as a person. OV3660 was noticeably more reliable.

✓ What I Like

  • Better low-light. Actually usable indoors.
  • Fast 720p. Up to 45fps.
  • AI optimized. Pairs well with ESP32-S3.

✗ Limitations

  • Less documentation. Fewer tutorials.
  • ESP32-S3 focused. Mostly S3 boards.
  • Fixed focus. No AF option.
OV3660 Camera Module

OV3660 Camera Module

3MP sensor with better low-light performance. Often bundled with ESP32-S3 boards. The smart choice for AI and face detection projects.

Where to Buy:

Prices may vary. Click to check current pricing:

OV3660 vs OV5640 - Which to Choose? #

Both are mid-range sensors sitting above the OV2640, but they solve different problems.

OV3660OV5640
Resolution3MP5MP
Frame rate at 720p45fps30fps
AutofocusNoOptional
Low-lightGoodAverage
Primary use caseAI, face detectionHigh-res stills, QR
Typical boardsESP32-S3 AI kitsMost ESP32-CAM boards
Price$6-12$8-15

Choose OV3660 if you're running inference on an ESP32-S3 and your scenes are often dim. Choose OV5640 if you need autofocus, higher resolution stills, or you're building on the original ESP32-CAM hardware.

OV7670 - For Learning Only #

NOT RECOMMENDED 0.3MP VGA $1-3 No JPEG!

I don't recommend the OV7670 for any real project. But it has its place.

Costs under $2 and teaches you things plug-and-play modules don't: parallel interfaces, why JPEG matters, patience.

Why It's Painful

  • No JPEG output. Raw RGB565. ESP32 processes everything.
  • Complex wiring. Individual pins, no ribbon cable.
  • VGA only. 640x480 in 2026. Flip phone vibes.
OV7670 Camera Module

OV7670 Camera Module

Ultra-cheap VGA camera. Great for learning about camera interfaces, not great for anything else. You've been warned.

Where to Buy:

Prices may vary. Click to check current pricing:

OV7670 vs OV2640 - What's the Difference? #

The short version: the OV2640 is a modern IoT camera sensor with on-chip JPEG output and a ribbon cable connector. The OV7670 is a decade-older VGA sensor that requires individual GPIO wiring and outputs raw image data your ESP32 must compress itself.

OV7670OV2640
Resolution0.3MP (640x480 max)2MP (1600x1200 max)
Output formatRaw RGB565JPEG on-chip
ConnectorIndividual pins24-pin ribbon cable
ESP32 CPU loadHigh (software compression)Low (hardware JPEG)
ESPHome supportNoYes
Driver supportLimitedFull
Price$1-3$2-5
Best forLearning camera interfacesEverything else

If you're choosing between these two for a real project, choose the OV2640 every time. The OV7670 exists as a learning tool and a way to understand why JPEG hardware matters - not as a practical camera for a build you want to finish.

Other Camera Sensors #

Beyond the four main sensors, a few others appear in ESP32 board listings. Worth knowing so you're not caught off guard.

OV5647 is the original Raspberry Pi Camera Module v1 sensor. It has limited ESP32 driver support and isn't a practical choice if you want OV5640-level resolution on an ESP32 build.

GC2145 is a 2MP sensor from GalaxyCore that appears in some ESP32-S3 boards. Espressif added it to their camera driver library, but community support is thin. Tutorials and ESPHome configs written for OV2640 won't carry over without rework.

OV7725 is a 0.3MP sensor like the OV7670 but with a faster DVP interface. Occasionally shows up in budget listings. Not worth pursuing for project work.

GC032A and GC0308 turn up in some TTGO T-Camera variants. Driver support exists but documentation is sparse.

If a listing doesn't show OV2640, OV5640, or OV3660, check whether that sensor appears in the Espressif ESP32-Camera supported sensors list on GitHub before buying.

Full Specs Comparison #

SensorResolutionBest FPSAFJPEGLow-LightPrice
OV26402MP30fps @ VGAAverage$2-5
OV56405MP30fps @ 720p✓*Average$8-15
OV36603MP45fps @ 720pGood$6-12
OV76700.3MP30fps @ VGAPoor$1-3

* OV5640 autofocus is optional - check your listing!

Image Quality Comparison - OV2640 vs OV5640 vs OV3660 #

Specs on paper don't tell the whole story. Here's what each sensor actually produces in practice.

OV2640 Image Quality #

In good outdoor light the OV2640 produces perfectly usable images. Color skews slightly warm, sharpness is adequate for monitoring and streaming. No complaints for the price.

Move indoors or into dim light and the weaknesses show. Noise creeps in quickly. At VGA the image is fine for video streaming. Cropped stills at maximum resolution (UXGA, 1600x1200) look noticeably soft - the sensor is reaching its limits.

Best for: Video streaming, live monitoring, anything where image quality is "good enough."

OV5640 Image Quality #

The jump from 2MP to 5MP is meaningful for still images. More detail, crisper edges, slightly more accurate color than OV2640.

Low-light performance is roughly the same as OV2640 - neither excels in the dark. Where OV5640 wins is daylight stills where you want to crop or zoom in later.

The autofocus version adds another dimension entirely. Sharp close-up shots that OV2640 simply cannot do. For QR code scanning or reading fine text on a label, the AF version goes from frustrating to reliable.

Best for: Time-lapse, document and QR scanning, still photography where resolution matters.

OV3660 Image Quality #

Pixel count is 3MP - between OV2640 and OV5640 - but raw resolution isn't why you'd choose this sensor.

The OV3660 has better light sensitivity. In a dim room where OV2640 frames are muddy and noisy, OV3660 frames are noticeably cleaner. For AI inference that matters: face detection algorithms need contrast to work, and the OV3660 gives them more to work with in marginal lighting conditions.

Color accuracy is good. The overall image character is slightly cooler than OV2640.

Best for: AI and face detection, indoor monitoring, applications where low-light clarity matters more than maximum resolution.

Side by Side #

ConditionOV2640OV5640OV3660
Bright daylightGoodBestGood
Indoors, decent lightAdequateAdequateGood
Low light / eveningNoisyNoisyBetter
Stills and cropsSoft at max resSharpSharp
Video streamingBest (lowest CPU)GoodGood
Close-up / macroNot possibleAF version onlyNot possible

Resolution and Frame Rate Reference #

Every sensor supports multiple resolutions. Here's what you can actually expect.

OV2640 Resolutions #

ResolutionPixelsTypical FPS
QQVGA160x12060fps
QVGA320x24050fps
VGA640x48025-30fps
SVGA800x60020fps
XGA1024x76814fps
SXGA1280x10247fps
UXGA1600x12005fps

For smooth video stay at VGA or below. SVGA works for occasional snapshots. Anything above XGA is slow and memory-hungry on the original ESP32.

OV5640 Resolutions #

ResolutionPixelsTypical FPS
VGA640x48090fps
720p1280x72030fps
1080p1920x108015fps
QSXGA2592x19445fps

The OV5640 is notably faster at lower resolutions. At 720p you get the same frame rate as OV2640 at VGA.

OV3660 Resolutions #

ResolutionPixelsTypical FPS
VGA640x48060fps
720p1280x72045fps
1080p1920x108020fps
QXGA2048x15368fps

OV3660 is the fastest of the three at 720p. More frames per second means more inference attempts per second if you're running a detection model.

OV2640 focus adjustment: The standard OV2640 is fixed focus but the lens barrel is threaded. You can rotate it carefully with needle-nose pliers to shift focus closer or further. Useful if your project needs a specific focal distance. Be gentle - the ribbon cable connector is right there and easy to damage.

Complete Camera Boards #

Don't want to wire anything? These boards come with cameras pre-attached:

ESP32-CAM AI-Thinker

ESP32-CAM AI-Thinker

The classic. OV2640, SD slot, flash LED. One catch: no USB, needs a separate programmer.

Where to Buy:

Prices may vary. Click to check current pricing:

ESP32-CAM-MB (with USB Programmer)

ESP32-CAM-MB (with USB Programmer)

ESP32-CAM with USB programmer base included. Plug and play - no FTDI adapter needed. Best for beginners.

Where to Buy:

Prices may vary. Click to check current pricing:

Freenove ESP32-S3-CAM

Freenove ESP32-S3-CAM

My current favorite. Native USB-C, ESP32-S3, more RAM, great docs. Costs more but saves hours.

Where to Buy:

Prices may vary. Click to check current pricing:

Seeed Studio XIAO ESP32S3 Sense

Seeed Studio XIAO ESP32S3 Sense

Tiny but powerful. OV2640 camera, microphone, ESP32-S3, USB-C - all in a thumb-sized package. Perfect for wearables or space-constrained builds.

Where to Buy:

Prices may vary. Click to check current pricing:

ESP32 Camera Module Prices (2026) #

Prices shift quickly, especially on AliExpress. These are typical ranges as of early 2026.

ModuleAmazon USAliExpress
OV2640 standard$3-5$1.50-3
OV2640 wide angle$4-7$2-4
OV2640 NoIR$4-8$2-5
OV5640 fixed focus$8-12$4-8
OV5640 autofocus$10-15$5-10
OV3660$8-12$4-7
OV7670$1-3$0.80-2

Complete boards with camera included:

BoardCameraPrice range
AI-Thinker ESP32-CAMOV2640$4-8
ESP32-CAM-MB (with programmer)OV2640$8-14
Freenove ESP32-S3-CAMOV2640$18-25
Seeed XIAO ESP32S3 SenseOV2640$15-20

AliExpress is significantly cheaper but delivery takes 2-4 weeks and quality control varies. For a first purchase, Amazon or a reputable electronics retailer is worth the markup.

ESP32-CAM vs ESP32-S3 Camera Boards #

The original AI-Thinker ESP32-CAM is still widely used, but the ESP32-S3 based boards are a meaningful step up for anything beyond basic streaming.

ESP32-CAMESP32-S3 boards
RAM520KB SRAM + 4MB PSRAM8MB PSRAM (typical)
Camera supportOV2640, OV3660, OV5640Same, plus newer sensors
USBNone (FTDI adapter needed)Native USB-C
AI performanceLimitedMuch faster inference
Price$4-8$15-25

The RAM difference is the biggest practical change. More PSRAM means you can buffer larger frames, use higher resolutions without crashing, and run multiple image buffers for smoother streaming.

For basic streaming or a simple security camera, the ESP32-CAM is a solid choice. For face detection, MQTT image uploads, or anything AI-related, the ESP32-S3 boards save a lot of debugging time.

ESP32 Night Vision Camera - NoIR Modules and IR LEDs #

Night vision for ESP32 cameras works one of two ways: remove the IR filter from the sensor (NoIR module) or keep the standard module and add external IR illumination strong enough to work through it.

Option 1: NoIR Camera Module

IR filter removed from the sensor. Works with IR LEDs to see in complete darkness. Trade-off: daytime images have a pink or purple tint from ambient IR in sunlight.

Option 2: Standard Camera + IR LEDs

Keep your regular OV2640, add an external IR illuminator. Natural daytime colors, but you need extra wiring, power for the LEDs, and usually a transistor to switch them on and off.

Which Night Vision Approach? #

ScenarioBest Choice
Dedicated night camera (baby monitor, wildlife)NoIR module - simpler setup
Day and night use (security camera)Standard + switchable IR LEDs
Indoor low-light without full darknessOV3660 - better native sensitivity

850nm vs 940nm IR LEDs #

This catches a lot of people off guard. Both wavelengths work for night vision but behave differently.

850nm IR LEDs produce a faint red glow visible to the human eye. Cheap, common, and very effective. The OV2640 NoIR responds to them well. Good for most setups where the visible glow isn't a problem.

940nm LEDs are completely invisible - no visible red glow. Useful for covert installs. Trade-off: they're less efficient, camera sensors respond to them less strongly, and you need more LEDs to get the same illumination level.

For most ESP32 night vision builds, 850nm is the right call. Use 940nm only if the visible glow is specifically a problem for your use case.

OV2640 NoIR vs OV3660 for Low Light #

The OV2640 NoIR module needs external IR LEDs to see in darkness. Without them, removing the IR filter only makes daytime images pink. It doesn't make the sensor more sensitive to visible light.

The OV3660 doesn't need any hardware tricks. Its improved light sensitivity means it delivers cleaner frames in dim conditions out of the box. No IR LEDs required, no NoIR variant, just better hardware.

If your "night vision" use case is actually "dim indoor light" rather than "complete darkness," the OV3660 paired with an ESP32-S3 is the cleaner solution with no extra wiring.

Pro tip: For ESP32-CAM night vision builds, the built-in flash LED is too bright and washes out close subjects. Use separate IR LEDs (850nm for most cases) positioned to the side of or above the lens, not directly next to it.

OV2640 NoIR Night Vision Camera

OV2640 NoIR Night Vision Camera

OV2640 with IR filter removed. The go-to for ESP32 night camera projects. Pair with 850nm IR LEDs for best results.

Where to Buy:

Prices may vary. Click to check current pricing:

IR LED Module for Night Vision

IR LED Module for Night Vision

Infrared illuminator module. Invisible 850nm light for night vision cameras. Works with both NoIR and standard cameras (NoIR works better).

Where to Buy:

Prices may vary. Click to check current pricing:

My Actual Picks #

90%
of projects
OV2640

Boring, basic, works.

Better photos
OV5640 AF

QR codes, close-ups.

AI experiments
OV3660

+ ESP32-S3

Never again
OV7670

Life is too short.

Software Compatibility - Arduino, ESPHome, and MicroPython #

The sensor you choose affects more than image quality. It affects which platforms and tools you can use.

ESPHome #

ESPHome's esp32_camera component supports OV2640, OV5640, and OV3660. OV2640 has the widest community support and the most example configs. OV7670 is not supported.

Basic ESPHome config for OV2640 on an AI-Thinker ESP32-CAM:

esp32_camera:
name: My Camera
external_clock:
pin: GPIO0
frequency: 20MHz
i2c_pins:
sda: GPIO26
scl: GPIO27
data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]
vsync_pin: GPIO25
href_pin: GPIO23
pixel_clock_pin: GPIO22
resolution: 640x480
jpeg_quality: 10

For OV3660 on an ESP32-S3 board, the pin assignments differ - check your board's pinout. The component name and parameters stay the same, you just change the model field if your board requires it.

ESPHome integrates with Home Assistant out of the box. Once flashed, the camera shows up as a camera entity you can add to dashboards or use in automations with motion triggers.

Arduino and PlatformIO #

All four sensors have Arduino library support through Espressif's esp32-camera library. OV2640 examples are everywhere. OV5640 and OV3660 work but have fewer third-party tutorials.

MicroPython #

Standard MicroPython firmware does not include camera drivers. A few community forks add OV2640 support - Seeed Studio's MicroPython build for XIAO ESP32S3 Sense is the most documented. For most camera projects, Arduino or ESPHome is the practical choice.

Common Mistakes #

Buying the cheapest module from an unknown seller. I've received DOA cameras and mislabeled sensors. Stick to reputable vendors.

Assuming all OV5640 have autofocus. They don't. Check carefully. "5MP" doesn't mean autofocus.

Running max resolution for video streaming. ESP32 will struggle. Drop to VGA or 720p for smooth video.

Ignoring the ribbon cable. They're fragile. Buy a spare. Actually, buy two.

Testing in good lighting, deploying in bad. That bright garage isn't the same as a dim hallway at 2am.

Frequently Asked Questions #

Which is better, OV2640 or OV3660? Depends on the project. OV2640 is better supported, cheaper, and the right pick for most streaming and security builds. OV3660 wins in low light and AI applications where frame quality in dim conditions matters. For a first project, OV2640.

Does the OV2640 have autofocus? No. The standard OV2640 is fixed focus. You can manually rotate the threaded lens barrel to shift the focal distance, but there's no motorized autofocus. If you need autofocus, get the OV5640 AF version.

Can I swap an OV5640 into an ESP32-CAM board? Yes, if the board uses the 24-pin ribbon cable connector. OV2640, OV5640, and OV3660 share the same connector. Swap the module and update the sensor type in your code. The OV5640 AF draws more current, so check your power supply.

Which ESP32 camera works with ESPHome? ESPHome's esp32_camera component supports OV2640, OV5640, and OV3660. OV2640 has the most documentation and community configs. OV3660 works well on ESP32-S3 boards. OV7670 is not supported by ESPHome.

What is OV2640 NoIR? A version of the OV2640 with the infrared cut filter removed. Standard camera sensors block IR light to keep daytime colors accurate. The NoIR version lets IR light through so it can see infrared illumination in the dark. Daytime images will have a pink or magenta cast from natural IR in sunlight.

What resolutions does the OV2640 support? From 160x120 (QQVGA) up to 1600x1200 (UXGA). For video streaming, 640x480 (VGA) at 25-30fps is the practical sweet spot. Maximum resolution stills at 1600x1200 are possible but slow.

Can I use these cameras with MicroPython? Standard MicroPython firmware for ESP32 doesn't include camera drivers. Some third-party builds (like Seeed Studio's MicroPython for XIAO ESP32S3) do support OV2640. For most camera projects, Arduino, PlatformIO, or ESPHome is the practical choice.

Can I use an ESP32 camera for video streaming to Home Assistant? Yes. The most common approach is ESPHome with the esp32_camera component, which integrates directly with Home Assistant. OV2640 is the most tested sensor for this. Stream at VGA or 720p for reliable performance.