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
Welche Entfernung willst du überbrücken? RS485 mit Collision Detection?
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.
Stephan W. schrieb: > das alle Teilnehmer in dem Bus gleich berechtigt sind CAN, da steckt der Controller schon im Namen.
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
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.
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.
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.
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.
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.
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.
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.
Okay Danke euch allen. Dann werde ich wohl mal ein bisschen in der CAN Ecke rum schnuppern und mich warm lesen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.