Serielle Kommunikation zwischen 2 Arduino

Hallo,
ich möchte zwei Arduinos miteinander kommunizieren lassen.
Was der eine Arduino sendet soll der andere empfangen und umgekehrt.

Kann ich das am PIN 1 und 2 machen ? oder stört da die IDE die Über usb den seriellen Port abhört ?

Welche möglichkeiten habe ich denn ?

Gruß Heinz

Das geht über jeden freien digitalen Pin mit SoftwareSerial.
D0 und D1 sind dafür nicht geeignet, da reserviert für USB Übertragungen.

0 und 1 für die IDE und den Seriellen Monitor?

  1. Welche Arduinos?
  2. Welche Entfernung?
  3. Welche Geschwindigkeit?

Gruß Tommy

lies dich zum Thema ein in diesem Tutorial.
Alle Beispiele durchmachen, dann wirds klick machen.

Serial Input Basics - updated - Projects / Tutorials - Arduino Forum

Warum nicht: I2C !?

Es gibt nicht den einen Arduino, sondern sehr, sehr viele. Mit SoftwareSerial kannst Du die meisten digitalen Pins als serielle Schnittstelle verwenden, begrenzt aber auf ca. 9600 Baud beim UNO. Schneller geht es mit einer UART1) in Hardware. UNO und Nano haben nur eine davon, die Du zwar verwenden könntest, aber dann mußt Du für den seriellen Monitor und ein neues Programm umstöpseln. Das ist fehlerträchtig und umständlich und daher nicht empfehlenswert, gerade für Anfänger.

Andere Arduinos wie der Mega2560 haben mehrere UARTs in Hardware eingebaut, da kann man die zusätzlichen einfach und auch mit höheren Baudraten verwenden.

Auf kurzen Entfernungen kann man die UARTs der Arduinos direkt miteinander verbinden. Über größere Entfernungen bietet sich zusätzliche Hardware wie z. B. RS485 an. RS485 communications

Genau betrachtet übertragen viele Schnittstellen Daten seriell, weshalb auch CAN-Bus und I²C zu Deiner Frage passen.

Beantworte bitte die Fragen in #3 und Du bekommst Antworten, die besser zu Deinem Projekt passen.


Anm.:

  1. UART und RS232 sind in der Kommunikation gleich, aber UART verwendet nur 0 bis 5 V oder auch 0 bis 3,3 V. Mit zusätzlicher Hardware kann man aus einer UART RS232, RS422 oder RS485 machen, wobei eventuell zusätzlich die Eigenarten eines Datenbusses berücksichtig werden müssen.

ich habe einen UNO und einen NANO die sollen miteinander sprechen. Es muss über rs232 sein, da ich noch etwas anderes dazuwischen schalten werde..(ist aber erstmal nicht wichtig ) da alles auf einem Tisch liegt ist die entfernung egal also = ca 30cm.
das ich von RS232 auf TTL232(bei meiner späteren Anwendung) muss weiß ich....da nehme ich umsetzer dafür.
DIe Geschwindigkeit spielt auch keine rolle 9600Baud langt mir vollkommen.
Ich lese erstmal das von noiasca gepostete Tutorial durch...
evtl wird das SoftwareSerial dann in frage kommen.

Eine andere Change hast du auf deinen Boards nicht, außer du baust alles um, nutzt D0 und D1, hast aber Probleme beim Flashen.

Dass die Arduino TTL232 sprechen ist Dir bekannt? Dass Seriell eine Punkt-zu-Punkt-Verbindung ist und kein Bus ebenfalls?

Gruß Tommy

ja weiß ich,
ich will nur erstmal irgendwas zb "asdf" von dem einen zum anderen senden

Damit schrumpfen deine Möglichkeiten auf genau eine zusammen.
Deine Frage ist also quasi überflüssig.

1 Like

Hallo heinzs1

Nimm eine Suchmaschine deiner Wahl und befrage das Internet mit "icom +ct17 " um ein paar Ideen einzusammeln.

Also zu SoftwareSerial....
wo finde ich denn da Dokumenationen wie das Funktioniert ?
oder ein funktionierendes Besipiel das man Nachbauen kann ?

Ich habe dies aus Pin 2,3 auch schon Probiert,
Und der PIN schein auf dauer +5V zu stehen

//Arduino UNO als Sender 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(4, 5); // RX, TX

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
mySerial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
mySerial.println(millis()/1000);
Serial.println((millis()/1000));
delay(2000);
}

Also Hier...

Ok vielen Dank,
es hat soweit funktioniert das ein Adruino aus einer Softwareserial Daten sendet- und das zweite auf einem Softwareserial diese Daten liest.

Da ich dann noch etwas zwischen schalte...hat soweit auch funktioniert.

Nun die Frage kann das dann auch ein Arduino auf zb Softwareserial_A an PIN 2 uns 3 Daten senden, und auf Softwareserial_B an PIN 4 und 5 die Daten wieder lesen ?

Wenn du damit meinst, auf ein und dem selben beides gleichzeitig, dann lautet die Antwort NEIN.
Das geht nicht, da der Controller erst eine Sache (Senden) abarbeiten muss und dann die nächste (Empfangen) .

Bei Hardwareserial ginge das, weil die Hardware "im Hintergrund" Daten verschickt und empfängt. Bei Softwareserial müßte der µC zwei Dinge gleichzeitig machen, was nicht geht.

ich denke wir sind an einem Punkt angelangt an dem du besser dein ganzes System erklärst.

  • Was macht der Arduino Uno genau?
  • Was macht der Arduino Nano genau ?
  • Was macht das Gerät (das erstmal so unwichtig war) dazwischen?
  • Wie ist das alles genau verkabelt? Schaltbild zeigen uploaden

Dann

  • Warum braucht es zwei Controller (Uno und Nano)?
  • Warum kannst du nicht von den UNO/Nano auf Controller mit mehreren HW Serial umsteigen? (Mega, Nano Every, ESP32,...)

Hallo noiasca,
Ich habe ein UNO und ein NANO vor mir liegen - das zu den warum - sonst muss ich um es zu testen gleich was anderes kaufen...sollte mit den zwei ja gehen - und ja es geht auch.
Das ich zwei brauche liegt anscheinend daran das ich bei diesen nicht senden und empfangen mit einem kann - evtl ja dann mit einem MEGA....den müsste ich mir erst kaufen (wird aber noch passieren).

Das ich es nicht genauer ausführe hat seine Gründe...(bitte um Verständnis)
Aber danke für die vielen Tipps und Hinweise, diese haben geholfen das ich mit dem UNO zb die millis() an das NANO seriell übertragen konnte. Und somit die Serielle Datenstrecke auswerten konnte ob diese Funktioiniert oder nicht. (daher erwähnte ich das noch was dazuwischen schalte)

Nun werde ich den MEGA kaufen und das gleiche mit dem Mega testen, von UNO zu MEGA. Und ob der MEGA auf COM1 senden und COM2 empfangen kann.

Eine Frage wenn ich ein anderes BOARD nehme was ist denn der Unterschied zwischen
1.) Joy-it ARD_MEGA2560R3 Kompatibles Board Arduino MEGA 2560R3
2.) [Arduino A000067 Board Mega 2560 Core]
diese habe ich beii CONRAD gesehen - erscheinen für mich gleich bis auf den Preis ?
Liege ich da richtig ?