Integrazione del W5500 con ESP32 Utilizzando il Core 3: Supporto Nativo del Protocollo Ethernet con SSL e Altre Funzionalità

Spread the love

Integrazione del W5500 con ESP32 utilizzando Core 3
Integrazione del W5500 con ESP32 utilizzando Core 3

L’ESP32 è sempre stato una scelta popolare per i progetti IoT, grazie alle sue robuste capacità Wi-Fi. Tuttavia, con il nuovo rilascio di Core 3, l’ESP32 supporta ora i protocolli Ethernet nativi con SSL, ampliando la sua utilità per applicazioni di rete cablate. Questo articolo esplora come integrare il modulo Ethernet W5500 con l’ESP32 utilizzando il nuovo Core 3, descrivendo l’installazione, la configurazione e le applicazioni pratiche.

Introduzione

L’ESP32, con il suo processore dual-core e le sue opzioni di connettività versatili, è ideale per una vasta gamma di applicazioni IoT. Il rilascio del Core 3 ha introdotto il supporto nativo per i protocolli Ethernet, rendendo più facile sfruttare le connessioni cablate con le stesse funzionalità del Wi-Fi, inclusi SSL/TLS. Questa guida si concentra sull’uso del modulo Ethernet W5500 con l’ESP32, fornendo connettività di rete sicura e affidabile.

Requisiti Hardware

Per iniziare, avrai bisogno dei seguenti componenti:

  • Scheda di sviluppo ESP32

Ecco la mia selezione di ESP32 ESP32 Dev Kit v1 - TTGO T-Display 1.14 ESP32 - NodeMCU V3 V2 ESP8266 Lolin32 - NodeMCU ESP-32S - WeMos Lolin32 - WeMos Lolin32 mini - ESP32-CAM programmer - ESP32-CAM bundle - ESP32-WROOM-32 - ESP32-S

Ecco la mia selezione di ESP32-S3 ESP32 S3 Purlple AI-S3 - YD-ESP32-S3 - ESP32-S3-DevKitC-1 - ESP32-S3-DevKitC-1 - ESP32-S3 Board screen

  • Modulo Ethernet W5500
  • Cavi jumper
  • Breadboard (opzionale)

Dispositivi

Il chip W5500 è un controller Ethernet TCP/IP cablato integrato che fornisce una connessione Internet semplificata ai sistemi embedded. Il W5500 consente agli utenti di avere connettività Internet nelle loro applicazioni utilizzando un singolo chip in cui sono integrati lo stack TCP/IP, il MAC Ethernet 10/100 e il PHY.

La tecnologia TCP/IP cablata di WIZnet è una soluzione collaudata sul mercato che supporta i protocolli TCP, UDP, IPv4, ICMP, ARP, IGMP e PPPoE. Il W5500 include un buffer di memoria interno da 32 Kbyte per l’elaborazione dei pacchetti Ethernet. Con il W5500, è possibile implementare applicazioni Ethernet aggiungendo un semplice programma socket. È un metodo più veloce e semplice rispetto a qualsiasi altra soluzione Ethernet embedded. Gli utenti possono utilizzare otto socket hardware indipendenti simultaneamente.

L’interfaccia SPI (Serial Peripheral Interface) è fornita per una facile integrazione con il microcontrollore esterno. L’SPI del W5500 supporta una velocità di 80 MHz. Per ridurre il consumo energetico del sistema, il W5500 fornisce la modalità WOL (Wake on LAN) e power-down.

Caratteristiche

  • Supporto per i protocolli TCP/IP cablati: TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
  • Supporta 8 socket indipendenti simultaneamente
  • Supporta la modalità di spegnimento
  • Supporta Wake on LAN tramite UDP
  • Supporta interfaccia SPI ad alta velocità (SPI MODE 0, 3)
  • Memoria interna da 32 Kbyte per buffer TX/RX
  • PHY Ethernet 10BaseT/100BaseTX integrato
  • Supporta la negoziazione automatica (full e half duplex, 10 e 100 Mbps)
  • Non supporta la frammentazione IP
  • Funzionamento a 3,3 V con tolleranza ai segnali I/O a 5 V
  • Uscite LED (Full/Half duplex, Link, Speed, Active)
  • Pacchetto LQFP senza piombo a 48 pin (7×7 mm, passo 0,5 mm)

Esiste una vasta gamma di dispositivi W5500, ma i più popolari sono 2 in particolare.

Il meno costoso è il W5500 che puoi vedere nella foto.

Ora c’è una versione compatta chiamata W5500 lite, molto interessante come dispositivo di produzione.

Ecco la mia selezione di dispositivi Ethernet testati w5500 lite - w5500 - enc26j60 mini - enc26j60 - lan8720

Collegamento del W5500 all’ESP32-S3

Un cablaggio corretto garantisce una comunicazione stabile tra l’ESP32 e il modulo W5500. Di seguito sono riportati i collegamenti dei pin. Per questo test, utilizzeremo un ESP32-S3.

Ecco la mia selezione di ESP32-S3 ESP32 S3 Purlple AI-S3 - YD-ESP32-S3 - ESP32-S3-DevKitC-1 - ESP32-S3-DevKitC-1 - ESP32-S3 Board screen

Schema di collegamento mini W5500

Schema di collegamento W5500

ESP32-S3W5500/W5500 Mini
GPIO13MISO
GPIO12SCLK
GPIO11MOSI
GPIO10CS
GPIO9 (opzionale)INT
GPIO3 (opzionale)RST
3v33v3
GNDGND

// Imposta questo valore a 1 per abilitare il supporto Ethernet doppio
#define USE_TWO_ETH_PORTS 0

#define ETH_PHY_TYPE        ETH_PHY_W5500
#define ETH_PHY_ADDR        1
#define ETH_PHY_CS          10
#define ETH_PHY_IRQ         9 // -1 se non sarà cablato
#define ETH_PHY_RST         3 // -1 se non sarà cablato

// Pin SPI
#define ETH_SPI_SCK         SCK
#define ETH_SPI_MISO        MISO
#define ETH_SPI_MOSI        MOSI

Assicurati che i pin siano collegati come specificato. Questa configurazione garantisce che l’ESP32 possa comunicare con il modulo W5500 tramite SPI.

Wiring the W5500 to ESP32

Un cablaggio corretto assicura una comunicazione stabile tra l’ESP32 e il modulo W5500. Di seguito sono riportate le connessioni dei pin.

Ecco la mia selezione di esp32 ESP32 Dev Kit v1 - TTGO T-Display 1.14 ESP32 - NodeMCU V3 V2 ESP8266 Lolin32 - NodeMCU ESP-32S - WeMos Lolin32 - WeMos Lolin32 mini - ESP32-CAM programmer - ESP32-CAM bundle - ESP32-WROOM-32 - ESP32-S

Mini w5500 collegamento

w5500 collegamento

esp32w5500/w5500 mini
GPIO19MISO
GPIO18SCLK
GPIO23MOSI
GPIO5CS
GPIO15 (optional)INT
GPIO4 (optional)RST
3v33v3
GNDGND

// Set this to 1 to enable dual Ethernet support
#define USE_TWO_ETH_PORTS 0

#define ETH_PHY_TYPE        ETH_PHY_W5500
#define ETH_PHY_ADDR        1
#define ETH_PHY_CS          5
#define ETH_PHY_IRQ         15   // -1 if you won't wire
#define ETH_PHY_RST         4 // -1 if you won't wire

// SPI pins
#define ETH_SPI_SCK         SCK
#define ETH_SPI_MISO        MISO
#define ETH_SPI_MOSI        MOSI

Assicuratevi che i pin siano collegati come specificato. Questa configurazione assicura che l’ESP32 possa comunicare con il modulo W5500 tramite SPI.

Configurazione dei collegamenti Ethernet

Configura le impostazioni Ethernet nel tuo sketch.

  SPI.begin(ETH_SPI_SCK, ETH_SPI_MISO, ETH_SPI_MOSI);
  ETH.begin(ETH_PHY_TYPE, ETH_PHY_ADDR, ETH_PHY_CS, ETH_PHY_IRQ, ETH_PHY_RST, SPI);

Usa la funzione Network.onEvent per sapere quando siamo pronti per effettuare una richiesta.

  Network.onEvent(onEvent);

È necessario creare una funzione per gestire l’evento di connessione o per monitorare tutti gli stati della rete.

void onEvent(arduino_event_id_t event, arduino_event_info_t info)
{
  switch (event) {
    case ARDUINO_EVENT_ETH_START:
      Serial.println("ETH Started");
      //set eth hostname here
      ETH.setHostname("esp32-eth0");
      break;
    case ARDUINO_EVENT_ETH_CONNECTED:
      Serial.println("ETH Connected");
      break;
    case ARDUINO_EVENT_ETH_GOT_IP:
      Serial.printf("ETH Got IP: '%s'\n", esp_netif_get_desc(info.got_ip.esp_netif));
      Serial.println(ETH);
      eth_connected = true;
      break;
    case ARDUINO_EVENT_ETH_LOST_IP:
      Serial.println("ETH Lost IP");
      eth_connected = false;
      break;
    case ARDUINO_EVENT_ETH_DISCONNECTED:
      Serial.println("ETH Disconnected");
      eth_connected = false;
      break;
    case ARDUINO_EVENT_ETH_STOP:
      Serial.println("ETH Stopped");
      eth_connected = false;
      break;
    default:
      break;
  }
}

Dopo la connessione, saremo pronti a eseguire le operazioni necessarie.

Richiesta HTTP semplice

ESP32 DOIT DevKit v1 con W5500 lite
ESP32 DOIT DevKit v1 con W5500 lite

Per cominciare, proveremo a fare una semplice richiesta HTTP. Ho scelto un servizio online creato per testare questo tipo di richiesta.

Sto per utilizzare un servizio semplice fornito da httpbin.org, e puoi usare le stesse API REST in HTTP e HTTPS.

Ricorda che HTTP lavora sulla porta 80 e HTTPS sulla 443, quindi per interrogare l’endpoint sulla porta 443 devi convalidare un certificato.

Proviamo quindi a connetterci e a richiedere un endpoint con GET.

// Test client connection
void testClient(const char * host, uint16_t port)
{
  Serial.print("\nconnecting to ");
  Serial.println(host);

  NetworkClient client;

  if (!client.connect(host, port)) {
    Serial.println("connection failed");
    return;
  }
  client.println("GET /get HTTP/1.1");
  client.println("Host: httpbin.org");
  client.println("Connection: close");
  client.println();

  while (client.connected() && !client.available());
  while (client.available()) {
    Serial.write(client.read());
  }

  Serial.println("closing connection\n");
  client.stop();
}

Ricorda di fare la richiesta dopo che il modulo ha completato l’handshake.

void loop()
{
  if (eth_connected) {
    testClient("httpbin.org", 80);
  }
  delay(10000);
}

E infine, lo sketch completo.

/*
 * Author: Renzo Mischianti
 * Website: mischianti.org
 * Description: This sketch demonstrates how to set up and use Ethernet on an ESP32 module using the W5500 Ethernet module.
 *              The sketch initializes the Ethernet module, handles Ethernet events, and tests a simple client connection.
 */

#include "Arduino.h"

#include <ETH.h>
#include <SPI.h>

// Set this to 1 to enable dual Ethernet support
#define USE_TWO_ETH_PORTS 0

// #ifndef ETH_PHY_TYPE
#define ETH_PHY_TYPE        ETH_PHY_W5500
#define ETH_PHY_ADDR         1
#define ETH_PHY_CS           5 // CS esp32s3 	10 	esp32 	5
#define ETH_PHY_IRQ          -1 // 				9			15
#define ETH_PHY_RST          -1 // 				3			4
// #endif

// SPI pins							esp32s3		esp32
#define ETH_SPI_SCK         SCK  // 12 			18
#define ETH_SPI_MISO        MISO // 13 			19
#define ETH_SPI_MOSI        MOSI // 11 			23

static bool eth_connected = false;

// Ethernet event handler
void onEvent(arduino_event_id_t event, arduino_event_info_t info)
{
  switch (event) {
    case ARDUINO_EVENT_ETH_START:
      Serial.println("ETH Started");
      // Set Ethernet hostname here
      ETH.setHostname("esp32-eth0");
      break;
    case ARDUINO_EVENT_ETH_CONNECTED:
      Serial.println("ETH Connected");
      break;
    case ARDUINO_EVENT_ETH_GOT_IP:
      Serial.printf("ETH Got IP: '%s'\n", esp_netif_get_desc(info.got_ip.esp_netif));
      Serial.println(ETH);
      eth_connected = true;
      break;
    case ARDUINO_EVENT_ETH_LOST_IP:
      Serial.println("ETH Lost IP");
      eth_connected = false;
      break;
    case ARDUINO_EVENT_ETH_DISCONNECTED:
      Serial.println("ETH Disconnected");
      eth_connected = false;
      break;
    case ARDUINO_EVENT_ETH_STOP:
      Serial.println("ETH Stopped");
      eth_connected = false;
      break;
    default:
      break;
  }
}

// Test client connection
void testClient(const char * host, uint16_t port)
{
  Serial.print("\nconnecting to ");
  Serial.println(host);

  NetworkClient client;
  if (!client.connect(host, port)) {
    Serial.println("connection failed");
    return;
  }
  client.println("GET /get HTTP/1.1");
  client.println("Host: httpbin.org");
  client.println("Connection: close");
  client.println();

  while (client.connected() && !client.available());
  while (client.available()) {
    Serial.write(client.read());
  }

  Serial.println("closing connection\n");
  client.stop();
}

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

  SPI.begin(ETH_SPI_SCK, ETH_SPI_MISO, ETH_SPI_MOSI, ETH_PHY_CS);
  ETH.begin(ETH_PHY_TYPE, ETH_PHY_ADDR, ETH_PHY_CS, ETH_PHY_IRQ, ETH_PHY_RST, SPI);
}

void loop()
{
  if (eth_connected) {
    testClient("httpbin.org", 80);
  }
  delay(10000);
}

Il risultato sarà il seguente:

ETH Started
ETH Connected
ETH Got IP: 'eth0'
*eth0: <UP,100M,FULL_DUPLEX,AUTO,ADDR:0x1> (DHCPC,GARP,IP_MOD)
      ether 32:AE:A4:F5:01:C0
      inet 192.168.1.137 netmask 255.255.255.0 broadcast 192.168.1.255
      gateway 192.168.1.1 dns 192.168.1.10


connecting to httpbin.org
HTTP/1.1 200 OK
Date: Mon, 22 Jul 2024 07:54:20 GMT
Content-Type: application/json
Content-Length: 199
Connection: close
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true

{
  "args": {}, 
  "headers": {
    "Host": "httpbin.org", 
    "X-Amzn-Trace-Id": "Root=1-669e102c-1868445a1fafaaf7199a5fe3"
  }, 
  "origin": "84.221.199.122", 
  "url": "http://httpbin.org/get"
}
closing connection

Richiesta HTTPS

Ora, se cambiamo l’endpoint alla porta 443, faremo una richiesta a un server sicuro con crittografia SSL.

// Test client connection
void testClient(const char * host, uint16_t port)
{
  Serial.print("\nconnecting to ");
  Serial.println(host);

  NetworkClientSecure client;
  client.setInsecure();

  if (!client.connect(host, port)) {
    Serial.println("connection failed");
    return;
  }
  client.println("GET /get HTTP/1.1");
  client.println("Host: httpbin.org");
  client.println("Connection: close");
  client.println();

  while (client.connected() && !client.available());
  while (client.available()) {
    Serial.write(client.read());
  }

  Serial.println("closing connection\n");
  client.stop();
}

Se non imposti la modalità insicura, non puoi connetterti e riceverai un messaggio come questo:

ETH Started
ETH Connected
ETH Got IP: 'eth0'
*eth0: <UP,100M,FULL_DUPLEX,AUTO,ADDR:0x1> (DHCPC,GARP,IP_MOD)
      ether B8:D6:1A:68:E5:7F
      inet 192.168.1.146 netmask 255.255.255.0 broadcast 192.168.1.255
      gateway 192.168.1.1 dns 192.168.1.10


connecting to httpbin.org
connection failed

Usiamo la porta 443 per la connessione HTTPS sicura.

void loop()
{
  if (eth_connected) {
    testClient("httpbin.org", 443);
  }
  delay(10000);
}

Ecco lo sketch completo per la richiesta HTTPS.

/*
 * Author: Renzo Mischianti
 * Website: mischianti.org
 * Description: This sketch demonstrates how to set up and use Ethernet on an ESP32 module using the W5500 Ethernet module.
 *              The sketch initializes the Ethernet module, handles Ethernet events, and tests a simple client HTTPS connection.
 */

#include "Arduino.h"

#include <ETH.h>
#include <SPI.h>
#include <NetworkClientSecure.h>

// Set this to 1 to enable dual Ethernet support
#define USE_TWO_ETH_PORTS 0

// #ifndef ETH_PHY_TYPE
#define ETH_PHY_TYPE        ETH_PHY_W5500
#define ETH_PHY_ADDR         1
#define ETH_PHY_CS           5 // CS esp32s3 	10 	esp32 	5
#define ETH_PHY_IRQ          -1 // 				9			15
#define ETH_PHY_RST          -1 // 				3			4
// #endif

// SPI pins							esp32s3		esp32
#define ETH_SPI_SCK         SCK  // 12 			18
#define ETH_SPI_MISO        MISO // 13 			19
#define ETH_SPI_MOSI        MOSI // 11 			23

static bool eth_connected = false;

// Ethernet event handler
void onEvent(arduino_event_id_t event, arduino_event_info_t info)
{
  switch (event) {
    case ARDUINO_EVENT_ETH_START:
      Serial.println("ETH Started");
      // Set Ethernet hostname here
      ETH.setHostname("esp32-eth0");
      break;
    case ARDUINO_EVENT_ETH_CONNECTED:
      Serial.println("ETH Connected");
      break;
    case ARDUINO_EVENT_ETH_GOT_IP:
      Serial.printf("ETH Got IP: '%s'\n", esp_netif_get_desc(info.got_ip.esp_netif));
      Serial.println(ETH);
      eth_connected = true;
      break;
    case ARDUINO_EVENT_ETH_LOST_IP:
      Serial.println("ETH Lost IP");
      eth_connected = false;
      break;
    case ARDUINO_EVENT_ETH_DISCONNECTED:
      Serial.println("ETH Disconnected");
      eth_connected = false;
      break;
    case ARDUINO_EVENT_ETH_STOP:
      Serial.println("ETH Stopped");
      eth_connected = false;
      break;
    default:
      break;
  }
}

// Test client connection
void testClient(const char * host, uint16_t port)
{
  Serial.print("\nconnecting to ");
  Serial.println(host);

  NetworkClientSecure client;
  client.setInsecure();

  if (!client.connect(host, port)) {
    Serial.println("connection failed");
    return;
  }
  client.println("GET /get HTTP/1.1");
  client.println("Host: httpbin.org");
  client.println("Connection: close");
  client.println();

  while (client.connected() && !client.available());
  while (client.available()) {
    Serial.write(client.read());
  }

  Serial.println("closing connection\n");
  client.stop();
}

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

  SPI.begin(ETH_SPI_SCK, ETH_SPI_MISO, ETH_SPI_MOSI, ETH_PHY_CS);
  ETH.begin(ETH_PHY_TYPE, ETH_PHY_ADDR, ETH_PHY_CS, ETH_PHY_IRQ, ETH_PHY_RST, SPI);
}

void loop()
{
  if (eth_connected) {
    testClient("httpbin.org", 443);
  }
  delay(10000);
}

Ora, quando eseguiamo lo sketch, otteniamo questo output:

ETH Started
ETH Connected
ETH Got IP: 'eth0'
*eth0: <UP,100M,FULL_DUPLEX,AUTO,ADDR:0x1> (DHCPC,GARP,IP_MOD)
      ether 32:AE:A4:F5:01:C0
      inet 192.168.1.137 netmask 255.255.255.0 broadcast 192.168.1.255
      gateway 192.168.1.1 dns 192.168.1.10


connecting to httpbin.org
HTTP/1.1 200 OK
Date: Mon, 22 Jul 2024 10:10:17 GMT
Content-Type: application/json
Content-Length: 200
Connection: close
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true

{
  "args": {}, 
  "headers": {
    "Host": "httpbin.org", 
    "X-Amzn-Trace-Id": "Root=1-669e3009-5b117fd9360750c0582e7b17"
  }, 
  "origin": "84.221.199.122", 
  "url": "https://httpbin.org/get"
}
ÿclosing connection

Recupero del certificato

Come puoi vedere, per il test ho usato la modalità insicura:

  NetworkClientSecure client;
  client.setInsecure();

La cosa corretta da fare è recuperare il certificato dell’Autorità di Certificazione (CA) per convalidare l’host.

Quindi, sulla pagina di httpbin, clicca sulle impostazioni del sito.

Quindi, seleziona le informazioni sulla connessione.

Ora clicca sul certificato.

Infine, seleziona la linea in alto nell’elenco (il certificato radice).

Esporta il certificato, apri il file, copia il contenuto e inseriscilo in una variabile di tipo array di caratteri.

const char* rootCA= R""""(-----BEGIN CERTIFICATE-----
MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
rqXRfboQnoZsG4q5WTP468SQvvG5
-----END CERTIFICATE-----)"""";

Ora possiamo impostare il certificato dell’Autorità di Certificazione (CA) per convalidare il server httpbin al NetworkClientSecure.

  NetworkClientSecure client;
  client.setCACert(rootCA);

Conclusione

Integrare il modulo Ethernet W5500 con l’ESP32 utilizzando Core 3 amplia le capacità dei tuoi progetti IoT fornendo una connettività di rete cablata robusta e sicura. Con il supporto nativo per i protocolli Ethernet, SSL/TLS e altre funzionalità, puoi sfruttare appieno il potenziale dell’ESP32 per una vasta gamma di applicazioni.

  1. ESP32: piedinatura, specifiche e configurazione dell’Arduino IDE
  2. ESP32: fileSystem integrato SPIFFS
  3. ESP32: gestire più seriali e logging per il debug
  4. ESP32 risparmio energetico pratico
    1. ESP32 risparmio energetico pratico: gestire WiFi e CPU
    2. ESP32 risparmio energetico pratico: modem e light sleep
    3. ESP32 risparmio energetico pratico: deep sleep e ibernazione
    4. ESP32 risparmio energetico pratico: preservare dati al riavvio, sveglia a tempo e tramite tocco
    5. ESP32 risparmio energetico pratico: sveglia esterna e da ULP
    6. ESP32 risparmio energetico pratico: sveglia da UART e GPIO
  5. ESP32: filesystem integrato LittleFS
  6. ESP32: filesystem integrato FFat (Fat/exFAT)
  7. ESP32-wroom-32
    1. ESP32-wroom-32: flash, piedinatura, specifiche e configurazione dell’Arduino IDE
  8. ESP32-CAM
    1. ESP32-CAM: piedinatura, specifiche e configurazione dell’Arduino IDE
    2. ESP32-CAM: upgrade CamerWebServer con gestione della luce flash
  9. ESP32: ethernet w5500 con chiamate standard (HTTP) e SSL (HTTPS)
  10. ESP32: ethernet enc28j60 con chiamate standard (HTTP) e SSL (HTTPS)
  11. Come usare la scheda SD con l’esp32
  12. esp32 e esp8266: file system FAT su memoria SPI flash esterna
  13. Gestione aggiornamenti firmware e OTA
    1. Gestione del firmware
      1. ESP32: flash del firmware binario compilato (.bin)
      2. ESP32: flash del firmware e filesystem (.bin) con strumenti grafici
    2. Aggiornamento OTA con Arduino IDE
      1. Aggiornamenti OTA su ESP32 con Arduino IDE: filesystem, firmware e password
    3. Aggiornamento OTA con browser web
      1. Aggiornamenti OTA su ESP32 tramite browser web: firmware, filesystem e autenticazione
      2. Aggiornamenti OTA su ESP32 tramite browser web: caricamento in HTTPS (SSL/TLS) con certificato autofirmato
      3. Aggiornamenti OTA su ESP32 tramite browser web: interfaccia web personalizzata
    4. Aggiornamenti automatici OTA da un server HTTP
      1. Aggiornamento automatico Firmware OTA dell’ESP32 dal server
      2. Aggiornamento automatico Firmware OTA dell’ESP32 dal server con controllo della versione
      3. Aggiornamento automatico Firmware OTA dell’ESP32 in HTTPS (SSL/TLS) con certificato autofirmato affidabile
    5. Aggiornamento del firmware non standard
      1. Aggiornamento firmware e filesystem ESP32 dalla scheda SD
      2. Aggiornamento firmware e filesystem ESP32 con client FTP
  14. Integrare LAN8720 con ESP32 per la connettività Ethernet con plain (HTTP) e SSL (HTTPS)
  15. Collegare l’EByte E70 (CC1310) ai dispositivi ESP32 c3/s3 ed un semplice sketch di esempio
  16. ESP32-C3: piedinatura, specifiche e configurazione dell’IDE Arduino
  17. Integrazione del modulo W5500 su ESP32 con Core 3: supporto nativo ai protocolli Ethernet con SSL e altre funzionalità
  18. Integrazione del modulo LAN8720 su ESP32 con Core 3: supporto nativo del protocollo Ethernet con SSL e altre funzionalità.
  19. Dallas DS18B20

Spread the love

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *