Grazie alle sue funzionalità avanzate, come la connettività e il supporto per numerosi tipi di interfacce, la scheda ESPertino si presta ad essere impiegata in applicazioni non solo utili ma anche insolite e divertenti. Il progetto presentato in questo articolo ha lo scopo di presentare su un display OLED le quotazioni in tempo reale di un certo numero di criptovalute, scelte a piacimento dall'utente.
Introduzione
Nonostante sia un sistema embedded di dimensioni molto compatte, ESPertino si dimostra un'ottima soluzione anche per sviluppare applicazioni nel campo delle criptovalute. In un precedente articolo, abbiamo visto come l'engine crittografico integrato nel modulo ESP32 (il cuore della board) possa essere utilmente impiegato per il calcolo della funzione crittografica SHA-256, con numerose applicazioni nel campo della sicurezza (si pensi ad esempio ai protocolli sicuri e all'autenticazione). In questo articolo proponiamo un progetto differente che, oltre ad essere utile per chi vuole essere informato sulla quotazione corrente delle criptovalute, offre lo spunto per apprendere la tecnica di gestione di un display OLED con interfaccia I2C. Volete avere sempre sott'occhio la quotazione delle criptovalute preferite senza dover consultare continuamente i siti specializzati? Vi affascina il mondo delle monete digitali ma non sapete come entrare in questo ambiente in modo "soft", oppure volete semplicemente sperimentare la qualità superiore in termini di luminosità e contrasto di un display OLED? La risposta è molto semplice: vi basterà proseguire nella lettura dell'articolo! Il progetto ha lo scopo di realizzare un dispositivo che, collegandosi alla rete WiFi, visualizza su un display grafico il valore corrente di diverse criptovalute (è possibile gestire fino a un massimo di 10 differenti monete, selezionabili dall'utente). La quotazione delle criptovalute viene ottenuta accedendo al sito CoinMarketCap.com tramite apposite API, estraendo da esso le informazioni richieste. In pratica viene utilizzato il metodo GET del protocollo HTTP e la relativa risposta viene interpretata e decodificata utilizzando la libreria ArduinoJson. L'intero progetto è affrontabile da chiunque (non è richiesta alcuna saldatura o modifica hardware alla scheda): oltre a ESPertino è infatti sufficiente disporre di un display OLED (tra poco vedremo i dettagli), una piccola protoboard e qualche cavetto jumper. L'intera applicazione verrà sviluppata all'interno di Arduino IDE.
Schema a blocchi
Lo schema a blocchi dell'intero progetto è visibile in Figura 1. La parte centrale del sistema è ovviamente rappresentata dalla scheda ESPertino, equipaggiata con il modulo ESP32 opportunamente programmato con lo sketch sviluppato in ambiente Arduino. Quest'ultimo, nella fase di setup, aprirà come client una connessione di rete collegandosi a un access provider (i corrispondenti parametri SSID e password andranno inseriti nello sketch, come vedremo). Una volta instaurata la connessione, l'applicazione comincerà a prelevare dal sito web CoinMarketCap le quotazioni correnti per le criptovalute configurate. Nello sketch è infatti presente una lista (di dimensione massima pari a 10) in cui l'utente può inserire le criptovalute di cui desidera monitorare la quotazione in tempo reale. Un set di valute è già preimpostato nello sketch, ma è possibile sostituire le criptovalute presenti con altre di proprio piacimento. La parte di acquisizione dei dati è visibile nella parte destra di Figura 1, schematizzata con il simbolo del world wide web e con l'indirizzo del sito che mette a disposizione le quotazioni. Si noti come la freccia sia entrante verso ESPertino, in quanto la scheda rappresenta il destinatario delle informazioni. In realtà, come sappiamo, il protocollo di comunicazione per l'accesso al sito (HTTP) implica sia la trasmissione che la ricezione dei dati.
Nella parte sinistra di Figura 1 è invece presente il display, che riceve i dati da visualizzare (per comodità utilizzeremo una libreria apposita sviluppata per l'ambiente Arduino IDE, che si è dimostrata perfettamente compatibile anche con le schede basate sul microcontrollore ESP32). Il collegamento del display OLED con la scheda ESPertino avviene tramite interfaccia I2C. Più precisamente sono richiesti i seguenti [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2757 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.
Buona sera, sono finito qui cercando qualcosa di utile per utilizzare l’I2C di ESPertino per leggere il sensore BME280 ed effettivamente utilizzando quanto indicato/spiegato nell’articolo riguardo a connessioni ed uso dei pin SCL e SDA sono riuscito a leggere il BME280.
Quello che non ho capito e sono qui a chiedere è: perchè non sono stati usati i pin con serigrafia ESPertino SCL SDA e, è possibile usarli per tali funzioni?
Grazie in anticipo per la risposta.
Mi rispondo da solo :
continuando nella ricerca ho trovato tutto spiegato molto bene qui:
https://randomnerdtutorials.com/esp32-i2c-communication-arduino-ide/
buona notte
Salve piero25, lo sketch Arduino relativo a questo progetto utilizza il GPIO 27 come segnale SCL e il GPIO 26 come segnale SDA (può trovare le define nello sketch allegato a questo articolo). I due pin si trovano sul connettore di ESPertino nella posizione indicata nell’articolo. Ciò non toglie che si possano essere utilizzati altri pin. Se si volessero utilizzare i pin del connettore associati alle serigrafie SDA e SCL, occorrerebbe ad esempio utilizzare i GPIO 21 e 22. Probabilmente lo sketch che sta utilizzando per il sensore BME280 avrà una funzione di inizializzazione in cui dovrà specificare i pin utilizzati come SDA e SCL. Nello sketch di questo articolo ciò avviene con la chiamata: SH1106 glb_display(OLED_DISPLAY_I2C_ADDRESS, SDA_PIN, SCL_PIN);
Grazie per la risposta
la mia domanda era dettata dalla curiosità di capire come mai non si sono usati due pin “dedicati”, vedi serigrafia, e si sono usati due pin messi in un connettore “sfasato” di mezzo passo difficilmente usabile volendo mettere una breadboard piggyback sulla ESPertino.
Come ho scritto usando le istruzioni dell’articolo il mio sketch funziona, ora però volendo usare i due pin “dedicati” GPIOI 21 e22 stranamente non funziona più.
#include
#include
//#define I2C_SDA 26
//#define I2C_SCL 27
#define I2C_SDA 21
#define I2C_SCL 22
Adafruit_BME280 bme(I2C_SDA, I2C_SCL);
è strano che solamente sostituendo i due pin non funzioni.
Suggerimenti?
Grazie
p.s.
come posso allegare una foto?
Salve piero25, provi a scambiare di posizione, tra loro. i due fili che ha collegato ai pin SCL e SDA del connettore di Espertino.
Salve, mi chiedevo se lo stesso progetto non potesse essere adattato: 1) per monitorare le notizie più lette di un sito di informazione (del giorno, della settimana, del mese o della sezione); 2) per monitorare i video più visti su YouTube (in una dato giorno o nell’ultima ora, ecc.).
Tra i problemi da affrontare e superare, oltre alle API dei siti, mi viene in mente ad esempio la necessità di far “scorrere” sul display i caratteri dei titoli (delle notizie o dei video). Lei cosa ne pensa?
Salve,
ho realizzato il progetto inserendo correttamente la mia API Key di coinmarketcap, la connessione WiFi è ok il display funziona ma restituisce sempre il valore 0,0000 per tutte le valute, c’è qualche modifica che devo fare?
Grazie