SSブログ

DSAir2用に適当な電車でGo!のUSBスロットルを作る [DSAir]

 さて、前回に続いて、今度は、DSAir2用のUSBスロットルの中で、電車でGo用を作ります。
 電車でGo用のスロットルですが、おそらく、現状で、DSAir2に繋ごうとすると以下が考えられます。
1、S88のDSJOYプロトコルを使った方法(S88部分にS88_Masconとかをつなぐ)。未検証らしい。(私も未検証)
2、ESP32経由でDSAirに直接命令を送る方法。(あやのさん)
3、OneCoinController(あやのさんPS版)のマイコンをArudinoNanoからArudinoMicroに換装して、適当にスケッチも変えて、スマホに繋ぐ。(これでやってしまえれば、今回私がやっているのとまったく同じものができます)
辺りだとは思います。
 で、今回は、DSAir2のWebアプリのKeyboardに適当なテキストを送って、動かすという方法を試してみます。上記方法とのコンセプトの大きな違いは、スピードメーターを近くに置く。、電車でGo!コントローラを使うのに、タブレットのバッテリーを使うため、電源要らず。(何分持つのか知らないけど)ぐらいでしょうか?
 やらなければいけないことは、
1.PS2コネクタとArduinoProMicro(700円ぐらい)を買ってきてつなぐ。(ArduinoMicroは高価(2000円)なので却下)。ファンクションはタッチパネルから操作したいので、10インチぐらいのタブレットも買っておく。(PCでもOK)
2.適当なスケッチをつくる。
3.DSAir2のWebアプリを改造して、スピードを絶対値で入れられるようにする。
4.必死にデバッグする。
5.余力があったら、基板化する。

1、<材料をそろえて、組み立て。>
 まずは材料です。PS2コネクタは昔買ったS88_Mascon用があるので、それを使います。2.54mmピッチ変換基板もパネライズして注文したら、一生分あるので、何の問題もありません。気軽に調達したい人はあやのさんの頒布が良いかと思います。ArduinoProMicroは安いものがaitendoに売っています。高級なものが欲しい方はスイッチサイエンスでどうぞ。
 あとは、ブレッドボードとジャンパピンですが、秋月に行けば、沢山あると思います。
部品は勢ぞろいでこんな感じです。
re_DSC02883.jpg

 で、これをつなぎます。写真で言うとこんな感じです。
re_DSC02886.jpg

 図面ではこうです。(6本線をつなぐだけなのでスカスカです)
Mascon2kbd_K0.PNG

2.<スケッチを作る>
 今回、あまり考えずにArduinoスケッチ側で、加速や減速をしたときのスピードを計算して、その絶対値のスピードをDSAir2のWebアプリに送るようにしました。DSAir2用のウェブアプリにはスピードを絶対値で受け取る機能はないため、適当にプロトコルを決めました。

 PXXXX:XXXXは0~1023で文字です。値が変わったときは約0.2秒のインターバルで送られます。

 最初は、SHIFT,CTRL,ALTとの複数組み合わせ+キーコードを考えたのですが、どうも、PCでデバッグをすると、どの組み合わせでも不思議なポップアップや、Window消えなどが発生するため、やめました。今後どういうショートカットが登場するかもわかりませんし。次に、掲示板のほうでやすひろさんがおっしゃっていたマウスを使う方法については、私がWebアプリのJavaScriptのマウス部分の扱いがよくわかっていないので、今回は上記の複数文字による方法にしました。
 で、昔のS88_Masconや少し前のUSBスロットルを見ながら、スケッチを作りました。こちらです。
 なお、動作ですが、
・StartキーはFWD,REVの切り替え(”Z”キー)
・SelectキーはF0(”0”キー)
・AボタンはF1("1"キー)
・BボタンはF2("2"キー)
・CボタンはF3("3"キー)
スケッチを見れば簡単に変更できますので、気に入らない方は変えていただければと思います。

3.<Webアプリの改造部分はKeyboard.js>
 かなり汚い。ベタ書きですが、きっといつか誰かが美しくしてくれるでしょう・・・。変更はR2n TEST版から、keyboard.jsに少し追記しただけのこちらです。(Analogのほうは追記していないので動きません。改造はほぼ同じで行けると思いますが)

4.デバッグは結構大変でした。そして、毎度のことながら、電車でやらずにデコーダ開発ボードでやってしまいました。
re_DSC02887.jpg

 そして、Black Fridayで10インチぐらいのAndroid TabletがAmazonで10000円ちょっとで売っていたので衝動買いしてみました。1920*1200の解像度で液晶はとても見やすいです。なおYoutubeで1080pは処理落ちして、まともな動画は見られませんでした。720pでどうにかという感じですが、DSAir2のタッチパネルとしては申し分ありません。
re_DSC02884.jpg

 今回OTGケーブルは、少し前にRaspiZero用に買ったBuffaloのUSBHubを使用しました。問題なく使用できました。やっていませんが、このHubにFullキーボードを挿したら、ファンクションとかも使えるかしら?
 で、まあ、せっかくなので、動画です。デコーダはOpenSoundのMT54の近郊型です(操作方法が間違っているかもですが)。なお、スピードメーターがわりと滑らかに動いているあたりが見てほしい所です。(最初の1分ぐらいはスロットル動かしていません)
 こうなると、次は、スピードメーターのスキンをいじりたくなってくるんですよね。(昔作った奴を入れ込み直すだけだし。多分。


5.<基板化>
 基板のガーバーまで作りましたが、アクリルケースを作っているところで、力尽きたので、また今度考えようかと思います。部品は基板も入れて、驚異の3点です。
無題.png




コメント(1) 

適当なDSAir2用のUSBスロットルを作ってみる。 [DSAir]

 一か月ぶりの更新になります。あまり、鉄道模型のことをしていなかったりしますが。近頃、「蜜蜂と遠雷」の小説を読みました。ピアノコンクールの話ですが、話の構成が昔の少年ジャンプの愛と友情の漫画(ドラゴンボールとか?)と全く一緒で、読みやすくてとても面白かったです。映画は見に行っていませんが。
 さて、数か月前に、安いDCCコントローラを作ってみました。備忘録的に、まとめに基板のことを載せています。このArduinoNanoの部分をほぼピンコンパチのArduinoMicroに変えると、DSAir2用のUSBスロットルみたいのができるはずです。
 ということで、作ってみました。
 まずは材料です。ArduinoNanoはAliExpressなどで250円程度で買えますが、USBスロットルに使えるATMega32u4が搭載されているArduinoMicroの互換機は600円ぐらいします。そして、秋葉原などで買おうとすると、例えば、What’s Next Pink (Arduino Micro互換機) で、2000円ぐらいしますが、海外通販を待つものいやだったので、秋葉原で買いました。
 で、材料はこんな感じです。(写っているうち、ピンソケットはケースに入れるときに高さが高くなるため、使いませんでした。
re_DSC02878.jpg

 ArudinoMicroはNanoより4ピン多い(SPI関連が別口で出ている関係?)ですが、ピンをニッパーで切ると、今回作った基板ではベタGNDにあたり、少し危ないような気もしたので、短絡事故防止のためピンから引っこ抜きました。また、ICSP端子もいらないのでこちらも取ってしまいました。
表から
re_DSC02879.jpg

裏から
re_DSC02880.jpg

で、基板への実装ですが、ACアダプタ、DCC出力、モータードライバ、セラコン、電解コンデンサなどはいらない。ので、スイッチとArduinoMicro(互換品)だけを実装します。
数十分で完成です。
re_DSC02881.jpg

ケースに入れて、あとはスケッチを書くだけです。
re_DSC02882.jpg

Yaasanさんのこちらの元スケッチを参考にしますが、ロータリーエンコーダで使用することを前提にしているので、スピードの指定が相対値になっています。今回のは絶対値で出てくるボリュームなので、プロトコル(というたいそうなものかどうかは置いておいて)を拡張する(というか適当に追加)必要があります。
DSAir2側は、Keyboard.jsというソース内に、英数字が入力されたら、こんな感じに動くというのが記載されていますので、そっちも見てみます。
こんな感じなようです。
---
keyboard.jsでは (スピードは0~1023)
SPACE(32) : PowerOnOff
S(83) : UP(+16)
D(68) : UP(+32)
C(67) : DOWN(-32)
X(88) : DOWN(-16)
Z(90) : FWD/REV切り替え
Q(81) : STOP
0(48) : F0 On/Off
Shift+ 0 : F10 On/Off
1(49) : F1 On/Off
Shift+0 : F11 On/Off
・・・・
1(57) : F9 On/Off
Shift+0 : F19 On/Off
---

で、掲示板に絶対値指定用の追加していい?って聞いてみましたが、反応ないので、
そのうち独自追加するとしましょう。
やることは、以下です。

---
例えば,0~1023で+128とかde
0,127,255,・・・,1023 を
b,n,m,g,h,j,t,y,uとかでスピード絶対値指定する。
---

で、USBスロットル(フジガヤコントローラ用)のスケッチはできました。こちらです。
Windowsで確認したら動作はばっちりです。
もちろん、絶対値指定するため、受けるDSAir2側がまだ存在しませんが・・・。
コメント(2) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。