Ai Thinker ESP32-CAM

by Ai-Thinker

Image of Board

More features

  • Flashlight
  • MicroSD Card Reader
  • Optional ESP32-MB expansion board includes buttons and Serial port
  • 8Mb PSRAM

ESP32-CAM is a small sized ESP32 camera module released by Ai-Thinker. The module can work independently with a size of only 27 x 40.5 x 4.5mm, and a deep sleep current as low as 6mA.

ESP32-CAM can be widely used in various IoT applications, suitable for home smart devices, industrial wireless control, wireless monitoring, QR wireless identification, wireless positioning system signals and other IoT applications. It is an ideal solution for IoT applications.

ESP32-CAM adopts DIP package and can be used directly by plugging in the bottom plate, realizing the rapid production of products, providing customers with high-reliability connection methods, which is convenient for application in various IoT hardware terminal occasions.

Ultra-small 802.11b/g/n Wi-Fi + BT/BLE SoC module

Product Features

  • Using low-power dual-core 32-bit CPU, can be used as an application processor
  • Main frequency up to 240MHz, computing power up to 600 DMIPS
  • Built-in 520 KB SRAM, external 8MB PSRAM included
  • Support UART/SPI/I2C/PWM/ADC/DAC and other interfaces
  • Support OV2640 and OV7670 cameras, built-in flashlight
  • Support picture WiFI upload
  • Support TF card
  • Support multiple sleep modes
  • Embedded Lwip, FreeRTOS, and CircuitPython
  • Support STA/AP/STA+AP working mode
  • Support Smart Config/AirKiss one-click network configuration
  • Support secondary development

Application scenarios

  • Home smart device image transmission
  • Wireless monitoring
  • Smart agriculture
  • QR wireless recognition

Usage Notes

The serial port on the ESP32-MB adapter which usually ships with these boards has the Serial Request-To-Send (RTS) hardware flow-control line physically connected to the ESP32 Reset (RST) pin, and it also has the Serial Data-Terminal-Ready (DTR) hardware flow-control line physically connected to the ESP32 GPIO pin.

This allows software which knows this (e.g. Arduino) to automatically perform hardware resets over the serial port by pulsing the RTS-line, and to automatically perform firmware updates by holding the DTR line low while pulsing the RTS line.

Unfortunately, many serial emulators and even some python libraries which communicate via Serial ports will typically set the state of one of both of these hardware flow control lines - this means that your ESP32-CAM might not be able to boot or be used by some software. Notable examples include Thonny, ampy, pyboard, and Windows version of Python itself*

* The work-around for Windows python is to first create the serial port object, without specifying which port to use - this bypasses the Python windows bug which always sets the RTS/DTR pins. You can then tell the serial object which port, and set the RTS/DTR pins as you like.

CircuitPython on ESP32

Want to learn how to load circuitpython onto this board? check out this on the Adafruit learning system



Have some info to add for this board? Edit the source for this page here.

CircuitPython 9.1.0-beta.3

This is the latest development release of CircuitPython that will work with the Ai Thinker ESP32-CAM.

Alpha development releases are early releases. They are unfinished, are likely to have bugs, and the features they provide may change. Beta releases may have some bugs and unfinished features, but should be suitable for many uses. A Release Candidate (rc) release is considered done and will become the next stable release, assuming no further issues are found.

Please try alpha, beta, and rc releases if you are able. Your testing is invaluable: it helps us uncover and find issues quickly.

Release Notes for 9.1.0-beta.3


Built-in modules available: _asyncio, _bleio, _pixelmap, adafruit_bus_device, adafruit_pixelbuf, aesio, alarm, analogbufio, analogio, array, atexit, audiobusio, audiocore, audiomixer, audiomp3, binascii, bitbangio, bitmaptools, board, builtins, builtins.pow3, busdisplay, busio, busio.SPI, busio.UART, canio, codeop, collections, countio, digitalio, displayio, epaperdisplay, errno, espcamera, espidf, espnow, espulp, fontio, fourwire, framebufferio, frequencyio, getpass, gifio, hashlib, i2cdisplaybus, io, ipaddress, jpegio, json, keypad, keypad.KeyMatrix, keypad.Keys, keypad.ShiftRegisterKeys, keypad_demux, keypad_demux.DemuxKeyMatrix, locale, math, max3421e, mdns, memorymap, microcontroller, msgpack, neopixel_write, nvm, onewireio, os, os.getenv, paralleldisplaybus, ps2io, pulseio, pwmio, qrio, rainbowio, random, re, rotaryio, rtc, sdcardio, select, sharpdisplay, socketpool, ssl, storage, struct, supervisor, synthio, sys, terminalio, time, touchio, traceback, ulab, usb, vectorio, warnings, watchdog, wifi, zlib

Absolute Newest

Every time we commit new code to CircuitPython we automatically build binaries for each board and language. The binaries are stored on Amazon S3, organized by board, and then by language. These releases are even newer than the development release listed above. Try them if you want the absolute latest and are feeling daring or want to see if a problem has been fixed.

Previous Versions of CircuitPython

All previous releases of CircuitPython are available for download from Amazon S3 through the button below. For very old releases, look in the OLD/ folder for each board. Release notes for each release are available at GitHub button below.

Older releases are useful for testing if you something appears to be broken in a newer release but used to work, or if you have older code that depends on features only available in an older release. Otherwise we recommend using the latest stable release.