4.1 Progetto: Sistema di illuminazione
Iniziamo il nostro primo progetto, il sistema di illuminazione.
Accendere un LED è una delle pratiche più fondamentali di KidsBlock.
Questa lezione introduttiva è progettata per i principianti per comprendere l’hardware e la programmazione software sulla scheda di sviluppo ESP32 e per padroneggiare le conoscenze di base di circuiti e programmazione.

Pertanto, la nostra guida tutorial è semplice. E questo intrigante progetto può essere applicato in scenari reali a casa o in ufficio.
In questo progetto, avrai imparato le connessioni e le impostazioni di base della scheda di sviluppo ESP32 nella programmazione grafica KidsBlock. Inoltre, ti verranno presentate alcune funzioni, come l’accensione/spegnimento di un LED tramite il livello di uscita di un pin digitale o tramite un pulsante.
Tutto sommato, questo è un tutorial di livello base per gettare le basi per le successive pratiche di programmazione KidsBlock.
4.1.1 Diagramma di flusso

4.1.2 Accendere un LED
Descrizione:
LED, acronimo di Light Emitting Diode (Diodo a Emissione di Luce), è un semiconduttore a stato solido che converte l’energia elettrica in luce visibile, per questo è anche chiamato illuminazione a stato solido.
Quando la corrente passa attraverso un LED, questo si accende.
Vari LED:

Il modulo LED è un dispositivo di output, la cui luminosità e i cui lampeggi possono essere controllati. Per utilizzarlo, è sufficiente collegarlo direttamente ai pin di uscita digitali sulla scheda di sviluppo.

Principio di funzionamento:
Quando S è a livello alto, il triodo Q1 entra in conduzione e la tensione VCC passa attraverso il LED per accenderlo.

Parametri:
Tensione: 3~5V
Corrente: ≤1.5mA
Potenza: 0.07W
Schema di cablaggio:
Collega il modulo LED a io27.
Attenzione: Collega il giallo a S (Segnale), il rosso a V (Alimentazione) e il nero a GND. Non invertirli!

Codice di prova:
Apri Kidsblock e scegli il dispositivo e la porta corretti.

Trascina
da
nell’area di modifica del codice. I blocchi di codice vengono eseguiti solo quando si trovano in quest’area.

Con questo blocco, all’avvio della scheda di sviluppo, il codice verrà eseguito.

In
, trascina “ per sempre ” e incollalo sotto il blocco precedente. Il blocco “per sempre” indica un ciclo.

Trascina un blocco “uscita pin LED” da
e incollalo in “ per sempre ”. Imposta il pin su IO27 e il livello di uscita su ALTO, in modo che il pin LED continui a emettere un livello alto.


Aggiungi un ritardo di 1s. Duplica il blocco “uscita pin LED” ma imposta l’uscita su BASSO, e aggiungi anche un ritardo. Quindi il LED si accenderà e si spegnerà in circolazione.

Risultato del test:
Il LED lampeggia ogni secondo, perché io27 sulla scheda ESP32 emette alternativamente un livello alto e basso ogni secondo. Inoltre, tramite un LED possono essere realizzate anche varie applicazioni interattive, come LED respiratorio, luci a flusso d’acqua e luce stroboscopica della polizia.
Livello di potenza |
Risultato |
|---|---|
ALTO |
LED acceso |
BASSO |
LED spento |
Espansione: LED respiratorio
Descrizione:
Le interfacce IO della MCU (come ESP32) emettono solo segnali digitali (livello alto o basso). Ad esempio, nell’esperimento precedente (accendere un LED), le uscite digitali sono solo ALTO (3.3V) e BASSO (0V).
Se la MCU emette un livello alto di 3.3V o un livello basso di 0V, la tensione di ingresso dovrebbe essere tra 0~3.3V. Pertanto, è necessaria la PWM (Pulse Width Modulation) per emettere un valore di tensione diverso, che viene chiamato “uscita analogica”.

Conoscenza:
Cos’è la PWM?
La PWM contiene tre elementi: Frequenza (Hz), Periodo, Ciclo di lavoro (%).
Frequenza PWM (f): il numero di volte in cui il segnale cambia da alto a basso e torna ad alto entro un secondo. In generale, la Frequenza è il numero di Periodi PWM in un secondo.
Periodo PWM (T): Periodo = 1 / Frequenza (T=1/f, e 1 significa 1 secondo). Ad esempio: f = 50Hz, quindi T = 20ms, il che implica che ci sono 50 Periodi al secondo.
Ciclo di lavoro PWM: il rapporto di tempo tra ALTO e l’intero Periodo. Se il Periodo = 10ms e 8ms è il tempo di larghezza dell’impulso, il livello Basso occupa 2ms, quindi il Ciclo di lavoro = 8/(8+2) = 80%.

Conclusione: Ad una frequenza di segnale appropriata, la PWM modifica la tensione di uscita effettiva cambiando il ciclo di lavoro in un periodo. In parole povere, entro un tempo specificato, più alto è il livello che la porta IO emette, maggiore è il valore PWM e più luminoso sarà il LED.

Codice di prova:

Definisci una variabile item e assegnale il valore 0.

Trascina un blocco “per sempre” e incolla un blocco “ripeti” al suo interno. Imposta il numero di ripetizioni a 255.

Trascina un blocco “modalità variabile” in “ripeti” e imposta la modalità su “ ++ ”, il che significa che item aumenterà di 1 dopo ogni esecuzione.

Trova il blocco per impostare la PWM che è contenuto in
come mostrato
sotto, quindi devi solo impostare il pin corrispondente e il valore analogico per
emettere la PWM.

Imposta il pin LED:

Imposta canale: (16 canali in totale: inclusi 0~15)

Imposta il valore di uscita PWM su item, che aggiungerà automaticamente 1 da 0 a 255. L’uscita PWM è 0~255, quindi impostiamo i tempi di ripetizione a 255.

Aggiungi un ritardo di 0.01s, in modo che il LED si accenda gradualmente piuttosto che all’improvviso.

Duplica il blocco “repeat” come segue, ma imposta la modalità su “--”, che diminuisce la variabile item ogni volta. E il LED si attenuerà gradualmente.

Risultato del test
Il LED si accende e si attenua gradualmente; respira uniformemente.

4.1.4 Un pulsante
Descrizione
Il Modulo Pulsante è un dispositivo di input. La MCU legge il suo livello di potenza per rilevare se il pulsante è premuto.

Schema elettrico:

Parametri:
Tensione: 3~5V
Corrente: ≤1.1mA
Potenza: ≤5.5mW
Il principio del modulo pulsante è un circuito controllato da questo pulsante.
Quando il pulsante viene premuto, il circuito è in stato chiuso in modo che la corrente passi attraverso il pulsante a GND, il che fa sì che il pin di input digitale rilevi un livello basso.
Quando il pulsante viene rilasciato, il circuito viene interrotto e il livello del pin aumenta a causa di un resistore di pull-up, il che fa sì che il pin digitale rilevi un livello alto.
Schema di cablaggio:
Collega il modulo pulsante a io5
Attenzione: Collega il giallo a S (Segnale), il rosso a V (Alimentazione) e il nero a GND. Non invertirli!

Codice di prova
Inizializza prima di tutto la porta seriale e imposta la velocità di trasmissione a 115200.

Imposta il pin su IO5 e la modalità su input. Ciò che segue è un blocco “forever”.

Leggi il livello di potenza del pin digitale 5. Se è 1, stampa 1. Altrimenti, stampa 0.

Codice completo:

Risultato del test
Apri il monitor seriale e imposta la velocità di trasmissione corrispondente.
Quando il pulsante viene rilasciato, il valore è 1; se premi il pulsante, diventa 0.

In KidsBlock, possiamo leggere lo stato del pin di input digitale programmando per rilevare se il pulsante è premuto. Così, è possibile realizzare un sacco di applicazioni interattive tramite un modulo pulsante, come l’accensione/spegnimento del LED e la regolazione della luminosità del display.
Espansione: Pulsante auto-bloccante
Un pulsante auto-bloccante non si rialza quando lo premi senza tenerlo premuto, e non si rialza mai a meno che tu non lo prema di nuovo. Funziona come un interruttore. Per i pulsanti normali, tale funzione può essere realizzata tramite MCU e software.
Codice di prova
Definisci due variabili: item come valore del pulsante letto e button come valore spostato dal pulsante.

Assegna il valore del pulsante letto a item.

Determina se il pulsante è premuto. Se lo è, sposta il valore di button e stampalo.

Ritarda di 0.01s per eliminare il jitter del pulsante.
Se viene rilevato uno stato di chiusura sul pulsante, verrà eseguito un ritardo per eliminare il Jitter del Fronte di Salita. Generalmente, il ritardo è compreso tra 5ms e 10ms (le proprietà meccaniche decidono). Dopo che il jitter scompare, controlla di nuovo lo stato del pulsante. Se il livello dello stato chiuso è ancora mantenuto, si conferma che c’è un pulsante premuto.
Quando viene rilevato un pulsante rilasciato, dovrebbe verificarsi anche un ritardo di 5ms~10ms per rimuovere il Jitter del Fronte di Discesa, in modo che il programma per il pulsante possa essere eseguito.
Quando il pulsante viene premuto (il pin fisico legge 0), la variabile
buttonpassa a 1 (stato del sistema: ON). Premilo di nuovo,buttonpassa a 0 (stato del sistema: OFF), alternativamente.
Nota: Il pin fisico del pulsante legge 0 quando premuto e 1 quando rilasciato (a causa del resistore di pull-up interno). La variabile
buttonè un interruttore software separato che si alterna tra 0 e 1 ogni volta che viene rilevata una pressione. Non confondere il valore grezzo del pin con la variabile di statobutton.
Codice completo:

Risultato del test
Carica il codice e apri il monitor seriale.
Quando premi il pulsante una volta, verrà visualizzato 1. Se premi il pulsante per la seconda volta, il valore diventa 0. Ora, un pulsante comune vanta la funzione di un pulsante auto-bloccante.

4.1.3 Controllo dell’illuminazione
Descrizione
Negli esperimenti di base precedenti, abbiamo rimodellato un pulsante auto-bloccante per controllare il LED. Un pulsante auto-bloccante è adatto a tutte le situazioni in cui è necessario mantenere un certo stato, ad esempio, quando il LED deve rimanere acceso per lungo tempo, la scheda di sviluppo ESP32 è necessaria per alcune operazioni.
In questo esperimento, adotteremo la scheda ESP32 PLUS per guidarti nell’implementazione di un sistema di illuminazione e simulare scene di vita reale per controllare la luce tramite il pulsante.
Schema di cablaggio:
Collega il pulsante a io5 e il LED a io27
Attenzione: Collega il giallo a S (Segnale), il rosso a V (Alimentazione) e il nero a GND. Non invertirli!

Codice di prova:
Flusso del codice:

Codice completo:
Basandoci sul codice per il pulsante auto-bloccante, aggiungiamo i blocchi “Uscita pin LED”.

Risultato del test:
Quando si preme il pulsante una volta, il LED si accende; se si preme di nuovo, il LED si spegne. Questa operazione è un ciclo, che è coerente con il principio di illuminazione nella realtà.
In questo capitolo, abbiamo dimostrato come programmare e controllare tramite KidsBlock, e abbiamo appreso le basi, nonché alcuni concetti software e hardware in esperimenti come il pulsante a blocco automatico e il sistema di controllo dell’illuminazione.
Questi sono essenziali per un buon sviluppatore KidsBlock. Successivamente, ti guideremo a continuare a esplorare più applicazioni e competenze, che tu sia un principiante o un veterano. Spero che ti divertirai e affronterai le sfide durante l’apprendimento di KidsBlock. Andiamo avanti!
4.1.5 FAQ
D: Il LED non si accende dopo aver caricato il codice.
R: Controlla se il pin definito nel codice è coerente con quello dei tuoi cablaggi. Se sono incompatibili, regolalo facendo riferimento al codice.
D: Il pulsante a volte funziona e a volte no.
R: Modifica il ritardo di eliminazione del jitter a un valore appropriato.