1つがRxピンとTxピンを介して2つのArduinoUnoボードを接続したとします。次に、Arduinoボードの一方または両方がコンピューターに接続されていて、シリアルモニターが開いている場合、TxピンとRxピンは引き続き機能しますか?つまり、Arduinoはコンピュータと通信しているときにRxピンとTxピンを介して通信しますか?そうでない場合は、コンピュータに接続しているときにそれらを機能させる方法はありますか?
コメント
- USBFTDIチップはTX / RXピンに接続されているため、シリアルが期待どおりに機能しない場合があります。
回答
1つがRxピンとTxピンを介して2つのArduinoUnoボードを接続したとします。
一方のArduinoのTXをもう一方のRXに接続する、またはその逆を行うと仮定します。これは、それらを接続する正しい方法です。Sealionが彼の回答で説明したように、2つのTXピンを一緒に接続しないでください。
Arduinoボードの一方または両方がコンピューターに接続されていて、シリアルモニターが開いている可能性がある場合
そうすると、Arduinoは気付かないでしょう。
もっと正確に言うと、うのに小さなチップがあります。 r「MEGA16U2」というラベルの付いたUSBコネクタ。このチップはUSB /シリアルコンバーターとして使用され、USBリンクを接続したときとポートを開いたときに 通知します。ただし、スケッチを実行するマイクロコントローラーであるメインチップ(大きなPDIP28)は、認識も気にもしません。
TxピンとRxピンまだ機能していますか?
もちろんです。
Arduinoは引き続きRxを介して通信しますコンピュータと通信するときのTxピン?
RXはコンピュータと通信しません。どうなるか:
- Arduinoがシリアルポートに書き込んだものはすべて、他のArduinoとシリアルモニターの両方で受信されます。
- シリアルモニターを介して送信したものはすべて失われます。
-
Serial.read()
を実行すると、他のArduinoによって設定されたものがすべて取得されます。
この動作の理由は1 Mega16U2のTXとメインマイクロコントローラーのRXの間にあるkΩ抵抗。このRXを他のArduinoのTXに接続すると、低インピーダンス(≈2 5 Ω)、そのTXは「勝ち」ます:低インピーダンス出力は高インピーダンス出力を圧倒します。
回答
コンピューターに接続しているときに[2つのArduinoが相互に通信する]を機能させる方法
一方または両方がUSB経由でラップトップコンピューターのシリアルモニターと通信しているときに、2つのArduinoが互いに直接通信するためのさまざまな方法があります。
-
Arduinosが通信するために、USB接続に依存しないUARTを使用します。 ( https://www.arduino.cc/reference/en/language/functions/communication/serial/ を参照)
- ArduinoなどのいくつかのArduino互換ボードMega 2560、Arduino Due、Arduino Uno WifiRev.2などには4つのハードウェアUARTがあります。 Serial1のピン(「1」に注意)は、USBを介したラップトップへのシリアル(「1」なし)UART通信に干渉することなく、別のArduinoと通信するために使用できます。 (残念ながら、Arduino UnoにはハードウェアUARTが1つしかありません。)
- ATmega32u4ベースのArduinoMicroとArduinoLeonardo、および FLORAなどのATmega32u4ベースのArduino派生物および TenesyシリーズなどのARMベースのArduino派生物の多くには、 を使用しないUSBインターフェースがあります。 > UARTピンの;したがって、Serial1のピン(「1」に注意)を使用して、USBを介したラップトップへのシリアル(「1」なし)の非UART通信に干渉することなく、別のArduinoと通信できます(残念ながら、Arduino UnoにはUSBインターフェースがあり、ハードウェアUARTピンのみを使用します。
- Arduino Unoでも、ピンがハードワイヤードされているハードウェアUARTが1つしかありません。 USBインターフェースチップは、他のピンでUARTの遅いシミュレーションをビットバンする可能性があります。すべての違いを'で参照してください。ソフトウェアシリアルライブラリ?Arduino Nanoと互換性があるのはどれですか?。
-
ソフトウェアでUARTをシミュレートしようとするよりも(タイミングはちょっとトリッキーです)、時間に敏感でない他のいくつかを使用する方が簡単/高速かもしれません
回答
まったく同じ問題が発生しました! ArduinoUnoボードとJtagICE mkiiをデバッグに使用していましたが、これはうまく機能していました。私がUARTを使い始めたとき、それはひどい混乱でした。 Arduinoから外部TTL-USBアダプターへの送信は機能していましたが、他の方向では機能していませんでした。このスレッドを見る何時間も前にプレイしたので、シェマティックを調べるアイデアが浮かびました-> Bang!私は2つの抵抗器を見ました。教訓:残りのツールなしでArduinoハードウェアを使用しないでください!迅速な開発のためにハードウェアを使用するのは良い考えだと思いました。今では思ったよりも時間がかかります…
回答
2つのTXピンを一緒に接続しないでください。 Arduinoにはいくつかの保護抵抗がありますが、2つの出力ピンを接続することはお勧めしません。
RX / TXピンを直接使用する唯一の節約方法は、保護抵抗(リファレンスデザインのRN4AとRN4B)を取り外すことです。 )または少なくともRN4Aで、一度に1つの接続のみを使用します。PC接続を使用しない場合、またはピンがまだ出力であるためシリアルモニターを開かない場合は役に立ちません。
(複数のRXピンは入力であるため問題ありません)
(もちろん、ほとんどの場合、複数のTXピンを一緒に使用できることはわかっていますが、お勧めします)