Arduino + I2C-Bus

Die Hardware Arduino-Board und I2C-Baugruppen

In diesem Beitrag möchten wir eine kurze Einführung zum Arduino und I2C-Baugruppen machen.

Unser Testaufbau besteht aus folgenden Komponenten:

  • Arduino UNO
  • USB-Kabel
  • 7,5V Stecker-Netzteil
  • I2C-INPUT-Baugruppe mit PCF8574
  • I2C-OUTPUT Baugruppe mit PCF8574A
Arduino UNO mit I2C-Eingabe und I2C-Ausgabe

Arduino UNO mit I2C-Eingabe und I2C-Ausgabe

Folgende Pins des Arduino-Board sind mit der I2C-Peripherie verbunden:

  • +5V  (ws)  Versorgungsspannung
  • GND  (bn)  Masse
  • A4    (gn)  SDA
  • A5    (ge)  SCL

 

Arduino-IDE installieren

Als erstes muss die aktuelle Software von der Arduino-Homepage im Bereich Download heruntergeladen werden.

Ich habe mich für das Paket „Windows (ZIP file)“ entschieden und habe das Paket in einem Unterverzeichnis entpackt.

Die Arduino-IDE läuft ohne Installation. Man muss lediglich die  Datei arduino.exe doppelklicken und schon startet das Programm.

Arduino_IDE

 

USB-Treiber in Windows 7 installieren

Als nächstes wird das Board mit Spannung 7,5V versorgt und mit dem USB-Kabel an den PC angeschlossen.

Der Treiber wird von Windows7 nicht automatisch erkannt. In der Systemsteuerung – Gerätemanager findet man den Eintrag „Unbekanntes Gerät“

USB-Treiber für Arduino installieren

USB-Treiber für Arduino installieren

Kein Problem. In dem entpackten Paket von der Arduino-Homepage ist der Treiber vorhanden.

Gehen Sie wie folgt vor:

  • Rechte Maustaste auf „Unbekanntes Gerät“ – Treibersoftware aktualisieren
  • Jetzt „Auf dem Computer nach Treibersoftware suchen“ anklicken
  • Im nachfolgenden Fenster zum Unterverzeichnis „\Arduino\arduino-1.0.5\drivers\“ navigieren. Dort liegt die Datei „arduino.inf“
  • Jetzt bekommt man von Windows einen Warnhinweis, dass „Der Herausgeber der Treibersoftware konnte nicht überprüft werden“
  • Klicken Sie hier „Diese Treibersoftware trotzdem installieren“
  • Anschließend bekommen Sie ein die Meldung dass der Treiber erfolgreich installiert wurde und die zugehörige COM Nummer.
  • In der Systemsteuerung finden Sie nun den Treiber unter „Anschlüsse COM & LPT“
USB-Treiber für Arduino fertig installiert

USB-Treiber für Arduino fertig installiert

 

Einstellungen in der Arduino-IDE

Jetzt starten wir die Arduino-IDE mit einem Doppelklick auf die entpackte EXE-Datei.

Folgende Einstellungen müssen gemacht werden:

  • Im Menü „Tools – Board“ den richtigen Arduino einstellen
  • Im Menü „Tools – serieller Port“ die COM-Nummer anklicken, die in der Systemsteuerung angegeben ist (Bei mir COM5

 

Das erste Testprogramm

Nun wollen wir das erste Programm erstellen und auf den Arduino laden.

Gehen Sie wie folgt vor:

  • Kopieren Sie den nachfolgenden Code in das Scetch-Fenster der IDE
  • Wählen Sie im Menü „Sketch – Überprüfen Kompilieren“ oder drücken Sie die Taste Strg+R
  • Wählen Sie im Menü „Datei – Upload“ oder drücken Sie die Taste Strg+U
  • Wählen Sie im Menü „Tools – Serial Monitor“ oder drücken Sie die Taste Strg+Umschalt+M

 

Arduino Lauflicht mit PCF8574

Arduino Lauflicht mit PCF8574

und hier der Beispielcode zum Einfügen.

/* 
 ==============================================
 Test I2C-Output - Lauflicht
 ==============================================
 */

#include <Wire.h>
#define I2C_OUT_ADDR 64 >> 1 // I2C-Addresse als 7 Bit

byte WERT=0;
byte OUT_INV=0;


void setup() {
  Serial.begin(9600);       // Serielle Schnittstelle konfigurieren
  Wire.begin();             // I2C-Pins definieren
}

void loop() { 

  if (WERT==0) {            // Wenn Wert=0 Bit 0 setzen
    WERT = 1; 
  }
  else {
    WERT = WERT <<1;       // ein Bit nach links schieben
  }

  OUT_INV = 255-WERT;      // in invertierte Ausgabe wandlen 

  Serial.println(WERT);    // Wert auf "Seriel Monitor" ausgeben

  Wire.beginTransmission(I2C_OUT_ADDR);  // Start Übertragung zum PCF8574
  Wire.write(OUT_INV);                   // Wert schreiben
  Wire.endTransmission();                // Ende

  delay(100);
}

Download des Beispielprogramms als zip-File  PCF8574-Lauflicht

 

Speichere in deinen Favoriten diesen permalink.

9 Kommentare

  1. Ich habe mir testhalber den I2C Input- und Output-Baustein gekauft. Sauber konstruiert, sauber verabeitet und funktioniert 1a. Und das auch noch zu einem fairen Preis. Ich bin begeistert. Nach etwas intensiverem Testen und ausloten der Möglichkeiten und Verfahren werde ich mir weitere Bausteine zulegen, die ich mittels Arduino zur Ein- und Ausgabe bei meinem Modellbahnstellwerk nutzen möchte.

  2. Hallo,
    müssen zwischen meinen Arduino und 2C-INPUT/OUTPUT-Baugruppe keine Pull-Up Widerstände geschaltet werden?

  3. Hallo,
    ich möchte die I2C Eingabe Karte mit Optokoppler benutzen für Melder mit 12V,
    wie bekomme ich das INT Signal über längere Strecke (25m) an den Arduino da dieses nich vom I2C-Extender übertragen wird.

    • Hallo RS,
      das INT-Signal ist ein mehr oder weniger statisches Signal. Hier wird nur ein Zustand übertragen, nicht wie bei den Bussignalen schnelle Bitfolgen.
      Einfach den INT auf einen freien Eingang vom Arduino anschließen.
      Übrigens haben wir auch ganz neu Eingangskarten im Hutschienenformat mit Optokopplern.
      Die Karte kann aber keine kurzen Impulse speichern wie die I2E-Eingangskarte.
      Schaltplan als pdf hier: i2c-hs-Input_Optokoppler_sp.pdf

      I2C-Eingangskarte mit Optokopplern im Hutschienenformat.

  4. Hallo,
    für meine Modelleisenbahn plane ich einen Springbrunnen mit LED’s und
    Arduino. Verschiedene LED sollen die Bewegung des Wassers darstellen.
    Wenig PINS und Leistung steht zur Verfügung. Dazu möchte ich ein Programm
    schreiben, welche verschiedene typische Wasserspiele darstellen. Ist das mit
    I2C möglich, was würden sie mir empfehlen. Mein Geburtstag steht vor der Tür
    und Opa freut sich auch, wenn das Ding einmal zum Laufen kommt. Ich denke
    sie können mir helfen.
    Danke – Paul

    • Hallo Paul,

      du könntest das I2C-Output-Modul nehmen und ein paar LEDs parallel an einem Ausgang anschließen.
      bei Lauflichtern macht man das genauso. Das spart ein paar Ausgänge.
      Theoretisch kannst du 8 Stück PCF 8574 und 8 Stück PCF 8574A also 16 Output Karten an die I2C-Bus hängen.
      Das sind 16 karten a 8 Bit also 128 LEDs ansteuern.
      Ich denke das sollte reichen.
      Die Bitmuster für das Lichtschema würde ich dann in einem mehrdimensionalen Array hinterlegen und das dann über eine Schleife laufen lassen.

      Gruß, JH

      • Hallo JH,
        das ging ja fix – super Hinweis – ein Anhaltspunkt der sehr
        zuversichtlich den Springbrunnen ins richtige Licht setzen
        wird und Opa hat endlich ein passendes Geschenk.

        Paul sagt Danke

  5. Danke für die sehr detaillierte Anleitung zu den I2C Baugruppen. Ich hatte am Anfang Probleme mit den Treibern. Mittlerweile laufen die Baugruppen einwandfrei.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert