CircuitPython 7 adds support for capturing images from "parallel cameras" on select boards, and libraries are available to configure the popular OV7670, OV5640, and OV2640 cameras.
CircuitPython 8 adds a new library exclusively for Espressif ESP32 microcontrollers that supports a wider range of cameras, though the guide author has only tested with the OV5640 and OV2640 cameras.
While not up to standards we’re used to from a current smartphone or laptop, it’s nicely balanced to the capabilities of recent 32-bit microcontrollers.
The Arduino library for OV7670 cameras on the Grand Central M4 has its own dedicated guide.
Parts
Items needed
- Compatible microcontroller board with appropriate pins exposed:
- any CircuitPython-compatible ESP32-S2 or S3 with PSRAM, including Kaluga and ESP32-S3-EYE
- any RP2040 supported by CircuitPython including Raspberry Pi Pico
- Adafruit's Grand Central M4 (not recommended)
- SPI TFT module
- compatible parallel camera module — the board pinout must match exactly
- Two 2.2k resistors, if pull-up resistors are necessary
- Soldering iron and supplies
- Appropriate USB data + power cable
- Prototyping supplies such as breadboards and jumper wires
The Espressif ESP32-S3 Eye development kit has all you need (including an OV2640 camera module and 240x240 LCD), and no soldering is required, so it's probably the best way to get started!
OV7670, OV5640, and OV2640 camera modules with the 18 pin, 2-row header can be found on Amazon, eBay, etc. Make sure the pinout matches the camera shown above, as occasionally there are incompatible variants. The cameras are sometimes sold in sets which is a good idea, as they’re easily damaged with the wrong voltage or rough handling, especially if you need to modify it for use with the Grand Central M4.
Other sensor models (such as OV3660) exist, but they require different initialization code and cannot currently be used.
When using esp32_camera
, a wider range of camera boards are supported, but note that the guide author has only tried OV2640 and OV5640. A list of cameras supported by the underlying esp32_camera
library can be seen on GitHub.





