Welchen BUS soll ich nehmen?

Hallo,

ich suche nach dem für mich besten BUS.
Ich fange gerade mit einem Freund ein neues Projekt an, und suche noch nach dem richtigen BUS,
wir wollen den Raspberry PI mit dem Arduino verbinden, das machen wir direkt über USB, also über UART.

Der PI soll das Gehirn sein und der Arduino die Schnitstelle zu Außenwelt ^^. Am Arduino sollen weitere kleinere Kontroller
angeschlossen werden, z.B. Arduino Mini oder kleine selbstgebaute Kontroller ATtiny’s oder sowas.

Ich hatte mir das so vorgestellt:

[PI] <–> [Master-Arduino] <-------------> [Slave]

Jetzt suche ich nach dem BUS der gut passen würde.

  • ich weiß nicht wie viele SlaveArduino’s ich verwenden werde
  • ich weiß nicht wie viele funktionen die Slavearduinos übernehmen sollen.

also SPI, I2C, DMX ? Vielleicht habt ihr gute Erfahrungen mit einem BUS gemacht und könnt mir eins empfehlen,

gruß Nils :slight_smile:

Wie lang soll der Abstand zwischen den Arduinos und den externen Controllern sein? Bei kurzen bis mittleren Distanzen würde ich sagen I²C

Vor ein paar Wochen hatten wir dazu auch schon einen interessanten Thread: http://arduino.cc/forum/index.php/topic,104035.0.html

Da ich gerade in der Materie bin, würde ich die RS485 Schnitstelle benutzen mit einem "selbstgebauten" Busprotokoll, Vorteil: nur 2 Leitungen A+B. Es ist Kommunikation in beide Richtungen möglich mit. Zuverlässig sind 32 Punkte/Slaves (es funktionieren auch bis zu 50 ohne Probleme aber nicht garantiert) (Slaves) dannach kannst du mit einem Repeater nochmal das gleiche an Nodes dranpacken und weitere 1200m Kabel. Du kannst zwischen den Nodes eine maximal Länge von 1200m nehmen. Schöne Seite dazu: http://www.gammon.com.au/forum/?id=11428 Der Mann ist Member der Arduino Community also auch hier erreichbar Mit New-Soft-Serial habe ich mit 14400 Baud zuverlässi Kabellänge zwischen den Nodes von 100m getrieben. Brauchst aber auf jeder Seite ein TTL RS232=>RS485 wandler wie MAX485 oder SN75176. Mehr Infos gerne per PM. Kann dir auch meine Sketche zur verfügung stellen.

Bei mir sieht es so aus. Master sagt dem Slave 1 will deine Daten und bekommt sie Master sagt dem Slave 2 will deine Daten und bekommt sie usw. Du kannst auch von Slave X zu Slave X daten schicken ohne Probleme. Die Routinen sind dir überlassen. Kommuniktion ist Byte oreintiert als große Int z.B. kannst du mit highByte() und lowByte() auseinander nehmen und verschicken. Funktioniert Tadellos. Ich nutzte zweiadern geschirmt wobei der Schirm noch zusätlich der GND ausgleich ist.

Hallo Dani,

IIRC hat der RS485 allerdings den nachteil, dass man nur etwa einen Meter aus dem Bus "ausklinken" kann - d.h. man musste das Kabel schlaufen, um z.B. von der Decke auf den Boden zu kommen. auch erweitern wird so schwieriger, glaube ich. Hab ihn allerdings noch nie selbst ausprobiert - hab das nur gelesen. Wäre nett, wenn du einen kurzen erfahrungsbericht dazu bringen könntest.

[quote author=Marcus W link=topic=107793.msg809427#msg809427 date=1338293596] Hallo Dani,

IIRC hat der RS485 allerdings den nachteil, dass man nur etwa einen Meter aus dem Bus "ausklinken" kann - d.h. man musste das Kabel schlaufen, um z.B. von der Decke auf den Boden zu kommen. auch erweitern wird so schwieriger, glaube ich... [/quote] Dieses Problem haben alle Bussysteme. Grüße Uwe

Ich habe es so gmacht das ich einen "zweiten Bus" vom COntroller aus gestartet habe und dann die Terminierung der WIderstände auf das andere End gemacht habe das ist dann zwar nicht sternförmig aber man mehr möglichkeiten. Dann war der BusMaster halt in der "Mitte" damit kann man evtl. ein paar sachen erschlagen. Aber jeder Bus hat das "Problem" was weiter oben erläutert wurde. Sonst musst du halt etwas als Point to point verbindung aufbauen und dann viel spass mit dem Timing abgleich der Teilnehmer das jeder nur dann sendet wenn er darf.

Das schaut doch schon mal sehr interessant aus, und vom Prinzp her ist es genau das was ich brauch.

Ich habe vor einiger Zeit schonmal ein "topic" eröffnet wegen einem BUS für Lampions, und da hast du, (glaube ich), mir auch diese Schnitstelle empfohlen, aber mit dem DMX Protokoll, aber da konnte man nur 512 Adressen ansteueren, kann man bei deinem System mehr Adressen ansteueren oder gibt es da eigentlich gar keine Adressen, alos kann man da so viele Daten schicken und verschicken wie man will.

Also so viel Kabel brauche ich garnicht, mir reichen da schon 2 Meter Kabel, aber in diesem Bereich habe ich halt viele Slaves, das funktioniert dann trotzdem oder?

Ja nach den Wandlern hatte ich mich schonmal umgeschaut, die sin extrem günstig, finde ich gut :D.

Aber ist das dann das richtige System für mich? Wir wollen den [PI] quasi als Gehirn nehmen und einen MasterArduino als "Übersetzer" der mit anderen Slave Arduinos kommuniziert, der Slave wertet zum Beispiel einen Taster aus, schickt das an den den Master und der schikt das an den PI, der PI kann dann mit dieser Information weiterarbeiten und schickt wieder Informationen an den Master und der kann dann zum Beipiel eine LED anschalten.

Das klingt erstmal seltsam und dumm, aber wir haben damit noch mehr vor, da werde ich noch ein Topic drüber schreiben ^^.

Das Problem ist das ich noch nicht weiß ob ich mit 32 Empfängern hinkomme, wie viel Empfänger gibt es denn bei I2C und SPI und warum hast du mir die nicht vorgeschlagen, das wird ja sicher einen Grund haben :).

@ MarcusW, was meinst du mit ausklinken, ich verstehs nicht ganz ^^.

Gruß Nils ;)

Kurz mal eine Frage zum Raspberry PI Model B selber.

Das Board hat 2 USB Anschlüsse. Kann man da eine USB-Maus und USB-Tastatur anschliessen ?

@Megaionstorm: Klar kann man das, du kannst auch einen USB-Hub anschließen oder ein USB-DVDRW-Laufwerk - der Pi ist ein vollständiger computer, der allerdings eine Arm- statt einer X86-Architetur als CPU benutzt. Ich hab meinen seit letzter Woche und bin begeistert: Fedora + XMBC = Besser als mein Windows Mediacenter auf Atom-Basis bisher. Das Ding ist der absolute Hit für jeden Bastler. Betonung liegt allerdings auf Bastler - du brauchst schon Ahnung (mehr als nur Computerbasiswissen) um damit arbeiten zu können.

@Marcus W

Wo hast Du das Teil den gekauft und wie teuer ?

Ich hab ihn per Preorder von RS Components bestellt - mitte März :wink: Gekostet hat er mich 38€ inkl. Versand. Ich glaube aber du musst selbstständig sein um da bestellen zu können (keine Ahnung - bin selbstständig :slight_smile: )

Megaionstorm: @Marcus W

Wo hast Du das Teil den gekauft und wie teuer ?

Kostet brutto ca. 40 Euro. Bei Interesse einfach mal hier anmelden: http://de.rs-online.com/web/generalDisplay.html?id=raspberrypi Mach Dich aber auf eine lange Warteliste gefasst. Wenn ich mich recht entsinne hab ich mich im Februar registriert. Und Heute kam die Mitteilung dass ich meinen Pi jetzt bestellen kann (1 Stück).

Ich habe mir auch einen bestellt aber noch nichts gehört. Wart....

Sehe ich das richtig das es nichtmal einen Arduino-Master braucht? Der RPI hat doch selber schon ein paar ausgänge: http://elinux.org/Rpi_Low-level_peripherals

Du kannst den Pi direket mit einem RS485 Schnittstelle versehen und den als Master nehmen. DU musst halt nur sehen das du dein Protokoll von dem Gesendet bekommst (normales RS232 Handling). Gruß Daniel

Ich sehe gerade das der PI schon SPI fähig ist, das könnte man ja auch nutzen ^^.

Wir wollen Debian drauf machen.

SPI ist nur für Kurze wege um schnell daten von einem IC zum anderen zu bekommen :-). Und du musst für jeden Slave einen zusätzlichen Slave Select haben also einen zusätzlichen Ausgang haben. Beim SPI kannst du nicht daten von einem Slave zum anderen senden ohne extra aufwand

Oke, dann fällt SPI schonmal weg, wegen den Slave Select Kabel, da habe ich keine Lust drauf so viele Kabel zu benutzen, und jeder SS benötigt dann auch einen Pin am Arduino oder?

Dann bleibt noch deine Variante mit der RS485 Schnitstelle und I²C.

Ich hab nachgelsen das I²C 112 Knoten bei einem Adressraum von 8Bit und 1136 Knoten bei 10 Bit hat, was benutzt man beim Arduino? Wobei mir 112 Knoten reichen würden ^^.

Ist I²C schneller als deine 14400 Baud? Und heißt das das ich dann auch 112 (Empfänger/Sender)- Slaves in mein System einbinden könnte?

Ich hab gelesen das I²C recht störanfällig sein soll, ist dem so? und was für Konsequenzen bringt das mit sich?

Kann der Slave auch Daten vom Master empfagnegn? und können sich die Slaves auch unterainander Daten schicken?

Wäre I²C für mich geeignet?

Nils :)

Kennt sich da keiner aus?

Nils :)

Darf ich dir mal diese Seite an Herz legen aus dem Thread Treppenlicht mit I2C http://www.mikrocontroller.net/articles/Hausbus#Vergleich_von_Hausbussystemen

Das sind die diversen Vor- und Nachteile aufgezählt