
Il MicroChip MCP23016 fornisce 16 bit di pin per aumentare le porte GPIO di un processore, grazie all’interfaccia del bus I2C. I2C è un sistema di comunicazione seriale bifilare utilizzato tra circuiti integrati, compatibile anche con i processori derivati dall’ESP8266. Quindi dal più piccolo ESP-01 fino all’ESP32-CAM.
Ogni bit può essere configurato singolarmente come pin di ingresso o di uscita. I dispositivi di espansione forniscono una soluzione semplice quando sono necessari diversi pin I/O per connettere interruttori, sensori, pulsanti, Led ed altri accessori.

Caratteristiche
- 16 pin di ingresso/uscita
- Veloce frequenza di clock del bus I2C (0-400 kbit/s)
- Tre pin di indirizzo hardware consentono l’utilizzo di un massimo di otto dispositivi simili
- Registratore di acquisizione porte di Interrupt
- Registro di inversione di polarità per l’impostazione della polarità dei dati della porta di ingresso
- Compatibile con la maggior parte dei microcontrollori
Per fare un’esempio, con il microprocessore ESP01, collegando in serie tramite i pin di controllo 8 MicroChip MCP23016, si possono aumentare le porte GPIO per ottenere ben 128 porte aggiuntive.
Come vediamo nello schema nella foto in basso, il processore è diviso in due file da otto bit (GP1.x e GP0.x), per un totale di 16 porte GPIO. Oltre a un pin di Interrupt, è presente anche il pin CLK, collegati al condensatore e la resistenza, che a loro volta sono collegati internamente ad una porta logica. Questo serve per creare un segnale di Clock, attraverso un oscillatore a cristallo, necessario per raggiungere una frequenza di 1MHz. Il pin TP viene utilizzato per misurare questo segnale di Clock. I pin A0, A1 e A2 sono indirizzi binari, necessari per selezionare il numero della GPIO.
L’MCP23016 utilizza quindi un circuito RC esterno per determinare la velocità del clock interno. Per il corretto funzionamento del dispositivo è richiesto (di solito) un clock interno di 1 MHz. L’orologio interno può essere misurato sul pin TP.
Per definire l’indirizzo dell’MCP23016, si utilizzano i pin A0, A1 e A2. Cambiando i segnali in Alto o Basso, verrà selezionato l’indirizzo corrispondente.
Facile programmazione
Per quando riguarda la programmazione, nello stesso programma Arduino IDE, utilizzato nei vari esempi per programmare provare e gestire i vari processori basati su ESP8266, sono presenti diversi esempi. Basta cercare la parola chiave “MCP23016”. Essendo presenti anche delle librerie, la programmazione risulta davvero molto semplice. Provare per credere. Commentate l’articolo se avete bisogno di un aiuto inerente all’argomento.