In questo tutorial imparerai come iniziare a usare la scheda LILIGO T-Camera S3.
La LILYGO T-Camera S3 è una scheda di sviluppo compatta basata sul microcontrollore dual-core ESP32-S3 FN16R8, abbinata a un modulo fotocamera OV2640, 8 MB di PSRAM e 16 MB di memoria flash.
In questo articolo vedremo i passaggi essenziali per la configurazione, come l’installazione delle librerie, del core ESP32 e la preparazione del codice per un webserver che trasmette video in streaming via Wi-Fi dalla T-Camera S3 al tuo browser.
Componenti necessari
Ti serviranno una T-Camera S3 e un cavo USB-C per programmare la scheda e provare gli esempi di codice. I link seguenti mostrano dove acquistarli.

LILYGO T-Camera S3

Cavo USB C
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 della T-Camera S3
La LILYGO T-Camera S3 è una scheda di sviluppo che utilizza il microcontrollore dual-core ESP32‑S3FN16R8. Questo SoC funziona fino a 240 MHz e supporta estensioni vettoriali, rendendolo adatto a compiti di machine learning e visione artificiale. La scheda integra 8 MB di PSRAM e 16 MB di memoria flash, utili per memorizzare modelli, immagini o dati di log.

Componenti
Per la cattura delle immagini, la scheda integra un modulo fotocamera OV2640 da 2 megapixel (risoluzione UXGA 1622×1200) di serie; è disponibile anche una versione opzionale da 5 megapixel. È incluso un piccolo display OLED monocromatico (0,96 pollici, 128×64 pixel) pilotato via SSD1306 su I²C, che offre un’interfaccia visiva semplice o un display di stato. Sul lato audio è presente un microfono e un sensore di movimento PIR fornisce capacità base di rilevamento del movimento.
Connettività
La connettività è gestita dai moduli integrati WiFi 2.4 GHz (802.11 b/g/n) e Bluetooth 5 (LE) dell’ESP32-S3, che permettono comunicazioni wireless e accesso remoto. Una porta USB-C fornisce alimentazione e accesso per programmazione/debug, mentre un connettore JST a 5 pin offre ulteriori I/O come GPIO, UART, 3.3 V/5 V e massa. Le dimensioni della scheda sono circa 69 × 28 × 18,5 mm. L’immagine sotto mostra il pinout della scheda:

Alimentazione
La gestione dell’alimentazione supporta l’alimentazione via USB e un connettore JST-GH per batteria Li-Po a cella singola, rendendo la scheda adatta a usi portatili. La scheda espone anche un pulsante di accensione e uno di boot.
Specifiche tecniche
La tabella seguente riassume le specifiche tecniche della scheda LILYGO T-Camera S3:
| Parametro | Specifiche |
|---|---|
| Microcontrollore | ESP32-S3FN16R8 dual-core (Tensilica LX7, fino a 240 MHz) |
| PSRAM | 8 MB |
| Memoria Flash | 16 MB |
| Modulo Fotocamera | OV2640 (2 MP, UXGA 1622×1200) standard; variante opzionale da 5 MP |
| Display | OLED 0,96″, 128×64 pixel, SSD1306 via I²C |
| Connettività Wireless | WiFi 2.4 GHz 802.11 b/g/n; Bluetooth 5.0 LE |
| Sensore di Movimento | PIR (infrarosso passivo) |
| Ingresso Audio | Microfono integrato |
| Alimentazione e Ricarica | Porta USB-C; connettore batteria Li-Po JST-GH |
| Dimensioni della Scheda | Circa 69 × 28 × 18,5 mm (scheda); 75 × 35 × 12 mm (con custodia) |
| Interfacce di Programmazione e I/O | USB-C per programmazione |
Installazione delle Librerie
In questa sezione installeremo le librerie necessarie per compilare il codice per la scheda T-Camera S3. Vai al repository LILYGO su github per il display a LilyGo-Cam-ESP32S3. Clicca sul pulsante verde “<> Code” e poi su “Download ZIP” per scaricare il repository come file ZIP:

Successivamente estrai il file ZIP per ottenere i suoi contenuti. Dovresti vedere i seguenti file nella cartella estratta chiamata “LilyGo-Cam-ESP32S-master”:

Dobbiamo copiare il contenuto della cartella “lib” nella cartella “libraries” dell’Arduino IDE. Su Windows la cartella “libraries” si trova tipicamente in:
C:\Users\<username>\OneDrive\Documents\Arduino\libraries
Poiché questa cartella contiene già librerie installate, ti consiglio di rinominarla temporaneamente, ad esempio in “_libraries”, e creare una nuova cartella chiamata “libraries”. In questo modo eviti conflitti con le librerie già installate senza perderle. Potrai facilmente tornare indietro in seguito. L’immagine sotto mostra come dovrebbe apparire la tua cartella “Arduino” con le librerie:

Ora copiamo i file della cartella “lib” nella nuova cartella “libraries” come mostrato sotto:

Così completiamo l’installazione delle librerie richieste (AceButton, ESP32QRCodeReader, U8g2, XPowersLib). Nella sezione successiva installeremo il core ESP32.
Installazione del core ESP32
Oltre alle librerie, dobbiamo installare una versione specifica del core ESP32. Il github repo per la T-Camera S3 indica che il Versione 2.0.17 deve essere usata. Sembra che la versione attuale (3.3.x) non sia supportata (a novembre 2025) e il codice non compila – anche se non ho testato personalmente.
Downgradare la versione del core ESP32 è semplice. Apri il BOARDS MANAGER, digita “ESP32” per filtrare le schede ESP32 e seleziona Versione 2.0.17 per l’ESP32 di Espressif Systems. L’immagine sotto mostra come appare dopo il downgrade del core ESP32:

Ora siamo quasi pronti per provare la fotocamera.
Codice per l’Esempio Minimo di Fotocamera
In questa sezione prepareremo, caricheremo ed eseguiremo il codice per il Minimal Camera Example che si trova nella examples folder del repository github. Avendo scaricato il repository, hai già il codice esempio sul tuo computer. Apri la cartella “LilyGo-Cam-ESP32S-master” sul tuo computer, poi vai in “examples” e apri la cartella “MinimalCameraExample”:

Ci sono alcune modifiche da fare per poter eseguire il MinimalCameraExample.ino, però.
Rinomina il file Secrets
Per prima cosa, rinominiamo il file “secrets.h.example” in “secrets.h”, perché ci serve per le credenziali WiFi:

Compila i Secrets
Se ora apri il progetto MinimalCameraExample.ino nell’Arduino IDE, dovresti vedere una scheda con il file “secrets.h”.

Cliccaci sopra e inserisci SSID e Password della tua rete WiFi. Puoi inserire lo stesso SSID e Password tre volte:
// If using station mode, please fill in the wifi ssid and password here, cahnge as per your wireless settings #define WIFI_SSID1 "ssid_from_AP_1" #define WIFI_SSID_PASSWORD1 "your_password_for_AP_1" #define WIFI_SSID2 "ssid_from_AP_2" #define WIFI_SSID_PASSWORD2 "your_password_for_AP_2" #define WIFI_SSID3 "ssid_from_AP_3" #define WIFI_SSID_PASSWORD3 "your_password_for_AP_3"
Seleziona la modalità WiFi
Infine, dobbiamo fare due modifiche nel file MinimalCameraExample.ino. Sostituisci le parentesi angolari nell’include di secrets.h con virgolette e imposta il flag use_ap_mode su false:

Dopo queste modifiche, l’inizio del file MinimalCameraExample.ino dovrebbe apparire così:
#include <Arduino.h> #include <WiFi.h> #include <WiFiMulti.h> #include "esp_camera.h" #include "secrets.h" #define XPOWERS_CHIP_AXP2101 #include "XPowersLib.h" #include "utilities.h" void startCameraServer(); XPowersPMU PMU; WiFiMulti wifiMulti; String hostName = "LilyGo-Cam-"; String ipAddress = ""; bool use_ap_mode = false;
Carica il codice sulla T-Camera S3
Ora siamo quasi pronti per caricare il codice sulla T-Camera S3. Seleziona “ESP32S3 Dev Module” come scheda e assicurati che sia collegata e riconosciuta su una porta COM:

Poi, nel menu “Tools” imposta i seguenti parametri:

I più importanti sono Flash Size, Partition Scheme e PSRAM. Gli altri parametri dovrebbero essere quelli di default, ma è meglio controllare. Quando stampi sul Serial Monitor, la configurazione USB_CDC_ON_BOOT deve essere attivata.
Ora puoi caricare il codice sulla tua T-Camera S3 e, si spera, vedere le seguenti informazioni sul Serial Monitor:

Ti indica che la scheda si è connessa al WiFi e a quale indirizzo IP è attivo il webserver della fotocamera. I messaggi di errore riguardanti la partizione sembrano non causare problemi e possono essere ignorati.
Apri il tuo browser, inserisci l’indirizzo IP, ad esempio “192.168.1.111” nella barra degli indirizzi e dovrebbe apparire una barra laterale con un menu per il webserver:

Clicca su “Start Stream” in fondo a quel menu (appena sopra Advanced Settings):

e dovresti poter goderti lo streaming video nel browser:

Se tutto ha funzionato, congratulazioni ; )
Impossibile caricare il codice sulla T-Camera S3
Ho riscontrato che spesso il caricamento del codice per il MinimalCameraExample sulla T-Camera S3 non funziona. Tenere premuto il pulsante Boot/Reset, resettare la scheda, riavviare il computer – nulla ha funzionato.
Il flashing iniziava con successo ma poi, prima di raggiungere il 100%, falliva con il messaggio di errore:
Si è verificato un errore di eccezione seriale: impossibile configurare la porta, qualcosa è andato storto. Messaggio originale: PermissionError(13, ‘The device does not recognize the command.’, None, 22)
Nota: questo errore proviene da pySerial. Probabilmente non è un problema di esptool, ma della connessione hardware o dei driver.
La buona notizia è che ho trovato un modo per superare questo problema. Basta creare un altro progetto Arduino con codice minimale e caricarlo se incontri l’errore sopra:
void setup() {
Serial.begin(115200);
}
void loop() {
delay(1000);
Serial.println("loop");
}
Per qualche motivo, questo funziona sempre e dopo puoi caricare di nuovo il codice più grande (MinimalCameraExample) e funziona correttamente.
Conclusione
In questo tutorial hai imparato come iniziare con la scheda T-Camera S3 di LILYGO. Abbiamo solo caricato ed eseguito il Minimal Camera Example ma il repository github contiene altri examples che vale la pena esplorare.
Nota che abbiamo anche un tutorial per il nuovo modello T-Camera-Plus S3 Getting Started with T-Camera-Plus S3. E se sei interessato ad altre fotocamere e applicazioni, dai un’occhiata ai seguenti tutorial:
- Stream Video with ESP32 Camera Pro Kit
- Stream Video with ESP32-CAM
- Stream Video with ESP32-WROVER CAM
- Surveillance Camera with ESP32-CAM
- Object Detection with ESP32-CAM and YOLO
- Train an Object Detection Model with Edge Impulse for ESP32-CAM
Se hai domande, sentiti libero di lasciarle nella sezione commenti.
Buon divertimento con il tinkering 😉

