Progetto di un sistema di controllo di servomotori con web server – Parte 2

Nel precedente articolo "Progetto di un sistema di controllo di servomotori con web server – Parte 1", abbiamo fatto una panoramica sui servomotori e introdotto la descrizione del progetto. In questa seconda parte, inizieremo analizzando i due componenti del progetto, la scheda di sviluppo ESP32 DevkitC V4 e il servomotore SG90. Data la complessità funzionale e le sue enormi potenzialità eventualmente sviluppabili in altri progetti, sarà descritta dettagliatamente la scheda di sviluppo ESP32.

La scheda di sviluppo ESP32

La scheda di sviluppo ESP32 è basata sul modulo ESP32-WROOM-32D che integra il chip ESP32. L’ESP32 fa parte della serie di microcontrollori su chip a basso consumo e basso costo. E' dotata di funzionalità integrate wireless Bluetooth e Wi-Fi dual mode. È particolarmente idonea a fornire versatilità, robustezza e affidabilità in un gran numero di applicazioni. Alcune applicazioni in cui questo microcontrollore è ampiamente utilizzato sono la decodifica MP3, la codifica vocale e lo streaming audio. La scheda di sviluppo ESP32 è dotata di una porta USB, quindi può essere considerata un dispositivo plug and play, ovvero basta collegare il cavo USB e il dispositivo è acceso e pronto per essere programmato come una qualsiasi scheda di sviluppo Arduino.

Più avanti entreremo nei dettagli della programmazione di questa scheda. Se confrontiamo la scheda ESP32 con le schede Arduino, la scheda di sviluppo ESP32 ha un grande vantaggio, ossia, la funzionalità Wi-Fi integrata. Sebbene il Wi-Fi possa essere utilizzato con molte schede Arduino, questa funzione può essere disponibile a fronte dell’impiego di shield aggiuntivi o adattatori. Se colleghiamo lo shield Wi-Fi alla scheda Arduino, possiamo accedere a Internet, altrimenti non sarebbe possibile. Lo stesso discorso vale per il Bluetooth che è disponibile in Arduino dotandolo di appositi moduli che nel caso della scheda ESP32 non occorrono in quanto il Bluetooth è già integrato nella scheda. Quindi, nel caso necessiti di utilizzare Wi-Fi e Bluetooth, la scheda ESP32 è meno costosa rispetto alle schede Arduino in cui si devono invece aggiungere costosi shield per ottenere le funzionalità Wi-Fi e Bluetooth. In Figura 1 è illustrata la scheda di sviluppo ESP32.

Figura 1: scheda di sviluppo ESP32 DevkitC V4

Componenti della scheda di sviluppo ESP32 DevkitC V4

  • Modulo ESP32-WROOM-32D con chip ESP32 integrato
  • Pulsante di reset EN
  • Pulsante BOOT per il download (Tenendo premuto Boot e quindi premendo EN si avvia la modalità di download del firmware tramite la porta seriale)
  • Chip CP2102 convertitore seriale da USB a UART con velocità di trasferimento fino a 3 Mbps
  • Porta micro USB per l’interfaccia USB di comunicazione tra un computer e il modulo ESP32 e per l’alimentazione della scheda
  • LED di indicazione di alimentazione a 5 V della scheda (Si accende quando la porta USB o un alimentatore esterno da 5 V è collegato alla scheda)
  • PIN I/O: la maggior parte dei pin sul modulo ESP-WROOM-32D sono distribuiti sulla scheda. È possibile programmare l’ESP32 per abilitare più funzioni come PWM, ADC, DAC, I2C, I2S, SPI, etc. I pin D0, D1, D2, D3, CMD e CLK vengono utilizzati internamente per la comunicazione SPI tra l’ESP32 e la memoria flash. Sono raggruppati su entrambi i lati vicino al connettore USB. Evitare di utilizzare questi pin, poiché potrebbero interrompere l'accesso alla memoria flash SPI o alla RAM SPI. I pin GPIO16 e GPIO17 sono disponibili per l'utilizzo solo sulle schede con i moduli ESP32-WROOM e ESP32-SOLO-1. Le schede con moduli ESP32-WROVER hanno i pin riservati per uso interno.

Il sistema di alimentazione

Esistono tre modalità che si escludono a vicenda per fornire alimentazione alla scheda:

  • Porta micro USB (alimentazione predefinita)
  • Pin 5V e GND
  • Pin 3V3 e GND

Alimentando la scheda con un alimentatore esterno a +5 V collegato alla porta microUSB, si rendono disponibili tensioni in uscita +5 V e +3,3 V fra i rispettivi pin 5 V e 3V3 e il pin GND della scheda. Alimentando la scheda con un alimentatore esterno a +5 V collegato ai pin 5 V e GND, si rende disponibile una tensione in uscita di 3,3 V fra il pin 3V3 e GND della scheda.

Nota: L'alimentazione deve essere fornita utilizzando una ed una sola delle opzioni di cui sopra, altrimenti la scheda e/o la fonte di alimentazione possono essere danneggiate.

Caratteristiche principali

  • Modulo Wi-Fi integrato con protocollo standard 802.11b/g/n, range di frequenza da 2,4 GHz a 2,5 GHz. Tre modalità di funzionamento WiFi: Access Point, Client, Access Point+station
  • CPU ESP32-D0WD dual-core Xtensa a 32-bit LX6 con le seguenti memorie: 448 KB di ROM per il booting e le funzioni core, 520 KB di SRAM on-chip per dati e istruzioni, 8 KB di SRAM nella RTC, denominata RTC FAST Memory che può essere utilizzata per l'archiviazione dei dati; vi si accede dalla CPU principale durante l'avvio RTC dalla modalità Deep-sleep; 8 KB di SRAM nella RTC, denominata RTC SLOW Memory, accessibile dal coprocessore durante la modalità Deep-sleep, 1 Kbit di eFuse: 256 bits vengono utilizzati per il sistema (indirizzo MAC e configurazione del chip) e i restanti 768 bit sono riservati alle applicazioni dei client, inclusa la crittografia flash e l'ID del chip
  • Tensione di esercizio: 2,6-3,3 V
  • Frequenza di clock: da 80 MHz a 240 MHz
  • Memoria flash interna 4 MB, supportata la memoria esterna fino a 32 MB
  • La corrente massima in ogni pin è 40 mA, 20 mA raccomandata
  • Dispone di 28 pin di input/output (GPIO) per uso generico
  • I pin GPIO hanno funzionalità PWM/I2C e SPI
  • È disponibile la versione Bluetooth 4.2 e Bluetooth a basso consumo energetico (BLE)
  • La corrente di sleep è di 2,5 µA
  • Supporta touch capacitivo a 10 elettrodi
  • Crittografia supportata dall'hardware per AES, ECC, RSA - 4096, SHA2
  • Antenna PCB a bordo o con connettore IPEX che funge da antenna esterna
  • La temperatura di esercizio è compresa tra -40 °C e +125 °C

Nello schema elettrico della scheda di sviluppo ESP32 DevkitC V4 riportato in Figura 2 si può notare la componentistica della scheda distribuita su cinque quadranti.

Figura 2: schema elettrico della scheda di sviluppo ESP32 DevkitC V4

Specifiche funzionali dei pin

L’ESP32 supporta la funzione multiplexing dei pin, ovvero è possibile decidere (programmare) quali periferiche possono essere collegate ai 28 pin di input/output che quindi possono essere utilizzati come MISO, RX, TX, SCLK, MOSI, SCL, SDA e molte altre funzionalità. Tuttavia, i pin convertitori analogico-digitale e digitale-analogico sono pin statici dell’ESP32.

Pin di Interfaccia

  • 16 convertitori analogici/digitali (ADC)
  • 3 interfacce SPI
  • 3 interfacce UART
  • 2 interfacce I2C
  • 32 uscite PWM
  • 2 convertitori digitali-analogici (DAC)
  • 2 interfacce I2S

Pin Sensori

  • Sensori di Hall
  • Oscillatore a cristallo da 32 kHz
  • Amplificatore analogico a bassissimo rumore
  • N. 10 interfacce touch capacitivo

Esistono molte versioni del chip ESP32 disponibili sul mercato. La scheda di sviluppo ESP32 utilizzata in questo progetto è la ESP32 DevkitC V4 della Espressif costituita dal modulo ESP-WROOM-32D con CPU dual-core ESP32-D0WD. Tuttavia, la funzionalità di tutti i pin GPIO è la stessa in tutte le schede di sviluppo ESP32. Per fare chiarezza su come utilizzare i pin GPIO, quale pin GPIO può essere utilizzato come pin di ingresso-uscita digitale, quale pin GPIO può essere utilizzato come pin analogico o digitale, quale pin non dovrebbe essere usato per sicurezza, riteniamo utile esaminare nei dettagli  i pin GPIO della scheda di sviluppo ESP32. Nella Figura 3 riportiamo il pinout della scheda ESP32 DevkitC V4. Si evidenzia che la numerazione dei pin nei riquadri di colore nero definiti nella legenda “Phisical Pin” si riferisce alla numerazione dei pin del modulo ESP32WROOM32D e non a quella dello schema elettrico di Figura 2.

Figura 3: pinout della scheda DevkitC ESP32 V4

La scheda DevkitC ESP32 V4 con modulo ESP-WROOM-32D utilizzata in questo progetto, o in alternativa la DevkitC ESP32 V4 con modulo ESP-WROOM-32U (la sola differenza è che il modulo ESP32 WROOM 32D ha l'antenna a bordo, mentre l'ESP32 WROOM 32U ha il connettore U.FL che deve essere collegato ad un'antenna IPEX esterna), ha 38 pin, come mostrato nell'immagine di Figura 3, di cui 28 pin sono GPIO e ogni pin ha più funzionalità che possono essere configurate utilizzando registri specifici. Sono disponibili molti tipi di GPIO utilizzabili come ingresso digitale, uscita digitale, ingresso analogico-uscita digitale (ADC), ingresso digitale-uscita analogica (DAC), touch capacitivo, interfaccia di comunicazione UART e molte altre funzionalità. Nella Figura 4 viene riportato l’elenco dei pin del modulo ESP32WROOM32D con la descrizione delle funzioni. Come sopra accennato, si ribadisce che la numerazione dei pin elencati è relativa alla numerazione dei pin del modulo, pertanto, per l’esatta corrispondenza della numerazione dei pin GPIO della scheda si faccia riferimento allo schema elettrico di Figura 2 relativamente al riquadro dei connettori in basso a destra della figura.

Figura 4: elenco dei pin e relative funzioni

Nota: I pin SCK/CLK, SDO/SD0, SDI/SD1, SHD/SD2, SWP/SD3 e SCS/CMD, ovvero da GPIO6 a GPIO11, sono collegati alla memoria flash SPI integrata nel modulo ESP32WROOM32D per cui se ne sconsiglia l’uso per altre funzioni. Di seguito viene riportato un riepilogo dei pin raggruppati per categoria e funzione.

Configurazione dei Pin

Categoria Pin Nome del Pin Descrizione
Power Micro-USB, 3.3 V, 5 V, GND

 

ATTENZIONE: può essere applicata UNA SOLA alimentazione alla scheda

Micro-USB: ESP32 può essere alimentata tramite porta USB fornendo anche +5 V e +3,3 V ai rispettivi pin 5V e 3.3V.

 

5V: +5 V regolati possono essere applicati a questo pin e, a sua volta, fornisce una +3,3 V dal regolatore a bordo, per alimentare la scheda fornendo anche una +3,3 V al pin 3.3 V

 

3,3 V: una +3,3 V regolata può essere applicata a questo pin per alimentare la scheda

 

GND: Pin di Ground

Enable EN Un livello basso applicato al pin EN e il pulsante EN resettano il microcontrollore
Analogici ADC1_0 fino a ADC1_5 e ADC2_0 fino a ADC2_9 18 canali ADC a 12 bit sono utilizzati per misurare la tensione analogica nell'intervallo 0-3,3 V

 

DAC DAC1, DAC2 Utilizzati per la conversione digitale-analogica
Input/output GPIO0 fino a GPIO39 Possono essere utilizzati come pin di input o output con livelli logici 0 V (basso) e 3,3 V (alto). I pin da 34 a 39 possono essere usati solo come input
Touch capacitivo T0 fino a T9 Questi 10 pin possono essere utilizzati come pin touch normalmente per i pad capacitivi
GPIO RTC RTCIO0 fino a RTCIO17 Questi 18 pin GPIO possono essere utilizzati per riattivare ESP32 dalla modalità deep sleep
Seriali RxTx Utilizzato per ricevere e trasmettere dati seriali TTL a 0-3,3 V
Interrupt esterni Tutti i pin GPIO Qualsiasi GPIO può essere utilizzato per attivare un interrupt
PWM Tutti i pin GPIO 32 canali indipendenti sono disponibili per la funzione PWM tramite impostazione software
VSPI GPIO23 (MOSI), GPIO19(MISO), GPIO18(CLK), GPIO5 (CS) Utilizzati per le comunicazioni SPI-1
HSPI GPIO13 (MOSI), GPIO12(MISO), GPIO14(CLK), GPIO15 (CS) Utilizzati per le comunicazioni SPI-2
I2C GPIO21(SDA), GPIO22(SCL) Utilizzati per le comunicazioni I2C
AREF AREF Utilizzato per applicare una tensione di riferimento all’ingresso di un ADC

Configurazioni dei pin

La scheda DevkitC ESP32 V4 ha 38 pin, 19 su ciascun lato, come mostrato nell'immagine di Figura 3. Ha 34 pin GPIO e ogni pin ha più funzionalità che possono essere configurate utilizzando registri specifici. Sono disponibili molti tipi di GPIO configurabili come ingresso digitale, uscita digitale, ingresso analogico e uscita analogica, touch capacitivo, comunicazione UART e molte altre funzionalità sopra descritte. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3191 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend