LED dimmerabile e misurazioni ambientali: interfacciamo l’Arduino Nano ESP32 all’Arduino Cloud

Introduzione

LED dimmerabile e misurazioni ambientali con l’Arduino Nano ESP32 collegato in Cloud. Dopo aver acquisito le basi nel nostro precedente articolo Controllo indipendente di due LED con Arduino Nano ESP32: un’introduzione pratica, è giunto il momento di fare qualcosa di più complesso. In questo secondo articolo sull’Arduino Nano ESP32, verrai guidato attraverso l’interfacciamento con l’Arduino Cloud per il controllo di due LED (come nel caso precedente uno che può essere solo acceso o spento e l’altro di cui si potrà regolare la luminosità tramite segnale PWM) e il monitoraggio delle condizioni ambientali con un sensore DHT22 (quindi la misurazione della temperatura e dell’umidità ambientali). Tramite la dashboard che creeremo sul Cloud potremo comandare i due LED e potremo visualizzare i valori di temperatura e umidità misurati nell’ambiente.

Come al solito, per lo sviluppo del progetto, useremo l’ottimo IDE PlatformIO.

Arduino Nano ESP32: un microcontrollore potente e versatile

Introduzione:

L’Arduino Nano ESP32 è una scheda di sviluppo microcontrollore basata sul chip ESP32-S2FH4. Offre un’ampia gamma di funzionalità in un formato compatto e conveniente, rendendola ideale per una varietà di progetti IoT e embedded.

Caratteristiche principali:

  • Microcontrollore ESP32-S2FH4: CPU dual-core Tensilica Xtensa LX106 a 240 MHz, 4 MB di Flash SPI, 200 KB di SRAM, 802.11 b/g/n Wi-Fi e Bluetooth 4.2 BLE.
  • Connettività integrata: Wi-Fi e Bluetooth 4.2 BLE per la comunicazione wireless con altri dispositivi e Internet.
  • Ampia gamma di I/O: 14 pin GPIO, 1 ADC a 12 bit, 1 DAC a 8 bit, SPI, I2C, UART e JTAG.
  • Supporto per schede di espansione: Compatibile con le schede di espansione Arduino Nano.
  • Alimentazione: Alimentazione tramite USB o 5V esterno.
  • Dimensioni compatte: 45 mm x 18 mm x 7 mm.

Vantaggi:

  • Potente e versatile: L’ESP32-S2FH4 offre prestazioni elevate e un’ampia gamma di funzionalità.
  • Connettività integrata: Wi-Fi e Bluetooth 4.2 BLE per la comunicazione wireless.
  • Ampia gamma di I/O: Adatto a una varietà di sensori, attuatori e altri dispositivi.
  • Supporto per schede di espansione: Espandi le funzionalità con le schede di espansione Arduino Nano.
  • Facile da usare: Compatibile con l’IDE di Arduino e con il linguaggio di programmazione Arduino.

Applicazioni:

  • IoT: Progetti di domotica, wearable tech, monitoraggio ambientale e industriale.
  • Robotica: Controllo di robot e droni.
  • Elettronica indossabile: Orologi intelligenti, fitness tracker e altri dispositivi indossabili.
  • Prototipazione rapida: Crea rapidamente prototipi di dispositivi elettronici.

L’Arduino Nano ESP32 è una potente e versatile scheda di sviluppo microcontrollore che offre un’ampia gamma di funzionalità in un formato compatto e conveniente. È una scelta eccellente per una varietà di progetti IoT e embedded.

Cosa è la tecnica PWM (che ci consente di avere un LED dimmerabile)

Il PWM, acronimo di Pulse Width Modulation, è una tecnica utilizzata per modulare la larghezza degli impulsi di un segnale periodico, generando una forma d’onda con un ciclo di lavoro variabile.

Il PWM varia il rapporto tra il tempo in cui il segnale è ad un livello alto rispetto al periodo totale del segnale. Questo permette di controllare la potenza consegnata a un carico senza dover variare la tensione di alimentazione. Il PWM viene implementato attraverso l’uso di un timer hardware all’interno del microcontrollore. Il timer genera un segnale periodico a una frequenza costante, mentre il duty cycle del segnale (ovvero il rapporto tra il tempo in cui il segnale è alto rispetto al periodo) viene regolato in base alle necessità.

In pratica, il segnale PWM è una forma d’onda rettangolare periodica in cui il rapporto tra il tempo in cui il segnale è ad un livello alto (ON) e il periodo totale del segnale determina l’intensità o la potenza del segnale. Visivamente, un segnale PWM può essere rappresentato come una serie di impulsi rettangolari. Il periodo del segnale corrisponde alla lunghezza di un ciclo completo, mentre il duty cycle (rapporto di lavoro) rappresenta la frazione di tempo in cui il segnale è ad un livello alto durante ogni ciclo. Il duty cycle può variare da 0% (il segnale è sempre basso) al 100% (il segnale è sempre alto).

Quando il duty cycle è al 50%, il segnale ha un rapporto di 1:1 tra il tempo in cui è alto e il tempo totale del periodo, e appare come una forma d’onda rettangolare con la stessa durata del periodo e la stessa durata sia nel semiperiodo in cui il segnale è alto che in quello in cui è basso.

Se il duty cycle è inferiore al 50%, il segnale ha un periodo di lavoro più breve rispetto al periodo totale, e se è superiore al 50%, il periodo di lavoro è più lungo.

Il PWM trova numerose applicazioni in diversi settori, tra cui:

  • Controllo della velocità dei motori: regolando il duty cycle del segnale PWM, è possibile controllare la velocità di rotazione dei motori elettrici.
  • Controllo di luminosità delle luci LED: modulando il duty cycle del segnale PWM, è possibile controllare l’intensità luminosa dei LED.
  • Controllo di servomotori: il PWM viene utilizzato per controllare la posizione di servomotori in applicazioni robotiche e di modellismo.
  • Audio digitale: nel campo dell’audio digitale, il PWM è utilizzato per generare segnali audio a frequenze variabili.

I principali vantaggi del PWM includono l’efficienza energetica, la semplicità di implementazione e la capacità di controllare con precisione la potenza erogata a un carico senza dover variare la tensione di alimentazione.

Il PWM rappresenta quindi una tecnica fondamentale per il controllo di dispositivi elettronici e trova ampio impiego in una vasta gamma di applicazioni industriali, commerciali e di hobbistica.

Cos’è il DHT22

Il DHT22 è un sensore digitale di temperatura e umidità progettato per misurare con precisione questi parametri ambientali. Esso utilizza un sensore di umidità capacitivo e un termistore per misurare rispettivamente l’umidità e la temperatura dell’ambiente circostante. Quando viene alimentato, il sensore acquisisce i dati e li converte in segnali digitali che possono essere letti da un microcontrollore o da un altro dispositivo elettronico.
Il DHT22 è caratterizzato da una buona precisione e stabilità nelle misurazioni di temperatura e umidità. Ha un’ampia gamma di temperatura operativa e una precisione dichiarata nelle misurazioni. Il range di temperature misurate va da -40°C a +80°C (con risoluzione di 0.1°C) mentre quello di umidità relativa va da 0% a 100% (con risoluzione dello 0.1%). Inoltre il DHT22 è in grado di effettuare una misura completa in circa 2 secondi.
Il sensore ha solitamente tre pin per l’interfacciamento: uno per l’alimentazione, uno per la massa e uno per la trasmissione dei dati digitali. Utilizza un protocollo seriale di comunicazione per trasmettere le letture al dispositivo di controllo. I dati sono direttamente digitali quindi non c’è necessità di acquisirli con un convertitore analogico-digitale.
Il DHT22 è ampiamente utilizzato in progetti di monitoraggio ambientale, sistemi di controllo del clima, stazioni meteo fai-da-te e altri dispositivi che richiedono la misurazione precisa della temperatura e dell’umidità.

Vantaggi: Tra i vantaggi del DHT22 ci sono le sue dimensioni compatte, la facilità di utilizzo, la bassa potenza richiesta e la relativa economicità rispetto ad altri sensori simili.

Limitazioni: Anche se preciso, il DHT22 può essere soggetto a leggere fluttuazioni di misurazione in ambienti con elevate variazioni di temperatura o umidità. Inoltre, la sua interfaccia digitale può richiedere una certa attenzione nella programmazione e nell’interpretazione dei dati letti.

Ma cos’è Arduino Cloud?

Arduino Cloud è un servizio online sviluppato da Arduino, l’azienda italiana nota per la sua piattaforma di prototipazione open-source. Lo scopo principale di Arduino Cloud è quello di fornire un modo semplice ed efficace per connettere e controllare dispositivi basati su Arduino da remoto attraverso Internet. È parte dell’ecosistema Arduino IoT (Internet of Things) che mira a consentire agli sviluppatori di creare progetti IoT in maniera facile ed estremamente intuitiva utilizzando le risorse di Arduino. Inoltre è possibile utilizzare anche altri tipi di dispositivi (non strettamente Arduino) come, per esempio, le board ESP8266 e ESP32.

Ecco alcune sue caratteristiche:

  • Connessione Remota: Arduino Cloud offre un modo per connettere vari dispositivi a Internet in modo che possano essere monitorati e controllati da qualsiasi luogo tramite una Dashboard online o un’applicazione mobile;
  • Controllo e Monitoraggio: una volta che i dispositivi sono connessi, puoi utilizzare l’interfaccia online per monitorare vari sensori e variabili sul tuo dispositivo e controllare i suoi attuatori. Ad esempio, potresti leggere i dati da un sensore di temperatura e umidità e attivare un motore o un relè collegato al tuo dispositivo;
  • Automazione: Arduino Cloud ti consente di creare regole e scenari di automazione in modo che il tuo dispositivo possa rispondere a determinate condizioni o attivare azioni specifiche. Questo è utile per creare sistemi di automazione domestica o progetti IoT avanzati;
  • Sicurezza: Arduino Cloud generalmente adotta misure di sicurezza per garantire che le connessioni tra i dispositivi e il servizio siano protette. Ciò può includere crittografia dei dati e autenticazione sicura;
  • Supporto per diversi dispositivi: Arduino Cloud è compatibile con una varietà di dispositivi e schede.

Di quali componenti abbiamo bisogno?

La lista dei componenti non è particolarmente lunga:

Realizzazione del progetto

Lo schema elettrico

Prima di realizzare il circuito vero e proprio diamo un’occhiata al pinout della board:

Pinout della board Arduino Nano ESP32
Pinout della board Arduino Nano ESP32

Il pinout del sensore DHT22:

Pinout del DHT22
Pinout del DHT22

Useremo i GPIO D2 e D5 per collegare i LED e il GPIO D7 per collegare il DHT22.

A questo punto puoi procedere alla realizzazione del circuito seguendo lo schema di collegamento più sotto.

I LED sono collegati alla Arduino Nano ESP32 tramite dei resistori da 100Ω per limitare la corrente che li attraversa ed evitare di bruciarli (e di bruciare le uscite digitali a cui sono collegati).

Il LED ha due terminali (chiamati anodo e catodo) e, come tutti i diodi, è un componente che ha una sua polarità: fa passare la corrente quando è polarizzato direttamente (cioè la tensione all’anodo è maggiore di quella al catodo) e blocca la corrente quando è polarizzato inversamente (cioè la tensione all’anodo è minore di quella al catodo). La tensione tra anodo e catodo, che indicheremo con Vd, varia a seconda del colore della luce emessa. In particolare abbiamo che:

  • Vd = 1.8 V per il LED rosso
  • Vd = 1.9 V per il LED giallo
  • Vd = 2 V per il LED verde
  • Vd = 2 V per il LED arancio
  • Vd = 3 V per il LED blu
  • Vd = 3 V per il LED bianco

Di seguito lo schema di montaggio realizzato con Fritzing:

Schema elettrico completo del progetto LED dimmerabile e misurazioni ambientali
Schema elettrico completo

Come facciamo ad identificare l’anodo e il catodo del LED? Lo facciamo osservando i suoi terminali. Il più lungo corrisponde all’anodo. Inoltre il corpo del LED presenta un appiattimento in un punto del bordo che indica che il terminale vicino è il catodo.

Quindi, se un LED non si accende è possibile che sia stato collegato al contrario. In questo caso, per farlo funzionare, è sufficiente invertirne i collegamenti.

Come si calcola la resistenza da collegare al LED?

Nota Bene: questo paragrafo tratta il calcolo della resistenza di limitazione in maniera teorica e richiede un minimo di conoscenza delle basi dell’Elettrotecnica. Pertanto non è fondamentale per la comprensione del resto del progetto e può essere saltato dal lettore non interessato a tali aspetti teorici.

Come abbiamo già detto, il resistore tra il generico GPIO e il LED serve a limitare la corrente che attraversa il LED. Ma come possiamo calcolare il suo valore di resistenza? Ci viene in soccorso la Legge di Ohm la quale dice che la differenza di potenziale ai capi di un resistore (cioè la tensione misurata agli estremi del resistore) è proporzionale alla corrente I che lo attraversa e la costante di proporzionalità è proprio il valore di resistenza del resistore R:

V2 - V1 = RI

Nota Bene: per amor di precisione bisogna puntualizzare che mentre il resistore è il componente fisico (l’oggetto vero e proprio), la resistenza è il suo valore. Quindi è improprio (anche se accade di frequente) chiamare il resistore col termine resistenza.

Possiamo vedere la Legge di Ohm su un semplice circuito costituito da un generatore di tensione (il cerchio a sinistra) e un resistore:

Rappresentazione della Legge di Ohm
Rappresentazione della Legge di Ohm

La tensione (o differenza di potenziale) V2 – V1 impressa dal generatore di tensione sul resistore è uguale al prodotto di R per I.

Vediamo ora uno schema leggermente più complesso dove sono presenti il solito generatore di tensione, il resistore e un LED rosso:

Circuito per il calcolo del resistore di limitazione della corrente sul LED
Circuito per il calcolo del resistore di limitazione della corrente sul LED

Nel nostro caso la Vg rappresenta la tensione presente all’uscita digitale della Arduino Nano ESP32 quando è HIGH ed è pari quindi a 3.3V.

La Vd è la tensione ai capi del diodo (tra anodo e catodo) quando questo è polarizzato direttamente (cioè quando fa scorrere la corrente). Avendo scelto un LED rosso, sappiamo, dalla tabella precedente, che Vd = 1.8V.

Dobbiamo determinare il valore R del resistore. Abbiamo ancora una incognita: il valore della corrente I che deve scorrere nel circuito quando il pin è in stato HIGH.

Nota Bene: quando il pin digitale è nello stato LOW la sua tensione (cioè la Vg) è nulla, ne consegue che anche la corrente I nel circuito è nulla.

I LED in genere non sopportano correnti maggiori di 20mA, quindi imponiamo una corrente massima di 15mA per stare sul sicuro.

Per la Legge di Kirchhoff alle maglie (detta anche Legge di Kirchhoff delle tensioni) , abbiamo che:

Vg - Vr - Vd = 0

Da cui ricaviamo che:

Vr = Vg - Vd 

Passando ai valori reali, abbiamo che:

Vr = 3.3V - 1.8V

Ne risulta che:

Vr = 1.5V

Ma, per la Legge di Ohm, abbiamo che:

Vr = RI

da cui:

R = Vr / I

Sostituendo i valori reali:

R = 1.5V / 0.015A

Ne deriva un valore di R pari a 100Ω.

Preparazione dell’ambiente sul Cloud

A questo punto il dispositivo è pronto. Dobbiamo ora preparare tutto l’ambiente su Arduino Cloud. Se non lo hai ancora fatto, creati un account sulla piattaforma. A questo proposito puoi seguire passo passo il video seguente:

Una volta fatto il login bisogna collegare l’Arduino Nano ESP32 alla USB del computer, aggiungere il device di tipo Arduino e aspettare che venga completata la procedura di riconoscimento automatico.

In questo video abbiamo creato:

  • l’oggetto (thing) chiamato Arduino_Nano_ESP32_Thing con le sue variabili ledOnOff (sia come Name che come Declaration) di tipo boolean, Read & Write e con periodicità di 1 secondo, ledPWM (sia come Name che come Declaration) di tipo integer, Read & Write e con periodicità di 1 secondo, temperature (sia come Name che come Declaration) di tipo float, Read Only e con periodicità di 1 secondo, humidity (sia come Name che come Declaration) di tipo float, Read Only e con periodicità di 1 secondo
  • il device di nome Arduino_Nano_ESP32_Device di tipo Arduino Nano ESP32;
  • la dashboard di nome Arduino_Nano_ESP32_Dashboard con un interruttore che comanda il LED ON/OFF, uno slider che comanda il LED PWM e due indicatori, uno per la temperatura e l’altro per l’umidità.

NOTA BENE: è importante notare che nel video, al minuto 1:30 , ho scaricato un pdf che contiene i parametri di collegamento al device. Essi sono chiamati Device ID e Secret Key e ci serviranno in seguito. Quindi scarica anche tu questo pdf e conservalo da qualche parte.

Ovviamente i parametri Device ID e Secret Key sono propri di ciascun device, quindi cambiano al variare del device.

Il Cloud di Arduino ha creato la struttura vuota dello sketch che noi prenderemo e trasferiremo su PlatformIO per poterlo riempire con le funzionalità che ci servono. In particolare, ha creato lo sketch vero e proprio che è un file con estensione .ino e un file chiamato thingProperties.h.

Lo sketch

Creiamo il progetto PlatformIO

Abbiamo già visto la procedura di creazione di un progetto PlatformIO nell’articolo Come creare un progetto per NodeMCU ESP8266 con PlatformIO. Puoi seguire la guida ma al momento di scegliere la piattaforma dovrai scegliere Arduino Nano ESP32 nel campo Board del wizard, come nell’immagine sotto:

Il Project Wizard compilato per Arduino Nano ESP32
Il Project Wizard compilato per Arduino Nano ESP32

Non installare le librerie indicate in quell’articolo ma installa , sempre seguendo la solita procedura, la libreria Arduino_ConnectionHandler:

Installazione della libreria Arduino_ConnectionHandler
Installazione della libreria Arduino_ConnectionHandler

e la libreria ArduinoIoTCloud:

Installazione della libreria ArduinoIoTCloud
Installazione della libreria ArduinoIoTCloud

Installa poi la libreria DHT sensor library by Adafruit:

Installazione della libreria DHT sensor library by Adafruit
Installazione della libreria DHT sensor library by Adafruit

la libreria Adafruit Unified Sensor by Adafruit:

Installazione della libreria Adafruit Unified Sensor by Adafruit
Installazione della libreria Adafruit Unified Sensor by Adafruit

e la libreria Arduino_ESP32_OTA by Arduino:

Installazione della libreria Arduino_ESP32_OTA by Arduino
Installazione della libreria Arduino_ESP32_OTA by Arduino

Ora modifica il file platformio.ini per aggiungere queste due righe:

monitor_speed = 115200
upload_speed = 921600

e aggiungi la riga WIFI tra le lib_deps in modo che abbia un aspetto del genere:

[env:arduino_nano_esp32]
platform = espressif32
board = arduino_nano_esp32
framework = arduino
monitor_speed = 115200
upload_speed = 921600
lib_deps = 
	arduino-libraries/Arduino_ConnectionHandler@^0.8.1
	arduino-libraries/ArduinoIoTCloud@^1.15.1
	WIFI
	arduino-libraries/Arduino_ESP32_OTA@^0.2.0
	adafruit/DHT sensor library@^1.4.6
	adafruit/Adafruit Unified Sensor@^1.1.14

Ora scarica il progetto dal link qui sotto:

Decomprimi il progetto appena scaricato e sovrascrivi il file main.cpp nella cartella src del progetto creato prima.

Poi, dalla cartella include del progetto appena scaricato e decompresso, prendi il file thingProperties.h e copialo nella cartella include del progetto creato prima.

A questo punto dovrai editare questo file in modo da collegarlo al cloud:

const char DEVICE_LOGIN_NAME[]  = "YYYYYYYYYYYYYYYYYYYYYYYYYYYY";

const char SSID[]               = SECRET_SSID;    // Network SSID (name)
const char PASS[]               = SECRET_OPTIONAL_PASS;    // Network password (use for WPA, or use as key for WEP)
const char DEVICE_KEY[]  = SECRET_DEVICE_KEY;    // Secret device password

Come vedi, in questa sezione ci sono alcuni parametri da impostare.

Il primo parametro (DEVICE_LOGIN_NAME) lo trovi nel pdf che hai scaricato quando hai creato l’oggetto (trovi il riferimento nel video precedente). Nel pdf il parametro è chiamato Device ID.

I parametri SECRET_SSID e SECRET_OPTIONAL_PASS sono, rispettivamente, il nome e la password della tua rete WiFi. Quindi, al posto di SECRET_SSID metterai il nome della tua rete tra doppi apici (“) e al posto di SECRET_OPTIONAL_PASS metterai la password della tua rete (sempre fra doppi apici).

L’ultimo parametro, SECRET_DEVICE_KEY, lo trovi sempre nel pdf che hai scaricato dalla piattaforma col nome Secret Key.

Quindi la sezione in oggetto dovrebbe avere un aspetto del genere:

const char DEVICE_LOGIN_NAME[]  = "Device ID from the downloaded pdf";
const char SSID[]               = "my_wifi_ssid";    // Network SSID (name)
const char PASS[]               = "my_wifi_password";    // Network password (use for WPA, or use as key for WEP)
const char DEVICE_KEY[]  = "Secret Key from the downloaded pdf";    // Secret device password

Come puoi vedere, ho messo nel campo DEVICE_LOGIN_NAME il valore preso dal pdf alla voce Device ID (in questo caso Device ID from the downloaded pdf), nel campo SSID l’SSID della mia rete WiFi (in questo caso my_wifi_ssid), nel campo PASS la password della mia rete WiFi (in questo caso my_wifi_password) e nel campo DEVICE_KEY il valore preso dal pdf alla voce Secret Key.

Analizziamo ora lo sketch. All’inizio troviamo l’inclusione delle librerie necessarie (tra cui il file thingProperties.h che contiene informazioni sul nostro setup relativo al Cloud):

#include <Arduino.h>
#include "thingProperties.h"
#include "Update.h"
#include <DHT.h>

Viene poi definito il GPIO su cui è collegato il sensore, il tipo di sensore (DHT22) e viene istanziatol’oggetto dht che lo gestisce:

#define DHTPIN  D7
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

Vengono poi definiti i GPIO per il pilotaggio dei due LED:

const int led1Pin = D2;  // LED 1 connected to pin D2
const int led2Pin = D5;  // LED 2 connected to pin D5

e le variabili che temporizzano le misurazioni da parte del DHT22:

unsigned long measureDelay = 3000;                //    NOT LESS THAN 2000!!!!!   
unsigned long lastTimeRan;

Il tempo di misura del DHT22 è di 2 secondi quindi è meglio non scendere sotto questo tempo.

Incontriamo poi la funzione setup:

// Initialize serial and wait for port to open:
Serial.begin(115200);
// This delay gives the chance to wait for a Serial Monitor without blocking if none is found
delay(1500); 

//start dht sensor:
dht.begin();

// Set LED pins as output
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);

// Defined in thingProperties.h
initProperties();

// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);

/*
    The following function allows you to obtain more information
    related to the state of network and IoT Cloud connection and errors
    the higher number the more granular information you’ll get.
    The default is 0 (only errors).
    Maximum is 4
*/
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo(); 

Tale funzione inizializza la porta seriale, inizializza il sensore, setta i GPIO dei LED come OUTPUT, inizializza la parte legata all’Arduino Cloud.

Incontriamo poi la funzione loop. Essa contiene l’istruzione che fa l’aggiornamento dell’Arduino Cloud e un blocco che, ogni measureDelay secondi legge i valori di temperatura ed umidità dal DHT22:

  ArduinoCloud.update();
  
  // measurements every measureDelay ms
  if (millis() > lastTimeRan + measureDelay)  {
    humidity = dht.readHumidity();
    temperature = dht.readTemperature();
    lastTimeRan = millis();
  }

Terminano lo sketch le due funzioni onPwmLEDChange e onOnoffLEDChange che gestiscono il comportamento dei due LED (la prima varia la luminosità di uno dei due LED, la seconda accende o spegne l’altro LED) in base a come agiamo sui comandi (interruttore e slider) presenti sulla dashboard del Cloud:

void onPwmLEDChange()  {
  // Add your code here to act upon PwmLED change
  analogWrite(led2Pin, ledPWM);
}


void onOnoffLEDChange()  {
  // Add your code here to act upon OnoffLED change
  digitalWrite(led1Pin, ledOnOff);
}

A questo punto non ti ti rimane che caricare lo sketch sulla board e andare sulla Dashboard per comandare i LED e leggere i valori misurati dal sensore.

AVVISO IMPORTANTE: può capitare, almeno come è capitato a me per il primo caricamento, di ricevere un errore di questo tipo:

dfu-util: Cannot open DFU device 2341:0364 found on devnum 10 (LIBUSB_ERROR_ACCESS) 

dfu-util: No DFU capable USB device available

Io uso una distribuzione Linux (in particolare una Fedora) e quindi ho dovuto cercare una soluzione per il mio sistema.

Nel caso si stia quindi usando Linux e dovesse apparire l’errore citato, bisogna creare un file di nome 99-platformio-udev.rules nella cartella /etc/udev/rules.d/ dando il comando:

sudo touch /etc/udev/rules.d/99-platformio-udev.rules

e poi, sempre su terminale dare il comando :

curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules

Fatto questo è necessario riavviare udev (o riavviare il pc) con uno di questi due metodi alternativi:

sudo service udev restart

oppure

sudo udevadm control --reload-rules
sudo udevadm trigger

Per un maggiore approfondimento ti invito a consultare la pagina https://docs.platformio.org/en/latest/core/installation/udev-rules.html#platformio-udev-rules

Nel caso il problema si dovesse presentare su Windows, è necessario installare i driver appropriati secondo quanto riportato in questo link https://docs.espressif.com/projects/esp-idf/en/stable/esp32s2/api-guides/dfu.html#:~:text=The%20reason%20for%20No%20DFU,is%20not%20in%20bootloader%20mode. al paragrafo USB Drivers (Windows Only).

Video del funzionamento

Segue un video dimostrativo del funzionamento del dispositivo:

Newsletter

Se vuoi essere aggiornato sui nuovi articoli, iscriviti alla newsletter. Prima dell’iscrizione alla newsletter leggi la pagina Privacy Policy (UE)

Se ti vuoi disiscrivere dalla newsletter clicca sul link che troverai nella mail della newsletter.

Inserisci il tuo nome
Inserisci la tua email
0 0 votes
Valutazione articolo
guest
0 Commenti
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
Torna in alto