Forum: Mikrocontroller und Digitale Elektronik Datenbus zwischen 2 Raspberry Pi Pico


von Stephan W. (stipo)


Lesenswert?

Hallo zusammen. Lang ist es her, als ich hier mal etwas gefragt habe.

Aber heute ist es endlich mal wieder soweit. Und zwar geht es darum, das 
ich 2 oder mehrere Raspberry Pi Pico oder ESP32 miteinander sprechen 
lassen möchte über einen gemeinsamen Bus.

Ziel ist, das alle Teilnehmer in dem Bus gleich berechtigt sind, jeden 
direkt anzusprechen um Daten und Befehle zu senden und zu empfangen.

Was mir zuerst in den Sinn gekommen ist I2C. Hat aber ja den Nachteile 
mit dem Master/Slave Prinzip. Da müsste ich den Master ja anweisen immer 
auf den anderen Geräten zu Pollen, ob diese etwas zu sagen haben und 
denen dann die Rede Erlaubnis geben.

Das selbe ist doch auch bei dem SPI Bus. Da muss auch ein Controller der 
Master übernehmen und alles steuern.

Daher meine Frage. Gibt es noch eine andere Technik, die genau das kann 
mit der Bidirekten Kommunikation (Hoffe der begriff stimmt)?

Oder übersehe ich da bei I2C und SPI etwas?

Grüße
Stephan

von Εrnst B. (ernst)


Lesenswert?

Welche Entfernung willst du überbrücken?

RS485 mit Collision Detection?

von Klaus R. (klausro)


Lesenswert?

Wichtige Infos fehlen: Wie schnell, welcher (räumliche) Abstand. 
Energiesparend? Warum nicht WLAN? Ist ja bei ESP32 und RPi Pico W dabei, 
simpel aufzubauen und wird gut unterstützt.

von Mario M. (thelonging)


Lesenswert?

Stephan W. schrieb:
> das alle Teilnehmer in dem Bus gleich berechtigt sind

CAN, da steckt der Controller schon im Namen.

von ElC (elc)


Lesenswert?

Guten Abend
Wenn alle mcu's ESP32 sind, die einzelnen Befehle/Daten <= 250 Byte, 
kein HighSpeed gefordert, die Reichweite ~150m ausreicht wäre ESP-Now 
eine Option.
Funktioniert super zwischen zwei esp32, selber ausprobiert.
So viel ich weiß ist ESP-Now auch nur eine WLAN Variante. Bei gemischten 
mcu's könnte natives WLAN verwendet werden, allerdings hat der esp32 
WLAN/Bluetooth on Board.
Guckst du hier:

https://randomnerdtutorials.com/esp-now-two-way-communication-esp32/

MfG

von Stephan W. (stipo)


Lesenswert?

Klaus R. schrieb:
> Wichtige Infos fehlen: Wie schnell, welcher (räumliche) Abstand.
Es aus nur so schnell sein, das rechtzeitig zB ein Stop Befehl an einen 
anderen Chip weiter gegeben wird. Weis nicht was ich angeben soll. Das 
wird sicher keine Hausautomation. Daher sind die abstände höchstens 50cm 
anzurechnen.

> Energiesparend? Warum nicht WLAN? Ist ja bei ESP32 und RPi Pico W dabei, simpel 
aufzubauen und wird gut unterstützt.

WLAN scheidet da komplett aus. Ich möchte das nicht über eine externe 
Verbindung laufen lassen. Ich denke da wird am Schluss schon recht 
Verkehr herschen auf der Leitung. Und da ist mir dann WLAN oder FUNK 
allgemein zu unsicher. Ich sehe das immer im Beruf. Alles was Funk 
gesteuert wird, hat Latenzen.

von DSGV-Violator (Gast)


Lesenswert?

Mach doch zwei Busse resp P2P verbindungen, da kann jeder an einem Bus 
immer  Master sein ohne das man sich um arbitrierung kümmern müsste.

von Stephan W. (stipo)


Lesenswert?

Ich schiebe mal etwas hinterher was ich machen möchte :-)

Es soll eine vollautomatische Steuerung für die Eisenbahn werden. Klar 
schreit jetzt jeder, warum selbst machen wenn es das schon fertig gibt. 
Aber wo bleibt da der Spaß und das lernen in der Elektronik dann, wenn 
man alles schon fertig kauft?

Ich möchte dann einen PC oder einen Raspberry Pi mit Touch Display 
nutzen, der dann an die weitere Elektronik zur Steuerung der Block- und 
Streckenabschnitte Befehle weiter gibt. Gleichwohl sollen natürlich die 
Blockabschnitte dann wieder ihren Status zurück melden.

von DSGV-Violator (Gast)


Lesenswert?


von Harry L. (mysth)


Lesenswert?

Stephan W. schrieb:
> Es soll eine vollautomatische Steuerung für die Eisenbahn werden.

CAN-Bus!
Was in richtigen Autos reicht, reicht für eine Modellbahn erst recht.

von Rainer W. (rawi)


Lesenswert?

Stephan W. schrieb:
> Es aus nur so schnell sein, das rechtzeitig zB ein Stop Befehl an einen
> anderen Chip weiter gegeben wird.

Dann solltest du erstmal feststellen, was "rechtzeitig" in SI-Einheiten 
ausgedrückt bedeutet.

von Klaus R. (klausro)


Lesenswert?

Stephan W. schrieb:
> Es aus nur so schnell sein, das rechtzeitig zB ein Stop Befehl an einen
> anderen Chip weiter gegeben wird. Weis nicht was ich angeben soll. Das
> wird sicher keine Hausautomation. Daher sind die abstände höchstens 50cm
> anzurechnen. [...] WLAN scheidet da komplett aus.

Dann nimm CAN. Der ESP32 kann es wohl und der RPi Pico auch irgendwie. 
Ich würde da wohl einen STM32 mit CAN nehmen. Tranceiver ICs brauchst du 
für alle noch (z.B. MCP2551). Pures RS485 ist mehr Arbeit und wird nicht 
billiger.

von Stefan F. (Gast)


Lesenswert?

Harry L. schrieb:
>> Es soll eine vollautomatische Steuerung für die Eisenbahn werden.
> CAN-Bus!

Sehe ich auch so, nach der Info erst Recht. Dafür wurde CAN gemacht und 
hat sich bewährt.

von Stephan W. (stipo)


Lesenswert?

Okay Danke euch allen.
Dann werde ich wohl mal ein bisschen in der CAN Ecke rum schnuppern und 
mich warm lesen.

von Harald K. (kirnbichler)


Lesenswert?

Stephan W. schrieb:
> Ich möchte dann einen PC oder einen Raspberry Pi mit Touch Display
> nutzen, der dann an die weitere Elektronik zur Steuerung der Block- und
> Streckenabschnitte Befehle weiter gibt.

Bei diesem Modell gibt es keinen Grund, warum alle Teilnehmer 
gleichberechtig sein müssen. Das erhöht nur unnötig die Komplexität.

Master ist Deine Bedieneinheit (bzw. der diese steuernde PC/Raspberry 
Pi).

Alle anderen sind Slaves. Und die senden nur, wenn sie gefragt werden.

Sieh Dir z.B. Modbus-RTU an, das ist ein relativ robustes, gut 
dokumentiertes und nicht unnötig kompliziertes Protokoll. Dafür gibt es 
diverse Testsoftware, dafür gibt es zig Master- und Slave-Libraries, das 
reicht völlig.

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.