In
questa pagina troverai alcuni programmi che hanno un duplice
scopo: sia quello di iniziare i test della basetta didattica
e sperimentale (BDS) e anche per prendere confidenza con
essa. Perciò saranno programmi piuttosto semplici, che utilizzeranno pochi e semplici componenti. |
I
programmi che troverai in questa sezione:
|
|
Il primo programma: uso di un
sensore e di un relè |
In
questo sketch si userà un semplice sensore digitale, ovvero
che ha solo due stati: "1" (HIGH) o "0" (LOW), collegato
attraverso al microcontroller a un relè o un led. Come sensore è stato usato un pulsante del tipo KY-004, connesso sullo zoccoloDA4 (GPIO27) e un relè tipo KY-019 inserito sullo zoccolo DA3 (GPIO18). Nota: il relè, sebbene sia con alimentazione nominale a +5v, dovrebbe funzionare anche a +3,3v.
|
![]() un pulsante KY-004 ![]() un relè KY-019 |
Immagine
dell'assemblaggio![]() Immagine della BDS in scala 1:1 Il pulsante KY-004 è inserito sullo zoccolo "DA4"; mentre il relè KY-019 è posto sullo zoccolo "DA3". Vedi il posizionamento corretto. |
Il
pulsante KY-004 può essere sostituito da un qualsiasi
sensore digitale (solo stato "0" oppure "1") con una singola
uscita (KY-031, KY-002, KY-020, ecc.), come quelli elencati
compatibili con lo zoccolo DA4. Nel caso si desiderasse inserire per esempio un pulsante non su scheda (come KY-004), è necessario effettuare un collegamento con una resistenza di pull-up, per evitare instabilità del circuito e/o comportamenti imprevedibili. Vedi immagine a destra. |
![]() Come collegare un sensore su DA4 |
Mentre
il relè KY-019 può essere sostituito da un normale relè che
funzioni a 5v; nel caso, adottare la stessa soluzione
indicata per il pulsante, inserendo anche in questo caso una
resistenza di pull-up. Nel caso si desideri sostituire il relè con un led, è necessario inserire una resistenza in serie, per evitare che venga bruciato per eccesso di corrente. Il led ha die terminali: quello più lungo è lanodo, e andrà collegato al pin "S" dello zoccolo "DA3". mentre il cavo più corto, il catodo, andrà collegato ad una resistenza da 220 Ohm. L'altro capo della resistenza si collegherà al pin "-" sempre di "DA3". |
![]() |
Clicca
qui per visualizzare il programma Clicca qui per scaricare il programma in formato ".zip" |
Nota
1: le periferiche usate in questo programma, come
KY-004 e KY-019, oltre che singolarmente, possono essere
acquistati anche in economici kit, come "arduino 35 kit" o "arduino 45 kit". Nota 2: i link relativi alle varie periferiche sono stati inseriti solo a scopo di esempio. Non rappresentano un consiglio di acquisto, nè una garanzia sulla qualità del prodotto. Naturalmente questo vale anche per i progetti seguenti. |
|
Il secondo programma: testare 8
pulsanti e 8 led (o relè) |
Il
secondo progetto è simile al primo, però usa un modulo di 8 pulsanti, inserito sullo
zoccolo "Switch slot" e un modulo da 8 led, che può essere
inserito sullo zoccolo "RELAY", oppure direttamente sullo
zoccolo "DATA". Naturalmente nulla vieta di inserire pulsanti o altri sensori su altri zoccoli, come per esempio "BZ1" (GPIO26), DA1 (GPIO17), DA2 (GPIO35); DA3 (GPIO18), DA4 (GPIO27), e così via. Sarà sufficiente variare nel programma le porte dedicate ai vari pulsanti o sensori. Inoltre è anche possibile sostituire il modulo led con un modulo da 8 relè, anche moduli da 4 relè, ecc. in base alle proprie esigenze e possibilità. Questo progetto è elementare, perchè premendo un pulsante, si accende il led corrispondente. Tuttavia potrebbe già avere un utilizzo pratico: sostituendo il modulo da otto pulsanti con altrettanti sensori e il modulo led con dei relè, si potrebbe già organizzare un piccolo sistema domotico automatico. Naturalmente, non essendoci alcun sistema di controllo, deve sempre restare sotto un'attenta osservazione diretta. |
Ed
infine, l'immagine di un modulo a otto relè, che può gestire
periferiche quali lampade, condizionatori, stufe, ecc. Attenzione:
la tensione di rete da 230 v può causare gravi danni, anche
mortali. Perciò in questo caso affidarsi a professionisti
qualificati. Nota: nel caso si utilizzi una batteria di relè, sia da 2,4,6,o 8 relè, è indispensabile collegare un alimentatore esterno alla presa "PWR" della BDS, che fornisca almeno 5v e la corrente di 1A. Se si collega la batteria di relè allo zoccolo "RELAY" (H14) automaticamente verrà scelta l'alimentazione a +5v; nel caso invece ci si colleghi allo zoccolo "DATA", è necessario prendere l'alimentazione dal connettore apposito che fornisce +5v. Vedi immagine. |
![]() |
Immagine
dell'assemblaggio![]() Immagine dell'assemblaggio dei moduli sulla BDS. Incorniciato di verse si vede il modulo da 8 led. La scala è 1:1 |
Come
si vede dall'immagine, il modulo con 8 pulsanti è stato
inserito sullo zoccolo blu "Switch slot" H7, mentre otto
cavetti sono collegati allo zoccolo blu superiore e si
connettono su "DATA". Ecco la corrispondenza:
Ed ecco la corrispondenza del modulo 8 led:
|
![]() Particolare
dei collegamenti dei due moduli
|
Nota
: il modulo da 8 led - zoccolo segnato "2" (o quello da 8
relè -
zoccolo indicato "3") potrebbe essere inserito
anche sullo zoccolo apposito, denominato appunto "RELAY". In
questo caso però, sarà necessario connettere con dei cavetti
lo zoccolo denominato "1 " con lo zoccolo data. Si è
preferito connettere direttamente il modulo da 8 led su DATA
per semplicità. Vedi
pagina dedicata. |
![]() |
Clicca
qui per visualizzare il programma Clicca qui per scaricare il programma in formato ".zip" |
|
Il terzo programma: un display
LVGL, un motore, un led, un buzzer... |
In
questo programma di test della BDS, si comincia a intuire i
vantaggi che essa comporta. Infatti sonp presenti un display
LVGL da 2,8" touch (14pin), un led a tre colori (4 pin), un
buzzer (mini-altoparlante piezoelettrico, 3 pin), un
potenziomentro (3 pin) e un motore elettrico (2 pin).
Facendo la somma, per assemblare questo progetto su di una
basetta millefori, avremmo dovuto usare 26 cavetti
diversi, creando un certo affollamento e conseguente
confusione. Invece, dalla foto si vedono solo due cavetti,
che servono per alimentare il motore elettrico! Questa
pulizia si traduce anche in un notevole risparmio di tempo:
inserire sulla BDS i vari componenti richiede meno di un
minuto, e senza rischi di errore. |
![]() |
Nota
1: per utilizzare il display LVGL è necessario
eseguire una configurazione di base e installare alcune
librerie dedicate. Clicca
qui per una descrizione sintetica, oppure vai a
questa pagina del sito di "randomnerdtutorials: https://randomnerdtutorials.com/lvgl-esp32-tft-touchscreen-display-ili9341-arduino/ Nota 2: per poter utilizzare anche il motore elettrico, che usa il GPIO0, è necessario inserire sulla BDS un ESP32 a 38 pin, perchèl'ESP32 a 30 pin non possiede questo GPIO. Il GPIO0 è "alto" all'avvio, per cui se si collega alla BDS il motore elettrico prima di caricare il programma, il motore si avvierà alla massima velocità. Non appena il programma sarà stato trasferito su ESP32, il motore terminerà immediatamente di ruotare. Il programma in oggetto ha solo uno scopo dimostrativo e non è particolarmente sofisticato. Sul display touch appaiono tre serie di tasti, con le seguenti funzioni:
|
Le
librerie necessarie: Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. Clicca qui per imformazioni sull'installazione delle librerie Attenzione: per usare il display LVGL da 2.8" non è sufficiente caricare le librerie necessarie, ma è richiesta anche una piccola configurazione. Clicca qui per visualizzare la pagina con le info. |
TFT_eSPI.h lvgl.h |
![]() Il terzo programma dimostrativo, con un display, motore, led, potenziometro, buzzer. |
Approfondimento degli aspetti tecnici. |
Cominciamo
dal componente più complesso, ma anche più interessante: il display touch LGVL da 2,8". Per funzionare correttamente, attivando anche la preziosa funzione touch, è necessario collegare nella giusta sequenza 14 pin tra di esso ed ESP32. Nel nostro caso non ci sarà alcun problema, perchè il connettore denominato "Display LVGL" è già perfettamente sincronizzato tra display e microcontroller, oltre che con il programma di test. All'avvio appariranno tre serie di due pulsanti, le cui funzioni sono già state spiegate precedentemente. |
![]() Il display LVGL touch da 2,8" |
Qui
puoi vedere la sequenza dei pin, guardando la BDS dall'alto
in basso: |
Descrizione pin 1: 3,3v pin2: GND pin 3: CS pin 4: reset pin 5: D/C pin 6: SDI pin 7: SCK pin 8: LED pin 9: SDO pin 10: T-CLK pin 11: T-CS pin 12: T_DIN pin 13: T_OUT pin 14: T_IRQ |
collegamento
su ESP32 +3,3v GND GPIO15 EN GPIO2 GPIO12 GPIO14 GPIO21 GPIO12 GPIO25 GPIO33 GPIO32 GPIO39 GPIO36 |
![]() Il connettore su cui si inserisce il display |
Nota
1: come già accennato in altri punti di
approfondimento, le porte usate per il display LVGL, non
sono state utilizzate per altri zoccoli, per evitare
conflitti. Certamente questo ha influito sulla disponibilità
di GPIO per altre attività, ma poichè ESP32 ha un buon
numero di porte disponibili, spero che questo non sia una
limitazione troppo grave. Purtroppo quando si intraprende un
progetto come questo è necessario fare delle scelte, e in
questo caso ho privilegiato la possibilità di usare
massicciamente il diaplay, che mi sembra particolarmente
utile. Naturalmente quando non lo si utilizza, le sue porte dedicate diventano disponibili, e si possono usare dallo zoccolo predisposto per il display, sia dallo zoccolo universale "DATA". Nota 2: l'unica porta che potrebbe essere utilizzata anche per altre attività è GPIO21, che nella lista appare in grassetto. Questo accade perchè GPIO21 è la porta standard di data (SDA) quando si utilizza il protocollo I2C. Fortunatamente per ESP32 (a differenza di Arduino, ESP01 ed ESP8266), possiamo utilizzare qualsiasi altra porta per questa funzione. E' sufficiente dichiararla nel programma. Infatti quando si utilizzano gli zoccoli dedicati principalmente al protocollo I2C, si ha sempre la possibilità di scegliere GPIO27 al posto di GPIO21, intervenendo sul jumper "SDA" ed evitando così ogni conflitto con il display. |
Il
potenziometro da 10K è inserito sullo zoccolo "TRM1".
Esso serve in questo caso per regolare la velocità di
rotazione del motore elettrico. Il piedino centrale è
connesso su GPIO34, che è solo utilizzabile come ingresso,
mentre i due piedini estremi sono connessi da una parte a
massa (GND) e sull'altro a +3,3v. Quando il cursore è
ruotato tutto a sinistra, verso massa, la tensione presente
su GPIO34 è 0 (motore fermo); quando invece è ruotato tutt o
destra, su GPIO34 la tensione supera i 3v (motore alla
massima velocità di rotazione). Nota 1: il programma è strutturato in modo tale che la tensione presente sul piedino GPIO34 viene letta solamente quando si preme il tasto "Mtr ON". per cui per passare da una velocità all'altra, è necessario premere "Mtr OFF", variare la rotazione del cursore del potenziometro, premere "Mtr ON" e così via. |
![]() |
Un
motore elettrico. Esso è alimentato non direttamente
da ESP32, ma attraverso un mos-fet, in modo che una tensione
eccessiva non danneggi il microcontroller. Inoltre un diodo
evita che extracorrenti prodotte dal motore quando continua
a girare non danneggi ESP32. Pertanto è integrato nella BDS
un piccolo ma sofisticato circuito di controllo del motore.
Esso è collegato allo zoccolo MT1. Nota1: lo zoccolo MT1 può essere connesso, attraverso il jumler "J5", a GPIO26 oppure GPIO0. Poichè GPIO26 è già connesso al buzzer, è stato utilizzato GPIO0, che è presente solo su ESP32 a 38 pin. Nota 2: il motore può essere alimentato, modificando il jumper "J2", o a +5 v (indipendentemente dalla tensione fornita dall'alimentatore), oppure alla tensione fornita direttamente dall'alimentatore, che può giungere fino a 12v (meglio non superare i 9v). Quindi fare attenzione a non alimentare il motore elettrico con una tensione eccessiva. |
![]() Un
motore elettrico
|
Il
buzzer (altoparlante piezoelettrico) KY-012 oppure
KY-006. Viene inserito sullo zoccolo BZ1, collegato al
piedino GPIO26. KY-006 non è amplificato, mentre KY-012 lo
è, fornendo un livello sonoro più elevato; tuttavia entrambi
sono adeguati per i nostri scopi. Al posto del buzzer è
possibile collegare un amplificatore sul jack standard da
3,5 mm. Premendo "Spk ON", si ascolteranno le prime note di "Per Elisa". |
![]() il buzzer KY-006 |
Un
led a tre colori (KY-009 oppure KY-016) è stato
inserito su di uno zoccolo non specifico per il led: RFID1.
Come si vede dall'immagine, i quattro piedini sono
contrassegnati (da sinistra a destra): B,G, R, -. Ecco il loro collegamento su RFID1: B -> GPIO5 G -> GPIO18 R -> GPIO23 - (GND) ->GPIO19. E' possibile inserire al posto di KY-009/KY-016 anche un leda tre colori non su zoccolo, come quello visualizzato nella seconda immagine, però sarà necessario inserire ad ogni piedino (tranne "-") con una resistenza da 220 Ohm, per evitare che il led bruci rapidamente. Premendo il tasto "Led ON", il led mostrerà in rapida sequenza 7 colori. |
![]() KY-009 - KY-016 ![]() Led a 3 colori con resistenze da 220Ohm |
Clicca
qui per visualizzare il programma Clicca qui per scaricare il programma in formato ".zip" |