【DCC】ポイントデコーダーとサウンドデコーダーの複合デバイスを作る

7M4MON 2023/9/1

前置き

以前、Arduinoで鉄道模型の自動運転装置を作ったのですが、その話を職場の鉄道模型好きのおじさんにしたところ、
そりゃDCCでやった方がいいよと、DSAir2と在線検出器、ポイントデコーダー、車両一式を貸してくださいました。
この、DSAir2 という装置は本当によくできていて、スマートフォンのブラウザから複数人で同時に同じ線路の車両をコントロールできるだけでなく、
DSBasic というプログラミング環境が実装されていて、ブラウザから BASIC 言語で自動運転プログラムができる!という代物でした。



しばらく借用品で遊んでいたのですが、ずっと借りておくのもなんなので、公開されている回路図から部品を入手してプログラムを書き込み、ハンドメイドました。

 




首尾よく動作しましたので、気をよくした私は、手持ちの4編成をDCC化 &(電流検知式の)在線検出ができるように車内灯を仕込み、
さらに1両で試験する際に中間車だと微妙なので DE10(暖地型)を購入してDCC 化するなど投資を重ねていきました。


となると、なにか装置を作ってみたくなるのが人情です。調べてみると、「NmraDcc」という業界標準(?)のArduino向けのDCCのライブラリがあって、
これを使うと簡単にデバイスを作れるみたいです。
ということで、車両にスピーカーを搭載して音を鳴らす装置にヒントを得て、駅で使えるようなサウンドデコーダーとポイントデコーダーの複合装置を作ることにしました。


ハードウェア



音源再生は、バスのボタンプラレールのおもちゃで実績のある、DFPlayer Mini を使用。

コマンド入力のフォトカプラは、GP232で使用した、TLP555 を使用。今回の用途では論理が反転している TLP558でも問題ありませんが、
出力ピンとENピンの位置が逆ですので、物理的な置き換えは不可です。

ポイント駆動用のモータードライバは jis-ii-card-spooferrfid_hdx_spooferで使用した、8 pin DIP パッケージの TC4424 を使用。国内で扱っていないのが残念…

この装置単体でポイントを 6個制御できるのですが、足りないときのために、I2C接続の 16bit IOエキスパンダ [MCP23017] で拡張できるようにしました。
このIOエキスパンダはアドレスの組み合わせで8個まで接続できるので、最大で128本のIOが拡張できます。
つまり、本体と合わせて、最大70個のポイントが制御可能となります。
その他、コネクタやらダイオードブリッジやら汎用の電子部品で構成されていて、かかった費用は 3000円くらいだと思います。


ソフトウェア

プログラムの元ネタは、ライブラリの Examples に入っている AccDec_17LED_1Ftn.ino です。
一番下、DCCの何かがデコードされるとコールされる notifyDccAccTurnoutOutput 関数に、適当に処理を入れていきます。
ソースは github に上げましたのでご自由にどうぞ。

感想

DCCは面白いですね。お金はかかりますが…
DesktopStation様ほか、DCCコミュニティを支えている皆様に感謝します。