タブレットをスタンドに置くと・・・

タブレットをスタンドに置くと、コントローラーらしくなりますね。

20190514-21-16-54

今週は工作はせず、ひたすら車両整備です。

 

| | Comments (0)

KATOのサウンドボックスをDSair2で自動運転する

20190425-23-38-31

 

KATOのサウンドボックスの通信ポートにSoundBoxDecoderを接続し、DSair2のDSbasicを使って往復自動運転しました。

SoundBoxDecoderは自作しましたが、その後fujigayaさんが専用基板をつくられたのでそれを利用して作るのが簡単だと思います。まだ市販のデコーダー完成品はありません。

サウンドボックスの音声出力端子には、Bluetooth音声発信器をつないで、Bluetooth受信機を搭載した貨車のスピーカーに音を飛ばしています。機関車はDCC化していませんが、サウンドデコーダーを搭載したのと同じように貨車のスピーカーからブラスト音や汽笛などが聞こえます。

車両の位置検出にはfujigayaさんが開発されたs88-Detectorをつかっています。今回はホール素子を利用した貨車の床下に取り付けた磁石による検出としました。s88-DetectorをDSair2に接続しています。

 

この動画はhttps://youtu.be/NaZTmCOA0Ioからもご覧になれます。

まだ現在は発車前の汽笛だけですが、もう少し機関車の動きにあわせていろいろな音を鳴らしたいと思っています。

サウンドボックスの通信ポートを直接コンピューターから制御しても自動運転できますが、DCCのDSair2自動運転機能とs88-Detectorの車両位置検出機能を使えば、比較的簡単にプログラミングしてDCCを介した自動運転制御ができます。

もちろんスマホやタブレットを使って通常のDCC運転のようにサウンドボックスをマニュアル制御することも可能です。KATOのスマートコントローラーと同じような操作ができます(ただし こちらは音量や同期などの設定はできません)ただ現時点ではこちらは自動運転へのアプローチは用意されていません。

なおこのシステムは、5/19のKKC作品展会場で運転デモンストレーションいたしますので、興味のある方はぜひご来場ください。

 

| | Comments (0)

VBA(Excel)でDSairを制御する(続)CV値読み書き

Excelを使って、DSairのマニュアル運転操作をしようという方は、まずおられないと思います。

やはりデコーダーのCV値の管理がメインになると思います。

というわけでCV値の読み書きです。

読込は 前回書いたHTTPDSAir関数を使って

Sub DSair_cv_read_com(LocoAdress, CVNo)

  fc = "/command.cgi?op=131&ADDR=0&LEN=64&DATA=GV(" + LocoAdress + "," + CVNo + ")" + " ?" + Str(Time())

  HTTPDSAir (fc)

End Sub

LocoAdressは、OPSモードで使用するときデコーダーのアドレスを文字列として指定しますが、それ以外では”0”をいれます

で読込命令を出して

Sub DSair_cv_read_res()

     fc = "/command.cgi?op=130&ADDR=128&LEN=264" + " ?" + Str(Time())

     DSair_res = HTTPDSAir(fc)

    CVValue = Mid(DSair_res, 42, 3)

End Sub

で値を読込みます。

ただし読込命令を出して、DSairがデコーダーにアクセスして、内部メモリの値が読み込んで書き替えられるまで、2−3秒かかるので、そのあいだにスリープなどの命令をいれて時間稼ぎする必要があります。

関数にすれば

Function DSair_cv_read(LocoAdress, CVNo)

    fc1 = "/command.cgi?op=131&ADDR=0&LEN=64&DATA=GV(" + LocoAdress + "," + CVNo + ")" + " ?" + Str(Time())

    HTTPDSAir (fc1) 'CV値の読み込み命令を出す

    sleep 4000 '4秒時間を空ける

    fc2 = "/command.cgi?op=130&ADDR=128&LEN=264" + " ?" + Str(Time())

    DSair_res = HTTPDSAir (fc2) '内部メモリの書き替えられたCV値の読み出す

    DSair_cv_read = Mid(DSair_res, 42, 3)  '関数の返り値がCV値です。

End Function

となります

CV値の書き込みは

Sub DSair_cv_write(LocoAdress, CVNo, CVValue)

  fc = "/command.cgi?op=131&ADDR=0&LEN=64&DATA=SV(" + LocoAdress + "," + CVNo + "," + CVValue + ")" + " ?" + Str(Time())

  HTTPDSAir (fc)

End Sub

で実行できます。

サブルーチンや関数の引数 LocoAdress, CVNo, CVValue は文字列です。

また上記のプログラム例は、エラー処理を省略しています。

 

 

 

 

| | Comments (0)

VBA(Excel)で、DSairを制御する

Dsair

DSairには、DSBasicという立派な制御言語がありますが、wifi経由のhttp通信で制御するので、VBA(Visual Basic for Application)でも制御できるはずだと思いプログラミングしてみました。

ちょっと落とし穴にはまったのは、エクセルのVBAではhttp通信のキャッシュ?がかかってしまい、同じ命令をGetリクエストすると、メモリ値が変化しているはずなのに最初と同じリプライが返ってくることでした。これはネットで、無意味なコマンドを文字列につけて送るというテクニックが紹介されていましたので、Getリクエストの文字列に時刻文字列をつけて送ってクリアしました。こういう現象は、JavaScript で動いているサーバーではおきることがあるらしいですが、詳しい理屈は私には理解できませんでした。

最低限の機能のマクロつきブックをサンプルとしてアップロードしておきますので、興味のある方は自分のエクセルで、いろいろプログラム書き加えて遊んでください。DSBasicの方がVBAより制御向きだと思いますが、CV値の管理とかにはVBAの方が向いているかもしれません。DesktopStationさんには、CV値書き替え関連のDSair Wi-Fi Specificationのコマンド公開を是非お願いしたいと思います。また永末さんところの赤い箱は、VBAの制御ライブラリーが提供されていたので、そのVBAマクロからの移植とか赤い箱とDSAir両用プログラムの開発とかには使えるかもしれません。
このエクセルマクロプログラムをお試しになった方あれば、是非コメントをください。

ココログの新仕様では、画像以外のファイルはアップロードできなくなったようです。今回、DesktopStationさんのHPからダウンロードしていただけるようになりました。下記アドレスからダウンロードしてください。
https://desktopstation.net/follow/DSAir_excelmacro.zip

 

☆4/4追記

vbaでDSair2へwifi 経由でコマンドを送信しているのは下記の関数です。一部略

Function HTTPDSAir(DSAir) As String

Set httpReq = CreateObject("MSXML2.XMLHTTP")

httpReq.Open "GET", "http://flashair" + DSAir

httpReq.Send

HTTPDSAir = httpReq.responseText

Set httpReq = Nothing

End Function

運転コマンドはDSAirに /command.cgi?op=131&ADDR=0&LEN=64&DATA=DSair内部コマンド という文字列を入れます

共有メモリ読み出しは  /command.cgi?op=130&ADDR=128&LEN=264 です

上に書いたようにhttpのキャッシュを回避するために、
この文字列には意味のない文字列(プログラム例では時間文字列)を加えます。

なおこのプログラムを使用するためには参照設定で[Microsoft HTML Object Library]を参照する必要があります。

 

| | Comments (0)

S88-Detectorを組む

フジガヤさんに、S88-Detector基板とセンサー基板を分けていただきましたので、秋月電子でパーツを調達して組み上げました。

20190330-1-34-05

20190330-1-34-30

指定のホール素子(磁気センサー)SK8552G を取り付けました。
Nゲージ用の基板のようだったので配線は少し工夫しました。
KATOの短いユニトラックにスリット上の穴をあけて差し込み、強力両面テープで固定しました。
これで自動往復運転のためのセンサーつき線路ができました。

20190330-1-35-20

 

動作チェックなどのための手動ボタンセンサーです。
線路センサー基板を改造しました。
CN2端子にはコネクタもつけておきました。

 

☆4/25追記

20190425-16-33-54 

動作が不安定なので、チェックしたらホール素子の配線+-を逆に誤配線していました。
ホール素子をユニトラックに開けた穴に差し込む方向をを勘違いして逆にしてしまったようです。
つなぎ直すと安定して動作しました。安いパーツとはいえ壊れなくてよかったです。
リードスイッチと違って磁石が離れていても安定して動作しますね。
ただパワートラックなどのモーターが線路面に近いものは、磁石なくても動作するかもしれません。
また試してみます。

| | Comments (1)

KATOサウンドBOXを操作するDCCデコーダーをつくる(5)

fujigayaさんが、KATOサウンドBOXを操作するDCCデコーダーの基板の頒布を開始されました。
もしKATOサウンドBOXを操作するDCCデコーダーを作成希望の方がおられましたら、fujigayaさんの頒布されている基板を利用されるのが簡単だと思います。
また私の作った回路でもfujigayaさんのスケッチが作動します。
コスト重視の方はご自分でユニバーサル基板で作られるとよいと思います。
20190318_20_59_08
なぜDCCでサウンドボックス制御する必要があるのか?とお思いの方も多いと思いますが、DSair2を使ってスマホでワイヤレスコントロールすれば便利です。といっても同じことはKATOのスマートコントローラーなるものを購入すればできます。しかしDSair2はオープンソースなので、Webアプリ改造すれば自分の思い通りの画面に改造できます!(といってもそこまでやるかたが何人おられるのか・・・) ただしこのデコーダーは、スタート、ボリューム、同期の設定はできません。
本命はDSbasic使ったプログラム自動運転だと思っています。
Yaasanがされているようなサウンド付き自動運転が、アナログDC運転の車両でもできるはずです。

あとこの基板はnanoの各端子を引き出したランド付きパターンとなっているのでは、単体でアドレス設定可能なCV-ack機能を持った、据置き(非車載)型デコーダーの開発基板として使えますよ。その方面に興味のある方にもお勧めです(これも何人おられるのか??)


| | Comments (0)

DSair2用USBスロットル(続) テンキーパッドつき

DSair2用USBスロットル スマホ  タブレット接続タイプ
20190316_21_43_14
いつものタカチのハンドヘルドコントローラーケースに入れてみました。
テンキーパッドの部分は手抜き工作で、タクトスイッチの部分を長方形にくり抜きました。
テンキーパッドの右下の青ボタンが方向切替、赤ボタンが停止です。
右のスロットルツマミの上の緑ボタンがシフトキーで、テンキーとの合わせ押しで、
F10-19の操作ができます。

Desktopstationさんが、F20-28のキー割り当てもしてくれたら、もう一つスイッチ増設してこれらのファンクション操作に対応する予定です。

スケッチは、DesktopstationさんのUSBスロットルスケッチUniveralJoykey.ino秋月の4x3キーパッドが使えるように改変させていただきました。

スケッチはここをクリックしてダウンロード

usbcotrol20190310a.inoは、注釈などに誤りあったので修正しました。

arduino pro mini のピンとの結線は下記のとおりです。
シフトキーボタン
BTN_SHIFT 7
スイッチオンの時に接地
秋月の4X3キーパッド
BTN_A 8
BTN_B 9
BTN_C 10
BTN_D 16
BTN_X 4
BTN_Y 5
BTN_Z 6
エンコーダー
ENC_A 2
ENC_B 3

なおこのスケッチは、Arduino (pro) miciro でしか動きませんので念のため!
Arduio nano miniなどでは動きません。

引き続き単独動作型のWIFIスロットルも、ESP-WROOM-32 を使って高機能化? めざしたいと思います。
☆テンキーパッド搭載
☆4桁7segLED搭載(アドレス表示)
を計画しています


| | Comments (0)

DSair2用USBスロットル テンキーパッドつき

DesktopStationさんが、あらたにDSair2用USBスロットルをリリースされました。
スマホやタブレットにつないで、タッチパネル操作ではなく、リアルなツマミやスイッチで操作するための運転デバイスです。
早速私も手持ちのパーツで同等の回路をブレッドボードで組んでみました。
ロータリーエンコーダーのスロットルで、スピード調整がうまくいくのに気をよくして、秋月電子のテンキーパッドをスケッチ(Arduinoのプログラム)を改造してつないでみました。赤いのがシフトキー相当のスイッチです。
テンキーとシフトキーの組合せでファンクション操作ができました。
うまく動くのでケースに実装しようと思います。
20190310_9_00_38
なおこのUSBスロットルパソコンやOTG対応のスマホやタブレットで動きます。
Androidはそのままで動きますが、iOSでは少し条件が限定されます。


| | Comments (0)

DSair2の操作画面を書き替えてみた

sktさんが、ブログでファンクション番号と機能をマニュアルで見比べながら操作するのは大変と書かれていました。
私もまったく同感なので、UI(User Interface)操作画面用のhtmファイルのファンクションキーのラベルを番号から機能に書き替えてみました。
20190305_0_40_04
これはMRCのサウンドデコーダー1665用UI画面です
デザインとかフォントに検討の余地はあると思いますが、少しはわかりやすくなるかなと思います。

なお少し手間がかかりますが、デコーダーごとにUI操作画面を作り、切り替えて使うようにしようと思います。
UIの切替はフジガヤさんに教えていただいた方法です。

| | Comments (2)

KATOサウンドBOXを操作するDCCデコーダーをつくる(4)

KATOサウンドBOXを操作するDCCデコーダーですが、フジガヤさんがスケッチをアップロードされています
私のデコーダーでも動きましたので、私の記事を参考にこのデコーダー作られる方は、フジガヤさんのスケッチをお使いください。
もちろんこのデコーダーをDSair2につなげば、スマホやタブレットからワイヤレスで、KATOサウンドBOXを操作できます。

20190223_8_32_2920190223_8_33_58
DSair2のDCC出力にこのデコーダーをつないで、このデコーターからの出力をサウンドボックスの通信ポートに接続します。
なお私のサウンドBOXは、コントローラー内蔵に改造しています

| | Comments (0)

より以前の記事一覧