ArduinoとRS-232を接続する

Arduinoと他の機器とのシリアル通信にRS-232しか使えない場合、ピン#0と#1を使える。ただし、Arduinoは0/+5V(0V = 0; +5V = 1)、RS-232は±3V〜±15V(-3V以下 = 1; +3V以上 = 0 )と電圧が異なるので、ピン同士を結線するだけでは信号が伝わらない。Arduinoを破損するおそれもあるRS-232トランシーバというチップを使うと、この電圧の違いを変換できる。

スクリーンショット 2016-05-26 08.37.16
シールドとして実装

RS-232トランシーバには、電源電圧、変換できる回路の数、外部キャパシタの要不要、端子の形状、最大スピードなどの違いで多種ある。下は2回路の製品:

  • 外部キャパシタ要:MAX202(5V)、MAX232(3.3/5V)
  • キャパシタ内蔵:MAX203(5V)、MAX233(3.3/5V)

MAX232/233は3.3Vに最適化されているので、5VならMAX202/203のほうがよい。キャパシタは積層セラミックコンデンサなど。

RS-232に使われるDB-9端子とArduinoとの接続にはCisco コンソールケーブル(または互換品)を使ってRJ-45に変換するのが便利。MAX202/3のToutにRS-232CのTXを、RinにRS-232のRXをつなぐ。またTXとRXとをクロスさせず、ストレート結線にする。すなわち、コンソールケーブルのRJ-45端からArduinoまでの結線は次の通り:

  • RJ-45 #3 (TX) – MAX202/3 T1out –  T1in – Arduino #1 (TX)
  • RJ-45 #6 (RX) – MAX202/3 R1in – R1out – Arduino #0 (RX)

Arduinoのピン#0/#1に常時結線されているとUSBポートが無効になり、スケッチのインストールができなくなる。そのため、ピン#0/#1の手前に2回路のオルタネートスイッチを入れて切断できるようにする。

通信制御は8-N-1

同様の機能を提供する市販のアダプタやシールドもある。