Wenn Arduino mit dem Computer verbunden und den seriellen Monitor geöffnet hat, funktionieren Tx- und Rx-Pin weiterhin?

Angenommen, eine der beiden Arduino Uno-Karten ist über Rx- und Tx-Pins verbunden. Wenn dann eine oder beide der Arduino-Karten mit dem Computer verbunden waren und möglicherweise serielle Monitore geöffnet wurden, funktionieren Tx- und Rx-Pin weiterhin? dh wird Arduino weiterhin über Rx und Tx-Pin kommunizieren, wenn es mit dem Computer kommuniziert? Wenn nicht, wie sie funktionieren, während eine Verbindung zum Computer hergestellt wird?

Kommentare

  • Der USB-FTDI-Chip ist mit den TX / RX-Pins verbunden. Daher funktioniert die serielle Verbindung möglicherweise nicht wie erwartet.

Antwort

Angenommen, eine der beiden Arduino Uno-Karten ist über Rx- und Tx-Pins verbunden.

Ich gehe davon aus, dass Sie den TX eines Arduino mit dem RX des anderen verbinden und umgekehrt. Dies ist der richtige Weg, um sie zu verbinden. Wie theSealion in seiner Antwort erklärt hat, sollten Sie nicht zwei TX-Pins miteinander verbinden.

wenn eine oder beide der Arduino-Karten mit dem Computer verbunden waren und möglicherweise serielle Monitore geöffnet wurden

Wenn Sie das tun, wird der Arduino es nicht einmal bemerken.

Um genauer zu sein … es gibt einen kleinen Chip auf dem Uno, nea r den USB-Anschluss mit der Bezeichnung „MEGA16U2“. Dieser Chip wird als USB / Seriell-Konverter verwendet und wird bemerkt, wenn Sie die USB-Verbindung anschließen und den Port öffnen. Der Hauptchip (der große PDIP28), der der Mikrocontroller ist, auf dem Ihre Skizze ausgeführt wird, weiß es jedoch nicht und kümmert sich auch nicht darum.

wird Tx- und Rx-Pin funktioniert es noch?

Absolut.

kommuniziert Arduino weiterhin über Rx und Tx-Pin, wenn mit dem Computer kommuniziert wird?

Der RX kommuniziert nicht mit dem Computer. Was passiert, ist:

  • Was auch immer Ihr Arduino an seine serielle Schnittstelle schreibt, wird sowohl vom anderen Arduino als auch vom seriellen Monitor empfangen.
  • Was auch immer Sie über den seriellen Monitor senden, geht verloren.
  • Wenn Sie Serial.read(), erhalten Sie alles, was vom anderen Arduino festgelegt wurde.

Der Grund für dieses Verhalten ist eine 1   kΩ-Widerstand, der sich zwischen dem TX des Mega16U2 und dem RX des Hauptmikrocontrollers befindet. Wenn Sie diesen RX mit dem TX des anderen Arduino verbinden, der eine niedrige Impedanz aufweist (≈ 2) 5   Ω), dass TX „gewinnt“: Ein Ausgang mit niedriger Impedanz überwältigt einen Ausgang mit hoher Impedanz.

Antwort

Wie können [zwei Arduinos, die miteinander kommunizieren] funktionieren, während eine Verbindung zum Computer hergestellt wird?

Es gibt verschiedene Möglichkeiten für 2 Arduinos, direkt miteinander zu kommunizieren, während einer oder beide über USB mit dem seriellen Monitor eines Laptops kommunizieren.

  • Verwenden Sie einen UART für die Arduinos, um unabhängig von der USB-Verbindung zu kommunizieren. (Siehe https://www.arduino.cc/reference/en/language/functions/communication/serial/ )

    • Mehrere Arduino-kompatible Boards wie das Arduino Mega 2560, Arduino Due, Arduino Uno Wifi Rev.2 usw. verfügen über 4 Hardware-UARTs. Die Pins von Serial1 (beachten Sie die „1“) können verwendet werden, um mit einem anderen Arduino zu kommunizieren, ohne die serielle (ohne „1“) UART-Kommunikation über USB mit einem Laptop zu stören. (Leider verfügt das Arduino Uno nur über 1 Hardware-UART.)
    • Die auf Arduino Micro und Arduino Leonardo und ATmega32u4 basierenden Arduino-Derivate auf ATmega32u4-Basis wie FLORA und viele der ARM-basierten Arduino-Derivate wie die Teensy-Serie verfügen über eine USB-Schnittstelle, die keine der UART-Pins, sodass die Pins von Serial1 (beachten Sie die „1“) verwendet werden können, um mit einem anderen Arduino zu kommunizieren, ohne die serielle (ohne „1“) Nicht-UART-Kommunikation über USB mit einem Laptop zu stören. (Leider Das Arduino Uno verfügt über eine USB-Schnittstelle, an der nur seine einzigen Hardware-UART-Pins verwendet Der USB-Schnittstellenchip kann eine langsame Simulation eines UART an anderen Pins bit-knallen. Siehe Was ' ist der Unterschied zwischen allen Welche sind Arduino Nano-kompatibel? .
  • Anstatt zu versuchen, einen UART in Software zu simulieren (das Timing ist etwas schwierig), kann es einfacher / schneller sein, andere weniger zeitkritische zu verwenden Kommunikationswege zwischen Arduino Unos oder anderen Arduinos, wie z. B.

  • Antwort

    Ich habe genau das gleiche Problem! Ich habe das Arduino Uno-Board mit einem Jtag ICE mkii zum Debuggen verwendet, was gut funktioniert hat. Als ich anfing, den UART zu benutzen, war es ein schweres Durcheinander. Die Übertragung von Arduino zu einem externen TTL-USB-Adapter funktionierte, jedoch nicht in die andere Richtung. Ich habe Stunden gespielt, bevor ich diesen Thread gesehen habe, und das brachte mich auf die Idee, in den Schaltplan zu schauen – > Bang! Ich habe die beiden Widerstände gesehen. Lektion gelernt: Verwenden Sie die Arduino-Hardware nicht ohne die restlichen Tools! Ich dachte, es wäre eine gute Idee, die Hardware für eine schnelle Entwicklung zu verwenden. Jetzt kostet es mich mehr Zeit, als ich dachte …

    Antwort

    Sie sollten nicht zwei TX-Pins miteinander verbinden Arduino verfügt über einige Schutzwiderstände, es wird jedoch nicht empfohlen, zwei Ausgangspins anzuschließen.

    Die einzige sichere Möglichkeit, die RX / TX-Pins direkt zu verwenden, besteht darin, die Schutzwiderstände (RN4A und RN4B im Referenzdesign) zu entfernen ) oder zumindest den RN4A und verwenden Sie jeweils nur eine Verbindung. Es hilft nicht, wenn Sie die PC-Verbindung nicht verwenden oder den seriellen Monitor nicht öffnen, da die Pins immer noch ein Ausgang sind.

    (Mehrere RX-Pins sind kein Problem, da sie Eingänge sind)

    (Und natürlich weiß ich, dass es die meiste Zeit mit mehreren TX-Pins zusammen funktionieren könnte, aber ich würde es empfehlen)

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.