Roboterbau - Kombination von Raspberry und Mikrocontrollern

Gast #5755825
Lesenswert?

Hallo Community,

ich möchte mich erneut daran versuchen, einen relativ umfangreichen, 
fahrbaren Roboter zu bauen, der verschiedene Aufgaben erfüllen kann. 
Bereits in der Vergangenheit habe ich ein paar Roboter auf Grundlage 
verschiedener Microcontroller und Einplatinencomputer (Arduino, 
Raspberry,...) gebaut.

Meinen nächsten Roboter möchte ich jedoch modularer gestalten. Meine 
Idee hierbei wäre es, an mehrere AtMegas/Attinys verschiedene Sensoren 
zu hängen (also z.B. ein uC für Wettersensoren, ein weiterer für 
Gyroskope/GPS/Radar/Lagesensoren).

Softwaretechnisch würde dann die Hauptsteuerplatine - in diesem Fall ein 
Raspberry Pi 3 - immer die einzelnen uCs abfragen und die entsprechenden 
Werte erhalten.

Dabei hatte ich im ersten Moment gedacht, sämtliche Kommunikationen über 
den I2C-Bus laufen zu lassen, da eine USB-Schnittstelle nicht in Frage 
kommt.

Gibt es evtl schönere Lösungen? Ich bin momentan wieder vom I2C 
abgeneigt, da auch manche Sensoren über I2C mit den uCs kommunizieren 
würden und diese somit sowohl Master, als auch Slaves sein müssten...

Viele Grüße und danke für Tipps
F.S.
Gast #5755990
Lesenswert?

Warum willst du die Mikrocontroller überhaupt Master spielen lassen?
Wenn du die alle nur als Slave benutzt und alle I2C Sensoren selbst mit 
dem Raspberry abfragst machst du es dir deutlich einfacher.
Das I2C am Ende trotzdem nicht funktioniert liegt dann nur in der 
fehlerhaften Implementierung des clock stretching im Raspberry weil 
Broadcom dafür zu doof war...
Gast #5756155
Lesenswert?

Hallo,

Ich werde selbstverständlich NICHT den Can-bus verwenden. Die Controller 
sollen über eine Schnittstelle miteinander kommunizieren, die möglichst 
einfach zu händeln ist.

Das Protokoll/Datenformat für die Messwerte werde ich selbst 
implementieren.

Wahrscheinlich werde ich schlussendlich auch nicht einen Atmel, sondern 
einen 32bit MC von Nordic Semiconductor verwenden.

Die einzige Frage ist, wie ich eine hardwareseitige Lösung zur simplen 
Kommunikation mehrerer Geräte im Master-Slave-prinzip realisieren kann.

Grüße
F.S.
Gast #5756253
Lesenswert?

Ich bleib dabei, RS485. Die serielle Schnittstelle ist zuverlaessig, 
robust, leicht anzusprechen. Kann sich nicht verhaeddern wie I2C. 
Clock-Stretch ist kein Thema. Ist auch ueber gewisse Strecken stabil 
(k.A. wie eng die Platinen beieinander sind). Busteilnehmer lassen sich 
leicht durch einen PC simulieren/ersetzen, sowohl Raspi als auch 
Mikrocontroller.
Gast #5756300
Lesenswert?

F. S. schrieb:
> Was genau meinst du damit?

Prinzipiell ist I2C genau das was du für deine Aufgabe brauchst nur eben 
im Raspberry fehlerhaft implementiert:
http://www.advamation.com/knowhow/raspberrypi/rpi-i2c-bug.html

Also brauchst du entweder einen Controller der es richtig macht oder 
etwas zusätzliche Hardware am Raspberry oder du musst komplett 
sicherstellen das kein clock stretching verwendet wird.
Gast #5757391
Lesenswert?

Ja, habs auch mit I2C, SPI und RS232 getestet. Letztlich hab ich mich 
gegen I2C entschieden weil der Raspberry das nicht vernünftig hin bekam 
und gegen SPI weil die AVRs lausige Slaves sind. Also einen dickeren AVR 
per UART an den Raspberry und alles Andere per I2C an den geflanscht. 
Letztlich waren die einzigen Gründe für den Raspberry die PiCam und das 
WLAN Modul...
#5757409
Lesenswert?

I2C halte ich nur für sinnvoll um Sensormodule direkt abzufragen. Um 
diverse Mikrocontroller mit etwas Eigenintelligenz und Datenverarbeitung 
abzufragen ist RS485 sinnvoller.

Es ist auch einfacher bei einem µC Sensoren mit der eingebauten I2C 
Schnittstelle abzufragen und für die Kommunikation zur übergeordneten 
Steuerung (Raspi) eine andere Schnittstelle zu verwenden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren