Camera API
Xedge32 features the ESP32 Camera Driver and a Lua interface to this driver. To use the camera API, follow these steps:
Note that the cam documentation is not yet complete!!!
Create a camera object by invoking
esp32.cam
, passing a configuration table as an argument.Call the
cam:read
method as many times as needed to fetch new images.Once done, call the
cam:close
method to close the camera object and free up resources.
The API functions and methods are detailed below:
esp32.cam(cfg)
This function creates a camera object.
cfg: A configuration table, whose structure is detailed below.
The function returns the camera object if successful. If the creation of the camera object fails, it returns nil
, error message
.
The camera object provides the following methods:
cam:read()
This method is used to fetch a new image from the camera.
cam:close()
This method closes the camera object, freeing up any resources it was using.
The Configuration Table
The argument accepted by esp32.cam is a Lua table that maps various parameters to specific GPIO pins on the ESP32 board. These settings are used to initialize the camera module on the ESP32-CAM board.
Required parameters:
d0 to d7: These are the GPIO pins that the camera module’s pixel data lines (D0-D7) are connected to. The camera module sends digital pixel data to the ESP32 through these lines.
xclk: This is the GPIO pin that the camera clock (XCLK) is connected to.
pclk: This is the GPIO pin that the pixel clock (PCLK) is connected to.
vsync: This is the GPIO pin that the vertical sync (VSYNC) is connected to.
href: This is the GPIO pin that the horizontal reference (HREF) is connected to.
sda: This is the GPIO pin that the SCCB Data (SIOD) is connected to.
scl: This is the GPIO pin that the SCCB Clock (SIOC) is connected to.
reset: This is the GPIO pin that the camera reset line is connected to. Using this pin, you can perform a hardware reset of the camera.
freq: This sets the frequency of the XCLK signal to the camera module. It’s typically set to a value between 10 MHz and 20 MHz. Lower frequencies might be more stable, but could lead to lower frame rates.
Optional parameters:
pwdn: This is the GPIO pin that the Power Down (PWDN) line is connected to.
frame: This defines the resolution of the camera. “HD” stands for High Definition, which is typically 1280x720 pixels. This is not related to a GPIO pin but rather a configuration setting for the camera.
format: This sets the pixel format for the camera. Typical values include “RGB565”, “YUV422”, “GRAYSCALE”, or “JPEG”. The exact formats supported can depend on the specific camera module used.
vflip: If set to true, this setting flips the image vertically. This can be useful if the camera is physically installed upside down.
hmirror: If set to true, this setting mirrors the image horizontally. This can be useful if the camera image needs to be mirrored for some reason.
Configuration Table Examples:
-- Settings for Seeed Studio XIAO ESP32S3 Sense
local cfg={
d0=15, d1=17, d2=18, d3=16, d4=14, d5=12, d6=11, d7=48,
xclk=10, pclk=13, vsync=38, href=47, sda=40, scl=39, pwdn=-1,
reset=-1, freq="20000000", frame="HD"
}
-- Settings for Aideepen ESP32-CAM
local cfg={
d0=5, d1=18, d2=19, d3=21, d4=36, d5=39, d6=34, d7=35,
xclk=0, pclk=22, vsync=25, href=23, sda=26, scl=27, pwdn=32,
reset=-1, freq="20000000", frame="HD"
}
-- Settings for FREENOVE ESP32-S3 WROOM
local cfg={
d0=11, d1=9, d2=8, d3=10, d4=12, d5=18, d6=17, d7=16,
xclk=15, pclk=13, vsync=6, href=7, sda=4, scl=5, pwdn=-1,
reset=-1, freq="20000000", frame="HD"
}