パソコンで鉄道模型を制御するための基礎検討(3)
有線接続用ハードウェア (USBシリアル変換)
無線接続が本命ですが、無線よりも簡単に使える有線接続のUSBシリアル変換も保険として用意しました。
私は他の用途にも使えるように5V/3.3VのI/O電圧が切り替えられる下記AE-TTL-232RQ(キット)を購入しました。
2023/7/12現在キットは在庫切れになってしまったようですが、ソケット付きは購入できるようです。
AE-TTL-232RQ (ソケット付,USB-MicroBコネクタ)
AE-TTL-232RQ (キット,USB-MicroBコネクタ)
2023/7/12現在キットは在庫切れになってしまったようですが、ソケット付きは購入できるようです。
AE-TTL-232RQ (ソケット付,USB-MicroBコネクタ)
AE-TTL-232RQ (キット,USB-MicroBコネクタ)
今回は接続先のPICマイコンの電圧が5Vなので下記でも同様に使えると思います。
CH340E USBシリアル変換モジュール (USB Type-Cコネクタ)
ノイズ対策として、接続に使う配線はツイステッドペアケーブル(GNDと信号線の2本を撚り合わせたもの)にすると良いでしょう。
CH340E USBシリアル変換モジュール (USB Type-Cコネクタ)
ノイズ対策として、接続に使う配線はツイステッドペアケーブル(GNDと信号線の2本を撚り合わせたもの)にすると良いでしょう。
もし変換回路を内蔵したDSUB9ピンコネクタ付きのUSBシリアル変換ケーブルを使う場合はインターフェイス電圧がRS-232C仕様であることに注意が必要です。
マイコンチップに接続するにはマイコン側にRS232CインターフェースIC (例:MAX232EN とか ADM3203ANZ)を追加します。
その場合、DSUB9ピンとRS232CインターフェイスIC間の配線の信号電圧振幅は通常±6~12Vと大きくなるので配線距離が伸ばせます。
あとAmazonなどで検索すると千円前後の安いUSBシリアル変換ケーブルがたくさんありますが、安いものはオシロスコープで確認するとマイナス側の出力電圧が小さくて通信の相性問題が出たり、ノイズに弱く通信距離が伸ばせないなどのトラブルが出やすいようです。
きちんとRS232C対応しているものは3000円~4000円の値段になるようです。
マイコンチップに接続するにはマイコン側にRS232CインターフェースIC (例:MAX232EN とか ADM3203ANZ)を追加します。
その場合、DSUB9ピンとRS232CインターフェイスIC間の配線の信号電圧振幅は通常±6~12Vと大きくなるので配線距離が伸ばせます。
あとAmazonなどで検索すると千円前後の安いUSBシリアル変換ケーブルがたくさんありますが、安いものはオシロスコープで確認するとマイナス側の出力電圧が小さくて通信の相性問題が出たり、ノイズに弱く通信距離が伸ばせないなどのトラブルが出やすいようです。
きちんとRS232C対応しているものは3000円~4000円の値段になるようです。
PICマイコンに直接接続できないUSBシリアル変換ケーブル
ループバック通信テスト用PC側ソフトウェア (Python)
パソコン上で実行するループバック通信テストプログラムをpythonで作成しました。
ループバックテストの手順は以下の通りです。
【準備】
・python(3.5系)がインストールされていなければ検索、ダウンロードしてインストールする。
・シリアル通信モジュールがまだ追加されていない場合は、コマンドプロンプトまたはpowershcellのウィンドウを開いて以下のコマンドで追加する。
pip install pyserial
・下記の2つのプログラムをダウンロード(右クリックして名前を付けて保存)する。
get_COM_port.py
USB_Serial_loop_test.py (2023/12/18に通信速度を57.6Kbaudに変更)
ループバックテストの手順は以下の通りです。
【準備】
・python(3.5系)がインストールされていなければ検索、ダウンロードしてインストールする。
・シリアル通信モジュールがまだ追加されていない場合は、コマンドプロンプトまたはpowershcellのウィンドウを開いて以下のコマンドで追加する。
pip install pyserial
・下記の2つのプログラムをダウンロード(右クリックして名前を付けて保存)する。
get_COM_port.py
USB_Serial_loop_test.py (2023/12/18に通信速度を57.6Kbaudに変更)
・プログラムを置いたフォルダでpowershcell(shift+右クリックで選択)またはコマンドプロンプトを開く。
・USBシリアル変換基板をUSBケーブルでパソコンに接続する前と後でPython get_COM_port.pyを実行し、結果を比較して追加されたCOMポート名を確認する。
・USBシリアル変換基板をUSBケーブルでパソコンに接続する前と後でPython get_COM_port.pyを実行し、結果を比較して追加されたCOMポート名を確認する。
【ループバックテスト実行】
・USBシリアル変換基板のTx端子とRx端子を接続し、USBケーブルでパソコンに接続する。
・powershcellまたはコマンドプロンプトのウィンドウでループバックテストプログラムを起動する。
その際、コマンドライン引数として上記で調べたCOMポート名を付加する。
python USB_Serial_loop_test.py COM数字
・ライン入力 = 任意のキー入力+[Enter] で動作確認する。
・[Enter]のみ入力でプログラムが終了する。
・USBシリアル変換基板のTx端子とRx端子を接続し、USBケーブルでパソコンに接続する。
・powershcellまたはコマンドプロンプトのウィンドウでループバックテストプログラムを起動する。
その際、コマンドライン引数として上記で調べたCOMポート名を付加する。
python USB_Serial_loop_test.py COM数字
・ライン入力 = 任意のキー入力+[Enter] で動作確認する。
・[Enter]のみ入力でプログラムが終了する。
Pythonライブラリを使ったパソコン側のシリアル送受信プログラムはシンプルです。
PICマイコンやArduino基板などはシリアル通信機能(UARTとかEUSART)を内蔵しているのでマイコン側の送受信プログラムも簡単です。
ですのでループバックの代わりにPICなどのマイコンチップを接続し仲介させれば、模型に限らずパソコンから自作回路を制御したり、センサー値を取り込むプログラミングが楽に行えます。