プラレールのマスコンをDSJoyにつなぐ検討(その2) [S88]
さて、5/3はプラレールのマスコンをDSJoyにつなげるべく秋葉原に行ってフォトトランジスタを物色しました。どう考えても、通販のほうが安いしゆっくり見られるのですが、まあ、せっかくの連休ですし。
で、いくつか買ってみました。
(1)フォトトランジスタ3mm丸型 L-31ROPT1C
(2)赤外線リモコン受信モジュール SPS-444-1(38kHz)
(3)赤外線リモコン受信モジュールPL-IRM1261-C438
まずは安直に(1)フォトトランジスタを使ってマスコンの受信実験です。・・・・素人にはだめですね。わかったことは、5V→抵抗(1kΩ)→Arudino In→フォトトランジスタ→GNDというつなぎ方では、全く信号が取れないという悲しい事実でした。リモコンから10mmていど離したらもうだめかなあということでした。
で、(2)赤外線リモコン受信モジュールの資料を確認すると、2ページ目、Transmitterの項目で38KHzの搬送はローバスフィルターで平滑しつつ、トランジスタで増幅しているような回路図があります。(いや、そんなことも知らずに今まで実験してました・・・。)
ネットで調べると、赤外線リモコンの通信フォーマット説明があります。ふーん。
そして、Arduinoには簡単につながるようです。
第23回 Arduinoでパーツやセンサーを使ってみよう~赤外線リモコン(前編)
ということで、このページのまんまでArduino Unoと赤外線リモコン受信モジュールをつなげることにしました。VCC(5V)とGNDをそれぞれ繋ぎ、VoutはA1に繋いでいます。なお今回Voutのノイズがひどく、VCCとGNDに0.1uFのパスコンを入れて直りました。
ライブラリもページのまんまを使います。
Arduino-IRremote
で、プラレールマスコンの信号はテレビのリモコンとは波形が少々異なるようですが、このライブラリのIRrecvDumpというサンプルでそのまま受信できましたので、何も考えずにこれで行くことにします。
こちらが適当に作った受信のスケッチです。
コンパイル時に注意があって、(ライブラリの所にも説明ありますが)
Make sure to delete Arduino_Root/libraries/RobotIRremote. Where Arduino_Root refers to the install directory of Arduino. The library RobotIRremote has similar definitions to IRremote and causes errors.
とのことで、Arduino_Root/libraries/RobotIRremoteとバッティングしてコンパイルできません。消せばコンパイルできます。(私はRobotIRremoteを使ったことありませんので特に躊躇しませんでした)
プラレールのマスコンとプラレールアドバンスのマスコンに対応していて、results.valueの値でどのボタンが押されているかを判断してシリアルに送信するだけです。results.valueがどうしてこのような値を取るかについてはライブラリの中身がよくわからなかったので、全く見ておりません。
このソフトをちょっと改変して、DesktopStationのシリアルコマンドにしてしてDSoneなどに送れば、そのまま電車を操作させることも可能かと思いますし、適当にPWMに変換してやればアナログ電車をプラレールマスコンで操作させるのも可能かと思います。
で、今回の目的はDSJoyに乗せますので、後はこれをDSJoyプロトコルにつなげれば出来上がりです。ということで、今度のつなぎも先ほど同様で、S88 Mascon基板のA1とVCCとGNDを赤外線リモコン受信モジュールに繋ぎます。
で、こちらがS88 Plarail Masconスケッチです。(毎度のことながら、つなげるためだけで作ったのでかなり汚いです。)よく考えるとS88 Mascon基板はボタンすらないため、Loco番号すら変えられません・・・。SPI関連のポートが余っているので、そちらに移動させるか、S88 Analog基板用に作り直すか・・・。
一応、S88 Mascon基板でプラレールアドバンスのコントローラが動きますよという動画です。
で、いくつか買ってみました。
(1)フォトトランジスタ3mm丸型 L-31ROPT1C
(2)赤外線リモコン受信モジュール SPS-444-1(38kHz)
(3)赤外線リモコン受信モジュールPL-IRM1261-C438
まずは安直に(1)フォトトランジスタを使ってマスコンの受信実験です。・・・・素人にはだめですね。わかったことは、5V→抵抗(1kΩ)→Arudino In→フォトトランジスタ→GNDというつなぎ方では、全く信号が取れないという悲しい事実でした。リモコンから10mmていど離したらもうだめかなあということでした。
で、(2)赤外線リモコン受信モジュールの資料を確認すると、2ページ目、Transmitterの項目で38KHzの搬送はローバスフィルターで平滑しつつ、トランジスタで増幅しているような回路図があります。(いや、そんなことも知らずに今まで実験してました・・・。)
ネットで調べると、赤外線リモコンの通信フォーマット説明があります。ふーん。
そして、Arduinoには簡単につながるようです。
第23回 Arduinoでパーツやセンサーを使ってみよう~赤外線リモコン(前編)
ということで、このページのまんまでArduino Unoと赤外線リモコン受信モジュールをつなげることにしました。VCC(5V)とGNDをそれぞれ繋ぎ、VoutはA1に繋いでいます。なお今回Voutのノイズがひどく、VCCとGNDに0.1uFのパスコンを入れて直りました。
ライブラリもページのまんまを使います。
Arduino-IRremote
で、プラレールマスコンの信号はテレビのリモコンとは波形が少々異なるようですが、このライブラリのIRrecvDumpというサンプルでそのまま受信できましたので、何も考えずにこれで行くことにします。
こちらが適当に作った受信のスケッチです。
コンパイル時に注意があって、(ライブラリの所にも説明ありますが)
Make sure to delete Arduino_Root/libraries/RobotIRremote. Where Arduino_Root refers to the install directory of Arduino. The library RobotIRremote has similar definitions to IRremote and causes errors.
とのことで、Arduino_Root/libraries/RobotIRremoteとバッティングしてコンパイルできません。消せばコンパイルできます。(私はRobotIRremoteを使ったことありませんので特に躊躇しませんでした)
プラレールのマスコンとプラレールアドバンスのマスコンに対応していて、results.valueの値でどのボタンが押されているかを判断してシリアルに送信するだけです。results.valueがどうしてこのような値を取るかについてはライブラリの中身がよくわからなかったので、全く見ておりません。
このソフトをちょっと改変して、DesktopStationのシリアルコマンドにしてしてDSoneなどに送れば、そのまま電車を操作させることも可能かと思いますし、適当にPWMに変換してやればアナログ電車をプラレールマスコンで操作させるのも可能かと思います。
で、今回の目的はDSJoyに乗せますので、後はこれをDSJoyプロトコルにつなげれば出来上がりです。ということで、今度のつなぎも先ほど同様で、S88 Mascon基板のA1とVCCとGNDを赤外線リモコン受信モジュールに繋ぎます。
で、こちらがS88 Plarail Masconスケッチです。(毎度のことながら、つなげるためだけで作ったのでかなり汚いです。)よく考えるとS88 Mascon基板はボタンすらないため、Loco番号すら変えられません・・・。SPI関連のポートが余っているので、そちらに移動させるか、S88 Analog基板用に作り直すか・・・。
一応、S88 Mascon基板でプラレールアドバンスのコントローラが動きますよという動画です。
2017-05-04 20:57
コメント(0)
トラックバック(0)
コメント 0