Progetto di un Data Logger con microSD e microcontrollore ESP32 – Parte 1

In questo articolo viene proposto il progetto di un Data Logger con microcontrollore ESP32 e scheda microSD utilizzata per registrare i dati di temperatura ambientale rilevata dal sensore di temperatura DS18B20. Lo scopo di questo progetto dimostrativo è di fornire un approccio alla progettazione di sistemi più complessi in cui si intenda utilizzare una scheda di memoria SD gestita da un microcontrollore. In questa prima parte descriveremo il funzionamento del Data Logger e inizieremo la descrizione dei componenti con la scheda di sviluppo ESP32 DevKitC, il componente più importante del progetto.

Introduzione

Il termine “Data Logging" o registrazione dati, può essere definito come l'acquisizione e l'archiviazione di dati da utilizzare per un successivo processo. Fondamentalmente, un Data Logger è un dispositivo elettronico in grado di acquisire e registrare dati nel tempo. I moderni Data Logger basati sulla tecnologia dei microcontrollori, di solito sono dispositivi portatili alimentati a batterie con memoria interna e alcuni sensori interfacciati per misurare grandezze fisiche come temperatura, pressione, umidità, flusso, tensione, corrente ed altro ancora. I registratori di dati possono essere classificati in due gruppi: registratori di dati autonomi e registratori per l'acquisizione di dati. I Data Logger che possono funzionare autonomamente sono definiti “Data Logger stand alone”. Non dipendono da altri dispositivi esterni per la raccolta e l'archiviazione dei dati. Questi Data Logger possono essere dotati di grandi quantità di memoria non volatile integrate e possono anche interfacciarsi con dispositivi esterni in tempo reale. I dati raccolti vengono salvati in memoria cui è possibile associarvi il timestamp (marcatura temporale - inserimento di data e/o ora di un evento). Una volta completata la raccolta dei dati, il dispositivo Data Logger viene collegato ad un computer o ad un microcontrollore per l’analisi e l’elaborazione dei dati acquisiti dal dispositivo di memoria.

Descrizione del progetto

In Figura 1 viene illustrato lo schema elettrico del Data Logger.

Figura 1: Schema elettrico del Data Logger

Il funzionamento del Data Logger è molto semplice e lineare. L'ESP32 legge i valori della temperatura ambientale rilevata dal sensore DS18B20 mediante l’interfaccia di comunicazione One-Wire. Dopo aver ottenuto il valore della temperatura, l’ESP32 si connette alla rete Wi-Fi ed effettua una richiesta al server NTP (Network Time Protocol) per ottenere data e ora (il timestamp). I dati di temperatura e timestamp, tramite interfaccia di comunicazione seriale SPI, vengono trasferiti dall’ESP32 alla scheda microSD in cui questi dati vengono registrati. Dopo aver completato queste operazioni, l’ESP32 va in modalità deep sleep per 10 minuti. Trascorso questo intervallo di tempo, l'ESP32 si riattiva e ripete il processo di acquisizione e registrazione dei dati su microSD.

I componenti del Data Logger

In questa prima parte del progetto inizieremo la descrizione dei componenti del Data Logger partendo dalla scheda di sviluppo ESP32-DevKitC.

La scheda di sviluppo ESP32-DevKitC V4

La scheda ESP32-DevKitC V4 con modulo ESP-WROOM-32D utilizzata in questo progetto, o in alternativa la DevKitC-ESP32-V4 ESP-WROOM-32U (la sola differenza è che il modulo ESP32 WROOM 32D ha l'antenna a bordo, mentre l'ESP32-WROOM-32U ha il connettore UFL che deve essere collegato ad un'antenna IPEX esterna) ha 38 pin, di cui 28 pin sono GPIO e ogni pin ha più funzionalità che possono essere configurate utilizzando registri specifici. Sono disponibili molti tipi di GPIO utilizzabili come ingresso digitale, uscita digitale, ingresso analogico-uscita-digitale (ADC), ingresso digitale- uscita analogica (DAC), touch capacitivo, comunicazione UART e molte altre funzionalità. Nella tabella di Figura 2 (estratta dal datasheet del modulo ESP32-WROOM-32D/U) viene riportato l’elenco dei pin GPIO con la descrizione delle funzionalità di ognuno. Si consideri che la numerazione riportata nella seconda colonna da sinistra della tabella si riferisce alla numerazione dei pin del modulo ESP32-WROOM-32D interno alla scheda di sviluppo ESP32 e non a quest’ultima.

Figura 2: Elenco dei pin con le relative funzioni dell’ESP32

Esistono molte versioni del chip ESP32 disponibili sul mercato. La scheda di sviluppo ESP32-DevKitC V4 della Espressif utilizzata in questo progetto è basata sul modulo ESP-WROOM-32D. Tuttavia, la funzionalità di tutti i pin GPIO è la stessa in tutte le schede di sviluppo ESP32. Per fare chiarezza su come utilizzare i pin GPIO, quale pin GPIO può essere utilizzato come pin di ingresso-uscita digitale, quale pin GPIO può essere utilizzato come pin analogico o digitale, quale pin non dovrebbe essere usato per sicurezza, riteniamo utile esaminare nei dettagli i pin GPIO. Nella Figura 3 riportiamo il pinout della scheda ESP32-DevKitC V4. Il colore di ogni pin indica la sua funzione, come descritto nell’elenco sotto l’immagine della scheda.

Figura 3: Pinout dell’ESP32-DevKitC V4

Configurazioni dei pin dell’ESP32

Il chip ESP32-WROOM-32D integrato nella scheda ESP32 ha 48 pin, ma non tutti i pin sono accessibili dalle schede di sviluppo ESP32. La scheda ESP32-DevKitC ha 38 pin, 19 su ciascun lato della scheda, come mostrato nell'immagine di Figura 3. Ha 32 pin GPIO e ognuno ha più funzionalità che possono essere configurate utilizzando registri specifici. Sono disponibili molti tipi di GPIO utilizzabili come ingresso digitale, uscita digitale, ingresso analogico (ADC), uscita analogica (DAC), touch capacitivo, per la comunicazione seriale (UART, SPI, I2C, etc.) e molte altre funzionalità di seguito elencate.

Pin GPIO ingressi digitali

I seguenti pin GPIO possono essere utilizzati unicamente come ingressi digitali:

GPIO36
GPIO39
GPIO34
GPIO35

Stato dei pin GPIO

Tutti i pin GPIO all'avvio o al ripristino iniziale si trovano nello stato basso attivo tranne i pin seguenti. I seguenti pin saranno nello stato attivo alto per impostazione predefinita durante l'avvio o il ripristino. Pertanto, se è desiderato impostarli al livello basso all’avvio è necessario inizializzare questi pin allo stato basso attivo nella funzione di configurazione del codice.

GPIO1
GPIO3
GPIO5
GPIO6 fino a GPIO11
GPIO14
GPIO15

Pin GPIO vincolati

Alcuni pin GPIO vengono utilizzati per configurare il bootloader o la modalità di flashing dell’ESP32 per il caricamento del codice dell'applicazione.

GPIO0 (deve essere LOW durante il flashing)
GPIO2
GPIO4
GPIO5 (deve essere HIGH durante il boot)
GPIO12 (deve essere LOW durante il boot)
GPIO15 (deve essere HIGH durante il boot)

Pin GPIO analogici convertitori Analogico-Digitale (ADC)

Questa scheda di sviluppo supporta 18 canali ADC e ogni canale è a 12 bit, quindi una buona risoluzione. Può essere utilizzato per misurare la tensione analogica, la corrente e qualsiasi forma di tensione analogica fornita da un sensore. Questi ADC possono essere utilizzati anche in modalità sleep per ridurre il consumo energetico. Ogni canale ADC ha una risoluzione di 12 bit che, considerando una tensione di riferimento di 3,3V, corrisponde ad una tensione minima (o step minimo dell'ADC) pari a 3,3 / 4095 = 80 microvolt circa. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 1941 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Una risposta

  1. Luca.Rosa 13 Marzo 2022

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend