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
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.
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“
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“
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
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
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.
Hallo,
müssen zwischen meinen Arduino und 2C-INPUT/OUTPUT-Baugruppe keine Pull-Up Widerstände geschaltet werden?
Doch. Bitte Pullup-Widerstände 4,7k oder 10k nach +5V vorsehen.
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
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
Danke für die sehr detaillierte Anleitung zu den I2C Baugruppen. Ich hatte am Anfang Probleme mit den Treibern. Mittlerweile laufen die Baugruppen einwandfrei.