Arduino で Nゲージコントロールを!(I2C篇) A2-1

TOMIX がDCCではなく外部環境(ギャップ&センサー)だけで列車をコントロールするシステムTNOSを販売しようとしています。

ま、これを自作しようという話です。

Arduino鉄道模型をDCCコントロール」する人がいますが、そのどれもが車輛を直接コントロールする海外で主流のDCCタイプのようです。
これって、小さなNゲージでやるには回路を車輛内に収納が大変そうで、また、未対応車輛との混在もややこしそうで・・・TOMIXと同じくギャップコントロール方式で考えています。

このコントローラはいくつかの選択肢がありますが、Arduino を考えています。
(選択肢としてはPICもありますが…)

コントロールするのは、
・車輛
 ・マスコン
 ・走行コントロール
・ポイント
・照明
あたりかなぁ~?

これだけコントロールするのに、Arduino MEGAを使うといっても、
 デジタルI/Oピンは 54本 (内15ピンはPWM出力可能)
 アナログ入力ピンは 16本
しかないので、これも難しい。

となるとI2C の master-slave 機能で複数Arduino  をコントロールするしかない、ってことになり、それはまさにTOMIX のような分散システムになるってことです。
I2Cを使うと、それぞれのコントローラは、2本の信号線だけで済むし、配線引き回しとしては、これに電源、GNDを合わせて4本で済むので、レイアウトの引き回しとしてもお手軽です。


というわけで、Arduino のI2Cのお勉強をば。I2C通信フォーマットは
①write:slave addr - regster addr - data
②write:slave addr - regster addr - data - data - ...
③read :slave addr - regster addr - read regster addr - data
④read :slave addr - regster addr - read regster addr - data - data - ....
の4つのフォーマットからなります。
slave address は、7bit(1~127) の 127個が利用できます。
(0 はマルチキャスト送信:Arduinoのライブラリは未サポートらしい)
ArduinoによるLCD表示は、この機能を使って実現されています。
I2C通信は、standard modeで100kbps、fast mode で 400kbps、fast mode plus 1Mbps、High-speed mode で3.4Mbpsが利用できます。
市販のLCDやセンサーを使おうとすると、100kbpsのstandard modeしか選択肢はありません。
100kbpsってことは 1bit は10μsであり、①の処理時間は8bix3byte=24bit+αで約300μsほど、つまり 0.3ms です。これくらいなら、20個くらいの車輛は余裕でコントロールできそうです。
この I2C を使って、それぞれをコントロールすることにしましょうかね。
とか考えてるんですが、なんかストーリーが破綻してる気がしなくもない・・・ 


そんなこんなで、書庫に「模型(A: Arduino)」を追加してみた。。。
充実する書庫になるかな?(^^;