Skip to Content

Getting Started with T-Camera-Plus S3

Getting Started with T-Camera-Plus S3

In this tutorial you will learn how to get started with the LILIGO T-Camera-Plus S3 board using the Arduino IDE environment.

The LilyGO T-Camera-Plus S3 is a compact, ESP32-S3–based development board designed for IoT and computer vision applications. It integrates an OV2640 camera, microphone and display. Powered by the dual-core ESP32-S3 with AI acceleration support and 8 MB of PSRAM, it can handle real-time image capture, face detection, and data streaming tasks.

In this article we will walk through the essential setup steps, such installing the libraries, the ESP32 core and preparing the code for a webserver that streams video data over Wi-Fi from the T-Camera-Plus S3 to your web browser.

Required Parts

You will need a T-Camera-Plus S3 and a USB-C cable to program the board and to try out the code examples.

LILYGO T-Camera-Plus S3

USB C Cable

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Hardware of the T-Camera Plus S3

The T-Camera-Plus S3 is built around Espressif’s ESP32-S3 microcontroller, a dual-core Xtensa LX7 processor operating at up to 240 MHz. It includes vector instructions optimized for AI and signal-processing workloads, making it well-suited for embedded vision and audio applications. The chip integrates 512 KB of SRAM and is paired with 8 MB of PSRAM and 16 MB of SPI flash memory. The picture below shows the front and back of the board:

Front and back of T-Camera-Plus S3 board
Front and back of T-Camera-Plus S3 board (source)

Camera

For imaging, the board uses the OmniVision OV2640 camera sensor, which supports resolutions up to 1600 × 1200 (UXGA) and communicates over an 8-bit parallel DVP interface. The camera is connected directly to the ESP32-S3’s GPIO matrix, utilizing a 20 MHz XCLK signal for synchronization. The sensor’s onboard JPEG compression reduces memory load and transmission bandwidth, allowing smooth frame streaming over Wi-Fi. The camera module is attached via a ribbon connector and the lends can be adjusted for focus.

Components

The board features a 1.3-inch TFT display driven by the ST7789 controller, connected via SPI. This display provides a 240 × 240 pixel resolution and can be used to preview captured frames, display sensor data, or show a local user interface. Adjacent to the display is an AP1511B power management IC that provides efficient voltage regulation for the ESP32-S3 and peripheral components. A microphone (INMP441) is integrated for capturing audio input through an I²S interface, enabling applications that combine audio and vision processing.

Connectivity

Connectivity is handled through the ESP32-S3’s integrated 2.4 GHz Wi-Fi (802.11 b/g/n) and Bluetooth 5 LE radios with an onboard antenna. The board also includes a USB Type-C port for programming and power, a reset button, a user key (KEY1), and several exposed GPIO pins for expansion. Additional features include a programmable LED and onboard power control circuitry to enable or disable peripherals for power optimization.

Pinout of the T-Camera-Plus S3 board
Pinout of the T-Camera-Plus S3 board (source)

Technical Specification

The following table summarizes the technical specification of the LILYGO T-Camera-Plus S3 board:

SpecificationDescription
MicrocontrollerESP32-S3 (Xtensa® LX7 dual-core, up to 240 MHz)
Flash Memory16 MB SPI flash
PSRAM8 MB external PSRAM
Camera SensorOmniVision OV2640, 1600 × 1200 px max resolution, JPEG output
Display1.3″ TFT (ST7789 driver), 240 × 240 px, SPI interface
MicrophoneINMP441 digital MEMS microphone (I²S interface)
Wireless Connectivity2.4 GHz Wi-Fi (802.11 b/g/n) + Bluetooth 5 LE
USB InterfaceUSB Type-C (for programming, serial, and power)
ButtonsReset button and user button (KEY1)
Power ManagementAP1511B DC-DC converter, on-board power control circuitry
Operating Voltage5 V (via USB Type-C)
GPIO AvailabilityLimited exposed pins for peripheral expansion
Board DimensionsApproximately 58 mm × 25 mm × 10 mm

The schematics for the board can be found at the following link:

Installation of Libraries

First we will install the libraries needed to compile code for the T-Camera-Plus S3 board. Go to LILYGO github repo for the display at T-CameraPlus-S3. Click on the green “<> Code” button and then “Download ZIP” to download the repo as a ZIP file:

Next unpack the ZIP file to extract it contents. You should see the following files in the unpacked folder named “T-CameraPlus-S3-arduino-esp32-libs_V2.0.14”:

We need to copy the contents of the “libraries” folder into the “libraries” folder for the Arduino IDE. Under Windows the “libraries” folder is typically located under:

C:\Users\<username>\OneDrive\Documents\Arduino\libraries

Since this folder already contains installed libraries, I recommend you temporarily rename it, e.g. to “_libraries” and create a new folder named “libraries”. This way you avoid conflicts with your already installed libraries and you don’t loose them either. Later you can easily revert this change. The picture below shows how your “Arduino” folder with the libraries should look like:

Next we copy the files in the “libraries” folder into the new “libraries” folder as shown below:

That completes the installation of the required libraries. In the next section we install the ESP32 core.

Installation of ESP32 core

Apart from the libraries we also need to install a specific version of the ESP32 core. The name of the ZIP file (T-CameraPlus-S3-arduino-esp32-libs_V2.0.14) of the github repo indicates that the Version 2.0.14 should be used. The current version (3.3.x) is not supported (as of Nov 2025) and the code will not compile.

Downgrading the version of the ESP32 is easy. Open the BOARDS MANAGER, enter “ESP32” to filter for ESP32 boards and then select Version 2.0.14 for the esp32 by Espressif Systems. The picture below shows how this looks like after downgrading the ESP32 core:

Now we are almost ready to try out the camera.

Code for Camera_WebServer Example

In this section we will prepare, flash and run the code for the Camera_WebServer that can be found in the examples folder of the github repo. Since we downloaded the github repo, you have the example code already on your computer. Open the “T-CameraPlus-S3-arduino-esp32-libs_V2.0.14” folder on your computer, then go to “examples” and then open the “Camera_WebServer” folder:

There are a two things we need to change to be able to run the Camera_WebServer.ino, though.

Add pinconfig.h file

Firstly, the project folder for the Camera_WebServer Example is missing a file with the pin configuration for the camera. You can find this file (pin_config.h) in the “private_library” folder of the “T-CameraPlus-S3-arduino-esp32-libs_V2.0.14” folder. Just copy it into the Camera_WebServer project as shown below:

After copying the file, your Camera_WebServer should contain the following files:

Wi-Fi Credentials

Secondly, you need to set the correct credentials for your Wi-Fi. Open the Camera_WebServer.ino file. At the beginning of the file you will see definitions for WIFI_SSID and WIFI_PASSWORD:

#include <WiFi.h>
#include "camera_index.h"
#include "app_httpd.tpp"
#include "pin_config.h"

#define WIFI_SSID "LilyGo-AABB"
#define WIFI_PASSWORD "xinyuandianzi"

bool OV2640_Initialization(void)
{
...

Change them to the SSID and PASSWORD for your Wi-Fi network.

Upload Code to T-Camera-Plus S3

Now we are almost ready to upload the code to the T-Camera-Plus S3. Select “ESP32S3 Dev Module” as board and make sure it is connected and recognized at an COM port:

Next under the “Tools” menu set the following parameters:

Most important are Flash Size, Partition Scheme and PSRAM. The other parameters should be the default settings but you better check. When printing to the Serial Monitor the USB_CDC_ON_BOOT configuration needs to be turned on as well.

Now you can upload the code to your T-Camera_Plus S3 and hopefully see the following information on the Serial Monitor:

It tells you the camera model, that the board could connect to the WiFi and at which IP address the webserver for the camera is running. The error messages regarding the partitioning doesn’t seem to cause issues and can be ignored.

Open your Web browser, enter the IP Address, e.g. “192.168.1.242” in the address bar and a sidebar with a menu for the webserver should appear:

Click on “Start Stream” at the bottom of that menu (just above Advanced Settings):

and you should be able to enjoy a video stream in your browser:

If the video of the is T-Camera-Plus S3 appears blurry remember that you can adjust the focus of the camera lens by turning it:

And that’s it! Should you have issues flashing the T-Camera-Plus S3 board, have a look at the next section.

Can’t upload code to T-Camera-Plus S3

I found that uploading the code for the Camera_WebServer and other bigger code examples to the T-Camera-Plus S3 often doesn’t work. Holding the Boot button, resetting the board, restarting the computer – nothing worked.

The flashing started successfully but then before reaching 100% failed with the the error message:

A serial exception error occurred: Cannot configure port, something went wrong. Original message: PermissionError(13, ‘The device does not recognize the command.’, None, 22)
Note: This error originates from pySerial. It is likely not a problem with esptool, but with the hardware connection or drivers.

Good news is, I found a way to overcome this problem. Just create another Arduino project with minimal code and flash that code if you encounter the above error. For instance, I used the following example code:

void setup() {
  Serial.begin(115200);
}

void loop() {
  delay(1000);
  Serial.println("loop");
}

For some reason, this always works and after that you can flash the bigger code (Camera_WebServer) again and it works as well.

Conclusion

In this tutorial you learned how to get started with the T-Camera-Plus S3 board by LILYGO. We only flashed and ran the Camera_WebServer but the github repo has more examples you should check out.

Note that we also have a tutorial for the previous T-Camera S3 model: Getting Started with T-Camera S3, and should you be interested in other cameras and applications, have look at the following tutorials:

If you have any questions feel free to leave them in the comment section.

Happy tinkering 😉