Inhaltsverzeichnis:

Der billigste I2C (I-Squared-C) Adapter der Welt - Gunook
Der billigste I2C (I-Squared-C) Adapter der Welt - Gunook

Video: Der billigste I2C (I-Squared-C) Adapter der Welt - Gunook

Video: Der billigste I2C (I-Squared-C) Adapter der Welt - Gunook
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Der billigste I2C (I-Squared-C) Adapter der Welt
Der billigste I2C (I-Squared-C) Adapter der Welt

Machen Sie eine Sensorschnittstelle für Ihren Computer für weniger als ein Dollar! Update 09.06.08: Nachdem ich mehrere Wege untersucht habe, bin ich zu dem Schluss gekommen, dass es keine praktische Möglichkeit gibt, diese Technik in Microsoft Windows zu implementieren. Dies ist kein kleinliches OS-Bashing, ich habe es wirklich geschafft, es zu versuchen! Es tut uns leid! Windows-Benutzer, die I2C-Fähigkeiten benötigen, werden am besten mit bestehenden USB-basierten Lösungen bedient. Anweisungen zum Kompilieren und Einrichten unter Linux finden Sie in der Datei README.txt, die dem Quellcode beiliegt. I2C (kurz für Inter-Integrated Circuit) ist ein serieller Zweidrahtbus, der typischerweise in Computern für die Low-Level-Kommunikation zwischen internen Komponenten verwendet wird. I2C ist auch in der Robotik beliebt. Alle Arten von Sensoren und Aktoren stehen in I2C-kompatibler Form zur Verfügung: Ultraschall-Entfernungsmesser, Sensoren für Beschleunigung, Neigung, Temperatur und Druck, Servocontroller und Buserweiterungen, die zusätzliche Universal-(GPIO)-Leitungen bereitstellen. Modernste Mikrocontroller (Atmel, Microchip PIC usw.) haben die Unterstützung für I2C direkt integriert. Aber die auf Mikrocontrollern verfügbare Verarbeitungsleistung ist begrenzt, und die Softwareentwicklung - mit spezialisierten Cross-Compilern und Programmierumgebungen - kann manchmal eine lästige Pflicht sein. Da Laptops und Einplatinencomputer immer kleiner und erschwinglicher werden, werden diese Systeme immer häufiger direkt in Robotik- und Elektronikprojekten eingesetzt. Dies bietet reichlich Leistung für neue Funktionen wie Bildverarbeitung und ausgefeiltere KI, und es erweitert den Umfang der verfügbaren Entwicklungstools und -sprachen erheblich … aber es stellt auch ein neues Problem dar: Die Anbindung dieser "normalen" Systeme an Peripheriegeräte erfolgt normalerweise über den Mainstream Anschlüsse für Verbraucher wie USB; Es gibt keinen extern verfügbaren "I2C-Port", den wir einfach anzapfen können, um unsere Sensoren zu nutzen … oder doch?

Schritt 1: Vorhandene Optionen

Bestehende Optionen
Bestehende Optionen
Bestehende Optionen
Bestehende Optionen

Eine Möglichkeit zum Anschließen von I2C-Geräten an einen gewöhnlichen Desktop- oder Laptop-Computer ist ein USB-zu-I2C-Adapter. Es gibt mindestens ein Dutzend solcher Optionen, von Do-it-yourself-Kits mit Open-Source-Software bis hin zu ausgeklügelten kommerziellen Einheiten mit jedem Schnickschnack.

Ein Nachteil des USB-zu-I2C-Ansatzes sind die Kosten. Ein kommerzielles Modell mit vollem Funktionsumfang kann 250 US-Dollar oder mehr kosten. Sogar die "kostenlosen" Homebrew-Alternativen setzen eine Sammlung von Teilen und eine vorherige Investition in einen Mikrocontroller-Programmierer und das damit verbundene Wissen voraus, um ihn zu nutzen. Ein weiterer Nachteil ist die relative Knappheit an Treiberunterstützung außerhalb des beliebten Windows-Folds. Nur wenige dieser Geräte funktionieren nativ auf Macintosh- oder Linux-Computern.

Schritt 2: DDC ist I2C

DDC ist I2C
DDC ist I2C
DDC ist I2C
DDC ist I2C
DDC ist I2C
DDC ist I2C

Als ich in der Einleitung sagte, dass es auf den meisten Computern keinen externen I2C-Port gibt, habe ich gelogen. Es stellte sich heraus, dass es das gibt, und es ist seit fast einem Jahrzehnt da, meistens ruhend.

Die meisten modernen Grafikkarten und Monitore unterstützen einen sogenannten Display Data Channel (DDC), eine Kommunikationsverbindung innerhalb eines Videokabels, die es dem Computer und dem Display ermöglicht, miteinander kompatible Auflösungen auszuhandeln und die Softwaresteuerung von Monitorfunktionen zu ermöglichen, auf die normalerweise über physische Tasten auf dem Bildschirm zugegriffen wird Anzeige. DDC ist in der Tat einfach eine Implementierung eines I2C-Busses mit ein paar etablierten Regeln. Durch Anzapfen dieser Verbindung zwischen Computer und Monitor (oder Nutzung der DDC-Leitungen an einem freien, ungenutzten Videoanschluss, wie z üblichen Bedarf für ein Adaptergerät vollständig. Alles, was wir brauchen, um physisch auf diesen I2C-Bus zuzugreifen, ist ein gehacktes Videokabel…

Schritt 3: Zerlegen des Kabels

Zerlegen des Kabels
Zerlegen des Kabels
Zerlegen des Kabels
Zerlegen des Kabels

Für unsere I2C-Schnittstelle werden vier Drähte benötigt: +5V Strom, Masse, serielle Daten und serieller Takt. Pinouts für die verschiedenen Arten von Videoports finden Sie auf Wikipedia oder Pinouts.ru. Denken Sie daran, wenn Sie ein VGA-Kabel verwenden, um eines mit allen Pins zu finden; einige enthalten nur eine Teilmenge. Wenn Sie die Isolierung und Abschirmung von der Außenseite des Kabels zurückschneiden, werden Sie wahrscheinlich zwei Gruppen von Drähten darin finden. Dickere Drähte oder Kabelbündel, die zusätzlich abgeschirmt sind, tragen normalerweise das Videosignal. Wir interessieren uns nicht für diese und sie können zurückgeschnitten werden. Dünnere, ungeschirmte Drähte tragen in der Regel unter anderem die DDC (I2C)-Signale. Ein Multimeter oder Durchgangsprüfer kann dabei helfen, die richtigen vier Drähte für Ihr Kabel zu finden. Die Verwendung eines blanken Steckers kann hier von Vorteil sein, da Sie nur vier Drähte an die interessierenden Pins anlöten müssen. Ein Hinweis zur +5V-Leistung: Der verfügbare Strom ist sehr begrenzt; ca. 50 mA nach DDC-Spezifikation. Die meisten I2C-Geräte verbrauchen nur ein winziges bisschen Strom, daher sollte es möglich sein, mehrere gleichzeitig zu betreiben … aber wenn mehr als eine oder zwei LEDs (oder andere vergleichsweise stromstarke Geräte) verwendet werden, sollte eine externe Stromversorgung bereitgestellt werden.

Schritt 4: Der fertige Adapter

Der fertige Adapter
Der fertige Adapter

Hier ist der fertige Adapter. Das ist alles dazu! Ich habe meine extra stämmig gemacht, damit sie leicht in meine Laptoptasche passt, und fügte einen vierpoligen Stecker hinzu, der direkt mit einem I2C-Servocontroller verbunden ist, den ich habe.

Schritt 5: Software und Projekte

Software und Projekte
Software und Projekte
Software und Projekte
Software und Projekte

Der Quellcode für Mac OS X und Linux für die Arbeit mit dem Adapter kann von meiner Website heruntergeladen werden (Download-Link befindet sich am Ende der Seite). Es ist in C geschrieben und Sie müssen gcc installiert haben (Linux enthält dies normalerweise standardmäßig, während Mac-Benutzer die Entwicklertools installieren müssen, die ein optionales Installationsprogramm auf Ihrer ursprünglichen Betriebssystem-Disc sind oder kostenlos von Apple heruntergeladen werden können). Beispielcode zum Lesen eines Temperatursensors, zum Blinken einer BlinkM-"Smart-LED", zum Schreiben und Überprüfen eines seriellen EEPROM, zum Lesen eines Nintento Wii Nunchuk-Controllers (nur Linux) und zum Kommunizieren mit einer Servo-Controller-Platine. Leider ist dieses Adapterschema nicht kompatibel mit allen Systemen. Die Unterstützung für DDC ist nicht vorgeschrieben, daher unterstützen nicht alle Grafikkarten diese Funktion. Ich hatte bisher viel Glück mit Mac-Systemen mit ATI- oder Intel-Grafikchips, aber NVIDIA-basierte Systeme haben kein Glück. Auf der Linux-Seite habe ich nur ein IBM ThinkPad A31p (ATI-Grafik) erfolgreich getestet, aber mit einem Asus EeePC (Intel) würde es nicht funktionieren. Die Bilder hier zeigen einen Teststand, der verschiedene I2C-Geräte in Aktion demonstriert. Der Computer liest kontinuierlich die Umgebungstemperatur von einem I2C-Temperatursensor, protokolliert diese Daten regelmäßig auf einem seriellen I2C-EEPROM-Chip (ja, es könnte nur in eine Datei gedruckt werden, aber dies sollte I2C-Anwendungen weiter demonstrieren) und dann ein Servo (über ein I2C-Controller) dient als behelfsmäßiges Anzeigerad. Da die Bibliothek und der Beispielcode für diese Geräte bereits vorhanden waren, dauerte es nur wenige Minuten, diese Demo zusammenzustellen (und das meiste davon war die Herstellung des Indikators).

Empfohlen: