Skip to Content

Iniziare con XIAO ESP32-S3-Plus e Arduino IDE

Iniziare con XIAO ESP32-S3-Plus e Arduino IDE

Lo XIAO ESP32-S3-Plus è una scheda microcontrollore compatta e potente, progettata per progetti embedded avanzati e IoT. È basata sul processore dual-core ESP32-S3 che funziona fino a 240 MHz. La scheda include connettività Wi-Fi e Bluetooth Low Energy integrate per applicazioni wireless.

Rispetto allo XIAO ESP32-S3 mantiene il fattore di forma ridotto ma aggiunge più memoria e capacità di I/O. La versione Plus dispone di 16 MB di flash, 8 MB di PSRAM e 20 pin GPIO.

La scheda supporta molteplici interfacce come UART, I2C, SPI e I2S. Include anche la ricarica integrata della batteria e modalità a basso consumo per un funzionamento efficiente dal punto di vista energetico.

In questo tutorial imparerai come programmare lo XIAO ESP32-S3-Plus usando l’Arduino IDE.

Dove Acquistare

Puoi acquistare lo XIAO ESP32-S3-Plus su Seeed Studio. Ti servirà anche un cavo USB-C, se non ne possiedi già uno. Potrebbe essere necessario un piccolo dissipatore se esegui calcoli intensivi sulla scheda.

XIAO ESP32-S3-Plus

Cavo USB C

Piccolo dissipatore 9×9 mm

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.

Caratteristiche della scheda XIAO ESP32-S3 Plus

Lo XIAO ESP32-S3-Plus è basato sul microcontrollore ESP32-S3R8. Utilizza una CPU dual-core Xtensa LX7 con frequenza fino a 240 MHz. L’immagine sotto mostra il fronte e il retro della scheda.

Front and Back of XIAO ESP32-S3-Plus board
Fronte e retro della scheda XIAO ESP32-S3-Plus

Il processore è a 32 bit e progettato per carichi embedded e IoT. Supporta istruzioni vettoriali che migliorano le prestazioni per l’elaborazione del segnale e compiti di AI.

La scheda è compatibile con i framework di sviluppo più comuni. Supporta Arduino, MicroPython e ESP-IDF.

Configurazione della Memoria

La versione Plus offre una configurazione di memoria più ampia rispetto al modello standard. Include 16 MB di memoria flash esterna e 8 MB di PSRAM per la gestione dinamica dei dati.

Questa combinazione consente applicazioni più complesse, supportando buffering, elaborazione di immagini e carichi AI edge.

Connettività Wireless

La scheda integra un completo sottosistema Wi-Fi a 2.4 GHz. Supporta anche Bluetooth Low Energy 5.0 e Bluetooth Mesh. È possibile collegare un’antenna esterna tramite un’interfaccia U.FL, migliorando portata e stabilità del segnale nei progetti embedded. La foto sotto mostra l’antenna accanto alla scheda XIAO ESP32-S3-Plus:

XIAO ESP32-S3-Plus with external Antenna
XIAO ESP32-S3-Plus con antenna esterna

GPIO e Interfacce

Lo XIAO ESP32-S3-Plus offre un set esteso di pin GPIO, fino a 20. Pin aggiuntivi sono disponibili tramite pad castellati sul retro della scheda. L’immagine seguente mostra il pinout dello XIAO ESP32-S3-Plus:

Pinout dello XIAO ESP32-S3-Plus (source)

La scheda supporta molteplici interfacce di comunicazione: due UART, una I2C, una I2S e due SPI. Fornisce anche ingressi analogici tramite canali ADC.

È incluso un connettore B2B per schede di espansione. Nota che il connettore B2B dello XIAO ESP32-S3-Plus è compatibile con la Wio-SX1262 scheda di espansione ma non con la scheda sensore camera Plug-in.

B2B connector of XIAO ESP32-S3-Plus
Connettore B2B dello XIAO ESP32-S3-Plus

Gestione dell’Alimentazione

La scheda supporta l’alimentazione USB Type-C a 5 V. Supporta anche l’ingresso diretto da batteria Li-ion o LiPo. È incluso un circuito integrato di ricarica batteria con corrente fino a 100 mA. La batteria va collegata tramite pad di saldatura sul retro della scheda:

Battery solder pads of XIAO ESP32-S3-Plus
Pad di saldatura batteria dello XIAO ESP32-S3-Plus

Lo XIAO ESP32-S3-Plus offre diverse modalità di alimentazione: attiva, modem sleep, light sleep e deep sleep. La corrente in deep sleep può scendere a valori nell’ordine dei microampere, permettendo progetti a basso consumo.

Caratteristiche Fisiche

La scheda segue il fattore di forma standard XIAO. Misura 21 x 17.8 x 5 mm. Utilizza passo pin da 2.54 mm per la maggior parte dei GPIO per compatibilità con breadboard. Sono presenti inoltre 9 GPIO con passo 1.27 mm SMD castellato e sul retro pad per il debug.

Dimensions of XIAO ESP32-S3-Plus
Dimensioni dello XIAO ESP32-S3-Plus

Il layout include un pulsante di reset e uno di boot. Presenta anche LED di stato per controllo utente e indicazione ricarica batteria.

Specifiche Tecniche

La tabella seguente riassume le caratteristiche tecniche dello XIAO ESP32-S3-Plus:

Parametro Specifiche
Microcontrollore ESP32-S3R8, Xtensa LX7 dual-core, 32 bit
Frequenza CPU Fino a 240 MHz
Connettività Wireless Wi-Fi 2.4 GHz, Bluetooth 5.0, Bluetooth Mesh
Memoria Flash 16 MB flash esterna
PSRAM 8 MB
GPIO Fino a 20 GPIO (inclusi pad posteriori)
Ingressi Analogici Fino a 9 canali ADC
Interfacce di Comunicazione 2× UART, 1× I2C, 1× I2S, 2× SPI
Interfaccia USB USB Type-C per alimentazione e programmazione
Tensione di Funzionamento 5 V (USB), ~3.7–4.2 V (batteria)
Supporto Batteria Li-ion / LiPo con ricarica integrata
Corrente di Ricarica Fino a 100 mA
Consumo Energetico (Wi-Fi attivo) ~81 mA
Consumo Energetico (Deep Sleep) ~33 µA
Modalità di Alimentazione Attiva, modem sleep, light sleep, deep sleep
Dimensioni 21 × 17.8 mm
Temperatura di Funzionamento -40 °C a 65 °C
Caratteristiche Aggiuntive Connettore B2B, pulsante reset, pulsante boot, LED di stato

Installare ESP32 Core

Se vuoi usare l’Arduino IDE per programmare la scheda, devi prima installare l’ESP32 Core per abilitare il supporto alle schede ESP32 nell’IDE. Apri il tuo  Arduino IDE  e segui i passaggi indicati di seguito. Se hai problemi, puoi trovare istruzioni più dettagliate nel nostro tutorial Install ESP32 core in Arduino IDE.

URL aggiuntivi per il Boards Manager

Per prima cosa apri la finestra Preferenze selezionando “Preferences…” dal menu “File”:

Open Preferences Dialog
Apri la finestra Preferenze

Si aprirà la finestra Preferenze mostrata sotto. Nella scheda Settings troverai in basso una casella di testo etichettata “Additional boards manager URLs”:

In questo campo incolla il seguente URL: “https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json

Questo permetterà all’Arduino IDE di trovare le librerie core ESP32. Successivamente installeremo le librerie core ESP32 tramite il Boards Manager.

Boards Manager

Apri il BOARDS MANAGER cliccando sull’icona della scheda nella barra laterale dell’Arduino IDE:

Board icon in Sidebar
Icona scheda nella barra laterale

Vedrai apparire il BOARDS MANAGER a destra della barra laterale. Digita “ESP32” nel campo di ricerca in alto e dovresti vedere due tipi di schede ESP32: “Arduino ESP32 Boards” e “esp32 by Espressif”. Noi vogliamo le librerie esp32 di Espressif. Clicca su INSTALL e attendi il completamento del download e installazione.

Install ESP32 Core libraries
Installa le librerie core ESP32

Una volta installate, il tuo Boards Manager dovrebbe apparire così, anche se la versione (qui 3.3.7) potrebbe essere diversa.

ESP32 core installed
Core ESP32 installato

Nel passaggio successivo ti mostro come selezionare la scheda ESP32 per lo XIAO ESP32-S3-Plus.

Seleziona la scheda XIAO_ESP32S3_PLUS

Puoi selezionare una scheda dal menu a tendina sotto la barra dei menu: nell’esempio sotto è selezionata una Arduino Uno.

Bord selector
Selettore scheda

Cliccando sul nome della scheda attualmente selezionata (Arduino Uno) si aprirà la finestra di selezione scheda. Nel campo di ricerca digita “xiao s3” e seleziona “XIAO_ESP32S3_PLUS” come mostrato sotto:

Seleziona XIAO_ESP32S3_PLUS nel Board Manager

Se la scheda è collegata al PC via USB, potrai anche selezionare la porta COM. Nello screenshot sopra è COM9, ma nel tuo caso potrebbe essere un’altra porta COM.

Esempi di Codice

In questa sezione ti fornirò alcuni esempi di codice per provare le principali funzionalità dello XIAO ESP32-S3-Plus.

Lampeggiare il LED integrato

Iniziamo con il classico esempio Blink. Accende e spegne il LED integrato per un secondo. Il LED a bordo dello XIAO ESP32-S3-Plus è collegato al GPIO21 ma è invertito. LOW significa LED acceso, HIGH significa LED spento. Puoi vedere questo nell’esempio di codice sotto:

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  Serial.println("Off");
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);     
  Serial.println("On");                 
  digitalWrite(LED_BUILTIN, LOW);   
  delay(1000);                      
}

Lettura e Scrittura GPIO

Nei seguenti esempi molto brevi leggiamo e scriviamo sui GPIO. Per specificare i pin nel codice puoi usare il numero GPIO x o il numero Dx. Per esempio, secondo il pinout, D3 o GPIO4 identificano lo stesso pin e nel codice puoi usare uno o l’altro. I due esempi di codice seguenti sono identici e impostano GPIO4 a HIGH:

digitalWrite(D3, HIGH);  // D3 == GPIO4
digitalWrite(4, HIGH);  // D3 == GPIO4

Se vuoi leggere segnali analogici puoi usare le costanti predefinite Ax. Per esempio, il codice seguente legge un ingresso analogico da A3, che è lo stesso pin GPIO4:

int val = analogRead(A3);  // A3 == GPIO4
int val = analogRead(4);  // A3 == GPIO4

I valori analogici variano da 0 a 4095, equivalenti a una tensione in ingresso tra 0 e 3.3V.

Ingresso Touch

Questo esempio mostra come usare i pin touch capacitivi dello XIAO ESP32-S3-Plus per rilevare tocchi. Se tocchi il primo pin (D0) della scheda il LED integrato si accenderà. Potrebbe essere necessario regolare la soglia di rilevamento.

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  int value = touchRead(T1);
  Serial.println(value);

  if (value > 30000) { 
    digitalWrite(LED_BUILTIN, LOW);
  } else {
    digitalWrite(LED_BUILTIN, HIGH);
  }

  delay(200);
}

Wi-Fi

L’esempio seguente mostra come connettere lo XIAO ESP32-S3-Plus a una rete Wi-Fi. Funzionerà anche senza antenna esterna se sei vicino al router Wi-Fi, ma per una migliore portata è consigliato installare l’antenna.

#include <WiFi.h>

const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nConnected");
  Serial.println(WiFi.localIP());
}

void loop() {
}

Bluetooth

Questo ultimo esempio dimostra come creare un semplice server Bluetooth Low Energy (BLE).

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>

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

  BLEDevice::init("XIAO-ESP32-S3");
  BLEServer *pServer = BLEDevice::createServer();
  BLEDevice::getAdvertising()->start();

  Serial.println("BLE server started");
}

void loop() {
}

Puoi verificare se il server è attivo usando uno scanner BLE sul tuo telefono. Opzioni comuni sono nRF Connect o LightBlue. Avviando la scansione vedrai apparire “XIAO-ESP32-S3”.

Conclusioni

Questo articolo ti ha mostrato come iniziare con lo Seeed Studio XIAO ESP32-S3-Plus. Seeed Studio fornisce ulteriori informazioni nel suo Wiki.

Rispetto allo XIAO ESP32-S3, lo XIAO ESP32-S3-Plus ha più Flash e pin GPIO. Tuttavia manca del microfono del XIAO MG24 Sense o della camera (e microfono) del XIAO-ESP32-S3-Sense. Se vuoi registrare audio o trasmettere video queste schede sono una scelta migliore. Ma se ti serve più memoria o I/O, scegli lo XIAO ESP32-S3-Plus.

Se hai domande sentiti libero di lasciarle nella sezione commenti.

Buon divertimento con il tinkering 😉