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

Nel precedente articolo “Progetto di un Data Logger con microSD e microcontrollore ESP32 - Parte 1” abbiamo trattato la prima parte del progetto di cui abbiamo spiegato il funzionamento e abbiamo iniziato la descrizione dei componenti con la scheda di sviluppo ESP32-DevKitC. In questa seconda parte del progetto completeremo la descrizione dei componenti del Data Logger continuando con la scheda microSD e il sensore di temperatura DS18B20. Successivamente introdurremo la fase di programmazione dell’ESP32 con l’installazione delle librerie dei componenti, infine, creeremo lo sketch con il codice del progetto.

La scheda di memoria SD

La scheda SD è una memoria di tipo flash di piccola taglia progettata per fornire un'elevata capacità di archiviazione riscrivibile non volatile. Con il progresso della tecnologia elettronica la capacità di memoria e la velocità delle schede SD aumentano continuamente. Le specifiche tecniche delle schede SD riguardo la velocità di trasferimento dati sono riportate nella Tabella mostrata in Figura 1.

Figura 1: Specifiche tecniche delle schede SD

Per consultare informazioni, nel sito web https://it.wikipedia.org/wiki/Secure_Digital si trova un’ampia trattazione delle schede SD. Le schede SD sono di tre diverse dimensioni: SD standard, mini SD e micro SD. Le schede microSD (Micro Secure Digital) sono le schede di memoria più utilizzate nel mondo moderno grazie alle dimensioni molto ridotte a fronte di una elevata capacità di memoria. La funzionalità della scheda SD è basata su MMC, ma rispetto alle MMC ha il vantaggio costituito dalla possibilità opzionale di disporre della funzione di crittografia. La MMC (Multi MediaCard) è una tecnologia standard per schede di memoria allo stato solido utilizzata per l'archiviazione di dati. Progettata da SanDisk e Siemens, la scheda MMC dispone di un'interfaccia seriale a basso numero di pin ed è molto più piccola rispetto ai sistemi precedenti basati su interfacce parallele ad alto numero di pin. Una scheda SD standard può essere interfacciata in due modalità: SD Bus e SPI Bus. In modalità SD Bus, tutti i pin della scheda SD devono essere utilizzati per la comunicazione con l'unità microcontrollore. In modalità SPI Bus, la comunicazione con il microcontrollore avviene con i pin chip select (CS), clock (SCK), ingresso dati (MOSI) e uscita dati (MISO). Di seguito sono riportati i pin della scheda SD per la comunicazione in modalità SPI Bus:

VDD: Pin 4
GND: Pin 6
CS: Pin 2
MOSI (Data in): Pin 3
Clock: Pin 5
MISO (Data out): Pin 7

Nella Figura 2 è mostrata la disposizione e la descrizione dei pin della scheda MMC e delle varie schede SD con il raffronto delle proporzioni dimensionali.

Figura 2: Pin delle schede MMC e SD

La SD accetta solo i comandi SD standard, quindi, utilizzando questi comandi, un microcontrollore può leggere/scrivere dati nei registri di memoria della scheda SD. La tecnica di interfacciamento della scheda SD con i microcontrollori più comunemente utilizzata è la SPI. Per il trasferimento dei dati in modalità SPI è necessario inizializzare i pin Data in clock e di selezione del chip. La scheda SD funziona con una tensione di alimentazione di 3,3V e con i livelli logici di seguito specificati:

Logica LOW: tensione di uscita massima VLout = 0,4 V / tensione di ingresso massima, VLin = 0,8 V
Logica HIGH: tensione di ingresso minima VHImin = 2 V / tensione di ingresso massima VHImax = 3,6 V

Nel nostro progetto viene utilizzata una scheda d’interfaccia microSD in cui va inserita la scheda di memoria microSD. La scheda d’interfaccia viene utilizzata per interfacciare la scheda di memoria microSD con il microcontrollore ESP32 per la comunicazione seriale SPI. In Figura 3 è riportato il layout della scheda d’interfaccia microSD.

Figura 3: Scheda d’interfaccia microSD-SPI

La scheda d’interfaccia microSD è dotata di un connettore a 6 pin per l’alimentazione della microSD e la comunicazione SPI a cui vanno collegati i pin di alimentazione e dell’interfaccia SPI dell’ESP32.

Formattazione della scheda microSD

La scheda SD deve essere formattata per essere utilizzata come dispositivo di memoria. La libreria SD di Arduino utilizzata nel codice del progetto supporta solo la formattazione di tipo FAT16 o FAT32. I file system FAT16 e FAT32 sono supportati da tutti i sistemi operativi Windows, macOS e Linux (incluse le versioni ARM). In questo progetto decidiamo di formattare la scheda microSD in FAT32 che consente di formattare schede SD di maggiore capacità rispetto alla formattazione FAT16. Anziché utilizzare l’utility di formattazione del sistema operativo Windows del computer, per evitare qualsiasi problema di compatibilità, utilizzeremo l'utilità gratuita fat32format scaricabile per Windows dal sito https://m.majorgeeks.com/files/details/fat32format.html. Inoltre, questo programma è in grado di formattare in FAT32 qualsiasi dimensione di dispositivi di memoria. Entrati nel sito, cliccate su uno dei link [email protected]. Terminato il download otterrete il file ZIP eseguibile guiformat.exe. Inserite la vostra scheda microSD nello slot del computer o in un adattatore USB. Eseguito questo file, si aprirà una finestra come quella mostrata in Figura 4.

Figura 4: L’applicazione fat32format

Selezionate la scheda microSD, poi “Quick Format” e infine Start; in pochi secondi la vostra microSD sarà formattata in FAT32. Una cosa importante da considerare riguardo la libreria SD, è che il nome dei file da salvare nelle schede SD deve essere composto da un numero massimo di 8 caratteri e l’estensione al massimo di 3; ad esempio, Datalogger.txt non va bene perché il nome del file eccede 8 caratteri, mentre il numero di caratteri dell’estensione è corretto poiché è nel limite di 3.

Il sensore di temperatura DS18B20

Il sensore di temperatura digitale DS18B20 fornisce misurazioni della temperatura in gradi Celsius mediante un segnale digitale configurabile da 9 a 12 bit e dispone di una funzione di allarme con punti di attivazione superiori e inferiori non volatili programmabili dall'utente. Il DS18B20 comunica su bus One-Wire che, per definizione, richiede solo una linea dati (e massa) per la comunicazione con un microcontrollore o microprocessore centrale. Inoltre, il DS18B20 può ricevere alimentazione direttamente dalla linea dati definita appunto "alimentazione parassita", eliminando la necessità di un alimentatore esterno. Ogni DS18B20 ha un codice identificativo seriale univoco a 64 bit che consente a più DS18B20 di funzionare sullo stesso bus One-Wire. Pertanto, con un microprocessore è possibile controllare molti DS18B20 distribuiti su una vasta area. Le applicazioni che possono trarre vantaggio da questa funzione includono i controlli ambientali, il monitoraggio della temperatura di sistemi all'interno o all’esterno di edifici, sistemi di monitoraggio e controllo dei processi di apparecchiature e macchinari. Come illustrato in Figura 5, il sensore DS18B20 è disponibile in varie tipologie di package.

Figura 5: Tipologie di package disponibili del sensore DS18B20

Come è possibile vedere in Figura 6, è anche disponibile una versione water-proof del DS18B20 che utilizzeremo in questo progetto.

Figura 6: Versione water-proof del DS18B20

Specifiche tecniche del DS18B20

Comunicazioni seriali con interfaccia One-Wire
Range di alimentazione: da 3.0V a 5.5V
Temperature Operative: -55ºC +125ºC
Precisione di misurazione: +/- 0.5 ºC (da -10 ºC a +85 ºC)

Programmazione dell’ESP32

Per quanto riguarda il software, il codice per il funzionamento del Data Logger viene programmato nell’ESP32 utilizzando l’editor di Arduino (IDE). Nell’IDE devono essere installate le librerie per la gestione dell’ESP32, della scheda microSD, del sensore di temperatura DS18B20 e del server NTP. Per installare queste librerie nell’IDE di Arduino occorre innanzitutto installare l'ultima versione dell'IDE Arduino nel computer scaricandola dal sito ufficiale www.arduino.cc. Per programmare la scheda ESP32 si necessita prima di installare il driver che consente la comunicazione seriale UART-USB della scheda ESP32 con il computer. L’ESP32 utilizza il chip convertitore seriale UART-USB CP2102 integrato nella scheda per l'interfacciamento USB al computer. Collegate la scheda ESP32 al computer tramite un cavo USB-microUSB. Se il sistema operativo del computer non riconosce automaticamente il chip CP2102, occorre scaricare il driver dal sito web http://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers e decomprimerlo in una cartella. Su Windows, si installa eseguendo "CP210xVCPInstaller_x86.exe" o "CP210xVCPInstaller_x64.exe", a seconda del sistema operativo a 32 o 64 bit; per Mac, si installa il file DMG nell'archivio caricato. Per i sistemi operativi Windows XP e Vista occorre installare il driver dal sito https://www.silabs.com/community/interface/knowledge-base.entry.html/2017/01/10/legacy_os_softwarea-bgvU. Dopo aver scollegato e ricollegato la scheda ESP32, nell’elenco delle periferiche di comunicazione in Windows, dovrebbe apparire una porta COM identificabile come "Silicon Labs CP210x da USB a UART Bridge".

Installazione delle librerie per la gestione dell’ESP32, del sensore DS18B20 e del server NTP

Installazione del firmware dell’ESP32

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2686 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

Scrivi un commento

Send this to a friend