Wie man I²C-Adressen einstellt und einen I²C-Scanner für LCD1602 und LCD2004 verwendet

Wie man I²C-Adressen einstellt und einen I²C-Scanner für LCD1602 und LCD2004 verwendet

In dieser Anleitung werden wir untersuchen, wie man I²C-Adressen festlegt und einen I²C-Scanner für die LCD1602- und LCD2004-Displays einsetzt. Das Verständnis der I²C-Kommunikation ist entscheidend, um diese LCD-Module in Ihre Arduino-Projekte zu integrieren, da es eine effiziente Datenübertragung und Steuerung ermöglicht. Am Ende dieser Anleitung werden Sie in der Lage sein, die I²C-Adressen Ihrer LCDs effektiv zu identifizieren und sicherzustellen, dass sie korrekt funktionieren.

LCD1602-I2C display module with 4 wires

Wir werden den BMP-180-Sensor im Rahmen dieses Projekts verwenden, der über I²C kommuniziert. Der Sensor liefert Temperatur- und Druckmesswerte, die entweder auf dem LCD1602 oder LCD2004 angezeigt werden können. Dieses Tutorial enthält Verdrahtungsanleitungen, Codebeispiele und eine Demonstration der erwarteten Ergebnisse. Für ein besseres visuelles Verständnis sehen Sie sich unbedingt das zugehörige Video an (im Video bei 00:00).

Hardware erklärt

Die Hauptkomponenten dieses Projekts sind der BMP-180-Sensor, ein LCD1602- oder LCD2004-Display und ein Arduino-Board. Der BMP-180 ist ein digitaler Drucksensor, der über das I²C-Protokoll kommuniziert und nur zwei Datenleitungen benötigt: SDA (Datenleitung) und SCL (Taktleitung). Die LCD-Displays sind ebenfalls I²C-kompatibel und lassen sich leicht mit demselben Kommunikationsprotokoll steuern, was eine saubere und effiziente Einrichtung ermöglicht.

Der BMP-180 arbeitet mit einer Versorgungsspannung zwischen 1,8 V und 3,6 V, was bedeutet, dass er über einen Spannungsregler versorgt werden kann, wenn Sie eine höhere Spannungsquelle verwenden. Die LCD-Anzeigen hingegen arbeiten typischerweise mit 5 V, was die Anbindung an ein Arduino-Board ohne zusätzliche Komponenten erleichtert.

Datenblatt-Details

Hersteller Bosch
Teilenummer BMP-180
Logik-/I/O-Spannung 1.8 - 3.6 V
Versorgungsspannung 1.8 - 3.6 V
Ausgangsstrom (pro Kanal) 3.6 µA
Spitzenstrom (je Kanal) 1 mA
Leitfaden zur PWM-Frequenz Nicht zutreffend
Eingangslogik-Schwellenwerte nicht zutreffend
Spannungsabfall / RDS(an)/ Sättigung Nicht zutreffend
Thermische Grenzwerte -40 bis +85 °C
Paket 3,6 × 3,8 mm
Notizen / Varianten Temperatur- und Drucksensor

  • Stellen Sie eine ordnungsgemäße Spannungsversorgung sicher: 1.8V bis 3.6V für BMP-180.
  • Verwenden Sie Pull-up-Widerstände an den SDA- und SCL-Leitungen für eine stabile I²C-Kommunikation.
  • Halten Sie die Leitungen kurz, um eine Signalverschlechterung zu vermeiden.
  • Überprüfen Sie die korrekte I²C-Adresse während des Scanvorgangs.
  • Monitor-Temperaturbereich: -40 bis +85 °C für BMP-180.

Verdrahtungsanleitung

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

Um den BMP-180-Sensor und das LCD-Display an dein Arduino anzuschließen, befolge die folgenden Schritte:

Zuerst verbinden Sie das BMP-180'sVnVerbinden Sie den Pin mit dem 5V-Ausgang am Arduino. Als Nächstes verbinden Sie dieGNDPin des BMP-180 an die Masse des Arduino. DerSDADer Pin des BMP-180 sollte mit dem Pin des Arduinos verbunden werden.A4Pin, während dieSCLPin verbindet sich mitA5.

Für das LCD1602 oder das LCD2004 verbinden SieVCCPin an die 5V am Arduino und dieGNDDen Pin ebenfalls an Masse anschließen. DerSDADer Pin des LCDs sollte auch mit ... verbunden werdenA4(gemeinsam mit BMP-180), und derSCLDer Pin sollte an ... angeschlossen werdenA5.

Diese Konfiguration ermöglicht beiden Geräten, über denselben I²C-Bus zu kommunizieren und sorgt so für einen sauberen und effizienten Aufbau.

Codebeispiele & Schritt-für-Schritt-Anleitung

Um nach I²C-Adressen zu scannen, verwenden wir einen einfachen Codeausschnitt. Der folgende Auszug initialisiert die I²C-Kommunikation und bereitet den seriellen Monitor vor:


#include 

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

Dieser Code initialisiert die Wire-Bibliothek für I²C-Kommunikation und richtet den seriellen Monitor für die Ausgabe ein. Er ist wichtig für das Debugging und dafür, dass die I²C-Geräte erkannt werden.

Die loop-Funktion durchsucht den I²C-Bus nach Geräten und gibt deren Adressen aus:


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
}

Diese Schleife prüft jede Adresse von 1 bis 127 und versucht, mit vorhandenen Geräten zu kommunizieren. Wenn ein Gerät die Kommunikation bestätigt, wird seine Adresse im seriellen Monitor angezeigt. Dies ist ein entscheidender Schritt, um die I²C-Adresse Ihres LCDs oder anderer angeschlossener Geräte zu identifizieren.

Demonstration / Was Sie erwartet

Wenn der I²C-Scanner ausgeführt wird, sollten Sie Meldungen im seriellen Monitor sehen, die anzeigen, ob I²C-Geräte gefunden wurden. Im Erfolgsfall zeigt die Ausgabe die Adressen der angeschlossenen Geräte an, formatiert als hexadezimale Werte (z. B. I²C-Gerät gefunden an Adresse 0x27). Wenn keine Geräte gefunden werden, erscheint eine entsprechende Meldung.

Es ist wichtig, sicherzustellen, dass alle Verbindungen fest sitzen und die richtigen Spannungspegel anliegen, um Probleme bei der Geräteerkennung zu vermeiden (im Video bei 05:30).

Bilder

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
Sprache: C++
Kopiert!

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Noch keine Ressourcen vorhanden.

Dateien📁

Arduino-Bibliotheken (zip)

Fritzing-Datei