So scannen Sie die I2C -Adresse in ESPTOP 10 mit Arduino IDE

So scannen Sie die I2C -Adresse in ESPTOP 10 mit Arduino IDE
ESP32 ist eine Mikrocontroller-basierte Plattform, die mit mehreren Geräten eine Schnittstelle zwischen den verschiedenen Ausgängen entsprechend der Eingabe haben kann. Alle Kommunikationsprotokolle wie UART, SPI und I2C spielen eine wichtige Rolle bei der ESP32 -Kommunikation. Wir werden in diesem Leitfaden mit einem integrierten Kreislauf- oder I2C -Kommunikationsprotokoll diskutieren und eine Adresse eines Geräts scannen.

Einführung in die I2C -Kommunikation

I2C Alternativ bekannt als I2C oder IIC ist ein synchrones Master-Slave-Kommunikationsprotokoll, in dem ein Signal-Master-Gerät eine Vielzahl von Slave-Geräten über ein einzelnes Draht (SDA-Linie) steuern kann.

I2c kombinieren die Arbeit von UART- und SPI-Protokollen zum Beispiel unterstützt SPI mehrere Slave-Gerätesteuerung über einen einzelnen Master. I2C unterstützt dies auch. Andererseits verwendet UART zweizeilige TX und RX für die Kommunikation. Kommunikation.

Hier können wir sehen, dass wir Pull -Up -Widerstände mit beiden SCL -Linien verwendet haben. Dies liegt daran. Standardmäßig befindet sich I2C auf allen Chips im offenen Schaltungsmodus. Um sie hoch zu ziehen, haben wir einen Pull-up-Widerstand verwendet.

Im Folgenden werden die beiden Zeilen i2c verwendet:

  • SDA (Seriendaten): Leitung zum Senden und Empfangen von Daten vom Master zu Sklaven und umgekehrt
  • SCL (Serienuhr): Uhr Signallinie, um ein bestimmtes Slave -Gerät auszuwählen

ESP32 I2C -Busoberflächen

ESP32 verfügt über zwei I2C -Bus -Schnittstellen, die die I2C -Kommunikation je nach Gerät, das mit ESP32 miteinander verbunden ist, als Master oder Slave durchgeführt wird. Laut ESP32 -Datenblatt unterstützt die ESP32 -Board I2C -Schnittstelle die folgende Konfiguration:

  • Standardmodus I2C -Kommunikation mit 100 kbit/s
  • Schneller oder erweiterter Modus I2C -Kommunikation mit einer Geschwindigkeit von 400 kbit/s
  • Dual Adressmodus 7-Bit und 10-Bit
  • Benutzer können die I2C -Schnittstelle steuern, indem sie die Befehlsregister programmieren
  • Die ESP32 I2C -Busschnittstelle ist flexibler bei der Steuerung

Anschließen von I2C -Geräten mit ESP32

Die Schnittstellengeräte mit ESP32 mit i2C -Protokoll sind genau wie UART sehr einfach. Wir benötigen nur zwei Zeilen zum Verbinden von SDA und der SCL -Taktlinie.

ESP32 kann sowohl im Master- als auch im Slave -Modus konfiguriert werden.

ESP32 I2C Master -Modus

In diesem Modus erzeugt ESP32 ein Taktsignal, das die Kommunikation mit verbundenen Slave -Geräten initiiert.

Die beiden GPIO-Stifte in ESP32, die für die I2C-Kommunikation vorgegeben sind:

  • SDA: Gpio pin 21
  • Scl: Gpio pin 22

ESP32 I2C Slave -Modus

Im Sklavenmodus wird die Uhr vom Master -Gerät generiert. Master ist das einzige Gerät, das die SCL -Linie in der I2C -Kommunikation antreibt. Sklaven sind die Geräte, die auf Master reagieren, aber keine Datenübertragung initiieren können. In ESP32 I2C -Bus kann nur der Master die Datenübertragung zwischen Geräten einleiten.

Das Bild zeigt zwei ESP32-Boards in der Master-Slave-Konfiguration.

Ab sofort haben wir die Funktionsweise des i2c -Modus in ESP32 verstanden, jetzt können wir die i2c -Adresse eines jeden Geräts durch Hochladen des angegebenen Codes leicht finden.

So scannen Sie die I2C -Adresse in ESP32 mit Arduino IDE

Das Finden der I2C -Adresse von verbundenen Geräten mit ESP32 ist wichtig, da wir nicht mit ihnen über eine einzelne Buslinie mit ihnen kommunizieren können, wenn wir Geräte mit derselben I2C -Adresse verwenden können.

Jedes I2C -Gerät muss eine eindeutige Adresse und den Adressbereich von 0 bis 127 oder (0 bis 0x7f) in Hex enthalten. Wenn wir beispielsweise zwei OLED -Anzeigen derselben Modellnummer oder des gleichen Produkts verwenden, haben beide die gleiche I2C.

Um eine IC -Adresse zu finden, nehmen wir ein Beispiel.

Schematisch

Das folgende Bild zeigt das schematische Diagramm der OLED -Anzeige -Schnittstelle mit der ESP32 -Karte mit dem I2C -Kommunikationsprotokoll.

Die Verbindung von ESP32 mit OLED beinhaltet:

OLED -Anzeige ESP32 PIN
VCC 3v3/vin
GND GND
Scl GPIO 22
SDA GPIO 21

Code
Öffnen Sie den Arduino -Editor und laden Sie den angegebenen I2C -Scancode in ESP32 -Board hoch. Stellen Sie sicher, dass ESP32 angeschlossen ist und der COM -Port ausgewählt ist.

/*****************
****************
LinuxHint.com
****************
****************//
#include /*Drahtbibliothek inklusive* /
void setup ()
Kabel.Start(); /*I2c Kommunikation beginnt*/
Serie.Beginnen Sie (115200); /*Baudrate für serielle Kommunikation*/
Serie.println ("\ ni2c Scanner"); /*Scanner auf Serienmonitor drucken*/

void Loop ()
Byte -Fehler, Adresse;
int nDevices;
Serie.println ("Scannen ..."); /*ESP32 startet das Scannen verfügbarer i2c -Geräte*/
nDevices = 0;
für (Adresse = 1; Adresse < 127; address++ ) /*for loop to check number of devices on 127 address*/
Kabel.begintransmission (Adresse);
Fehler = Kabel.Endtransmission ();
if (error == 0) /*wenn i2c -Gerät gefunden* /
Serie.print ("I2C -Gerät gefunden unter Adresse 0x");/*Drucken Sie diese Zeile, wenn I2C -Gerät gefunden wurde*/
if (Adresse<16)
Serie.print ("0");

Serie.println (Adresse, Hex); /*druckt den Hex -Wert der i2c -Adresse*/
nDevices ++;

sonst if (error == 4)
Serie.print ("Unbekannter Fehler bei Adresse 0x");
if (Adresse<16)
Serie.print ("0");

Serie.println (Adresse, Hex);


if (nDevices == 0)
Serie.println ("Keine I2C -Geräte gefunden \ n"); /*Wenn kein I2C -Gerät angeschlossen ist, drucken Sie diese Meldung*/

anders
Serie.println ("Done \ n");

Verzögerung (5000); /*Verzögerung für die Überprüfung des I2C -Busses alle 5 Sekunden*/

Der obige Code scannt nach den verfügbaren I2C -Geräten. Der Code ruft mit der Kabelbibliothek für I2C -Kommunikation auf. Die nächste serielle Kommunikation wird mit der Baud -Rate begonnen.

Im Schleifenteil des i2C -Scanningcodees zwei Variablennamen, Fehler Und Adresse sind festgelegt. Diese beiden Variablen speichern die I2C -Adresse von Geräten. Als nächstes wird ein für Schleifen initialisiert, der nach der i2C -Adresse ab 0 bis 127 Geräte scannt wird.

Nach dem Lesen der I2C.

Hardware

Hier sehen wir die OLED 0.Das 96-Zoll-I2C-Display ist mit der ESP32-Karte bei GPIO-Pins 21 und 22 verbunden. VCC und GND des Displays sind mit ESP32 3v3 und GND -Pin verbunden.

Ausgang
In der Ausgabe sehen wir die I2C -Adresse des OLED -Displays, das mit der ESP32 -Karte angeschlossen ist. Hier lautet die i2c -Adresse 0x3c, sodass wir kein anderes i2C -Gerät mit derselben Adresse verwenden können, da wir zuerst die i2c -Adresse dieses Geräts ändern müssen.

Wir haben erfolgreich die I2C -Adresse des OLED -Displays erhalten, das mit dem ESP32 -Board verbunden ist.

Abschluss

Das Finden einer I2C -Adresse beim Anschließen mehrerer Geräte mit ESP32 ist wichtig, da Geräte, die dieselbe i2C. Wenn Sie den obigen Code verwenden, kann die I2C -Adresse identifiziert werden. Wenn die Adresse zweier beliebiger Geräte übereinstimmt, kann sie je nach den Gerätespezifikationen entsprechend geändert werden.