路線バス運転シミュレータ開発記

OMSIを使って路線バスの運転シミュレータを製作しています。備忘録的にゆるーく書いていきたいと思いますので、お付き合いいただければ幸いです。

Arduinoの導入

数年前、運転台コントローラーが技術的に実現できそうか検証するため、KOMSIを使ってArduinoを動かしてみたことがあったのですが、保管してあったものを久しぶりに出して接続したらうまく動作せず、故障してしまったのかとかなり焦りました。
そこで、Arduinoを導入するまでの詳細な手順を以下に記述しておきます。
ちなみに、私が使用しているボードは入出力ピンの多い"Mega2560"という種類のもので、KOMSIでもこれを使う前提で作られているようです。他の種類のボードでKOMSIが動作するかは試したことがないので不明です。

1)以下のページからArduino IDEをダウンロードし、インストールします。
https://www.arduino.cc/en/software

2)USBケーブルでPCとArduinoを接続し、デバイスマネージャーにて正常に認識されるか確認する。このとき、正常に認識されていればCOMポート番号が表示されるのでこの番号をメモしておきます。
なお、このCOMポート番号は別のUSBポートを使用すると変わることがあるので注意が必要です。

3)中国製など互換ボードの場合、別途ドライバをインストールしないと認識しないことがあります。私の場合、以下のサイトのドライバを使用するとうまく動作するようになりました。実はここでかなり行き詰ってしまいボードが故障してしまったのかと思いました。ボードが故障した場合、ブートローダーの書き換えも試してみる価値がありますが、それにはボードが別にもう1枚必要になり、元々1枚しかもっていない私にとっては買い替えるのと大した変わりがありませんでした。ボードを買わずに動いて良かったです。
http://www.wch.cn/downloads/CH343SER_EXE.html

4)KOMSIをダウンロードして展開後、OMSIフォルダの\plugins直下にコピーしてください。なお、pluginsフォルダがないときは作成してください。
http://pulle76.de/

5)ArdinoボードのDigital 53pinとGND pinにLEDと抵抗(220Ω程度)をつなぎます。次に、Arduino IDEを起動して以下のプログラムを打ち込み、ボードにプログラムを書き込みます。

void setup()

{
pinMode(53, OUTPUT);
}

void loop()
{
digitalWrite(53, HIGH);
delay(1000);
digitalWrite(53, LOW);
delay(1000);
}

書き込みが正常に完了すると、ボード上のプログラムが動作し、LEDが点滅するはずですので、これでボードが故障していないか、ドライバに問題がないか確認することができます。

※書き込みがうまくいかない場合、IDEで設定されているボードの種類とCOMポート番号が正しいか確認してください。

※ちなみに、私の場合CH343SER.EXEをインストールしなければならないことをすっかり忘れていて、Arduino IDEに付属している純正のドライバを無理やりインストールして使おうとしましたが、COMポートとしては認識されるもののボードにプログラムを書き込もうとするとエラーになって失敗していました。

6)ボードの動作確認ができたら、KOMSIに付属している"lights_and_servos.ino"というプログラムをボードに書き込みます。このプログラムによって、KOMSI ServerとArduinoとの間で通信が可能になります。

7)任意のDigital pinと+5V pinとの間にLEDと抵抗を直列につなぎます。

8)ボードの書き込みが完了したらKOMSI Server.exeを起動します。ドロップダウンにCOM番号が表示されていますが、一番上のものから順番にArduinoボードに設定されているCOMポート番号と同じ番号にあわせてください。そして、一番下の"indicator lights and gauges"のチェックボックスをONにします。

f:id:poplar1930:20210615043726p:plain

※ここでポートのオープンに失敗したというメッセージが表示されるときは、一旦チェックボックスをOFFにして、すべてのドロップダウンを別のCOMポートに変更してから再度COMポートを設定しなおしてチェックボックスをONにしてみてください。

9)\plugins\Tools\KTT内のKTT.exeを起動して、右側の[Connect]ボタンをクリックします。

f:id:poplar1930:20210615043525p:plain

10)左側のIndicator Lightsにある[all/none]ボタンをクリックするとすべてのチェックボックスにチェックが入るのでこれでLEDが点灯するか確認します。点灯したら、LEDを接続したピン番号のチェックボックスだけOFFにしてLEDが消灯することを確認します。
テストが終わったら[Disconnect]ボタンをクリックして接続を切断しツールを終了します。

以上で、KOMSIを使ってOMSIとArdinoボードを連携させる準備ができました。
実際にOMSIと連携させる例については、別の機会に書きたいと思います。