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:
|
Immagine
a blocchi logici della basetta didattica e sperimentale
leggermente ingrandita.
|
Ecco
una spiegazione sintetica dei vari settori logici:
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. |
I ponticelli (jumper) di vari colori |
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:
|
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:
Le
zone per i microcontroller sono delimitate da rettangoli
gialli. 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) |
L'immagine dello zoccolo per ESP32S (38 pin) |
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) |
L'immagine dello zoccolo U2 per ESP32 (30 pin) |
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) |
Lo zoccolo per ESP32 CYD |
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:
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:
|
L'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:
|
|
Il selettore per la tensione di 3,3v |
3V-SEL:
questo selettore è assolutamente fondamentale. Se non
viene correttamente settato, le varie periferiche presenti
sulla scheda non verranno alimentate.
|
|
Il selettore per l'alimentazione esterna di ESP32x |
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.
In base a queste osservazioni, possiamo eseguire i seguenti settaggi:
|
|
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. |
Il settaggio di J4 |
Il settaggio di J4 è relativo allo
zoccolo dati "DA1". Si possono
selezionanre due tensioni di alimentazione:
|
|
Il settaggio di J8 |
Il settaggio di J8 è relativo agli zoccoli dati "AD1A e AD1B". Si possono selezionanre due tensioni di alimentazione:
|
|
Il settaggio di J9 |
Il settaggio di J9 è relativo agli zoccoli dati "DA3" e "DA4". Si possono selezionanre due tensioni di alimentazione:
|
|
Il settaggio di J10 |
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).
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. |
|
Il settaggio di J2 |
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.
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. |
Il
settaggio
di J10 |
Il settaggio di J5 è relativo alla
gestione della porta dati dello zocclolo MT1,
che può essere selezionata tra P26 (GPIO26) e P0 (GPIO0).
*
Nota1:
naturalmente,
come ogni altro GPIO, è presente sullo zoccolo
"universale" DATA, e quindi questa osservazione ha un
valore generale. |
|
l settaggio di J6 e J7
|
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.
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. |
Il settaggio di 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.
|
|
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. |
Lo zoccolo "SV1" |
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. |
|
Lo zoccolo MT1. Usa la porta P26 |
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:
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. |
|
Lo zoccolo "BZ1" |
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. |
|
Lo zoccolo "DA1" |
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. |
|
Gli zoccoli AD1A e AD1B |
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. |
|
Gli zoccoli GPS1/GPS2 |
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:
Approfondimenti sui conflitti:
|
|
Lo zoccolo 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:
Approfondimenti sui conflitti:
|
|
Lo zoccolo I2C1 Lo zoccolo I2C2 Lo zoccolo I2C3 |
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:
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. |
|
Lo zoccolo DA3 Lo zoccolo DA4 |
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:
Approfondimenti sui conflitti:
Nota
1: DA3 può essere utilizzato solo da ESP32
ed ESP32S, mentre DA4 può essere utilizzato da tutti
i microcontroller. |
|
Lo zoccolo DA2 |
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:
Possono sembrare severe limitazioni, ma ci sono molti semplici sensori che possono essere connessi con successo a questo zoccolo. Approfondimento
sui conflitti: |
|
Lo zoccolo 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:
Approfondimento
sui conflitti: 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. |
|
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:
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. |
|
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:
Nota: ESP32 CYD utilizza la porte GPIO21 per attivare la retroilluminazione del dispaly, quindi è meglio non utilizzarla, per non ottenere malfunzionamenti. |
|
Lo zoccolo per il dispaly LVGL 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:
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. 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. |
|
Lo zoccolo RELAY Come 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:
Visualizzazione del collegamento con "DATA": Il connettore "1" del gruppo "RELAY" è stato connesso alle porte di "DATA" e di "GND".nel dettaglio:
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. Un
modulo da 8 led può essere inserito sul secondo
modulo (evidenziato con "2"
nell'immagine precedente), facendo attenzione al giusto
orientamento. 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. |
|
Lo zoccolo SWITCH |
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.
Visualizzazione del collegamento con "DATA": Il
connettore superiore del blocco SWITCH connesso con lo
zoccolo "DATA".
Nota : naturalmente a questo zolloco, oltre al modulo da otto pulsanti, è possibile collegare qualsiasi altra periferica che usi al massimo otto porte del microcontroller. |
|
Il blocco per IC24 |
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:
Nota
1: la scetla tra GPIO21 e GPIO27 avviene settando
correttamente il jumper "SDA".
La
scelta dell'uso e della sequenza delle porte in uscita
avverrà nel modo seguente:
|
|
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. |
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. |
|