All the examples in this guide require CircuitPython 7.0.0-alpha.5 or newer.

CircuitPython 7 adds support for capturing images from "parallel cameras" on select boards, and libraries are available to configure the popular OV7670 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.

CircuitPython on the Grand Central M4 is prone to locking up when the camera function is used. The Arduino implementation is much more reliable on that board. We recommend using ESP32-S2 or RP2040 instead.

The Arduino library for OV7670 cameras on the Grand Central M4 has its own dedicated guide.


Items needed

  • Compatible microcontroller board: any ESP32-S2 including Kaluga supported by CircuitPython with enough pins exposed, any RP2040 supported by CircuitPython including Pico and other boards with enough pins, or Grand Central M4
  • SPI TFT module
  • OV7670 or OV2640 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 Kaluga v1.3 development kit has all you need (including an OV2640 camera module and 320x240 LCD), and no soldering is required, so it's probably the best way to get started! Be aware that you must use the USB Breakout Cable with this board.

It is not possible to access the CIRCUITPY drive or the REPL using the USB Micro B connections on the Kaluga board so you will also need a USB Plug Breakout cable (see below). Also, you must have v1.3 of the Kaluga kit, v1.2 has some incompatible wiring that makes it unusable in this project!

OV7670 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 and OV5640) exist, but they require different initialization code and cannot currently be used.


The ESP32-S2-Kaluga-1 kit is a full featured development kit by Espressif for the ESP32-S2 that comes with everything but the kitchen sink! From TFTs to touch panels,...
In Stock
If you'd like to connect a USB-capable chip to your USB host, this cable will make the task very simple. There is no converter chip in this cable! Its basically a...
In Stock
The Raspberry Pi foundation changed single-board computing when they released the Raspberry Pi computer, now they're ready to...
In Stock
Are you ready? Really ready? Cause here comes the Adafruit Grand Central featuring the Microchip ATSAMD51. This dev board is so big, it's not...
Out of Stock
As technology changes and adapts, so does Adafruit! Rather than the regular USB A, this cable has USB C to Micro B plugs!USB C is the latest...
Out of Stock
This here is your standard A to micro-B USB cable, for USB 1.1 or 2.0. Perfect for connecting a PC to your Metro, Feather, Raspberry Pi or other dev-board or...
In Stock
1 x OV7670 Camera Boards
Lot of 5 camera boards
1 x OV2640 Camera Board
Camera module, 2 Megapixel

This guide was first published on Jun 29, 2021. It was last updated on 2022-01-12 12:16:00 -0500.

This page (Overview) was last updated on Apr 28, 2022.

Text editor powered by tinymce.