Portiamo all’esterno le connessioni del connettore Stemma/Qwiic disponibile su Arduino R4 UNO WiFi, tramite una board capace di ospitare dispositivi I²C-Bus, collegabile in cascata ad altre uguali.
Tra le novità che Arduino UNO R4 ha portato con sè, spicca, nella versione WiFi, un piccolo connettore di interfaccia chiamato STEMMA QT/Qwiic. è una connessione che per ragioni di compatibilità di form-factor non ha trovato posto nei tradizionali header compatibili con le board UNO, ma che risulta collocata sul lato sinistro dell’ICSP.
Il connettore rende accessibile un I²C-Bus secondo la piedinatura proposta nella Fig. 1, utilizzabile per gestire dispositivi esterni come display, sensori ecc. purché supportino la comunicazione I²C.

Le linee SCL e SDA fanno capo, diversamente a quanto avviene nelle precedenti schede Arduino basate su processore Atmel (dove erano in comune rispettivamente, con i pin A4 e A5 dell’header Arduino standard) ad un secondo bus I²C (secondario); infatti il chip Renesas utilizzato nelle R4 rende disponibili due I²C-Bus distinti. Il secondo va gestito, tuttavia, richiamando l’oggetto specifico wire1, come verrà spiegato più avanti in questo articolo. La connessione è stata introdotta nella Arduino R4 (solo nella WiFi) per connettere rapidamente ad essa breakout board a standard Sparkfun, giacché il connettore impiegato, un 4 pin single-in-line da circuito stampato, è quello adottato dalle schede di Sparkfun. Qwiic è un ecosistema di moduli breakout e schede di sviluppo dotate di un cosiddetto connettore Qwiic e combina la flessibilità dell’I²C con la facilità d’uso dei cavi compatibili reperibili in commercio già pronti, rendendo semplice la gestione di una catena di dispositivi I²C-Bus attraverso un unico cavo. In pratica, questo significa che il cablaggio dei dispositivi Qwiic è semplice come collegarli in serie, e il gioco è fatto. Per facilitare la connessione e dare un supporto fisico alle breakout board, anziché lasciarle “volanti” abbiamo pensato di progettare e proporvi una piccola scheda adattatrice che dispone di due connettori a standard idoneo alla connessione con il connettore STEMMA QT/Qwiic in modo da realizzare una connessione passante che permette di interfacciare i dispositivi a bordo della scheda stessa, ma anche di utilizzare il bus I²C per collegare altri apparati. Le connessioni dell’I²C-Bus vengono distribuite, sulla nostra scheda, in file di pad nei quali introdurre degli strip per collegare e supportare meccanicamente delle breakout board. Tutto sarà più chiaro analizzando lo schema elettrico del progetto che trovate in questa pagina.
Schema elettrico

Come vedete si tratta di qualcosa di molto semplice, che di fatto non ha alcuna elettronica ma che semplicemente realizza una serie di interconnessioni elettriche realizzando un collegamento passante I²C-Bus tra entrata e uscita mediante i due connettori a 4 poli tipo Sparkfun e che dispone di quattro file di quattro piazzole a passo 2,54 mm pronte per saldarvi degli strip femmina o dei pin-strip di sensori e dispositivi vari. Notate che il layout sul circuito stampato prevede che le file di piazzole abbiano i contatti disposti diversamente da un lato a quello opposto: ciò lo abbiamo voluto per consentire di montare schede e soprattutto display (visto che il problema si riscontra ad esempio con i piccoli OLED) che hanno una differente disposizione di Vcc e GND, nonché si SDA ed SCL. Tramite il connettore STEMMA QT/Qwiic viene prelevata dalla scheda Arduino UNO R4 l’alimentazione necessaria al funzionamento delle breakout board, così da ottenere un funzionamento indipendente dei device collegati ad Arduino. Come vedete, il circuito è essenziale e sostanzialmente serve solo a trasportare connessioni. La cosa bella è che disponendo di due connettori JST, rende possibile il collegamento in cascata di numerosi dispositivi a interfaccia I²Bus su più schede, dato che quella connessa ad Arduino R4 si può a sua volta collegare a una seconda scheda, quest’ultima a una terza e via di seguito, in modo da ospitare più elementi. Per l’interconnessione fra Arduino R4 e la nostra scheda e fra più schede adattatrici è possibile utilizzare un cavo già cablato avente a ciascuna estremità un connettore JST 4 poli passo 1 mm, reperibile presso la Futura Elettronica (online alla pagina web https://futuranet.it/prodotto/cavo-con-connettore-jst-da-1-mm-a-4-pin-stemma-qt-qwiic/). Anche la scheda adattatrice che qui vi proponiamo può essere reperita già pronta presso Futura Elettronica (www.futurashop.it) con il codice prodotto FT1732M.
Realizzazione e utilizzo

La piccola scheda adattatrice qui descritta si prepara facilmente per fotoincisione una volta in possesso delle due tracce lato rame, tuttavia considerato il costo davvero limitato è possibile e conveniente acquistarla già pronta. Per spiegarvi come utilizzarla vi proponiamo un’applicazione base che prevede di acquisire le informazioni fornite da una breakout board sensore di pressione barometrica e temperatura ambiente, visualizzandole poi su un piccolo display OLED monocromatico da 0,96” basato su controller SSD1306; chiaramente ci riferiamo a due dispositivi dotati di interfaccia I²C-Bus. Il connettore di Arduino R4 WiFi da utilizzare è quello dettagliato nella Fig. 2. Per utilizzare un sensore BME280 della Bosch su Breakout board con Arduino R4 e lo standard STEMMA dovete montare, tramite gli appositi pin strip e seguendo l’orientamento previsto (vi può essere d’aiuto la Fig. 3, dove si vede anche in che posizione montarla) la piccola breakout board; fate attenzione che non rispettando posizione e orientamento indicati, la piccola scheda potrà danneggiarsi irreparabilmente.


Questo perché, come accennato, le file di piazzole dell’I²C-Bus interne al circuito stampato sono disposte diversamente a seconda del lato su cui si trovano, per consentire il montaggio di tutte le breakout board disponibili in commercio, dotate di connessione strip a passo 2,54 mm. Su una seconda scheda adattatrice FT1732M dovete montare il piccolo display OLED, che è di tipo standard e, più precisamente, quello commercializzato da Futura Elettronica con il codice OLEDGVSCSD; il dispositivo va applicato come mostrato nella Fig. 4 dopo avergli saldato un pin-strip da 4 poli e utilizzando la fila di piazzole i cui contatti sono così disposti: GND, VCC, SCL, SDA.

Per implementare la comunicazione con la breakout con BME280 occorre per prima cosa caricare nell’IDE di Arduino la libreria Adafruit_BME280; allo scopo bisogna aprire l’IDE, accedere al menù Sketch e impartire il comando Include Library>Manage Libraries… A questo punto bisogna cercare il percorso della “Adafruit BME280” nella barra di ricerca e installare la libreria corrispondente. L’installazione può essere effettuata anche da un file .zip contenente la libreria, mediante l’apposito comando del menù. A questo punto dal menu File si può impartire il comando Examples e caricare l’esempio “BME280_I2C” dopodiché una volta visualizzato lo sketch lo si carica nella scheda (l’IDE deve già avere tra le schede disponibili nel sottomenù Strumenti>Scheda…) la UNO R4 WiFi e lo si esegue, aprendo il Monitor Seriale per visualizzare i dati di pressione e temperatura letti dal sensore. Va notato che Arduino UNO R4 WiFi ha due bus I²C e che il connettore Qwiic fa capo a quello secondario, pertanto bisogna utilizzare la Wire1. Nella maggior parte dei casi sarà possibile selezionare l’oggetto Wire1 durante l’inizializzazione della libreria con questa porzione di codice:
Wire1.begin();
libraryName.begin( Wire1 );
Il nostro sketch di prova
Per testare la scheda adattatrice e la connessione STEMMA Qwiic abbiamo scritto per voi il semplice sketch proposto dal Listato 1, che in associazione con la breakout board basata su BPM280 e con il display OLED implementa una stazione meteo essenziale in grado di visualizzare la pressione atmosferica e la temperatura ambiente.
Per funzionare, lo sketch include le librerie Wire.h, Adafruit Sensor.h,BME280.h, GFX.h e SSD1306.h, nonché le ArduinoGraphics.h e Arduino_LED_Matrix.h per gestire il display; in particolare, la SSD1306.h si occupa della gestione del controller integrato nel modulo display OLED. Nel Setup, si inizializza il Monitor Seriale per una comunicazione a 115.200 baud e poi si impartiscono i comandi per l’utilizzo della Wire1, con le istruzioni:
// Qwiic
Wire1.begin();
Wire1.setClock(100000);
Wire1.setTimeout(1000);
che serviranno per far comunicare Arduino UNO R4 con il display e il sensore BPM280 attraverso l’interfaccia Qwiic / STEMMA. Fatto questo si inizializza il display OLED I²C-Bus ed il sensore, quindi si inizia ad acquisire i campioni delle grandezze rilevate da quest’ultimo, inviando il risultato sul display, all’indirizzo I²C-Bus corrispondente. Queste due operazioni vengono ripetute in loop, con un delay time di 20 ms. Notate che l’utilizzo dell’I²C-Bus implica la definizione nel firmware dell’indirizzo delle due periferiche e a riguardo va detto che la breakout con BME280 ha tipicamente indirizzo 0x76, che è quello predefinito nel nostro sketch; laddove l’interrogazione fallisse e non si visualizzasse alcun dato sul display, converrà cambiare l’address I²C nella riga di codice seguente:
uint8_t BME_ADDR = 0x76;
sostituendo 0x76 con 0x77, perché si trovano anche breakout con questo indirizzo preimpostato. Quanto al display OLED utilizzato in questo esempio, ha un indirizzo I²C-Bus pari a 0x3C che è fisso e non varia da costruttore a costruttore, perché definito nel chip controller.


Conclusioni
Bene, con questo abbiamo terminato e vi lasciamo alle vostre prove pratiche con Arduino UNO R4 e la sua connessione Qwiic. L’applicazione qui proposta è uno dei tanti esempi d’uso e impiega una scheda per ogni dispositivo I²C-Bus, tuttavia ciascuna può ospitare, compatibilmente con le dimensioni, più breakout e ricordate che il connettore STEMMA/Qwiic supporta anche più di due schede adattatrici, compatibilmente con la corrente erogabile al bus.


