OV7670 camera module (no FIFO) with ESP32

Supply 3.3 V Bus GPIO I2C address 0x21 Measures image
3.3VGNDSIOCSIODVSYNCHREFPCLKXCLKD7D6D5D4D3D2D1D0RESETPWDN

Pins and ESP32 wiring

PinRoleESP32 pinNotes
3.3VPower3V33.3 V only
GNDGroundGND
SIOCI2C clock (SCL)D22SCCB clock (I2C-like, address 0x21). Add 4.7 kΩ pull-ups
SIODI2C data (SDA)D21SCCB data. Answers only while XCLK runs
VSYNCOutput (the part drives it)D25Frame sync
HREFOutput (the part drives it)D26Line valid
PCLKOutput (the part drives it)D27Pixel clock
XCLKInput (the ESP32 drives it)D32Clock from the ESP32 (10 to 24 MHz). The camera does nothing without it
D7Output (the part drives it)D33Pixel data bit 7
D6Output (the part drives it)D23
D5Output (the part drives it)D19
D4Output (the part drives it)D18
D3Output (the part drives it)D4
D2Output (the part drives it)D13
D1Output (the part drives it)D14
D0Output (the part drives it)RX2Pixel data bit 0
RESETInput (the ESP32 drives it)TX2Reset, active LOW. Tie to 3.3 V if unused
PWDNInput (the ESP32 drives it)—HIGH = power down. Tie to GND if unused

Suggested wiring for the 30-pin ESP32 DevKit, avoiding flash, input-only and strapping pins. BoardPilot checks it for you as you wire.

Sources

Try it in 3D in BoardPilot

BoardPilot Part data (JSON)

Related parts

Part data: CC BY 4.0, free to reuse with credit to BoardPilot.