あそびっと

back index next

2015年5月17日
[DCC]

Arduino と DCC/MM2 シールドを使う

asoY5089400-s

左がArduino、右がDCC/MM2シールド、組み合わせてDCCの信号を出す.
Arduinoは「あるといいの」ではなく、アルドゥイーノ.
マイコンと呼ばれる小型の制御用コンピュータで、仕様が標準化され利用が自由なので、世界中で使われている.
バリエーションがいくつかあるが、写真の製品は一般的な「UNO」で、イタリア製、価格は2,940円.
私は 秋月電子の通販で購入した.

Arduinoが心臓部で、これにつなげる機器類をシールドと呼ぶが、写真の右が Desktop Station社の「DCC/MM2シールド」という製品.
日本製で組立キットもあるが、完成品は4,500円.
Arduinoは単体でも働くが、これにつなぐ入出力機器やシールドがないと、手も足も出ないという感じ.
基盤の両側にある穴列は入出力端子で、いろんなものをつなげる、というのがArduinoの特徴である.


asoY5089410-s

ふたつを重ねて接続した状態.
さらにArduinoはUSBケーブルでPCとつなぎ、シールド側には12V3A程度の電源をつなぐ.
この電源は、プラグの形状が合っていれば、市販の2,000円程度の電源アダプターが使える.
Arduino単体はUSBケーブル経由もしくは7〜12V1A程度の電源で動くが、重ねた場合はシールドの電源でArduinoも動く.
上写真のオレンジ/緑色の端子箱から線路にDCC電力を供給する.


●Arduinoの準備

Arduinoを操作するには複数のアプリがあるが、最も基本的なのがIDEという種類のアプリで、
これは、 http://arduino.cc/en/Main/Software/ からダウンロードする.
利用パソコンによって、Windows/Mac OS X/Linuxの3種類がある.
私はMac版を使っている.
解凍すれば「Arduino.app」というアプリがひとつ出てくるので、それを起動すると次の画面になる.

ard04-s

画面はテキストエディタで、ここにArduinoを操作するプログラムを書いてArduinoに書き込む、というのがIDEの基本だ.
Arduinoではこのようなソース・プログラムのことを、スケッチと呼んでいる.
上の初期画面も sketch_may13a.ino というスケッチのひとつだが、動作としては何も起こらない.

ard03-s

MacとArduinoをUSBケーブルでをつなぐと、上のようなアラートが出るが、気にせず「キャンセル」する.

ard01-s

ボードの選択画面で、利用するArduinoの機種を選ぶ.

ard02-s

ポートの選択画面でArduinoがつながったUSBポートを選ぶ.
これでArduinoを操作する準備完了.


●DCC/MM2シールドの準備

この製品には説明書が付属していない.
Desktop Stationのホームページ内に必要な説明はあるのだが、PCで運転操作をするWindowsアプリの名前が「Desktop Station」で、さらにメルクリン・デジタルを制御する機器の情報などが混在していて、とてもわかりにくい.
私のように単にDCCで自動運転したいというニーズに必要なものは、結局「DSGatewayLib」というライブラリだけである.
一番肝心な説明は 「ソフトウェアの準備手順」というページに書いてあるので、ここからたどって「DSGatewayLib」をダウンロードし、解凍したら、
書類/Arduino/libraries/の下にコピーする.
これでDCCを出力する準備完了.


●動かしてみる

asoY5089414-s

上はPC、Arduino+DCC/MM2、線路、電源をつないだ状態.

Arduino.appを起動して、
書類/Arduino/libraries/DSGatewayLib/examples/DSG_LocRun/
の下の DSG_LocRun.ino を開くと、次のスケッチが出てくる.

ard05-s

これは、ロコが加速/減速/停止/逆転/加速/減速をくりかえすサンプルである.
このスケッチ内の、
word aLocAddr = ADDR_MM2 + 3;
を、
word aLocAddr = ADDR_DCC + 3;
に変更し、3は、自分のロコのアドレスに変えておく.

メニュー左上の「∨」マークをクリックすると、IDEが、スケッチが正しいかチェックしてArduino用プログラムファイルを作る、コンパイルという作業をする.
ここでエラーが出る場合は、スケッチの書き方にどこか間違いがある.
次にその右の「→」マークをクリックすると、IDEが、コンパイルしたファイルをArduinoに書き込み、Arduinoが動作を開始する.
するとロコが動く.
USBケーブルを外しても動く.
止めるには、電源ケーブルを抜くか、DCC/MM2シールド基盤上の「EMG」ボタンを押す.

このスケッチの loop()内に、
  Gateway.SetLocoFunction(aLocAddr, 1, 1);
  delay(1000);
  Gateway.SetLocoFunction(aLocAddr, 1, 0);
という3行を加えれば、そこで汽笛が1秒間鳴る.
ロコが自分で走り出して行ったり来たりするのは、人間が運転するのとは違ってとても面白い.

asoY5149480-s

IDEの基本操作を知るためには、Arduinoの入門書を買って読んだほうがいいと思う.
この本の中では、IDEとS4Aという2種類のプログラムアプリを使っているが、私にはIDEのほうが使いやすい.
スケッチのプログラミングになれるには、この本の例題を自分ですこしづつ変更して、コンパイルでエラーが出ないか、実際に思った通りに動くかと、くりかえし試すしかないようだ.

●Arduino、IDE、DCC/MM2で気づいたこと
・IDEから書き込むと、Arduino内のプログラムは全て入れ替わる.
・書き込んだプログラムは、電源を切っても消えない.
・基本的にひとつのプログラムをくりかえし実行するようになっている.
・プログラムを最初からスタートさせるには、電源をOFF/ONするか、Arduino基盤上のリセットボタンを押すか、プログラムを再書き込みする、しかない.
・一時停止機能はない.
・プログラムを止めたい時は、電源ケーブルを抜く.
・PCとUSBケーブルでつなぐか、電源ケーブルを挿すと、記録されたプログラムが即動くので、それが困る場合は、例えばIDEの初期スケッチ(sketch_may13a)を書き込む.
・PCにArduinoがつながっていなくても、IDEでスケッチのコンパイルまではできる.
・DCC/MM2シールド基盤上にある「EMG」ボタンはDCC出力を断にするが、断の間もプログラムは動いていて、「REP」ボタンを押した時点の実行プログラムからDCC出力が戻る.
 REPはReplayのことと思うが、プログラムの途中から戻ることになるので、実際には何が起こるか要注意.

●プログラミングできるDCCコマンド
Desktop Station社の「DSGatewayLib」が提供している関数(コマンド)は、
・DCCのパワーON/OFF Gateway.SetPower()
・ロコの進行方向制御 Gateway.SetLocoDirection()
・ロコのスピード制御 Gateway.SetLocoSpeed()
・ファンクションスイッチの制御 Gateway.SetLocoFunction()
・ポイントの制御 Gateway.SetTurnout()
である.
つまり、CV値の設定といったことを除けば、DCCの基本的な制御はどれもプログラミングできる.
Arduinoは、光センサーや磁気センサーの組み込みが可能なので、これらの入出力デバイスを組み合わせれば、かなり面白いことができる.


back home next