I2C Vernetzung mehrerer Arduino Pro Mini

  • Hallöle zusammen,
    ich hatte kürzlich -> hier <- ja mal ausprobiert, ob es möglich ist mehrere Arduino (in meinem Fall Pro Mini) über I2C zu vernetzen.
    In -> diesem <- Beitrag wird die Vorgehensweise sehr ausführlich beschrieben und es funktioniert auch wie es dort dargestellt ist. Diesen Beitrag habe ich auch als Vorlage für meinen Versuchsaufbau verwendet.
    Ich habe dazu einen Fritzing-Plan zur Verschaltung angefertigt, den ihr im Anhang findet.
    Hier nur noch mal eine kurze Zusammenfassung der Vorgehensweise:

    Ihr braucht:
    Ein Breadboard zum einfacheren Verbinden
    Zwei oder mehr Arduino Pro Mini
    Zwei Widerstände mit 1 kOhm oder 1.5 kOhm
    18 Kabel
    und natürlich einen FTDI Flash-Adapter

    Zunächst verdrahtet ihr die Arduinos mithilfe des Breadboards so, wie im Plan im Anhang.
    Danach steckt ihr den Flash-Adapter auf den ersten Arduino - dem "Master" (bei mir im Plan der erste von rechts, ist aber imho vollkommen Banane ...)

    Vergewissert Euch, dass ihr die Wire Library habt (ist in der aktuellen Arduino IDE enthalten. Unter Ubuntu: /usr/share/arduino-1.0.5/libraries) und startet die Arduino IDE.
    (btw: -> hier <- ist die Referenz auf diese Lib)

    Öffnet den sketch "Datei->Beispiele->Wire->master_writer".
    Schaut Euch den sketch mal an: da wird ohne Angabe einer Adresse auf den I2C Bus zugegriffen. Im Prinzip ist das schon das Zeichen, dass dieser Arduino als Master fungiert.
    Dann das übliche ... flashen und gut ist ...

    Den Flash-Adapter auf den zweiten Arduino umstecken.
    Jetzt allerdings des sketch "Datei->Beispiele->Wire->slave_receiver" laden.
    In diesem sketch wird ebenfalls auf den I2C Bus zugegriffen ... allerdings jetzt mit der Adresse 4.
    Das bedeutet, dass dieser Arduino als slave fungiert und die I2C-Adresse 4 hat.
    Und weiter wie gehabt ... flashen.

    Lasst jetzt mal den Flash-Adapter stecken und befeuert die beiden Arduinos über das Breadboard.
    Wenn ihr jetzt den seriellen Monitor öffnet, sehr ihr, dass die empfangenen Zeichen ausgegeben werden.

    Tja, das war's auch schon.
    Jetzt könnt ihr einem dritten Arduino z.B. die Adresse 3 oder 5 oder ... geben und ihn ebenfalls an den I2C Bus hängen.
    Theoretisch ist die Anzahl nur durch die Anzahl der möglichen I2C Adressen bestimmt.

    Ein wenig kitzliger ist es, wenn ihr noch Sensoren oder andere I2C Bausteine am Bus habt ... deren Adressen dürft ihr für Eure Arduinos natürlich nicht verwenden.

    So ... ich hoffe, das ist jetzt für den einen oder anderen von Euch hilfreich.
    In den nächsten Tagen folgen noch ein paar andere Kurzanleitungen für den Arduino Pro mini, u.a. noch für das eine oder andere Display, eine serielle Verbindung zwischen Arduino und Raspberry Pi zum Datenaustausch sowie eine Anleitung zum Aufbau einer 2.4 GHz Funkverbindung.
    Meine Idee ist, dass ihr dann hier zentral einen kleinen Pool an überprüften sketches habt, mit denen ihr schon eine ganze Menge, auch im Zusammenspiel mit den Raspberry Pi, anfangen könnt.

    Viel Spass,
    -ds-


  • Herzlichen Dank, -ds-!
    Wie kommt man auf die Idee, das ganze über I2C zu machen? :o

    Ja hey eBiBy ...

    naja ich hab' ja beim Start meines µController Vorhabens (war vor ca. einem Jahr ;) ...) herumphantasiert was so alles möglich wäre ...
    Über viele Umwege bin ich mittlerweile hier gelandet und arbeite jetzt mal einen Schwung Ergebnisse ab.
    Eine Kommunikation über I2C zu realisieren war zwar auch meine Idee, ausschlaggebend war aber die Tatsache, dass andere kluge Köpfe da schon Vorarbeit geleistet haben. Ich hab's dann im Grunde nur noch abgekupfert ...

    Ich find's genial, weil es genau das Richtige ist, um innerhalb eines mehr oder weniger komplexen Systems Daten auszutauschen.

    cheers,
    -ds-

  • Hallo DS, "alter" Tüftlerbazi! ;)

    Das klingt alles super und wie ich Dich kenne, funktioniert's auch zuverlässig. :thumbs1:
    "i2c" hab' ich primär auch gern (sofern es natürlich hardwaremässig direkt möglich ist).

    Alles in allem schon ein besonderes Zuckerl für den RPi und später auch an anderem "Obstsalat" wie z.B. Banana leicht anpassbar.

    Servus, mmi

  • Zitat

    eine serielle Verbindung zwischen Arduino und Raspberry Pi zum Datenaustausch sowie eine Anleitung zum Aufbau einer 2.4 GHz Funkverbindung.


    Moin!
    Ich habe auch 2 nRF24L01 Netze in Betrieb.
    Hauptsächlich Pro Minis. Wo mehr in/out nötig sind, auch Megas.
    Als Verbindungsglied habe ich es erst mit dem Raspberry versucht. Also das Funkmodul drauf. Und mit möglichst identischer Software. Den Krams von maniacbug sowohl auf dem Arduino, als auch auf dem Raspberry.

    Leider hat sich der Pi als zu instabil erwiesen. Stromausfälle und damit auch die leidige SD Karten Problematik machen Sorgen.
    Jetzt habe ich einen Arduino Mega (mit Ethernet Shield) als Knoten Null im Einsatz.
    Viel lahmer, aber auch viel stabiler.
    Vermutlich wird die Ethernet Anbindung irgendwann auf einen DUE umgestellt.
    Wenn ich denn mal ein paar preiswertes R3 Shields finde. Wobei auch hier Probleme zu erwarten sind. Z.B.: verdeckt das Ethernet Shield die SPI Pins.
    Dass die da keine "stackable Header" verwendet haben ist gemein.

    Zitat

    Meine Idee ist, dass ihr dann hier zentral einen kleinen Pool an überprüften sketches habt, mit denen ihr schon eine ganze Menge, auch im Zusammenspiel mit den Raspberry Pi, anfangen könnt.


    Gute Idee!!!
    Mal schauen, ob ich da auch meinen Beitrag leisten kann.......

    spruch.png

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!