RS232/UARTによるHDMIスイッチの制御

問題:

私はRS232経由で制御可能なHDMIスイッチを持っています

  • Scenario 1:
    • Setup: PC connected to HDMI switch using USB -> serial adapter
    • Test: Opening PuTTY on COM port and sending command "sw i01" from my PC
    • Results: HDMI switch input changes to port 1 [Good]
  • Scenario 2:
    • Setup: Arduino UART port connected to TTL->RS232 adapter connected to serial->USB adapter connected to PC with PuTTY program open on COM port
    • Test: Sending command "sw i01" from Arduino to PC using code below
    • Results: "sw i01" prints repeatedly on the Putty terminal [Good]
  • Scenario 3:
    • Setup: Arduino UART port connected to TTL->RS232 adapter connected to HDMI switch serial port
    • Test: Sending "sw i01" from Arduino repeatedly to HDMI switch using code below
    • Results: HDMI port does not switch from port2 to port1 [Bad]

ハードウェア:

コード:

[注意:Galileo Gen 2はUART通信にSerial1が必要です]

void setup() {
    Serial1.begin(19200);
}

void loop() {
    Serial1.print("sw i01");
    Serial1.write(13);   //CR
    Serial1.write(10);   //LF
    delay(1000);
}

質問:

It seems like Scenario 1 and 2 confirm that the Arduino->HDMI switch communication should work, but it doesn't. Am I missing something regarding physical connectivity? Does manually typing "sw i01" in PuTTY send different commands than I have in the Arduino code?

1
追加された 編集された
ビュー: 1
私はあなたがそれが物理的にどのようにつながっているかは分かりません。それが間違っているかどうかはわかりません。それは本当にうまくいくはずです。しかし、あなたは正確な正しい設定とおそらく(私が間違っている場合は私が正しい)uart < - > RS232コンバータが必要になります。
追加された 著者 dotnetengineer,
RxラインとTxラインの反転が何かをしているかどうか確認したいかもしれません。しかし、あなたが行ったテストから判断すると、違いはありません。最悪のケースでは、オシロスコープを試して、実際のサンプルと実際に動作していないサンプルの実際の電気出力を比較することができます。 CR + LFが必要ですか?たぶんあなたのパテ設定はLFを送信するだけです(その理由のために動作します)
追加された 著者 dotnetengineer,
どのようにこれを接続しましたか?
追加された 著者 Mikael Patel,
@MikaelPatel上記の説明を編集して、各シナリオごとにすべてのものをどのように接続したかについて説明しました。私が何かをより明確にする必要があるかどうかを教えてください。ありがとう!
追加された 著者 spoon,
@Paul上記の説明を編集して、各シナリオごとにすべてのものをどのように接続したかを含めました。私が何かをより明確にする必要があるかどうかを教えてください。ありがとう!
追加された 著者 spoon,

2 答え

お使いのHDMIスイッチャーとUSB to RS-232コンバータは、RS-232に対応しています。 ArduinoはTTL UARTを話します。

それらの背後にあるコンセプトとデータの全体的なフォーマットは同じですが、大きな違いがあります。

  • RS-232は±10V NRZシグナリング方式、TTL UARTは0-5Vシグナリング方式を使用します。
  • RS-232はTTL UARTに比べて逆論理を使用します

つまり、ArduinoのTTL UARTを逆ロジックの±10V NRZに変換して、IOGearと通信する必要があります。

幸いにも、これは特別なインターフェースチップを使用した簡単な作業です。これらはすぐに利用可能で、あなたが好きな場合は、ブレークアウトボードや完全なシールドとして少量買うことができます(これはSparkfunのものです)。チップは最も一般的な形式の MAX232 として知られていますが、他のメーカーでは異なる文字を使用している可能性があります。

あなたがeBay(またはあなたの好きな予算の売り手サイト)をポップし、 "Arduino MAX232 DB9"(DB9が9ピンDコネクタのボードのプラグのタイプ)を検索する場合、あなたは選ぶべきたくさんのヒットを得るでしょう。

1
追加された
Majenko、あなたは質問の「Galileo UARTに接続されたSparkFun RS232/TTLシフター」を読んだのですか?
追加された 著者 Martin C. Martin,
いいえ。それを逃した。
追加された 著者 Majenko,
@ jwpat7とMajenko、上記の説明を編集して、各シナリオごとにすべてをどのように接続したかについて説明しました。私が何かをより明確にする必要があるかどうかを教えてください。ありがとう!
追加された 著者 spoon,

私はそれが物理的な接続に関連していたことがわかった!

シナリオ3では、私はもともとSparkfun TTL/RS232アダプタを使用していましたが、オス/オスのシリアルケーブルを使用してHDMIスイッチメスDB9コネクタにメスDB9コネクタを接続していました。私が買ったシリアルケーブルはストレートケーブルであった。

私はヌルモデムケーブルでそれを交換し、それはすぐに働いた。

結線図を見ると、SparkfunアダプタのTx/Rxピンを交換すると、ヌルモデムケーブルと同じ結果が得られたようですが、明らかにそうではありませんでした。

なぜヌルモデムケーブルが違いを生み出したのかを誰かが指摘できれば、それは未来のことを知っておくと良いことになるでしょう。

0
追加された