Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS








 

Versione di ESP32

NodeMCU ESP32 (standard)

ESP32 - Cam (con telecamera)

ESP32 CYD (con display)



La basetta sperimentale (BDS)

La basetta sperimentale (BDS)  per ESP32x: intro e download

Assemblare la basetta sperimentale

Il settaggio della basetta

La gestione delle porte (GPIOx)

Le cinque  configurazioni della basetta sperimentale (BDS)

Elenco dei sensori/attuatori testati per ogni slot di collegamento




Informazioni di base:

- Come installare la IDE di Arduino
- Configurazione e piedinatura
- Caricamento dei programmi
- Come caricare le librerie necessarie

Piedinatura di ESP32 a 30 o 38 pin



Programmi per ESP32x




Link utili





 





 















ESP32x: il settaggio della basetta sperimentale (BDS)

Il progetto per la basetta didattica e sperimentale  (per brevità, BDS) è probabilmente il progetto più complesso che abbia realizzato in questo contesto.
Ho cercato di rendere questa scheda il più flessibile possibile, mantenendo il progetto nelle dimensioni di un foglio A5, ovvero 200 x 140 mm circa.
Il raggiungimento di questo obiettivo fa sì che dopo aver assemblato la basetta, sia necessario dedicare pochissimi minuti per eseguire un primo settaggio di base. per il corretto funzionamento della scheda.
Questa pagina è piuttosto corposa, ma impiegando un po' di pazienza per comprenderne la logica, si potrà rapidamente modificare la configurazione, per renderla più adeguata ad ogni progetto che si realizzerà.

In questa pagina puoi trovare:






settaggio
Immagine a blocchi logici della basetta didattica e sperimentale leggermente ingrandita.



Ecco una spiegazione sintetica dei vari settori logici:
  • settori di colore rosso: relativi all'alimentazione della scheda. Alcuni jumper devono essere settati, affinchè la basetta venga alimentata (settaggi globali);  altri per selezionare (3,3v o 5v) per alcuni zoccoli (settaggi locali)
  • settori di colore verde: jumper relativi alla selezione delle porte alternative per alcuni zoccoli. Anch'essi devono essere settati per il corretto funzionamento delle porte a cui sono dedicati.
  • settori di colore bianco: zoccoli (slot) su cui collegare le periferiche, quali sensori/attuatori/display ecc.
  • settori di colore azzurro: zoccoli dedicati alle porte configurabili, utilizzando alcuni cavetti.
  • settori di colore giallo: zoccoli a cui inserire (alternativamente) i microcontroller ESP32x.
  • settore di colore grigio: jumper di settaggio per l'alimentazione del display LGVL da 2.8"
  • settore di colore nero: zoccolo con segnale di massa (ground).

Cominciamo ad analizzare nel dettaglio i vari componenti.





La configurazione di base




La configurazione di base richiede di eseguire alcuni ponticelli (jumper), sia per l'alimentazione (riquadri rossi) che per la selezione delle porte (riquadri verdi).

Nota: i connettori su cui effettuare i nonticelli (jumper) sono tutti maschi; l'unico connettore maschio relativo a uno zoccolo dati è relativo a "SV1", per la gestione dei servomotori, che normalmente utilizzano dei connettori a tre connettori femmine. Per maggiore chiarezza, l'immagine di riferimento sarà quella in formato 2D, che è meno di impatto ma più leggibile.

jumper
I ponticelli (jumper) di vari colori



2d
La sezione logica della basetta, leggermente ingrandita, nella versione 2D.







1 - Il problema dell'alimentazione a +5volt



Sulla BDS si trovano alcuni jumper per selezionare l'alimentazione delle periferiche a +3,3v o a +5v.   Quindi
prima di tutto sarà necessario approfondire il problema dell'alimentazione di eventuali periferiche che richiedono l'alimentazione a +5v, mentre gli ESP32x ("x" sta per i vari modelli di ESP32) lavorano internamente a +3,3 volt.
Allora cosa fare?
Se non si vogliono avere problemi, utilizzare solo periferiche che lavorano a 3,3v.
Se invece si ha la necessità di utilizzare sensori/attuatori/display che richiedono +5v, lo si fa sempre e comunque a proprio rischio e pericolo.

Dopo questa doverosa precisazione, ecco cosa potremmo fare:
  • dagli articoli e programmi che ho trovato sul Web (e che parzialmente ho testato), pare che gli attuatori o i display, ovvero le schede che eseguono dei compiti, come per esempio un relè o un servomotore (SV1) che funzionano a +5v, in genere non danno problemi, seppure alimentati a +5v, perchè ricevono i segnali di controllo da ESP32x, i quali processano i dati con una tensione di +3,3v.
  • i motori elettrici, alimentati tra 5 e 12 v, collegati allo zoccolo MT1, non danno problemi, perché comandati da un mos-fet, e quindi sono disaccoppiati dall'uscita di ESP32x.
  • il problema più grave, che realmente potrebbe danneggiare il nostro ESP32x, riguarda i sensori, come per esempio il sensore ultrasonico HC-SR04,  perché inviano dati verso al microprocessore a +5v. In questo caso per poter utilizzare periferiche simili a questa, sarebbe necessaro interporre tra essi e il microcontroller un partitore di tensione, in modo da ridurre la tensione massima fornita ad ESP32x non superi i 3,3v.






2 - Gli zoccoli relativi ai microcontroller



Questa basetta didattica e sperimentale (per brevità BDS) è stata progettata per poter accogliere singolarmente, ovvero uno per volta, tre dei più comuni tipi di microcontroller ESP32x (dove per "x" si intende la sigla utilizzata per ognuno di essi), ovvero:
  • ESP32S (38 pin) sullo zoccolo denominato "U1";
  • ESP32 (30 pin) sullo zoccolo denominato "U2";
  • ESP32 CYD, ovvero un ESP32 integrato con un video LVGL touch da 2.8"nella zona denominata
    "ESP-Wroom-32".

Le zone per i microcontroller sono delimitate da rettangoli gialli.
Nota 1: ESP32 CYD e il display LVGL da 2.8" occupano all'incirca la stessa area della BDS, ma ovviamente non vengono mai utilizzati contemporaneamente.

Nota 2: di seguito si vedrà sempre una coppia di immagini: la prima dal rendering della BDS che essendo in prospettiva è piuttosto realistica, ma spesso rende difficile individuare le informazioni; la seconda mostra l'immagine "piana" in 2D, che spesso è più leggibile.








Zoccolo U1: ESP32S (38 pin)
u1
L'immagine dello zoccolo per ESP32S (38 pin)
u11

Sullo zoccolo "U1" si può collegare un ESP32S a 38 pin, osservando attentamente che il modello acquistato abbia esattamente la stessa sequenza di pin indicata ai lati dello zoccolo, pena il danneggiamento o il malfunzionamento del microcontroller stesso. Quello che appare è il modello in mio possesso.
Non ci sono note particolari; semplicemente fare attenzione nell'inserire correttamente e con il corretto orientamento il microcontroller nello zoccolo.

Questi sono i modelli in mio possesso:
ESP32-DevKitC-32
ESP32 TYPE-C

Nota importante: gli ESP32 sono commercializzati in molte versioni. sulla BDS si possono montare solamente:
Purtroppo altre versioni di ESP32 con 38 pin e chipset CH340C hanno ingomri diversi, e non si inseriscono sullo zoccolo, se non facendo alcuni adattamenti. 
Per informazioni su ESP32S clicca qui.

Nota: gli indirizzi indicati sono solo per riferimento. Non ho alcun accordo commerciale con Aliexpress.







Zoccolo U2: ESP32 (30 pin)
u2
L'immagine dello zoccolo U2
per ESP32 (30 pin)
u22


Sullo zoccolo "U2" si può collegare un ESP32 a 30 pin, osservando attentamente che il modello acquistato abbia esattamente la stessa sequenza di pin indicata ai lati dello zoccolo, pena il danneggiamento o il malfunzionamento del microcontroller stesso. 
Non ci sono note particolari; semplicemente fare attenzione nell'inserire correttamente il microcontroller nello zoccolo

Questi sono i modelli in mio possesso:
ESP32
ESP32 TYPE-C

Nota importante: gli ESP32 sono commercializzati in molte versioni. sulla BDS si possono montare solamente:

Purtroppo altre versioni di ESP32 con 30 pin e chipset CP2102 hanno ingomri diversi, e non si inseriscono sullo zoccolo, se non facendo alcuni adattamenti. 


Per informazioni su ESP32 clicca qui.

Nota: gli indirizzi indicati sono solo per riferimento. Non ho alcun accordo commerciale con Aliexpress.







Zoccolo LVGL_ESP32: ESP32 CYD (Cheap Yellow Dispaly)
32_l
Lo zoccolo per
ESP32 CYD
32_l1

LVGL è lo zoccolo per ESP32 CYD (Cheap Yellow Display). Poichè questo microcontroller ha una struttura particolare, è necessaria una breve introduzione.
ESP32 ed ESP32S, che hanno una struttura simile a un ESP8266 , a un Arduino Nano o un qualsiasi circuito integrato, possiedono una doppia fila di pin che si connettono perfettamente sui loro zoccoli (femmina) inseriti nella BDS.
ESP32 CYD invece è integrato in un video LVGL, e i pin di ingresso/uscita sono distribuiti su alcuni mini-connettori con passo standard 1,25 JST.
La struttura rettangolare del microcontroller + display  mostra quattro fori sugli angoli, corrispondenti a quelli presenti sulla BDS; quindi con degli appositi pernetti è possibile inserirlo in modo stabile su di essa.
La soluzione per collegare le porte di I/O alla basetta è stata quella di utilizzare:
  • un connettore femmina da 4 pin, pale seguenti uscitesso 1.25 su "P5", con le seguenti uscite:
    VIN, TX, RX, GND;
  • un connettore femmina da 4 pin, passo 1.25 su "CN1", con le seguenti uscite:
    VIN, TX, RX, GND;
    GND, GPIO22, GPIO27, +3,3v;
  • un connettore femmina da 4 pin, passo 1.25 su "P3", con le seguenti uscite:
    VIN, TX, RX, GND
    GND,
    GPIO35, GPIO22, GPIO21 (che viene utilizzato quando si illumina la retroilluminazione, quindi sarebbe meglio non connetterlo alla BDS);
  • un connettore femmina da 2 pin, passo 1.25 su "SPEAK", con le seguenti uscite:
    VIN, TX, RX, GND;
    GND, GPIO26.

Come si vede, ci sono alcune ridondanze; i connettori di segnale, di tensione e di massa saranno presi una sola volta, e collegati nell'ordine corretto su di un singolo connettore maschio di passo 2.54 a 10 pin,  che sarà poi connesso sullo zoccolo della BDS denominato "LVGL_ESP32".

Inserire immagine del connettore.








3 -  I settasaggi per l'alimentazione (settori evidenziati in rosso)



In questo paragrafo verranno illustrati i settaggi dell'alimentazione. I primi che verranno trattati riguardano gli aspetti globali; di seguito quelli locali.



Settaggi globali:

powerL'alimentazione
esterna della scheda

In alto a sinistra dell'immagine si vede il posto dove verrà inserito il connettore coassiale femmina standard per l'alimentazione.
Quando si desidera alimentare esternamente la basetta, è a questo connettore che sarà necessario connettere la spina coassiale maschi dell'alimentatore, che fornirà una tensione compresa tra 6 e 9 v (max. 12 v), in grado di erogare una corrente di 1 - 2 A.
I tre led indicano rispettivamente:
  • led rosso, vicino al connettore (VIN): si accende quando ESP32x è alimentato direttamente (pin VIN) dall'alimentatore,  a +5v oppure a +8v;
  • led blu centrale (5v): si accende quando nel circuito è presente l'alimentazione a 5v, sempre fornita dall'alimentatore esterno;
  • led verde, in basso (3,3v): si accende quando nel circuito è presente l'alimentazione a 3,3v. Affinchè la scheda sia alimentata, è necessario che questo led sia sempre acceso (vedi paragrafo successivo).







3v
Il selettore per la tensione di 3,3v
s3

3V-SEL: questo selettore è assolutamente fondamentale. Se non viene correttamente settato, le varie periferiche presenti sulla scheda non verranno alimentate.
  • settaggio Internal/3.3v: quando si effettua il ponticello tra il pin superiore (Internal) e quello centrale (3,3v), la scheda verrà alimentata con i 3,3v forniti dal ESP32x presente sulla scheda. Tenere presente che un ESP32x può fornire fino a 40 mA per ogni GPIO, ma si raccomanda di non superare i 20 mA per GPIO. Se si usano periferiche che assorbono più corrente, usare un alimentatore esterno (vedi punto successivo).
  • settaggio 3.3v/External: quando si effettua il ponticello tra il pin centrale (3,3v) e quello inferiore (External), la scheda verrà alimentata con i 3,3v forniti attraverso l'alimentatore esterno. Usare questo settaggio quando si collegano molte periferiche o quando queste siano piuttosto "voraci" di corrente.
    Nota 1: l'alimentatore esterno può fornire una tensione compresa tra 6 e 9v (max 12 v); un semiconduttore interno provvederà a ridurre la tensione a 3,3v.
    Nota 2: naturalmente se si sceglie il settaggio 3.3v/External e l'alimentatore non è collegato, alla scheda non arriverà la tensione (led verde dei 3,3v spento).







vin
Il selettore per l'alimentazione esterna di ESP32x

v3

VIN_SEL: VIN significa "Volt INput"; quindi questo selettore fornirà direttamente la tensione a ESP32x attraverso, appunto,  il suo piedino "VIN".
Prego di leggere attentamente queste note, prima di alimentare la scheda esternamente.
Purtroppo la documentazione su ESP32x che ho potuto consultare non mi è parsa sufficientemente chiara per l'alimentazione di ESP32x, quindi ho usato la massima cautela. In futuro, se necessario, modificherò queste note.
  1. Da lla documentazione letta e dalla mia esperienza personale, ho potuto verificare che Arduino Uno, Nano, ESP01 ed ESP8266 possono essere alimentati contemporaneamente sia attraverso la presa USB che il pin VIN del microcontroller, e il sistema sceglierà automaticamente da quale fonte ottenere l'alimentazione. Mentre ho letto - e mi pare strano! - che ESP32x non abbia questa possibilità, e quindi è l'utente che deve scegliere autonomamente come alimentare il microcontroller, pena il danneggiamento dello stesso.
  2. Arduino Uno, Nano, ESP8266 possono essere alimentati sul piedino "VIN" con una tensione compresa tra 6 e 9v (massimo 12v, ma si sconsiglia questa alimentazione perché sollecita eccessivamente il regolatore di tensione interna, che si surriscalda rapidamente), e poi un circuito interno riduce la tensione a 3,3v o 5v, quella con cui funziona nativamente l'apparato.
    Anche per ESP32x valgonole stesse considerazioni. Su alcuni microcontroller, questo piedino viene contrassegnato "5v" invece che "VIN". ho visto che alcuni progetti presenti nel WEB si connettono su questo piedino per alimentare periferiche che richiedono +5v. Per cui ho previsto la possibilità di portare esternamente al pin "VIN" sia +5v che +8v, in base alle scelte dell'utente. Nel nostro caso, le periferiche connesse ai vari connettori di ingresso/uscita riceveranno sempre un'alimentazione a +5v, indipendentemente da come venga alimentato il microcontroller. Questo libera da qualunque problema di sovralimentazione delle varie periferiche.

In base a queste osservazioni, possiamo eseguire i seguenti settaggi:

  • Settaggio +5v/VIN: ESP32x verrà alimentato attraverso al piedino "VIN" a 5v, indipendentemente dalla tensione fornita dall'alimentatore esterno, che comunque non dovrà superare i 12v. Questa è l'alimentazione più prudenziale per il microcontroller. Solo se si ritiene che questa sia insufficiente per un corretto funzionamento del sistema, passare a quella superiore, ovvero +8v.
    Ho notato che per avere una tensione di + 5v sul piedino "VIN", è necessario che l'alimentatore fornisca almento 7 v in uscita, altrimenti la tensione sarà insufficiente per alimentare il microcontroller. Questa a causa di una caduta di tensione dovuta al regolatore di tensione.
  • Settaggio VIN/+8v: ESP32x verrà alimentato attraverso al piedino "VIN" a 8v, indipendentemente dalla tensione fornita dall'alimentatore esterno, che comunque non dovrà superare i 12v.
    Ho notato che per avere una tensione di + 5v sul piedino "VIN", è necessario che l'alimentatore fornisca almento 9 v in uscita, altrimenti la tensione sarà insufficiente per alimentare il microcontroller. Questa a causa di una caduta di tensione dovuta al regolatore di tensione.
  • Nessun settaggio di questo connettore: se ESP32x è connesso al computer via USB, in via prudenziale lasciare aperto questo contatto. In questo modo il microcontroller continuerà ad essere alimentato attraverso la presa USB.
    Nota importante: si potrebbe pensare: "ma non sarebbe sufficiente non alimentare esternamente la scheda?" Certamente, ma in questo modo si perderebbe la possibilità di fornire un alimentazione esterna alle periferiche che funzionano a 3,3v (vedi paragrafo precedente); e neppure verrebbero alimentate le periferiche che richiedono un'alimentazione a 5v o superiore (come per esempio i motori elettrici e servomotori) e altri sensori/attuatori che richiedono queste tensioni.
    Attenzione: alimentare delle periferiche (tranne i motori) a +5v può danneggiare il microcontroller, quindi procedere con molta cautela e a prorio rischio.







Settaggi locali:

Ora verranno trattati i settaggi locali, ovvero quegli aspetti dell'alimentazione elettrica relativi a un unico zoccolo per sensori/attuatori oppure un piccolo gruppo di essi.



ja
Il settaggio
di J4
j41

Il settaggio di J4 è relativo allo zoccolo dati "DA1". Si possono selezionanre due tensioni di alimentazione:
  • 3.3v/DA1: lo zoccolo DA1 verrà alimentato a 3,3v (soluzione consigliata);
  • DA1/+5vlo zoccolo DA1 verrà alimentato a +5v, naturalmente se la sceda è collegata ad un alimentatore esterno (soluzione da verificare con attenzione). Attenzione a possibili danni a ESP32x (vedi paragrafo dedicato).







j8
Il settaggio
di J8
j81


Il settaggio di J8 è relativo agli zoccoli dati "AD1A e AD1B". Si possono selezionanre due tensioni di alimentazione:
  • 3.3v/AD1: gli zoccoli AD1A e AD1B:  verranno alimentati a 3,3v (soluzione consigliata);
  • AD1/+5v:  gli zoccoli AD1A e AD1B:  verranno alimentati a +5v, naturalmente se la sceda è collegata ad un alimentatore esterno (soluzione da verificare con attenzione).
    Attenzione a possibili danni a ESP32x (vedi paragrafo dedicato).







j9
Il settaggio
di J9
j91


Il settaggio di J9 è relativo agli zoccoli dati "DA3" e "DA4". Si possono selezionanre due tensioni di alimentazione:
  • 3.3v/DA3/4: gli zoccoli dati "DA3" e "DA4" verrà alimentato a 3,3v (soluzione consigliata);
  • DA3/4 +5v:  gli zoccoli dati "DA3" e "DA4" verrà alimentato a +5v, naturalmente se la sceda è collegata ad un alimentatore esterno (soluzione da verificare con attenzione).
    Attenzione a possibili danni a ESP32x (vedi paragrafo dedicato).







j10
Il settaggio
di J10
j101

Il settaggio di J10 è leggermente diverso ai precedenti, in quanto non è relativo alla scelta tra le tensioni 3.3v 3 e 5v, bensì  a selezionare per lo zoccolo "8 LED" se il pin "COM" verrà collegato a massa (GND) oppure + 3,3v. E' necessaria una breve spiegazione. Allo zoccolo "8 LED" si potrà collegare una batteria di 8 led (appunto!), che possono avere come anodo comune (+3,3v) oppure catodo comune (GND).
  • Anode (+)/COM: il terminale COM di 8 LED viene connesso a +3.3v;
  • COM/Catod.(-): il terminale COM di 8 LED viene connesso a massa (GND)

Nota: attenzione a effettuare i settaggi corretti, altrimenti si rischia di danneggiare irrimediabilmente la batteria di led. In base a quale tipo di modulo si usa, sarà necessario anche adeguare il programma.








j2
Il settaggio
di J2
j321

Il settaggio di J2 è anch'esso leggermente diverso dai precedenti, infatti è relativo all'alimentazione di un motore elettrico (MT1). Naturalmente il motore verrà alimentato solamente se la scheda è collegata all'alimentatore esterno. Questo connettore è vicino al mos-fet che regola la tensione compresa tra 5v e 12v che verrà fornita al motore; perciò il microcontroller sarà  disaccoppiato da essa  e pertanto non verrà danneggiato.
  • +5v/MT1: il motore verrà alimentato con una tensione massima di 5v.
  • MT1/EXT: il motore sarà alimentato con una tensione massima uguale a quella fornita dal l'alimentatore esterno: se esso erogherà 9v, la tensione max che arriverà al motore sarà di 9v; se fornisse 12v, il motore riceverà al massimo 12v.

Nota: perchè ricevera la tensione massima di x volt? Perchè la tensione che giungerà al motore attraverso il mos-fet IRF520 sarà proporzionale al valore presente sul piedino di ESP32x, che potrà essere regolata attraverso al potenziometro  (TRM1) presente sulla basetta o in altro modo.








4 -  Il settaggio delle porte alternative di ESP32x (GPIO) settori evidenziati in verde



In questo paragrafo vengono trattati i settaggi delle porte dei dati per alcuni zoccoli, con lo scopo principale di evitare conflitti, e quindi aumentare le possibilità di espansione dei propri progetti.



j5
Il settaggio
di J10
j51

Il settaggio di J5 è relativo alla gestione della porta dati dello zocclolo MT1, che può essere selezionata tra P26 (GPIO26) e P0 (GPIO0).
  • La porta P26 è utilizzata anche dallo zoccolo BZ1, utilizzato principalmente (ma non solo) come uscita audio; quindi non potrebbero essere usate contemporaneamente. *
  • La porta P0 è utilizzata da I2C2, I2C4, RFID1, *

* Nota1: naturalmente, come ogni altro GPIO, è presente sullo zoccolo "universale" DATA, e quindi questa osservazione ha un valore generale.
Nota 2: la porta (P0) GPIO0 è disponibile solo con ESP32S.








j67

l settaggio di J6 e J7

j671

Il settaggio d J6 e J7 è relativo agli zoccoli GPS1 e GPS2 e agiscono contemporaneamente per entrambi Poichè sono entrambi connessi contemporaneamente alle stesse porte, non possono essere usati insieme. Questi zoccoli sono stati studiati principalmente per i sensori GPS, che hanno una porta Rx e una TX, ma possono essere usati per tutte le periferiche che usano questa sequenza di pin.
  • P35/TX (J7): permette di connettere la porta Tx del GPS  (o per altri sensori/attuatori) a GPIO35, che è solo di ingresso.
  • TX/P17 (J7): permette di connettere la porta Tx del GPS  (o per altri sensori/attuatori) a GPIO17.
  • P27/RX (J6): permette di connettere la porta Rx del GPS  (o per altri sensori/attuatori) a GPIO27.
  • RX/P18 (J6): permette di connettere la porta Tx del GPS  (o per altri sensori/attuatori) a GPIO18

Nota: si è deciso di permettere la scelta di due porte Tx e due porte Rx (che possono anche essere selezionate indipendentemente), per permettere una maggiore flessibilità usando un ESP32 CYD, ovvero con display integrato. In questo modo, per esempio, è possibile usare le porte P35 e P27 (presente su questo microcontroller, lasciando libere P21 e P22, che possono essere usate per gestire contemporaneamente anc delle periferiche che seguono il protocollo I2C.





sda1

Il settaggio di SDA

sda

Il settaggio di SDA. I microcontroller come Arduino, ESP01, ESP8266 hanno delle porte dedicate fisse per SDA (data) e SCK (clock) relative al protocollo I2C. ESP32x, al contrario, permette di scegliere quali porte usare per questo scopo, sebbene di base siano P21 per SDA e P22 per SCK. Proprio per permettere una maggiore libertà di uso, specialmente per ESP32 CYD, cha ha solo cinque porte a disposizione dell'utente, si è optato per dare una scelta per la porta SDA, tra P21 e P27. Un uso oculato di queste possibilità, insieme ai settaggi di J6 e J7, permette di collegare più periferiche a questo interessante microcontroller, ma può essere utile per aumentare la flessibilità anche per ESP32 ed ESP32S.
Questo settaggio influisce direttamente sugli zoccoli I2C1, I2C2 e I2C3 e I2C4. Ricordo che le periferiche che seguono il protocollo I2C possono essere connesse in parallelo, a patto che abbiano indirizzi interni differenti.
  • P27/SDA: la porta SDA si attesta su P27.
  • SDA/P21: la porta SDA si attesta su P21.
Nota: se nei propri progetti non si usano le porte P21 e P22 rispettivamente per SDa e SCK, è necessario dichiararlo nel programma.








5 -  Gli zoccoli per collegare sensori/attuatori/display (settori evidenziati in bianco)




In questo paragrafo verranno trattati gli zoccoli su cui si possono inserire le periferiche che colloquiano con ESP32x, e quindi riguarda proprio il "cuore" del progetto. Iniziamo questa carrellata partendo dall'angolo in alto a sinistra della BDS per poi procedere in senso antiorario.

Un aspetto interessante di questi zoccoli è la ridondanza: alcuni di essi hanno la stessa piedinatura, come per esempio BZ1, DA2, DA3, DA4, ma essere collegati a porte diverse di ESPx, permettendo di utilizzare più periferiche con la stessa piedinatura in uno stesso progetto; I2C3 (4 pin) e GPS2 (5 pin) condividono la disposizione dei primi quattro pin, ma si attestano su diverse porte del microprocessore. Sicuramente se ne troveranno altri durante l'uso e la sperimentazione.



sv1
Lo zoccolo
"SV1"

sv11



Lo zoccolo "SV1" è stato progettato per gestire i servomotori, del tipo di GS90. La differenza tra un motore elettrico e un servomotore è la seguente: un motore elettrico ruota liberamente in un senso o nell'altro, e si può regolare solo la velocità; mentre un servomotore ruota di un amgolo, solitamente 90° o 180°, raramente di 360°. Normalmente si può regolare sia l'angolo di rotazione che la velocità, magari con lo stesso potenziometro presente (TMR1) sulla BDS.
Il GPIO di controllo è la porta 26.

Nota 1: i servomotori generalmante sono alimentati a 5v, quindi non funzionerebbero se collegati direttamente a ESP32x, non solo perché la tensione non sarebbe adeguata, ma anche la corrente erogata dal microcontroller sarebbe largamente insufficiente. Per cui il servomotore sarà alimentato direttamente a 5v. Naturalmente in questo caso sarà necessario alimentare la scheda con un alimentatore esterno.
Nota 2: lo zoccolo SV1 è l'unico slot dati è l'unico con connettore maschio, perchè abitualmente i servomotori hanno un connettore femmina. Attenzione: non tutti i servomotori hanno la stessa sequenza di piedini, controllare attentamente prima di alimentarli.
Nota 3: la porta GPIO26 è anche utilizzata dallo zoccolo BZ1, MT1 e "DATA", quindi porre attenzione nella scrittura del programma per evitare conflitti e/o comportamenti imprevedibili.

GPIO26 è compatibile con tutti gliESP32x.
Clicca qui per la tabella relativa alla configurazione delle porte.







mt1

Lo zoccolo MT1. Usa
la porta P26

mt11


Lo zoccolo "MT1" è stato pensato per gestire vari modelli di motori elettrici, alimentati con una tensione massima fino a 12 v.
Si può scegliere la porta da usare con il  jumper J5, tra GPIO26 (utilizzabile da qualunque ESP32) oppure GIPO0 (gestibile solo da ESP32S).
Inoltre può essere alimentato in due forme diverse, che richiedono però sempre l'uso di un alimentatore esterno, ponticellando correttamente J2, fornendo quindi al motore:
  1. una tensione fino a 5v;
  2. oppure con la tensione fornita direttamente dall'alimentatore esterno, quindi fino a un massimo di 12v.

La velocità di rotazione del motore è proporzionale alla tensione a cui viene alimentato, e con un programma opportuno potrebbe anche essere regolata attraverso il potenzionetro TRM1 presente sulla BDS.
Nota1 :  il motore verrà controllato per mezo di un circuito elettronico, composto da un mos-fet e alcuni diodi, per cui la tensione fornita dall'alimentatore non giunge mai alle porte di ESP32x (che potrebbe essere danneggiato da essa), ed è presente anche un sistema per evitare che la extra-corrente prodotta eventualmente dal motore quando gira ancora per inerzia dopo che si è interrotta l'alimentazione, non danneggi il microcontroller.
Nota 2
: la porta GPIO26 è anche utilizzata dallo zoccolo BZ1, SV1 e "DATA", quindi porre attenzione nella scrittura del programma per evitare conflitti e/o comportamenti imprevedibili. GPIO26 è compatibile con tutti gliESP32x.
Clicca qui per la tabella relativa alla configurazione delle porte.








audio
Lo zoccolo "BZ1"
audio1

Lo zoccolo "BZ1" è stato pensato specificamente per l'uscita audio, infatti sullo zoccolo a tre pin (femmina) è possibile collegare direttamente un "buzzer" tipo KY-006 o KY-012 (piccoli altoparlanti piezoelettrici), mentre nel jack femmina standard stereo da 3,5 mm è possibile collegare un connettore standard per cuffia o per alimentare un piccolo amplificatore (anche se fosse stereo, l'uscita diESP32x sarà sempre mono).

Nota 1: compatibile con la maggior parte delle periferiche sia id input che di output che funzionano con DA2, DA3, DA4, ma che richiedono alimentazione a +3,3v. Non adatto per relè e periferiche che lavorano a +5v.
Nota 2: il condensatore C6 serve per disaccopiare l'uscita a udio dal microcontroller.
Nota 3:
la porta GPIO26 è anche utilizzata dallo zoccolo MT1, SV1 e "DATA", quindi porre attenzione nella scrittura del programma per evitare conflitti e/o comportamenti imprevedibili. GPIO26 è compatibile con tutti gliESP32x.
Clicca qui per la tabella relativa alla configurazione delle porte.







da1
Lo zoccolo "DA1"
da11

Lo zoccolo "DA1" è adatto per tutte le periferiche sia analogiche che digitali a tre pin con la connsessione alla porta dati centrale (GPIO17).
In base al settaggio di "J4" sarà possibile alimentare questo zoccolo sia a 3,3v che a 5 v. Provare sempre ad alimentare come primo tentativo la periferica connessa a +3,3v, e solo in caso di malfunzionamento, e a proprio rischio e pericolo, ad alimentarla a +5v,
con la probabilità di danneggiare il microcontroller (vedi paragrafo dedicato).
Nota 1: questo zoccolo è utilizzabile solo da ESP32 e ESP32S. ESP32 CYD non mette a disposizione GPIO17 per l'utente.
Nota 2
la porta GPIO35 potrebbe essere utilizzato anche da GPS1/2, quindi fare attenzione per evitare confliti o malfunzionamenti.
Clicca qui per la tabella relativa alla configurazione delle porte.







ad1
Gli zoccoli AD1A e AD1B
ad11

Gli zoccoli AD1A e AD1B sono "gemelli", nel senso che usano entrambi le stesse porte, solo inserite in ordine diverso, per cui non si possono usare contemporaneamente, pena conflitti o comportamenti anomali.
E' stata adottata la scelta di sdoppiare gli zoccoli per renderli disponibili a un maggiore numero di sensori. Ho usato il termine "sensori" e non quello generico di "periferiche" perchè le porte utilizzate , GPIO34 e GPIO35 sugli ESP32x sono solo per ingresso, e quindi se collegheremo ad esse degli attuatori, come per esempio dei relè, non funzioneranno.
Su questo zoccolo potrenno essere inseriti dei sensori con due uscite, sia digitali che analogiche o miste.
In base al settaggio "J8" sarà possibile alimentare questo zoccolo sia a 3,3v che a 5 v. Provare sempre ad alimentare come primo tentativo il sensore connesso a +3,3v, e solo in caso di malfunzionamento, e a proprio rischio e pericolo, ad alimentarlo a +5v, con la probabilità di danneggiare il microcontroller (vedi paragrafo dedicato).
Nota 1:
questo zoccolo è utilizzabile con i due ingressi digitali solo da ESP32 e ESP32S. ESP32 CYD mette a disposizione dell'utente solamente GPIO35, quindi potrà essere utilizzato solo parzialmente.
Nota 2: la porta GPIO34 è utilizzata anche da TRM1 (potenziometro), mentre GPIO35 potrebbe  essere utilizzato anche da GPS1/2, quindi fare attenzione per evitare confliti o malfunzionamenti.
Clicca qui per la tabella relativa alla configurazione delle porte.







gps
Gli zoccoli GPS1/GPS2

gps

Gli zoccoli GPS1 e GPS2 sono stati progettati espressamente per accogliere rispettivamente il sensore GPS. NEO6MV2 su GPS1 e NEO-7M su GPS2. Entrambi questi moduli usano le stesse porte, ma disposti in ordine diverso. Pertanto non possono essere usati contemporaneamente, pena conflitti e/o malfunzionamenti.
In effetti NEO-7M ha cinque piedini mentre
NEO6MV2 ne ha solo quattro, ma il quinto (Pps) non viene utilizzato dal GPS, sebbene sia comunque connesso ad una porta di ESPx, ovvero il GPIO23, che potrebbe essere utilizzato nel caso si connettesse a GPS2 una periferica che richiede il collegamento con tre porte del microprocontroller.
Le porte fondamentali del GPS, (Rx e TX) possono essere selezionate separatamente, per evitare conflitti e rendere più ampia la flessibilità specialmente con ESP32 CYD, che lascia a disposizione dell'utente solo cinque porte. Queste selezioni possono essere effettuate per mezzo di J6 e J7.
Come per tutti gli altri zoccoli, anche quando sono stati progettati  per periferiche specifiche, possono essere utilizzati per tutte quelle periferiche compatibili con il numero di GPIO richiesti e e con l'alimentazione , che in questo caso è esclusivamente a 3,3v.
Le porte utilizzate:
  • RX (ricezione): GPIO18 o GPIO27;
  • TX (trasmissione: GPIO17 o GPIO35. Ricordo che GPIO35 accetta solo segnali in Input;
  • Pps : GPIO 23. Questa porta non viene utilizzata dai moduli GPS.

Approfondimenti sui conflitti:

  • GPIO17 è utilizzato anche da DA1, oltre che dalla porta DATA, che è universale;
  • GPIO18 è utilizzato anche da DA3, e da RFID1,oltre che dalla porta DATA, che è universale;
  • GPIO27 pu utilizzato anche da DA4, oltre che dalla porta DATA, che è  universale; potrebbe anche essere utilizzata da I2C1/2/3/4, oltre che dalla porta DATA, che universale; 
  •  GPIO23 è utilizzato anche da RFID1, oltre che dalla porta DATA che è universale. 
  • Clicca qui per la tabella relativa alla configurazione delle porte.






rfid
Lo zoccolo RFID1

rfid1

Anche lo zoccolo RFID1 è stato progettato espressamente per accogliere un particolare sensore, il lettore di schede RFID di nome MF522; ciò non toglie, come per tutti gli zoccoli precedenti, possa essere usato anche per altre periferiche. E' un modulo piuttosto complesso, che usa varie porte,nel dettaglio:
  • SDA: GPIO5;
  • SCK: GPIO18
  • MOSI: GPIO23;
  • MISO: GPIO19;
  • IRQ: GPIO0 (non usato dal lettore, ma inserito per eventuali usi futuri). GPIO0 è disponibile solo per ESP32S.
  • RST: GPIO4

Approfondimenti sui conflitti:

  • GPIO5 è usato solamente dalla pora DATA; che è universale;
  • GPIO18 è utilizzato anche da DA3, e da GPS1/2, oltre che dalla porta DATA, che è universale;
  • GPIO23 è utilizzato anche dal pin Pps di GPS2 (non sempre utilizzato),oltre che dalla porta DATA, che è universale;
  • GPIO19 è usato solamente dalla porta "DATA; che è universale;
  • GPIO0 è disponibile anche per I2C2, I2C4, MT1, oltre che dalla porta DATA, che è universale;
  • GPIO4 è usato solamente dalla porta DATA; che è universale.
  • Clicca qui per la tabella relativa alla configurazione delle porte.







Ic1
Lo zoccolo I2C1
ic11



ic2
Lo zoccolo I2C2
ic22



ic3
Lo zoccolo I2C3
ic33

Gli zoccoli I2C1, I2C2, I2C3 e I2C4 (che però verrà trattato a parte) sono stati pensati per ospitare periferiche che usano il protocollo I2C; semplicemente hanno una disposizione diversa dei piedini, per poter collegare il massimo numero di sensori, attuatori o display.
Le porte di connessione per periferiche I2C sono SDA (data) e SCK o SCL (clock).
SCL/SCK è sempre collegata al GPIO22, mentre SDA può essere selezionata tra GPIO21 oppure GPIO27, attaverso il settaggio del jumper SDA.
I2C1 e I2C3 dispongono delle sole due porte "standard" per il protocollo I2C, ovvero SDA e SCL, mentre I2C3 possiede altre due porte, SDO e CS, per mantenere la compatibilità con i piedini di alcuni sensori, che però non sono utilizzate con I2C. Poichè sono comunque collegate fisicamente  ad alcuni modelli di ESP32 (vedi nota 2).

La gestione delle porte in dettaglio:
  • SDA (data): GPIO21 o GPIO27 (selezione con jumper SDA);
  • SCL (clock): GPIO22
  • SDO (solo per I2C2): GPIO16 (vedi nota 2);
  • CS (solo per I2C2): GPIO0 (vedi nota 2);
Approfondimenti sui conflitti:
  • SDA (GPIO21): conflitto con display LDGV; con I2C1/2/3/4 se non sono utilizzate periferiche I2C, oltre che dalla porta DATA, che è universale;
  • SDA (GPIO27): conflitto con DA4; possibili conflitti con GPS1/2; con I2C1/2/3/4 se non sono utilizzate periferiche I2C, oltre che dalla porta DATA, che è universale;
  • SDO (GPIO16): conflitto tra I2C2 e I2C4, oltre che dalla porta DATA, che è universale;
  • CS (GPIO0): possibile conflitto con MT1, RFID1, tra I2C2 e I2C4, oltre che dalla porta DATA, che è universale
  • Clicca qui per la tabella relativa alla configurazione delle porte.

Nota 1: le periferiche I2C, purchè abbiano indirizzi interni, possono essere collegati in parallelo sulle stesse porte di comunicazione con ESP32x. Se invece si collegano periferiche standard, ovvero non I2C, sarà possibile utilizzarne una sola sul blocco di zoccoli con la denominazione I2Cx (dove x sta per i numeri comporesi tra "1" e "4").
Nota 2: I2C3 mette a disposizione due ulteriori porte,  SDO (GPIO16) e CS (GPIO0).La porta SDO può essere utilizzata sia da ESP32 che ESP32S; la porta CS è disponibile solamente per ESP32S. ESP32 CYD (con display integrato) non permette di utilizzare nessuna di queste ulteriori porte.
Nota 3: su ESP32x le porte per I2C possono essere selezionate tra le varie porte disponibili; tuttavia quelle standard sono  GPIO21 per SDA e GPIO22 per SCL. Se si intende usarne altre, per esempio GPIO27 per SDA, è necessario dichiararlo esplicitamente nel programma.
Nota 4: SDA può essere selezionata tra GPIO21 e GPIO27, specialmente per aumentare la flessibilità con ESP32 CYD, che ha poche porte a disposizione dell'utente. Questo microcontroller usa GPIO21 per la retroilluminazione, quindi non può essere utilizzato come SDA,
Nota 5: in alcuni casi appare "possibile conflitto con", e questo può sembrare un po' strano. Il conflitto è possibile solo perchè per gli zoccoli indicati è possibile selezionare porte alternative.







da3
Lo zoccolo DA3
da33



da4
Lo zoccolo DA4
da44

Gli zoccoli DA3 e DA4. Questi zoccoli sono trattati insieme perché sono gemelli, come disposizione dei piedini, ma possono essere usati contemporaneamente perché fanno capo a diverse porte di ESP32x.
Su questi zoccoli possono essere inserite delle periferiche sia analogiche che digitali, che utilizzano una sola porta dati, come per esempio dei relè KY-019.
Entrambi possono essere alimentati sia a +3,3v che a +5v, settando correttamente "J9". In linea di massima non ci sono problemi con attuatori, come relè, perchè ricevono informazioni da ESP32x, mentre sensori, che trasmettona dati ai microcontroller a +5v, potrebbero danneggiare in modo irreparabile ESP32x, sia sulla singola porta che l'intero apparecchio. In questo caso sarebbe necessario interporre un partitore di tensione.
Quando si utilizzano periferiche che lavorano a +5v, farlo con molta attenzione, a proprio rischio e pericolo
(vedi paragrafo dedicato).

La gestione delle porte in dettaglio:
  • zoccolo DA3: GPIO18;
  • zoccolo DA4: GPIO27.

Approfondimenti sui conflitti:

  • GPIO18 (DA3): conflitto con RFID1; possibili conflitti con GPS1/2, oltre che dalla porta DATA, che è universale;
  • GPIO27 potrebbe anche essere utilizzata da I2C1/2/3/4, e/o da GPS1/2, oltre che dalla portaDATA, che universale.

Nota 1: DA3 può essere utilizzato solo da ESP32 ed ESP32S, mentre DA4 può essere utilizzato da tutti i microcontroller.
Nota 2
: in alcuni casi appare "possibile conflitto con", e questo può sembrare un po' strano. Il conflitto è solo possibile perchè negli zoccoli indicati è possibile selezionare delle porte alternative, e pertanto in questo caso non andrebbero in conflitto.
Nota 3:
compatibili con la maggior parte delle periferiche sia id input che di output che funzionano con DA2, BZ1, sia che lavoino a 3,3v che a 5v, ricordando tutti i problemi che possono sorgere con alimentazione a +5v.  Vedi paragrafo.








da2

Lo zoccolo DA2

da22

Lo zoccolo DA2 è anch'esso simile per caratteristiche con BZ1, DA3 e DA4, ovvero accetta sensori analogici o digitali che utilizzino una sola porta dati, ma con le seguenti differenze:
  • la porta GPIO35 è solo in ingresso, quindi accetta solo sensori;
  • DA2 può essere alimentato solo a +3,3v.

Possono sembrare severe limitazioni, ma ci sono molti semplici sensori che possono essere connessi con successo a questo zoccolo.

Approfondimento sui conflitti:
questo zoccolo utilizza la porta GPIO35, che va in conflitto con AD1A/B; può andare in conflitto con
GPS1/2, e con la porta universale DATA.








trm
Lo zoccolo TRM1

trm1

Lo zoccolo TRM1 integra un potenziometro da 10KΩ, in cui un estremo viene connesso a massa, quello opposto a +3,3v, mentre il centrale viene connesso alla porta GPIO34.
GPIO34 può essere utilizzato da ESP32 ed ESP32S, mentre questa porta non è disponibile per l'utente con ESP32 CYD.
Il potenziometro è stato inserito direttamente nella basetta perché può essere usato per molti scopi, per esempio:
  • regolare la velocità di rotazione di un motore elettrico;
  • regolare l'angolo di rotazione di un servomotore;
  • la frequenza di emissione di un suono;
  • regolare la luminosità di un led per mezzo della funzione PWM;
  • variare genericamente la tensione in ingresso sulla porta GPIO34.

Approfondimento sui conflitti:
La porta GPIO34 va in conflitto con una  porta di
AD1A/B e con la porta universale  DATA.

Nota: per evitare interferenze con le porte di AD1A/B e con ESP32 CYD, potrebbe essere più corretto inserire semplicemente uno zoccolo simile a DA2, ecc. e inserire il potenziometro solo quando necessario. Si verificherà il comportamento più corretto durante i test della basetta.





data
Lo zoccolo "DATA".

Lo zoccolo DATA e quelli accessori: GND, +3.3v e +5v. Questo zoccolo, come già scritto in varie occasioni è uno zoccolo "universale", perchè riporta in ordine, tutti i GPIO che possono essere utilizzati dall'utente, tenendo conto delle seguenti limitazioni:
  • Tutte queste porte possono essere utilizzate con ESP32S;
  • tutte queste porte possono essere utilizzate con ESP32, tranne che GPIO0;
  • ESP32 CYD può utilizzare solo le seguenti porte: GPIO21/22/26/27/35, perchè le altre non sono disponibili per l'utente.

Naturalmente vale la stessa regola relativamente ai conflitti rispetto a quanto detto per i singoli zoccoli; ci saranno dei conflitti o malfunzionamenti se una stessa porta viene utilizzata contemporaneamente su un altro zoccolo, tranne che per SDA e SCK, quando usate da periferiche I2C con indirizzi interni differenti.

Lateralmente allo zoccolo "DATA" si trova lo zoccolo "GND" (massa) e ancora più internamente "+3.3v", mentre superiormente ad essi se ne trovauno più limitato che fornisce +5v. Il loro utilizzo è intuitivo: essi servono per fornire l'alimentazione e la massa ad eventuali periferiche connessi su DATA.

Nota1: su questa porta si possono connettere dei cavetti per la gestione di RELAY e SWITCH, che verranno trattati successivamente.

Nota 2: ESP32 CYD utilizza la porte GPIO21 per attivare la retroilluminazione del dispaly, quindi è meglio non utilizzarla, per non ottenere malfunzionamenti.









espx
Gli zoccoli ESPX1/2

In questa immagine si vedono i due zoccoli laterali alla connessione per ESP32S che chiameremo ESPX1/2 , in cui sono replicati, nello stesso ordine in cui sono stati progettati per questo microcontroller, per cui se fosse necessario, ci si potrebbe collegare anche direttamente ad essi.

Naturalmente vale la stessa regola relativamente ai conflitti rispetto a quanto detto per i singoli zoccoli; ci saranno dei conflitti o malfunzionamenti se una stessa porta viene utilizzata contemporaneamente su un altro zoccolo, tranne che per SDA e SCK, quando usate da periferiche I2C con indirizzi interni differenti.

Queste porte possono essere usate anche per esp32 ed ESP32 CYD, con le seguenti limitazioni:
  • tutte queste porte possono essere utilizzate con ESP32S, tranne le seguenti: GPIO6/7/8/9/10/11, presenti solo su ESP32S, non sono utilizzabili dall'utente ;
  • tutte queste porte possono essere utilizzate con ESP32, tranne che GPIO0 e GPIO6/7/8/9/10/11 non disponibili su ESP32;
  • ESP32 CYD può utilizzare solo le seguenti porte: GPIO21/22/26/27/35, perchè le altre non sono disponibili per l'utente.

Nota: ESP32 CYD utilizza la porte GPIO21 per attivare la retroilluminazione del dispaly, quindi è meglio non utilizzarla, per non ottenere malfunzionamenti.








lvgl
Lo zoccolo per il dispaly LVGL

lvgl1




alim
il ponticello per "J1"
sul display



Lo zoccolo per il display LVGL (touch) da 2.8". Questo zoccolo, che sulla BDS è presente in orizzontale, è stato progettato per ospitare il display LVGL touch da 2.8 pollici, estremamente utile per mostrare immagini e tutta una serie di informazioni che altrimenti si potrebbero vedere solo attraverso il monitor seriale.
Lo zoccolo è stato previsto per ospitare i collegamenti nella giusta sequenza per il modulo "touch", ovvero che risponde al contatto sullo schermo stesso, ma dovrebbe essere adatto anche per lo schermo normale, che semplicemente usa meno contatti.
Nel caso però che si debba acquistare il display, visto la differenza di prezzo irrisoria, consiglio sempre di comprare quello touch, che permette una maggiore interattività.
Come scelta progettuale, che potrebbe anche non essere condivisa, ho deciso, per evitare conflitti o malfunzionamenti, di non usare per altri zoccloli (tranne quelli laterali a ESP32S e a quello denominato "DATA") le porte necessarie per il display. L'unica porta comune con altre funzioni è  GPIO21,  la porta standard per SDA, che però sugli zoccoli I2C1/2/3/4 può essere sostituita con GPIO27.
Usando quindi moduli con protocollo I2C insieme al display, ricordarsi di cambiare il settaggio di SDA.

Nota: il display può essere alimentato sia a 3,3v che a 5 v. La scelta del tipo di alimentazione dipende da come si configura il ponticello "J1" presente sl  display stesso. Vedi foto in basso a sinistra. Ecco come impostarlo:
  • J1 senza ponticello: alimentazione a +5v;
  • J1con ponticello: alimentazione a +3,3v.

Come si può vedere dalle immagini precedenti, si è scelta l'alimentazione a +3,3v del display connesso alla BDS, perché in questo caso esso può funzionare senza l'uso di un alimentatore esterno. Per cui è bene ricordarsi di effettuare il ponticello se si vuole che il display funzioni correttamente.
Si può effettuare il ponticello applicando direttamente una goccia di stagno, ma la scelta diventa quasi definitiva, perchè il ponticello è minuscolo, e si sconsiglia di riscaldarlo più volte con il saldatore,creando e togliendo il ponticello, per evitare di danneggiarlo.
Quindi ho pensato ad un'altra soluzione. Ho saldato due brevi spezzoni di filo sottile ai capi di J1, saldandoli sull'altro lato ad un connettore femmina standard a due pin.

Dalle due immagini superiori, relative alla BDS, si vede la presenza di un connettore maschio a due pin, denominato anch'esso "J1". Questo connettore ha semplicemente i due capi connessi uno con l'altro. Inserendo su di esso il connettore femmina che è stato preparato prima, saldato con due cavi a "J1" del display, otterremo un ponticello, e pertanto il display sarà alimentato a 3,3v, come se avessimo effettuato la saldatura sul retro del display stesso. Però nel caso decidessimo di collegare il display, per esempio a un Arduino "Uno" o "Nano", che funzionano nativamente a +5v, potremo utilizzare lo stesso display, semplicemente lasciando scollegati i due capi del connettore femmina che abbiamo utilizzato. Mi sembra una soluzione efficace.








6 -  Gli zoccoli per collegare sensori/attuatori/display  parzialmente configurabili
(settori evidenziati in azzurro)



Gli zoccoli che verranno illustrati qui di seguito, servono sempre per collegare delle periferiche, ma alcuni (RELAY e SWITCH) potrebbero essere connessi in teoria a qualsiasi porta di ESP32x, con le solite limitazioni che vedremo in seguito; mentre I2C4 è solo parzialmente configurabile, in quanto le porte disponibili sono fisse, ma possono essere collegato allo zoccolo nell'ordine che si preferisce.






















relay
Lo zoccolo RELAY

rl



















rel13Come inserire il modulo
da otto led

Il blocco degli zoccoli "RELAY" è stato pensato per alimentare un blocco di 8 relè, ma può naturalmente essere utillizzato per 6, 4, 2 relè, come per relè singoli o anche  per qualunque altra periferica.

E' bene spiegare approfonditamente la logica, verificando la funzionalità dei tre zoccoli presenti nel dettaglio:
  • Zoccolo in basso, denominato "1": con una serie di connettori, collegare GND, RL1/./RL8 alle porte desiderate dello zoccolo DATA. Vedi immagine.
  • Zoccolo centrale, denominato  "2": su questo connettore si può inserire direttamente una batteria di otto led, che possono servire per simulare il funzionamento di altrettanti relè.  Vedi note a fine paragrafo).
  • Zoccolo superiore, denominato "3": con una serie di cavi, o con un connettore strutturato ad hoc, è possibilie controllare una scheda da 8, 6 ,4 o 2 relè, come  dei relè singoli o altre periferiche. I relè saranno attivati solamente se la BDS verrà alimentata da un alimentatore esterno, perché i relè necessitano di una tensione di +5v e di una corrente di circa 40 mA per ogni relè.

Visualizzazione del collegamento con "DATA":

datar
Il connettore "1" del gruppo "RELAY" è stato connesso alle porte di "DATA" e di "GND".nel dettaglio:
  • GND di Relay è stato collegato allo zoccolo GND (quello sotto DATA);
  • RL1 è stato connesso a GPIO19 di DATA;
  • RL2 è stato connesso a GPIO18 di DATA;
  • RL3 è stato connesso a GPIO17 di DATA;
  • RL4 è stato connesso a GPIO16 di DATA;
  • RL5 è stato connesso a GPIO15 di DATA;
  • RL6 è stato connesso a GPIO14 di DATA;
  • RL7 è stato connesso a GPIO13 di DATA;
  • RL8 è stato connesso a GPIO12 di DATA.

Questa naturalmente è stata una scelta arbitraria, e si sarebbero potute utilizzare altre porte.

Nota: ricordarsi di evitare di usare le porte da GPIO34 a GPIO39 sia per i relè, per i led e altri attuatori/display, perchè le porte indicate sono solo di Input, e non di Output.
Con ESP32 (30 pin) non è disponibile la porta GPIO0
Con ESP32 CYD si possono usare solo le porte GPIO21, 22, 26, 27.

Un modulo da 8 led può essere inserito sul secondo modulo (evidenziato con "2" nell'immagine precedente), facendo attenzione al giusto orientamento.
Attenzione: ci sono due tipi di queste schede: con anodo comune (+3,3v) o con catodo comune (GND). In base al settaggio di J10 verrà fornito alla porta "COM" rispettivamente +3,3v o GND (-). Prestare attenzione, alimentando il modo sbagliato la schede di led, essi potrebbero essere irrimediabilmente danneggiati!

Nota 1 : ESP32 CYD utilizza la porta GPIO21 per attivare la retroilluminazione del dispaly, quindi è meglio non utilizzarla, per non avere malfunzionamenti.

Nota 2: naturalmente a questo zolloco, oltre led o relè, è possibile collegare qualsiasi altra periferica che usi al massimo otto porte del microcontroller.








sw1

Lo zoccolo SWITCH

sw

Il blocco dei due zoccoli sotto il nome di "SWITCH" è stato progettato per inserire principalmente un modulo da otto switch, che potrebbe per esempio simulare il funzionamento di alcuni sensori digitali, in grado di fornire come risposta solo "0" o "1".
Anche per questo blocco, le porte utilizzabili potranno essere selezionate tra tutte quelle disponibili, come per il blocco "RELAY".
 Come sempre questo zoccolo può essere utilizzato anche per altre periferiche.

Nell'immagine a destra si vede come inserire il modulo da otto switch sullo zoccolo inferiore di questo blocco.
Come si nota dalle immagini, sono state inserite anche otto resistenze da 10 KOhm, tra l'uscita di segnale e + 3,3v, perché questo permette di avere un segnale più stabile.
Il pin comune "G" è stato connesso a GND.

sw2

Visualizzazione del collegamento con "DATA":

sw4
Il connettore superiore del blocco SWITCH connesso con lo zoccolo "DATA".
  • SW1 è connesso con GPIO35;
  • SW2 è connesso con GPIO34;
  • SW3 è connesso con GPIO33;
  • SW4 è connesso con GPIO32;
  • SW5 è connesso con GPIO27;
  • SW6 è connesso con GPIO26;
  • SW7 è connesso con GPIO25;
  • SW8 è connesso con GPIO23.
Questa naturalmente è stata una scelta arbitraria, e si sarebbero potute utilizzare altre porte, sempre che non siano già utilizzate per altre periferiche.

Nota : naturalmente a questo zolloco, oltre al modulo da otto pulsanti, è possibile collegare qualsiasi altra periferica che usi al massimo otto porte del microcontroller.







ic4

Il blocco per IC24

ic44

Il blocco per I2C4 è un po' diverso dai precedenti, perchè non si può selezionare qualsiasi porta disponibile, ma solamente quelle impostate nel progetto. Il vantaggio, rispetto ad altri zoccoli di impostazione statica è che la sequenza dei pin di dati e di alimentazione può essere scelta a piacere dall'utilizzatore, usando alcuni brevi cavetti di connessione.
Ciò permette la massima flessibilità nella connessione delle periferiche. Come suggerisce il nome dello zoccolo, I2C4, esso è stato progettato principalmente per accogliere periferiche adatte al protocollo I2C come I2C1, I2C2, I2C3, per cui valgono le stesse considerazioni; tuttavia possono essere collegate su I2C4 qualunque altra periferica, tenendo conto che se non segue il protocollo indicato, non è possibile collegare altri apparati su I2C1/2/3, pena malfunzionamenti o comportamenti imprevedibili del programma.

 Questo zoccolo è adatto per sensori/attuatori/display che usino fino a:
  • due porte dati GPIO21 o GPIO27 per SDA e GPIO22 per SCK usando ESP32 CYD;
  • tre porte dati GPIO21o GPIO27 per SDA ; GPIO22 per SCK e GPIO16 con ESP32;
  • quattro porte dati GPIO21o GPIO27 per SDA ; GPIO22 per SCK,  GPIO16 e GPIO0 per ESP32S.

Nota 1: la scetla tra GPIO21 e GPIO27 avviene settando correttamente il jumper "SDA".
Nota 2: ESP32 CYD utilizza la porte GPIO21 per attivare la retroilluminazione del dispaly, quindi è meglio non utilizzarla, per non ottenere malfunzionamenti.

Nota 3: lo zoccolo evidenziato nella figura a destra (H22) può anche essere usato direttamente, nel caso ci siano delle periferiche che hanno la corretta sequenza dei pin.
445

La scelta dell'uso e della sequenza delle porte in uscita avverrà nel modo seguente:

gli zoccoli  "1" e "2" sono perfettamente simmetrici, in quanto il piedino "1" del primo è connesso al piedino "1" del secondo, e così via fino al sesto. Essi sono direttamente connessi attraverso le piste della BDS. Perciò i collegamenti che si effettueranno tra lo zoccolo "3" (quello a cui arrivano sia le porte dati che le alimentazioni) e lo zoccolo "2", influenzeranno direttamente lo zoccolo "1", a cui collegheremo la nostra periferica.

ic444

Ora immaginiamo di voler connettere su I2C4 un ipotetico sensore che segue il protocollo I2C ma che abbia una piedinatura tale da non poter essere inserito direttamente su I2C1, I2C2 o I2C3, o nel caso che quello interessato sia già utilizzato.
Il nostro ipotetico sensore ha quattro pin, in questa sequenza: GND, SCL, 3.3v, SDA.
Sullo zoccolo "3" sono presenti tutti questi dati, ma in un altra sequenza. Visto che sono necessarie solo quattro informazioni e si desidera inserire il sensore al centro dello zoccolo, si inizierà non dal primo pin, ma dal secondo. Si eseguiranno quindi i seguenti collegamenti con brevi spezzoni di cavi:
  • GND (zoccolo 3) sul secondo piedino (zoccolo 2);
  • 3,3v (zoccolo 3) sul quarto piedino (zoccolo 2);
  • SDA (zoccolo 3) sul quinto piedino (zoccolo 2);
  • SCL (zoccolo 3) sul terzo piedino (zoccolo 2).

Poichè gli zoccoli "2" e "1" sono totalmente simmetrici, avremo la seguente sequenza su quest'ultimo:

  • piedino 1: nulla;
  • piedino 2: GND
  • piedino 3: SCL
  • piedino 4: 3,3v;
  • piedino 5: SDA
  • piedino 6: nulla.

Procedendo in questo modo, potremo configurare i sei piedini disponibili come desideriamo, usando se necessario anche le porte GPIO16 e GPIO0 che in questo caso non sono state utilizzate.
Nota1: come si vede dalle immagini, abbiamo a disposizione sia l'alimentazione a +3,3v che +5v. Per quest'ultima alimentazione, valgono sempre le stesse considerazioni e la solita prudenza (vedi paragrafo dedicato).
Nota 2: la porta GPIO0 è disponibile solo per ESP32S; la porta GPIO16 è disponibile solo per ESP32 ed ESP32.


ic4444
La configurazione dello zoccolo secondo
necessità








7 - Un partitore di tensione



Questo schema ha scopo puramente dimostrativo e non viene rilasciata alcuna garanzia sul suo utilizzo. Alli'inizio di questa pagina è stato trattato il problema di utilizzare periferiche che richiedono un'alimentazione a +5v da collegare con un ESP32x, che funziona a +3,3v senza danneggiarlo.
Un sistema potrebbe essere quello di creare un partitore di tensione che riduca la tensione in uscita da un sensore da 5v a 3,3v.
Qui di seguito si troverà uno schema classico di partitore di tensione, da collegare tra l'uscita di segnale di un sensore alimentato a 5v e l'ingresso di una porta di ESP32x.
Nota: sperimentare prima il partitore di tensione, in modo che la tensione in uscita sia quella desiderata.



part
Schema di un classico partitore di tensione


Nell'immagine si vede lo schema classico di un partitore di tensione.
Ecco la descrizione delle voci:
VG : Volt generatore = tensione in ingresso
R1: prima resistenza
R2: seconda resistenza
VO: Volt Out = tensione in uscita.

Quindi, nel nostro caso:
VG = 5v
VO = 3,3v (richiesta)

Ho eseguito alcuni test:
test n.1:
VG = 5v
R1 = 560 Ω      R2 = 1 K
Ω                                       
VO = 3,130 v




test n.2:
VG = 5v
R1 = 560 Ω      R2 = 1,2 K
Ω *
VO = 3,354 v

* non sempre è facile trovare una resistenza da 1200
Ω.
In questo caso, si può sostituirla, mettendo in serie una resistenza
da 1K
Ω con una da 220Ω (entrambe di facile reperibilità).
Come si vede da un punto di vista teorico, entrambe le soluzioni potrebbero essere soddisfacenti;  tuttavia il test n. 2 dà un risultato più vicino a quella ottimale.





8 - Dove reperire  i moduli utilizzati in questa pagina



Ecco il collegamento a un sito relativo ai moduli utilizzati in questo pagina:

ESP32;
ESP32S (ESP32-WROOM-32U);
ESP32 CYD;
il modulo da 8 led (anodo o catodo comune);
il modulo da 8 relè (anche da 6/4/2);
il modulo da 8 pulsanti;
il display touch LVGL da 2,8".

Nota: fare attenzione, perchè spesso in una stessa pagina ci sono più articoli simili. Selezionare quello corretto.

Ho utilizzto il materiale fornito da Aliexpress, ma non ho alcun accordo commerciale nè con esso, ne con altri fornitori eventualmente indicati in questo sito.






Per contatti: info@ethicaldiy.org