Il programma “Blink” per far lampeggiare l’ESP32 è l’equivalente IoT del classico “Hello world” dei linguaggi di programmazione. Poichè la sua compilazione è un passaggio obbligato per ogni “Maker” la tratteremo in modo esteso e vedremo come portarla a termine sia con Arduino Ide che con PlatformIO.
Come vedi dalla foto si tratta di assemblare pochi componenti esterni: nonostante questo non stiamo parlando di un progetto banale. Il calcolo della resistenza non è infatti semplicissimo e lo trovi già svolto nello specchietto in basso. Applicando correttamente la legge di Ohm possiamo ottenere dal LED una luminosità brillante senza bruciarlo in un attimo.
Dalle specifiche del prodotto sappiamo che il diodo rosso ha una caduta di tensione diretta di 1.7 V e noi vogliamo far passare una corrente di 20 mA:
5 V − 1.7 V (la caduta di tensione del LED) = 3.3 V
3.3 V / 20 mA scritto in maniera più semplice diventa:
3.3 / 0.02 = 165 Ohm
Per sicurezza useremo una resistenza di 220 Ohm, il valore di poco superiore disponibile in commercio.
Ricorda che due LED di colore diverso hanno un assorbimento diverso. Comunque con la resistenza adottata puoi usare tutti gli altri LED compreso quello a luce bianca.
L’ESP32 non può essere ospitato “comodamente” sulla singola breadboard, anche nel modello più grande: o ne colleghi due affiancate o inserisci il connettore dentro lo “stesso foro” in cui entra il GND dell’ESP32. Puoi però ricorrere ad un facile trucco: tutte le breadboard “maxi” possono essere incastrate in parallelo a patto di togliere il corridoio centrale (puoi usare un taglierino).
Nello schema in basso per semplificare ti mostriamo il montaggio “classico”. Il pin GND (cioè la massa) della scheda ESP32 viene collegato al Catodo del LED (il polo negativo). Il pin 18 dell’ESP32 va a pilotare la resistenza da 220 Ohm che a sua volta viene collegata all’Anodo del LED (il polo positivo con il connettore più lungo).
La resistenza non ha un “verso” particolare mentre l’anodo del LED (quello con il terminale più lungo) deve essere collegato alla resistenza. Non appena avrai completato lo schema elettrico puoi compilare il programma.
Apri l’Arduino IDE.
https://dl.espressif.com/dl/package_esp32_index.json
Dopo aver installato il supporto per ESP32, seleziona la scheda giusta.
Ora puoi aprire l’esempio di “Blink” predefinito in Arduino IDE.
Vai su File > Esempi > ESP32 > Basics > Blink.
Quindi per sicurezza fai copia e e incolla del programma in basso: in questo modo sarai sicuro che venga usato il pin 18 della scheda.
const int pinLED = 18;
void setup() {
// Setta il Pin D18 come uscita (OUTPUT)
pinMode (pinLED, OUTPUT);
}
void loop() {
digitalWrite (pinLED, HIGH); // Accendi il LED
delay(1000); // Pausa di un secondo
digitalWrite (pinLED, LOW); // Spegni il LED
delay(1000); // Pausa di un secondo
}
Se la compilazione ha successo, puoi caricare il programma sull’ESP32 facendo clic su Sketch -> Carica.
Se non hai ancora installato PlatformIO sul tuo PC puoi leggere questo post del nostro blog. Usando questo compilatore, gli strumenti a linea di comando e i files presi da Github.com puoi migliorare la tua produttività in modo importante.
Infatti quando svilupperai i tuoi progetti sarai “sempre” alle prese con complessi comandi “GIT” sulla linea di comando. E commutare su Arduino Ide o Visual Studio ti costa molto più tempo che scrivere “make” sulla tastiera!
Per compilare e testare il programma fai copia e incolla del testo sottostante e incollalo nel terminale di Linux o nel CMD di Windows:
git clone https://github.com/sebadima/corso-ESP32-blink-external.git
cd corso-ESP32-blink-external
make upload
Dopo la fine della compilazione il LED dovrebbe iniziare a lampeggiare, in caso contrario vai alla fine del post e leggi la sezione sul Test del programma.
Con PlatformIO puoi “clonare” il programma da Github: come hai notato non serve scaricare il file (https://dl.espressif.com/dl/package_esp32_index.json) e non devi settare la “board” come sei costretto a fare con Arduino IDE.
Se sei agli inizi con ESP32 troverai interessante creare da zero i tuoi files e scoprire così qualche nuovo trucco di PlatformIO. Continua a leggere questa sezione per conoscere i dettagli.
Il codice è davvero breve e qui lo spieghiamo in dettaglio:
const int pinLED = 18;
void setup() {
// Setta il Pin D18 come uscita (OUTPUT)
pinMode (pinLED, OUTPUT);
}
void loop() {
digitalWrite (pinLED, HIGH); // Accendi il LED
delay(1000); // Pausa di un secondo
digitalWrite (pinLED, LOW); // Spegni il LED
delay(1000); // Pausa di un secondo
}
Crea una directory “src” e carica il codice sopra in un file src/main.ino. Usa il tuo editor preferito per creare un file platformio.ini con il seguente contenuto:
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps =
Per creare il Makefile puoi leggere questo post oppure fare copia e incolla del codice in basso in un file con lo stesso nome:
# Uncomment lines below if you have problems with $PATH
#SHELL := /bin/bash
#PATH := /usr/local/bin:$(PATH)
all:
pio -f -c vim run
upload:
pio -f -c vim run --target upload
clean:
pio -f -c vim run --target clean
program:
pio -f -c vim run --target program
uploadfs:
pio -f -c vim run --target uploadfs
update:
pio -f -c vim update
Dopo avere creato il file, lancia la compilazione con “make” oppure carica il programma sulla scheda scrivendo “make upload”.
Sia che tu abbia usato Arduino IDE o PlatformIO dovresti avere lo stesso risultato finale, con il LED esterno che viene attivato per un secondo ed effettua una pausa di un secondo. In caso di malfunzionamento ti consiglio di controllare il verso del diodo LED, la connessione tra il filo rosso e il pin 18 dell’ESP32 e la connessione tra il filo nero e la massa dell’ESP32. Se neppure in questo caso riesci a far funzionare il programma prova a cambiare il cavetto USB.
Robotdazero.it - post - R.151.1.4.1