Modulo Expander bus I2C per Display LCD a matrice di caratteri

ultimo aggiornamento 11 maggio 2019


JLCPCB - 10 PCB per $ 2 (100 * 100 mm, 2-layer)
Il più grande produttore di PCB in Cina, oltre 600.000 clienti e oltre 10.000 ordini online al giorno
Produzione veloce in sole 24 ore e preventivo online gratuito: https://jlcpcb.com/quote


Indice

Descrizione

Si tratta di un adattatore/convertitore dal bus seriale I2C al bus parallelo utilizzato dai Display LCD con standard HD44780 e matrice (colonne x righe):  4x2, 8x2, 16x2, 20x2, 16x4, 20x4 ecc
Ad esempio un display LCD 1602 impegna per il suo controllo, a prescindere dall'alimentazione, almeno 6 porte del Microcontroller di sistema per cui il numero delle porte restanti può risultare insufficiente per le necessità del progetto che si vuol realizzare. Questo modulo permette di comunicare con un display LCD mediante il protocollo I2C che impegna quindi due sole porte.

OurPCB, your most reliable PCB and PCBA supplier.

Dove trovare il modulo

Il modulo può essere acquistato presso il sito

 

Schema elettrico del modulo

Lo schema elettrico è basato sul chip PCF8574 un remote 8-bit I/O Expander for I2C-bus che si occupa di convertire i dati provenienti dalla linea Dati e pilotare le linee del display.
Sul modulo è presente un trimmer per la regolazione del contrasto ed un jumper rimovibile per l'attivazione della retroilluminazione.
Se il jumper viene rimosso la luminosità può essere regolata pilotando opportunamente  pilotando la base del transistor Q3 tipo NPN S8050.
Per la scelta dell'indirizzo I2C sono presenti 3 gruppi di piazzole (JP1-Jp2)

PCF8574 Remote 8-bit I/O expander for I2C-bus

Piedinatura Datasheet Foto dell'integrato

Schema a blocchi del PCF8574

Transistor NPN S8050 SOT23
Piedinatura Datasheet Foto del transistor

Impostazione dell'indirizzo del modulo

Sono inoltre presenti tre connessioni denominate A1, A2 e A3 per il settaggio (a 3-bit) dell'indirizzo I2C tra 0x20 e 0x27. L'indirizzo di default è 0x27 (A0, A1 e A2 lasciati aperti).
La chiusura di una coppia si effettua collegando tra loro le due rispettive piazzole. E’ ovvio che tale indirizzo hardware deve coincidere con l’indirizzo I2C nel software/libreria di gestione del Modulo.

Il Modulo è strutturato per essere installato (saldato) sul retro del Display come mostrato qui di seguito:

Una volta installato il modulo, il collegamento ad esempio con Arduino è molto semplice come mostrato qui di seguito:

Libreria di gestione per Arduino

Per l'utilizzo del modulo si può utilizzare la libreria che può essere scaricata da questo link  la libreria è stata scritta da Lucas Maziero ed è attualmente nella versione 1.1.
Nel caso vi fossero problemi di funzionamento, occorre ricercare all'interno del file LiquidCrystal_I2.ccp il seguente comando è nel caso aggiungere la linea evidenziata in rosso.

/*********** mid level commands, for sending data/cmds */

inline void LiquidCrystal_I2C::command(uint8_t value) {
send(value, 0);
}

inline size_t LiquidCrystal_I2C::write(uint8_t value) {
send(value, Rs);
return 1;
}

Se volete potete scaricare direttamente la libreria modificata, testata con successo con la versione di IDE 1.8.5.
Una volta scaricato il file zip, si potrà utilizzare il comando l'apposito comando per inserire la libreria nel vostro archivio

A questo punto la libreria apparirà nell'elenco dell'IDE di Arduino

Programma di test

Per il test del modulo potrà essere utilizzato sia il programma HelloWord, presente nella cartella esempi della libreria, oppure il programma sotto riportato, che farà apparire sulle schermo un esempio una serie di caratteri.
Verificare prima di lanciare la compilazione e caricamento del programma che l'indirizzo del modulo presente nel programma sia quello corretto per il vostro modulo


Scarica programma

//Include le librerie
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
// Imposta l'indirizzo del display a 0x27 con 16 caratteri per 2 linee
LiquidCrystal_I2C lcd(0x27,16,2);  
void setup()
{
  lcd.init();// inizializza il display
  lcd.backlight();//accende la retroilluminazione
}
void loop()
{
  // Scrittura dei testi sul display
  lcd.setCursor(0, 0);
  lcd.print("1234567812345678");
  delay (1000);
  lcd.setCursor(0, 1);
  lcd.print("ABCDEFGHILMNOPQR");
  delay (1000);
  lcd.setCursor(0, 0);
  lcd.print("8765432187654321");
  delay (1000);
  lcd.setCursor(0, 1);
  lcd.print("8888888888888888"); 
  delay (1000);
}

Esempio utilizzo del display

Lettura valori da sensore di pressione BMP180

Nella foto è mostrato l'utilizzo del display utilizzato per mostrare i valori letti tramite un Arduino UNO da un sensore di pressione BMP180.

 

 

Lettura data e ora da MH-Real-Time Clock Module-2

Utilizzo del display per mostrare la date e l'ora corrente tramite il modulo MH-Real-Time Clock Module - 2 basato sull' integrato DS1302 al cui interno è presente un orologio in tempo reale / calendario e 31 byte di RAM statica.

 

Lettura valore di luminosità con sensore GA1A12S202WP

Lettura valore di luminosità tramite Il sensore GA1A12S202WP prodotto dalla Sharp , un sensore di luce con uscita analogica di tipo logaritmico, questo può essere utilizzato per sostituire nei circuiti le normali fotocellule CdS.l

Lettura valori battiti cardiaci e saturazione con MAX30100

Lettura dei battiti cardiaci e saturazione del sangue tramite sensore MAX30100 che è una soluzione integrata per sensore di pulsossimetria e cardiofrequenzimetro. il sensore combina due LED, un foto rilevatore, un'ottica ottimizzata e un elaboratore del segnale analogico a basso rumore.

 

Elenco revisioni

11/05/2019

Aggiornata pagina, inserito riferimento sensore MAX30100

05/05/2019

Aggiornata pagina

17/12/2017

Modificata versione della libreria ora compatibile con la versione IDE 1.8.5

20/10/2016

Modificata versione della libreria. compatibile con la versione IDE 1.6.11

14/03/2015

Emissione preliminare