Come impostare gli indirizzi I²C e usare uno scanner I²C per LCD1602 e LCD2004

Come impostare gli indirizzi I²C e usare uno scanner I²C per LCD1602 e LCD2004

In questo tutorial esploreremo come impostare gli indirizzi I²C e utilizzare uno scanner I²C per i display LCD1602 e LCD2004. Comprendere la comunicazione I²C è fondamentale per integrare questi moduli LCD nei tuoi progetti con Arduino, consentendo una trasmissione e un controllo dei dati efficienti. Alla fine di questa guida sarai in grado di identificare efficacemente gli indirizzi I²C dei tuoi LCD e di assicurarti che funzionino correttamente.

LCD1602-I2C display module with 4 wires

Utilizzeremo il sensore BMP-180 come parte di questo progetto, che funziona tramite comunicazione I²C. Il sensore fornisce letture di temperatura e pressione, che possono essere visualizzate sia sul LCD1602 sia sul LCD2004. Questo tutorial includerà istruzioni per il cablaggio, frammenti di codice e una dimostrazione dei risultati attesi. Per una comprensione più visiva, assicurati di guardare il video associato (nel video a 00:00).

L'hardware spiegato

Le componenti principali per questo progetto includono il sensore BMP-180, un display LCD1602 o LCD2004 e una scheda Arduino. Il BMP-180 è un sensore di pressione digitale che comunica tramite il protocollo I²C, richiedendo soltanto due linee dati: SDA (linea dati) e SCL (linea di clock). Anche i display LCD sono compatibili con I²C e possono essere facilmente controllati usando lo stesso protocollo di comunicazione, consentendo una configurazione ordinata ed efficiente.

Il BMP-180 funziona con una tensione di alimentazione compresa tra 1.8V e 3.6V, il che significa che può essere alimentato tramite un regolatore di tensione se si utilizza una sorgente a tensione più elevata. I display LCD, invece, normalmente funzionano a 5V, il che rende facile l'interfacciamento con una scheda Arduino senza componenti aggiuntivi.

Dettagli della scheda tecnica

Produttore Bosch
Numero di parte BMP-180
Tensione logica/I/O 1.8 - 3.6 V
Tensione di alimentazione 1,8 - 3,6 V
Corrente di uscita (per canale) 3.6 µA
Corrente di picco (per canale) 1 mA
Guida alla frequenza PWM N/D
Soglie logiche di ingresso Non applicabile
Caduta di tensione / RDS(on)/ saturazione Non applicabile
Limiti termici -40 a +85 °C
Pacchetto 3.6 x 3.8 mm
Note / varianti Sensore di temperatura e pressione

  • Garantire una corretta alimentazione: da 1,8 V a 3,6 V per il BMP-180.
  • Usare resistenze pull-up sulle linee SDA e SCL per una comunicazione I²C stabile.
  • Tenere i cavi corti per evitare la degradazione del segnale.
  • Verificare che l'indirizzo I²C sia corretto durante la scansione.
  • Intervallo di misurazione della temperatura: da -40 a +85 °C per il BMP-180.

Istruzioni di cablaggio

Arduino wirng for LCD1602 with I2C
Arduino wirng for LCD1602 with I2C

Per collegare il sensore BMP-180 e il display LCD al tuo Arduino, segui questi passaggi:

Per prima cosa, collega il BMP-180VnCollega il pin all'uscita 5V dell'Arduino. Successivamente, collega ilGNDpin del BMP-180 alla massa dell'Arduino. IlSDAIl pin del BMP-180 dovrebbe essere collegato all'ArduinoA4perno, mentre ilSCLil pin si collega aA5.

Per il LCD1602 o il LCD2004, collegare ilVCCcollega il pin al 5V sull'Arduino e ilGNDcollegare anche il pin a massa. IlSDAIl pin del display LCD dovrebbe essere collegato anche aA4(condiviso con BMP-180), e ilSCLIl pin dovrebbe essere collegato aA5.

Questa configurazione consente a entrambi i dispositivi di comunicare sullo stesso bus I²C, garantendo un'installazione pulita ed efficiente.

Esempi di codice e guida passo-passo

Per eseguire la scansione degli indirizzi I²C, useremo un semplice frammento di codice. Il seguente estratto inizializza la comunicazione I²C e prepara il monitor seriale:


#include 

void setup() {
  Wire.begin();
  Serial.begin(9600);
  while (!Serial); // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}

Questo codice inizializza la libreria Wire per la comunicazione I²C e imposta il monitor seriale per l'output. È essenziale per il debug e per assicurarsi che i dispositivi I²C vengano riconosciuti.

La funzione loop scansiona i dispositivi sul bus I²C e stampa i loro indirizzi:


void loop() {
  byte error, address;
  int nDevices = 0;
  Serial.println("Scanning...");

  for(address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      Serial.println(address, HEX);
      nDevices++;
    }
  }
  if (nDevices == 0) Serial.println("No I2C devices found\n");
  delay(5000); // wait 5 seconds for next scan
}

Questo ciclo controlla ogni indirizzo da 1 a 127, tentando di comunicare con eventuali dispositivi presenti. Se un dispositivo risponde alla comunicazione, il suo indirizzo viene stampato sul monitor seriale. Questo è un passaggio cruciale per identificare l'indirizzo I²C del tuo LCD o di altri dispositivi collegati.

Dimostrazione / Cosa aspettarsi

Quando viene eseguito lo scanner I²C, dovresti vedere nel monitor seriale dei messaggi che indicano se sono stati trovati dispositivi I²C. Se l'operazione ha successo, l'output mostrerà gli indirizzi dei dispositivi collegati, formattati come valori esadecimali (es. I2C device found at address 0x27). Se non vengono trovati dispositivi, vedrai un messaggio corrispondente.

È importante assicurarsi che tutte le connessioni siano sicure e che i livelli di tensione corretti siano forniti per evitare problemi con il rilevamento del dispositivo (nel video a 05:30).

Immagini

Arduino wirng for LCD1602 with I2C
Arduino wirng for LCD1602 with I2C
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD2004_display-1
LCD2004_display-1
LCD2004_display-2
LCD2004_display-2
I2C_module
I2C_module
125-Arduino code for finding an I2C address
Lingua: C++
Copia!

Cose di cui potresti avere bisogno

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

Librerie Arduino (zip)

File Fritzing