Inhaltsverzeichnis:

Arduino I2C-Sniffer - Gunook
Arduino I2C-Sniffer - Gunook

Video: Arduino I2C-Sniffer - Gunook

Video: Arduino I2C-Sniffer - Gunook
Video: Декодер протоколов | Часть первая I2C сниффер 2024, November
Anonim
Arduino I2C-Sniffer
Arduino I2C-Sniffer

I2C ist ein serielles Protokoll, das verwendet wird, um einen Mikrocontroller mit externen Peripheriegeräten zu kommunizieren, die an dieselbe Schaltung angeschlossen sind. Jedes Peripheriegerät muss eine eindeutige ID-Nummer namens Adresse haben, die verwendet wird, um es als den beabsichtigten Empfänger einer bestimmten Nachricht zu identifizieren. Diese Adressen werden vom Gerätehersteller vergeben und können meistens nicht geändert werden. Ein Sniffer scannt alle möglichen Adressen nach verbundenen Geräten und meldet die gefundenen. Dies hilft, unmarkierte Chips zu identifizieren, da dann die Adresse nach weiteren Informationen zum Chip gegoogelt werden kann.

Dieses Gerät ahmt auf einem Arduino UNO das Verhalten des Raspberry Pi i2cdetect-Skripts nach, schnüffelt alle möglichen i2c-Adressen auf der Suche nach angeschlossenen Geräten und druckt die Ergebnisse schön auf einem 16x02-LCD-Bildschirm aus.

Damit alles auf den Bildschirm passt, werden sowohl der obere als auch der untere Teil der Adresse über den Ergebnissen gedruckt, wobei der obere Teil fett gedruckt ist. Zwei Drucktasten ermöglichen das Navigieren zwischen den Adressen, wobei 16 Adressen gleichzeitig angezeigt werden. Falls ein Gerät erkannt wird, wird W gedruckt, um es als Schreibadresse anzuzeigen, und R wird angezeigt, wenn es sich um eine Leseadresse handelt. Falls an dieser Adresse nichts erkannt wird, wird ein Bindestrich (-) auf dem Bildschirm angezeigt.

Schritt 1: Materialien

Materialien
Materialien
Materialien
Materialien

Option 1

1 x Arduino UNO

1 x 16x02 LCD-Bildschirm

1x 10K Potentiometer

1x 330 Ohm Widerstand

3x Taster

Überbrückungskabel

1x I2C Level Shifter (nicht auf Materialbild)

Option 2

1 x Arduino UNO

LCD-Tastaturschild (die Tasten auf dem Schild werden nicht verwendet)

3x Taster

Überbrückungskabel

1x I2C Level Shifter (nicht auf Materialbild)

Option 2 ist die, die gebaut wird, weil ich sie im Moment zur Hand hatte. Der Pegelumsetzer ist ein wichtiger Teil der Schaltung, da heutzutage die meisten Geräte eine 3,3-V-Logik verwenden und die 5 V vom Arduino sie beschädigen.

(Auf den Bildern ist das durchgestrichene Material nicht erforderlich.)

Schritt 2: Schaltung

Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis

Die Schaltung ist ziemlich einfach und verwendet die Standard-Pinbelegung für die Arduino-Beispiele für das LCD, die Standard-Pins für I2C und 3 Ersatz-Pins für die Drucktasten.

Falls Sie das LCD Keypad Shield verwenden, ändert sich die Pinbelegung für das LCD, dies wird jedoch bereits im Code berücksichtigt. Die Shield-Tasten der LCD-Tastatur werden nicht verwendet, da sie eine analoge Abfragemethode erfordern, die die Kompatibilität zwischen den beiden möglichen Implementierungsschaltkreisen (Shield und eigenständiges LCD) unterbricht.

Schritt 3: Code

Code
Code

Falls das LCD Keypad Shield verwendet wird, muss #define LCD_SHIELD am Anfang der Skizze unkommentiert bleiben. Andernfalls kommentieren Sie es, um das erste Diagramm zu verwenden.

Schritt 4: Schlussfolgerungen

Schlussfolgerungen
Schlussfolgerungen
Schlussfolgerungen
Schlussfolgerungen
Schlussfolgerungen
Schlussfolgerungen

Zum Testen des Codes und der Schaltung wurden ein BQ32000 RTC-Chip und ein MMA8452Q-Beschleunigungsmesser verwendet. Wie auf den Bildern zu sehen ist, erkennt das Gerät 4 Adressen: 0x3A und 0xD0 als Schreibadressen und 0x3B und 0xD1 als Leseadressen. Diese Adressen entsprechen den Testgeräten, sodass der Code funktioniert.

Ich möchte mich bei den netten Mädels von Beijing Makerspace, Fu Yao und Liu Xin, dafür bedanken, dass sie mir geholfen haben, die Materialien zum Testen dieses Projekts so kurzfristig zu beschaffen.

Empfohlen: