? Zwei Pis verbinden ?

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo Jar,

    nix da wenn der interne PI1 auf Tx nur die freigegebenen Daten sendet und keine Rx Verbindung hat kann der Internet PI2 der diese Daten am Rx empfängt wohl kaum dem internen PI1 irgendwas befehlen, es gibt keinen Weg rein!

    Der umgekehrte Weg existiert einfach nicht!

    hast Recht. Das mit der fehlenden RxD-Leitung ist mir nicht aufgefallen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Ich war in letzter Zeit lange nichtmehr online (hatte ne Menge Zeug am Hut...) und bin grad erst wieder online gegangen. Hab die neuen Vorschläge also erst überflogen. Ich halte nach wie vor jar's Vorschlag für den Besten, weil er der Einzige ist, der, genau wie ich es bezwecken wollte, nur einen Weg lässt und damit eine physikalische Barriere. Dazu meine "Improvisations-Idee":

    Die RS232-Kabel, um die es dabei geht, haben ja im Allgemeinen 9 Pins. Von denen ist einer für die Datenübertragung von a nach b, einer für die von b nach a und der Rest für unterschiedliche "Bist du bereit"- Signale gedacht. Nur: wenn das nur in eine Richtung gehen soll, könnte (oder sollte...) man an sich ja die Datenübertragung von b nach a weglassen. Und damit fallen die ganzen "Bist du bereit"- Pins ja eh in ihrem Sinn weg; schließlich soll b entweder pausenlos auf das, was a ihm schickt, lauschen; und tut b es nicht, dann nur, weil irgendwas schief läuft, und dann kann es a eh egel sein, ob b kein Interesse an seinem Zeug mehr hat, was heißt, dass a auch dann getrost weiterschicken kann.

    Also könnte man das ganze Prinziep an sich ja auf einen Pin beschränken: Der Sicherheits-Pi setzt die zu versendenden Dateien mittels einem Sender-programm in Bits um, gibt diese als Spannungen an diesem einen Pin aus, von wo sie zum Internet-Pi kommen, der sie einliest, wieder zu einer Datei zusammensetzt und abspeichert.
    Statt so ein Kabel mit mehreren Pins zu nehmen, könnte man dann eigentlich improvisieren und lediglich einen Pin vom Sicherheits-pi mit einem vom Internet Pi verbinden.
    Automatisch zusammengefügt:
    Nur so... Ich bin mir grad nicht mehr sicher (ich arbeite relativ wenig mit diesen Pins...), aber KANN ein Pi überhaupt die über einen von seinen Pins ankommende Spannung "messen"? Also einlesen und protokollieren? Oder erkennt er sie nicht und kann lediglich welche geben? Wenn er nicht erkennen würde, ob der Sicherheits-Pi ihm über den dafür gedachten Pin Strom geben würde, wäre auch meine improvisierte Version von jar's Methode nonsense...
    Automatisch zusammengefügt:
    Also: Drähtchen von einem Pin von Pi A an einen von Pi B, über das die Daten-bits in Spannungen zugeschickt werden, und ein selbstgefrickeltes Sender- und Empfängerprogramm-
    Ginge das, oder stelle ich mir das zu einfach vor?

    Einmal editiert, zuletzt von RaspberryBaum (18. Juni 2016 um 08:14)

  • ziemlich viel unverständliches

    klar ohne Kreuzung Rx und Tx können die nicht syncronisieren

    aber wenn ein Pi nur alle paar Sekunden neue Daten sendet und dazwischen eine Pause ist kann der 2te PI doch den Beginn an der Pause erkennen

    per Terminal cutecom sieht man das doch auch als Mensch

    du redest immer von vielen Pins und meins RS232 Stecker?
    Mache dich davon frei, 2 PIs die nebeneinander liegen bringen doch ihre PinLeisten mit und
    auf einem PIN liegt Tx das wäre der Sende PI + GND
    auf dem anderen PIN liegt Rx das wäre der Internet PI + GND

    du brauchst genau 2 Jumperkabel um die zu verbinden

    https://www.conrad.de/de/raspberry-p…0160618071134:s

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • OK...
    Du meinst also, statt so ein RS232-Kabel zu verwenden, sollte ich sowas improvisieren. Statt also so ein Kabel, wie man es kauft, anzuschließen, sollte ich mit zwei Kabeln (einfache Dräte, sozusagen...) zwei Pins der Pin-leisten der Pis miteinander verbinden (also kreuzen), oder?
    Das ist eigentlich genau das, was ich mit meinem Kommentar sagen wollte. Da RS232-Kabel, wie man sie im Handel kriegt, eigentlich aus einem Bündel von 9 Drähten bestehen, von denen die meisten für mich überflüssig sind.

    Das heißt, dass ich mich schlecht ausgedrückt habe, und du mich deshalb schlecht verstanden hast, und mir dabei zufällig genau das geraten hast, was ich meinte (nur weitaus besser erklärt). Danke für den Link!

  • Hallo RaspberryBaum,


    OK...
    Du meinst also, statt so ein RS232-Kabel zu verwenden, sollte ich sowas improvisieren. Statt also so ein Kabel, wie man es kauft, anzuschließen, sollte ich mit zwei Kabeln (einfache Dräte, sozusagen...) zwei Pins der Pin-leisten der Pis miteinander verbinden (also kreuzen), oder?
    Das ist eigentlich genau das, was ich mit meinem Kommentar sagen wollte. Da RS232-Kabel, wie man sie im Handel kriegt, eigentlich aus einem Bündel von 9 Drähten bestehen, von denen die meisten für mich überflüssig sind.

    Das heißt, dass ich mich schlecht ausgedrückt habe, und du mich deshalb schlecht verstanden hast, und mir dabei zufällig genau das geraten hast, was ich meinte (nur weitaus besser erklärt). Danke für den Link!

    Da wird nicht gekreuzt. Der Sende-Pi schickt über die TxD-Leitung Daten über eine Leitung an den RxD-Pin des Empfangs-Pi. Die zweite Leitung verbindet irgendeinen GND-Pin des einen mit irgendeinem GND-Pin der anderen GPIO-Leiste.
    Mehr steckt nicht dahinter.

    Und die Übertragung stellst Du Dir auch zu kompliziert vor. Der schreibt BYTE für BYTE oder auch einen Puffer mit beliebig vielen Bytes in einem Befehl. Der andere liest die einkommenden Daten ein (seriell mit Timeout - so als Stichworte). Was der Empfänger mit den Daten anstellen soll, obliegt Deiner Phantasie und Programmierkünsten.

    Und der Empfänger muss auch keine Sachen zusammensetzen. BYTES oder BYTE-Blöcke kommen an. Und wenn es einen Timeout gibt, ist die Übertragung wohl abgeschlossen.

    Das wäre dann die Minimal-Lösung.

    Ich würde noch zwei Handshake-Leitungen nutzen:

    • Auf der einen sendet der Sende-Pi, dass er da was hat.
    • Auf dem Empfänger-Pi wird ein Interrupt ausgelöst, wenn das Signal ausgelöst wird.
    • Dann sendet der Sende-Pi in einem speziellen Kommando die Menge der Daten.
    • Dies ist für den Empfänger-Pi die Information schlechthin, nach wieviel Bytes die Übertragung abgeschlossen sein wird.
    • Auf der anderen Handshake-Leitung quittiert der Empfänger-Pi den Empfang der angekündigten Datenmenge.
    • Der Sende-Pi schaltet seinen Handshake aus.
    • Der Sende-Pi wartet auf einen Intrerupt der anderen Handshake-Leitung. Kommt da nichts, kamen die Daten wohl nicht vollständig an. Ob er nochmal die gleichen Daten senden soll, musst Du entscheiden.

    Mit einer Mindestmenge an Kommandos kannst Du z.B. Dateinamen und Pfade bekanntgeben, wo die Sachen gespeichert werden sollen - und was auch immer Dir hier wichtig erscheint.

    Der Knackpunkt wird aber auch die richtige Konfiguration der Schnittstelle darstellen. Da haben einige User schon so richhtig viel Zeit investiert.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (18. Juni 2016 um 11:18)

  • man könnte auch Blockweise senden und CRC Check anhängen, dann kann der Empfänger prüfen ob der Block richtig empfangen wurde.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Vielen Dank für die Erklärung (bezüglich der Übertragungsschritte). Was das Kreuzen der Kabel angeht: Ich habe damit eigentlich genau das gemeint, was du gemeint hast, als du sagtest, eine zweite Leitung solle einfach einen GND-Pin des Einen mit einem des Anderen verbinden. Soll ja kein Pi gegrillt werden.

    Zufällig hab ich auch direkt zwei Jumperkabel gefunden. Werd also bei nächster Gelegenheit gleich mit dem Programmier-teil beginnen.
    Automatisch zusammengefügt:
    War an Andreas gerichted.

    Einmal editiert, zuletzt von RaspberryBaum (18. Juni 2016 um 18:15)

  • Servus alter Bärliner ...


    man könnte auch Blockweise senden und CRC Check anhängen, dann kann der Empfänger prüfen ob der Block richtig empfangen wurde.


    naja gut ... bringt aber nicht wirklich was ohne Rückleitung und Protokoll ;)
    Du könntest den Block ignorieren ... aber wenn der mitten aus einem File ist? Rollback machen ( also vor der Übertragung Sicherungskopie anlegen und auf diese dann zurücksetzen )?

    cu,
    -ds-

  • Hallo RaspberrysBaum,


    Vielen Dank für die Erklärung (bezüglich der Übertragungsschritte). Was das Kreuzen der Kabel angeht: Ich habe damit eigentlich genau das gemeint, was du gemeint hast, als du sagtest, eine zweite Leitung solle einfach einen GND-Pin des Einen mit einem des Anderen verbinden. Soll ja kein Pi gegrillt werden.

    na ja, man sollte immer die Termini technici verwenden, die allgemein gebräuchlich sind. Unter gekreuzten Kabeln versteht man etwas wie
    A zu B und
    B zu A

    Und da in Deinem Fall nur zwei Kabel im Spiel waren (ob das Sinn macht oder nicht, hängt vom zu verwendenden Übertragungsprotokoll ab und wie Du einen Anfang und ein Ende der Daten erkennst) musste ich das einfach mal klar stellen.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!