V
Visla Hardware
Portal R&D
🧩 Moduli & Shield ✓ Verified · 2026-06-08 ✓ In stock 🆕 Nuovo

diymore ESP32-S3 DevKitC-1 N16R8 + Screw Terminal Kit

diymore (chip Espressif ESP32-S3)
📦 Dev board
€21.59
diymore 2-pack ESP32-S3 DevKitC-1 N16R8 + screw shield
ESP32-S3-WROOM-1 N16R8 (16MB Flash + 8MB PSRAM)44 morsetti a vite (no più Dupont volanti)USB-C × 2 (OTG + UART debug)
🛒 Ordine
Data ordine · 2026-05-26
📑 Indice sezioni

Curiosity

Diymore “ESP32-S3 Screw Terminal Kit” (€21.59 su Amazon Business — 2 pezzi): bundle che include il modulo ESP32-S3 DevKitC-1 N16R8 (clone diymore della scheda Espressif ufficiale) + shield breakout con 44 morsetti a vite verdi. Risolve in modo definitivo il problema “fili Dupont che scappano” del banco Visla — avvitare le 8 connessioni del CC1101 EBYTE, le 5 dello SIM7080G HAT Waveshare, o le 3 del RXB6 e non doverle più ricontrollare.

Modello PCB su retro shield: S6483R_Y34_240506 (FACD0008-001 / -002 / -003).

Specs core:

  • Chip: ESP32-S3-WROOM-1-N16R8 (Xtensa LX7 dual-core @ 240 MHz)
  • Flash: 16 MB QSPI
  • PSRAM: 8 MB octal (più del 7080G S3 LilyGO 8 MB)
  • USB-C: 2 porte (D+/D- USB-OTG nativo su IO19/IO20 + UART CP210x per debug)
  • Power: USB-C 5V o jack DC 2.1 mm 6.5-9V
  • Wi-Fi: 802.11 b/g/n 2.4 GHz · Bluetooth LE 5.0 + Mesh
  • Antenna: PCB integrata + connettore IPEX/U.FL per esterna
  • RGB LED user su IO48 + builtin LED su IO38

🗺️ Pinout completo

diymore ESP32-S3 screw terminal expansion pinout completo ESP32-S3 DevKitC-1 N16R8 module pinout (sopra lo shield)

Lato sinistro (22 morsetti, dall’alto)

MorsettoGPIOFunzioni specialiNote
3.3VPower3.3V regolato (da LDO interno)
3.3VPowerduplicato per distribuire alimentazione
RSTReset hardwaretieni low per reset MCU
IO4GPIO 4Touch4 · ADC1_3 · RTC GPIO4wake-on-touch capable
IO5GPIO 5Touch5 · ADC1_4 · RTC GPIO5
IO6GPIO 6Touch6 · ADC1_5 · RTC GPIO6
IO7GPIO 7Touch7 · ADC1_6 · RTC GPIO7
IO15GPIO 15Touch12 · RXD1 · RTC0 · ADC2_4UART1 RX disponibile
IO16GPIO 16AL_32K_N · TXD1 · CTS0 · ADC2_5UART1 TX
IO17GPIO 17TXD1 (alt) · ADC2_6 · RTC GPIO17
IO18GPIO 18CLK_OUT3 · RXD1 (alt) · ADC2_7clock output
IO8GPIO 8SDA I2C · Touch8 · ADC1_7I2C standard Visla
IO3GPIO 3JTAG · Touch3 · ADC1_2 · RTC GPIO3strapping pin
IO46GPIO 46LOG (strapping ROM message)strapping pin
IO9GPIO 9SCL I2C · FSPIHD · Touch9 · ADC1_8I2C standard Visla
IO10GPIO 10FSPIIO4 · FSPI CS · Touch10 · ADC1_9SPI CS default
IO11GPIO 11FSPIIO5 · FSPI MOSI · Touch11 · ADC2_0SPI MOSI default
IO12GPIO 12FSPIIO6 · FSPI SCK · Touch12 · ADC2_1SPI SCK default
IO13GPIO 13FSPIIO7 · FSPI MISO · Touch13 · ADC2_2SPI MISO default
IO14GPIO 14FSPIWP · FSPIDQS · Touch14 · ADC2_3
5VPowerdirettamente da USB-C VBUS
GNDGround

Lato destro (22 morsetti, dall’alto)

MorsettoGPIOFunzioni specialiNote
GNDGround
TXGPIO 43UART0 TX (U0RXD/TXD0)console seriale debug
RXGPIO 44UART0 RX (U0TXD/RXD0)console seriale debug
IO1GPIO 1Touch1 · ADC1_0 · RTC GPIO1
IO2GPIO 2Touch2 · ADC1_1 · RTC GPIO2
IO42GPIO 42MTMS (JTAG)strapping pin
IO41GPIO 41CLK_OUT1 · MTDI
IO40GPIO 40CLK_OUT2 · MTDO
IO39GPIO 39MTCK · MICKstrapping pin
IO38GPIO 38BUILTIN LED · FSPIWPLED user-controllable
IO37GPIO 37SPI MISO OTG · FSPIQ · SPIDQS
IO36GPIO 36SPI SCK OTG · FSPICLK · SPIIO7
IO35GPIO 35SPI MOSI OTG · FSPID · SPIIO6
IO0GPIO 0BOOT (strapping)tieni low per entrare in download mode
IO45GPIO 45VSPI · strapping
IO48GPIO 48RGB LED · SPICLK_NLED RGB onboard
IO47GPIO 47SPICLK_P
IO21GPIO 21RTC GPIO21wake-up capable
IO20GPIO 20CTS · CLK_OUT1 · TXD2 · ADC2_9 · USB_D+UART2 TX o USB native
IO19GPIO 19RTS · CLK_OUT2 · RXD2 · ADC2_8 · USB_D-UART2 RX o USB native
GNDGround
GNDGroundduplicato

🔧 Quick-wire per moduli Visla bench

CC1101 EBYTE E07-M1101D-SMA (radio 433 MHz)

CC1101→ Morsetto diymoreFunzione
VCC3.3V ⚠️MAX 3.6V — non 5V
GNDGND
SCKIO12FSPI SCK
MISOIO13FSPI MISO
MOSIIO11FSPI MOSI
CSNIO10Chip select
GDO0IO4RX interrupt
GDO2IO5sync detect (opzionale)

RXB6 / RXB14 (receiver 433 MHz OOK semplice)

RXB6→ MorsettoFunzione
VCC5V4.5-5.5V
GNDGND
DATAIO2digital baseband

3 fili totali, library RCSwitch decodifica EV1527/PT2262 nativa.

SIM7080G HAT Waveshare (modem NB-IoT)

HAT pin→ MorsettoNote
VCC5VHAT è 5V tolerant
GNDGND
TX (HAT → ESP)IO15UART1 RX
RX (HAT ← ESP)IO16UART1 TX
PWRIO6momentary high per power on
RSTIO7active high reset

I2C sensori (BME280, LSM6DS3TR-C STEMMA QT, OLED, BMP180)

Sensor→ Morsetto
SDAIO8
SCLIO9
VCC3.3V
GNDGND

⚠️ Gotchas importanti

  • ⚠️ NON alimentare a 5V moduli a 3.3V (CC1101 friggi): controlla prima quale morsetto è 3.3V e quale 5V. I morsetti sono a coppia: 2× 3.3V in alto-sinistra, 1× 5V in basso-sinistra
  • ⚠️ Strapping pins: IO0 (BOOT), IO3, IO45, IO46 — non usarli per device fissi durante reset, perché vengono campionati al boot e cambiano la modalità di avvio
  • ⚠️ IO19 + IO20 condivisi con USB-OTG: se usi USB nativo dell’S3 (non solo CDC del CP210x), questi 2 GPIO sono bloccati. Per Visla v2 con USB-OTG riserva IO19/20
  • ⚠️ IO35-IO37 usati internamente per QSPI flash/PSRAM (octal PSRAM N16R8 versione → usa anche più pin SPI internamente). Verifica datasheet ESP32-S3-WROOM-1U N16R8 prima di usarli — alcuni potrebbero non essere disponibili in realtà
  • ⚠️ 2 porte USB-C: una è UART debug (CP210x), l’altra è USB-OTG nativo S3. Per programmare la prima volta usa la UART debug (più affidabile). Per upload veloce + AT passthrough → USB native

🧬 Bench Visla 2026-06-09 — lezioni dal debug CC1101

Sessione di 4 ore di debug col diymore + CC1101 EBYTE: scoperti diversi gotcha non-ovvi.

USBMode / CDCOnBoot decide DOVE va Serial

Il default Arduino ESP32 core 3.x è USBMode=hwcdc + CDCOnBoot=default → Serial sul USB nativo S3 (/dev/cu.usbmodemXXX). Ma per usare la porta CH9102 debug (/dev/cu.wchusbserialXXX), serve:

FQBN="esp32:esp32:esp32s3:FlashSize=16M,PartitionScheme=app3M_fat9M_16MB,PSRAM=opi,USBMode=default,CDCOnBoot=default"

Se sbagli, il flash riesce ma vedi solo silence sulla seriale (perché Serial.print va su un’altra porta).

Le 2 USB-C non sono intercambiabili per upload:

  • UART debug (CH9102): serve USBMode=default,CDCOnBoot=default per vedere log
  • USB-OTG nativo S3: serve USBMode=hwcdc,CDCOnBoot=cdc per vedere log

SmartRC-CC1101-Driver-Lib freeza su ESP32-S3

La libreria popolare CC1101 si blocca in Init() su ESP32-S3 (loop infinito wait MISO low). Workaround: scrittura registri raw via SPIClass(FSPI). Vedi dettagli + config corretta nella pagina CC1101 EBYTE → sezione “Bench Visla 2026-06-09”.

WiFi + brownout con USB-OTG nativo

Quando il cavo USB è sulla porta USB nativa S3 (non sulla CH9102), l’alimentazione VBUS passa attraverso il chip S3 stesso → corrente disponibile minore di ~150 mA. WiFi WiFi.begin() in peak può fare brownout e cause:

  • WiFi non si connette
  • ESP32 si resetta in loop
  • MARC=0x00 (CC1101 mai inizializzato perché setup early-exit)

Soluzione: usa la porta UART debug CH9102 per banco con WiFi attivo. Quella porta ha alimentazione USB diretta a VBUS senza intermediari.

Workflow ottimale Arduino-cli con diymore screw

# Flash + log via CH9102 (porta UART debug)
PORT=/dev/cu.wchusbserial5B790699921
FQBN="esp32:esp32:esp32s3:FlashSize=16M,PartitionScheme=app3M_fat9M_16MB,PSRAM=opi,USBMode=default,CDCOnBoot=default"
arduino-cli compile --fqbn "$FQBN" sketch_dir
arduino-cli upload -p "$PORT" --fqbn "$FQBN" sketch_dir
arduino-cli monitor -p "$PORT" -c baudrate=115200

Pattern affidabile setup()

void setup() {
  Serial.begin(115200); delay(2000);
  // 1. INIT HARDWARE LOCALE PRIMA (CC1101, sensori) — funziona anche senza WiFi
  if (cc1101_init()) attachInterrupt(...);
  // 2. WiFi DOPO, non-bloccante: se fallisce, continua comunque
  WiFi.mode(WIFI_STA); WiFi.begin(SSID, PASS);
  uint32_t t = millis() + 15000;
  while (WiFi.status() != WL_CONNECTED && millis() < t) { delay(500); Serial.print("."); Serial.flush(); }
  if (WiFi.status() == WL_CONNECTED) {
    server.begin();
    Serial.printf(">>> http://%s/ <<<\n", WiFi.localIP().toString().c_str());
  } else {
    Serial.println("[!] WiFi fail — continuo senza web server");
  }
}

Garantisce che il banco hardware funzioni anche se la rete WiFi cade — utile per debug fisico via Serial.

🔗 Risorse