Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
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
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
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
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
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.