Kommunikation zwischen 2 Arduinos?
Hi,
Ich arbeite momentan an einem Arduino Projekt welches 2 Arduinos verwendet
- Arduino Leonardo
- Arduino Nano
In meinem Projekt sammelt der Leonardo daten und wandelt sie in eine 3 stellige zahl um welche dann zum Nano gesendet werden soll.
Mein Problem ist dass ich kein Protokoll finde dass dies schafft ohne ISP oder I2C zu benutzen was ich nicht verwenden möchte.
Welches nicht allzu schwieriges Protokoll gäbe es noch? Es soll auch nur in eine Richtung gehen also nur Leonardo ---> Nano nicht anders rum da es so schnell wie möglich sein soll.
3 Antworten
Über die Seriellen Pins TXD und RXD
Wenn du Leitungen verwenden willst dann die über Kreuz verbinden und den GND der beiden verbinden.
Du kannst dir auch zwei Funkmodule besorgen die du dann mit jeweils RXD/TXD verbindest und darüber drahtlos kommunizieren.
Ok dan werde ich mir mal das ganze durchlesen
Gibt im Netz und auf YouTube ganzen Haufen Tutorials wie man das macht.
Wenn du die beiden mit einer längeren Leitung verbinden möchtest dann setz die Signale mit zwei MAX232 auf RS232 Pegel um, das ist Störsicherer.
Ich schreibe grade schon den Code um.
die Arduinos sind direkt nebeneinander also sollte Störung kein großes Problem sein aber sollte es doch Störungen geben werde ich mir das mal im Kopf behalten
Falsch. Die USB vom Arduino greift auf die Rx und Tx ( PIN 0 und 1 ) zu. Entweder extern oder per USB. Beides geht nicht, außer der Arduino hat eine zweite serielle Schnittstelle. Haben aber die beiden nicht. Lösung wäre Softwareseriell per Library einbinden und andere Pins nutzen.
Ja stimmt schon so - Softwareseriell auf andere Pins ist die beste Lösung.
Ich hab mir das heute nochmal angeschaut - beim Nano und Leonardo steht wirklich nur eine UART zur Verfügung, die für USB verwendet wird.
Ich habe bisher nur den Mega verwendet und da ist das anders, da stehen mehrere UART´s unabhängig von USB zur Verfügung.
Ich möchte mich dafür bei dir entschuldigen dass ich so einem Schmarrn erzählt habe. Hoffentlich hast du dir nicht schon zu viel Arbeit gemacht.
Wie schon hier kommentiert wäre eine Lösung Softwareseriell per Library einbinden und andere Pins zu nutzen. Im Netz sollte eine solche Softwarelibrary zu finden sein.
Oder eben I2C oder SPI.
Ich hab mir das heute nochmal angeschaut - beim Nano und Leonardo steht wirklich nur eine UART zur Verfügung, die für USB verwendet wird.
Ich habe bisher nur den Mega verwendet und da ist das anders, da stehen mehrere UART´s unabhängig von USB zur Verfügung.
Ich möchte mich dafür bei dir entschuldigen dass ich so einem Schmarrn erzählt habe. Hoffentlich hast du dir nicht schon zu viel Arbeit gemacht.
Wie schon hier kommentiert wäre eine Lösung Softwareseriell per Library einbinden und andere Pins zu nutzen. Im Netz sollte eine solche Softwarelibrary zu finden sein.
Oder eben I2C oder SPI.
Ich habe tatsächlich nachdem ich bemerkt habe dass es nicht funktioniert in einem Discord nachgefragt und jetzt benutze ich tatsächlich Software Serial und es funktioniert ich habe zwar noch ein Problem mit der SD karte aber das sollte auch nicht zu schwer werden.
Dann bin ich ja froh dass es funktioniert. Die SD Card sollte über SPI eigentlich kein Problem sein. Du musst nur beachten dass die SD Card mit 3,3V versorgt wird, man braucht also einen Spannungsregler (LDO) 5V/3,3V.
Die Pegel der Schnittstelle musst du natürlich auch wandeln. Manche machen das mit Widerstands Spannungsteilern, das ist aber nicht empefehlenswert.
Besser ist es einen richtigen Pegelwandler zu benutzen, ich benutze den MAX3392E damit wandelst du MOSI (DO), CLK und CS von den 5V Arduino Pegel auf die 3,3V Pegel der SD Card. Und den MISO (DI) wandelst du von dem 3,3V Pegel der SD Card auf den 5V Pegel des Arduino.
Gibt aber schon fertige SD Cardreader Baugruppen für den Arduino zu kaufen, die den Spannungsregler und den Pegelwandler schon drauf haben. Aber hier drauf achten, dass es wirklich ein Pegelwandler IC ist und nicht nur Widerstands Spannugsteiler.
SD Cardreader haben normalerweise auch einen Schaltkontakt um festzustellen ob die Card richtig gesteckt ist, den Kontakt kannst du ganz normal mit 5V I/O Pin einlesen, der hat keine Verbindung zur SD Card.
Je nach SD Card musst du FAT16 oder FAT32 Formatieren.
Ich verwende ein sd carden modul was schon das ganze installiert hat
Und das "Problem" mit der SD Karte war nur meine Dummheit zu vergessen myFile.open(); hinzuschreiben. Das Projekt ist also fertig und funktioniert einwandfrei.
ganz easy: mit Serial.
TX->RX
RX->TX
GND->GND
schon könne die beiden (und nur diese beiden) mit derselben baudrate unterhalten :)
Verkabelung:
Leonardo Nano
GND <--> GND
TX <--> RX
RX <--> TX
Dann kannst du mit der Serial-Klasse arbeiten.
Würde das nicht die USB Verbindung des Leonardos stören? Dieser ist nämlich auch dauerhaft an einem PC angeschlossen.
Gut, dann nimm halt das hier: https://www.arduino.cc/en/Reference/softwareSerial
Würde das nicht die USB Verbindung des Leonardos stören? Dieser ist nämlich auch dauerhaft an einem PC angeschlossen.