Forum: Mikrocontroller und Digitale Elektronik Roboterbau - Kombination von Raspberry und Mikrocontrollern


von F. S. (Gast)


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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Falko S. schrieb:
> 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...

Multimaster ist bei I²C vorgesehen.

von F. S. (Gast)


Lesenswert?

Hallo,

vielen Dank für die Info. Dann werde ich das wohl doch über I2C machen. 
Wenn jemand bereits Erfahrung oder Softwarelösungen für Arduino hat, 
sind diese hier natürlich gerne willkommen, ansonsten werde ich mich mal 
an das Projekt wagen.

Viele Grüße
F.S.

von mukel (Gast)


Lesenswert?

Ich würde dir ja vorschlagen einen richtigen Feldbus zu nutzen, mit 
Atmega/Atiny ohne integrierten Controller ist das eher nicht optimal. 
Versuche die einzelen Controller so dumm wie möglich zu machen, dann 
musst du bei änderungen und dem parametrieren nur an den RaspPi

von Tim T. (tim_taylor) Benutzerseite


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...

von Mach (Gast)


Lesenswert?

RS485?

von NichtWichtig (Gast)


Lesenswert?

CAN Bus ?

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

IPoAC?

Jetzt mal im Ernst, es sollte doch irgendwie einleuchten das der OP 
nicht noch beliebig viel Aufwand treiben will. Er will OFFENSICHTLICH 
die AVRs (nein nicht nur Exoten mit CAN) an den Raspberry flanschen um 
Sensoren und Aktoren damit zu nutzen und nicht vorher jeden Controller 
mit einem entsprechenden Tranceiver ausstatten...

von F. S. (Gast)


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.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

I2C mit nem vernünftigen Master, also nicht den eingebauten I2C vom 
Raspberry nehmen.

von F. S. (Gast)


Lesenswert?

Was genau meinst du damit?

von Mach (Gast)


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.

von Tim T. (tim_taylor) Benutzerseite


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.

von Framulestigo (Gast)


Lesenswert?

Hmmm, ich mach die Verbindung zur Controllerebene über Bluetooth. So 
ziemlich jedes Gerät (Tablet, Smartphone, Notebook, RPI,...) verfügt 
mittlerweile über BT. Da kann man sich für nen Testlauf auch mal mit dem 
Notebook binden oder das alte Tablet als Brain missbrauchen.

von Viktor B. (coldlogic)


Lesenswert?

Ein ähnliches Projekt hatte ich auch mal am Laufen. Da hatte ich die 
Atmegas mit dem Raspi durch SPI verbunden, geht ganz gut, wenn man nicht 
gerade mehr als acht Untermodule verwenden will. Es passt auch ganz gut, 
dass SPI schneller als I2C sein kann und weniger Overhead am Bus braucht

von Tim T. (tim_taylor) Benutzerseite


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...

von Jobst Q. (joquis)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.