2016年10月3日月曜日

S88を調べるていたら

早くRaspberry Pi用のDSpiの改変をしなければと思っているのですが、S88を調べているうちに、Raspberry Piを使って、メルクリンCS2のPC版アプリを動かす、と言うサイトを見つけてしまいました。

Raspberry Piとメルクリンの接続は、CAN-Maerklin Gleisboxと言う方式です。
Desktop Stationさんが解説している、Arduino CANシールドと考え方は同じです。

PCとRaspberry Piの通信は、UDPの様なので、一度見て見ようと思います。解析出来れば、Raspberry Pi/DSpiだけで、メルクリンのCS2の機能が楽しめる様になるかも知れません。


-- iPhoneから送信

2016年9月29日木曜日

寄り道ばかり

進めなければいけない事があるのに寄り道ばかりしてしまう性格は、歳をとっても改善されません。

以前から気になっていた、メルクリンのシステム構成を調べる為に、写真の本を購入しました。でも残念ながらドイツ語は読めないので、写真と図から想像すると言う状態です。学生時代に怠けていた事を後悔します。

今日も雨模様。憂鬱ではありますが、本を読むには良いのかもしれません。



-- iPhoneから送信

2016年9月26日月曜日

電子工作マガジン Autumn

雨が続き体調が優れない日々を過ごしています。集中力が続かないので、細かい作業が出来ません。仕方がないので、本を読んでアイディアを探しています。

先頃発売された電子工作マガジンには、DCC普及に直接関係した記事ではありませんが、Bトレ動力台車の改造方法が、コラムで取り上げられました。線路からの給電とモーターの側の分離です。
このコラムの目的は、Bluetoothで、DCモーターをPWM制御する為ですが、改造方法は、デコーダをインストールする場合と同じですので、電子工作マガジン読者にとってデコーダをインストールする敷居が低くなったと思われます。

少しですが、電子工作の方々へDCCを広める下地が準備されて来た様に思います。


-- iPhoneから送信

2016年9月13日火曜日

明日術後検査

明日は、午前中に脳ドック、午後から目の術後検査です。もうよい年齢なので、万全な体調は、望むべくもないのですが、それなりにメンテナンスして行くしか無いと思います。

昨晩から雨。基板CADの準備と勉強しながら、今後の計画を考えています。一人で、仕事していると、ルーズになっていけません。

明後日から、実験を再開する予定です。


-- iPhoneから送信

2016年9月9日金曜日

もうすぐ再開します

目の治療も終わりました。大分ハッキリ見える様になって来ました。
一週間ぐらい様子見ですが、もうすぐ再開の予定です。m(__)m


-- iPhoneから送信

2016年9月3日土曜日

暫く休養

Python/wiringpiの組み合わせで実験すると、μsec.でもそこそこの精度が出る事が分かりました。少し遅延しますが、再現性があるので、設定値で調整出来そうです。



右目が良く見えない状況が続いていたので、眼科で検査すると、レーザー治療で回復するとの事でした。暫く休養して、今後の実験の準備をします。

-- iPhoneから送信

2016年8月31日水曜日

S88苦戦中

思う様に動かないので、波形を確認すると、思った通りのタイミングで動作していませんでした。レベルは、大丈夫です。

Node-RED rpioライブラリでは、正確にマイクロセックのスリープが出来ない事が判明しました。



仕方がないので、他の方法を検討します。

-- iPhoneから送信

2016年8月30日火曜日

アナライザー出動

S88ですが、思う様に動かないので、アナライザーの出動となりました。
そのままでは、アナライザーのケーブルが入らないので、基板を作り直します。



-- iPhoneから送信

2016年8月29日月曜日

Node-REDのfunctionノードでライブラリーを使う

暑いので体調を崩してしまいました。年齢の為か万全の体調と言うのも難しく、いつもどこかに不調を感じる昨今です。

Node-REDのfunction内で、直接ライブラリーをrequire出来ないので少し工夫が必要です。

私の場合は、Raspberry PiにDSpiを乗せて使っているので、SPIの通信が必要となります。その為、Node.js用のrpioと言うライブラリーをインストールしています。そのライブラリーを、Node-REDで使用するには、先ず、Node-REDのsettings.jsを以下の様に変更します。


functionGlobalContext:{
        rip:require('rpio')
},
が、その部分です。

functionノードで使う方法は、以下の通りです。


こんな感じで、ライブラリーが使えるようになります。
この例は、15番ピンを出力にして、一秒間Highにしています。指定するのは、ポートの名称ではなく、ピン番号である事に注意してください。

また、GPIOを使う場合には、sudo node-redで、node-redを起動してください。

単に、GPIOの読み書きを使うだけであれば、ライブラリーは必要なく、インストールされている、rpi gpioを使えば解決できます。


このノードは、便利で、上記の設定をするだけで、使用出来、値が変化した時のみ、メッセージを次のノードに送ってくれます。debounceの値を適切に設定すれば、チャタリングの影響も回避出来る様です。

ここまで来たので、やっとS88のデバッグに入れます。


2016年8月24日水曜日

S88 I/F デバッグ準備完了

暑いので、半田付け嫌になります。
色々不手際があり、不細工な形になりましたが、ソフトデバッグの準備が終わりました。




これから、Node-REDを使ってデバッグに入ります。

Node-REDのfunctionノードで、ライブラリを使う時に、requireが使えません。
次回は、ライブラリの使い方とデバッグ状況を報告します。

-- iPhoneから送信

2016年8月23日火曜日

Scratch MESH グローバル変数

今日は、MESHとグローバル変数の関係を調べてみます。

MESH HOSTは、グローバル変数をブロードキャストしてくれることは、先日記載しました。

そこで、今日は、cmdと言うグローバル変数を使って実験してみます。cmdは、Desktop Stationへのコマンドとなります。

スプライトは、削除してステージだけにしてしまいます。
そして、ステージに変数を追加します。ステージ上の変数は、グローバル変数になります。
(スプライトの変数は、グローバル変数かローカル変数か、選択できます。)


もう一つ、今度は、settingと言うリストを作成してみます。ここには、後々、設定値を格納します。


コマンドを設定するスクリプトは、以下の様な感じにしました。


「0」キーが、押された時に、「setPower(0)」をcmdニセットし、「1」キーが押された時に「setPower(1)」をcmdにセットするようにしています。

Node-REDの受信結果は、以下の通りです。


この様に、グローバル変数がブロードキャストされます。ここでは、文字データのみが、表示されていますが、実際には、先頭4バイトのデータ長がセットされています。詳細は、フォーマットの仕様を参照してください。
今回必要としているのは、cmdの内容だけですので、Node-REDに、以下のフローにしました。


switchノードは、以下の通りです。


functionノードは、以下の通りです。


Node-REDの受信結果は、以下の通りです。


この受信データを、先日作成した、Desktop Stationへのシリアル送信に繋げばDCCの制御が可能になります。


2016年8月22日月曜日

Raspberry Pi用S88 I/F の実験基板

Raspberry Pi用のS88 I/Fを実験中です。
半田付けだけ終了しました。
明日から、ソフトの実験を始めます。



-- iPhoneから送信

Scratchとの通信

Desktop Stationとの通信が出来たので、今度は、ScratchとNode-RED間で通信しています。

一番簡単なのは、Scratch 1.4のMESHを使う方法です。
Windows/Mac版のScratch 1.4では、そのままでは、MESHが使えませんので、ITProの記事を参考にして使える様にして下さい。

私は、Node-REDとScratcchを同じPCで起動しています。

Node-REDは、こんな感じになります。ScratchのMESH HOSTが起動していれば、TCPノードを使って、以下の様な設定で、Scratchからのメッセージが受信できます。

前述のITProの記事を参考に実験してみるのが、MESHを理解する早道です。MESHホストは、大掛かりな事は、してくれません。してくれるのは、MESH HOSTに接続されているソケットに、グローバル変数の状態とメッセージをブロードキャストしてくれるだけです。

次回は、Scratch側のプログラムサンプルを紹介します。

2016年8月19日金曜日

MBEに苦戦中

書きたいことはあるのですが、暑いので考えがまとまりません。
気分転換に?、基盤CADの勉強を始めました。

レイヤーの考え方は分かったものの、ラインが上手く編集できません。
長さを上手く変更できないで、移動してしまったりで・・・

慣れるまで時間がかかりそうです。

2016年8月18日木曜日

Desktop Stationとシリアル通信

Desktop Stationハードの面白さは、PCと簡単に連携できるインターフェイスが始めから用意されている事だと私は思います。Desktop StationからもオリジナルのWindows用ソフトDesktop Stationが用意されています。(同じ名前なので間違いしやすいかもしれません。)

そのハードの一つDCCMM2シールドとシリアル通信のテストをしてみました。
※Aruduinoには、 DSGateway.inoのスケッチをロードしておく必要があります。

シリアル通信のソフトを書く必要がありますが、私は、Node-REDをWindows 10に、インストールして使用しました。

今回のFLOWは、以下の通りです。


左側のCOM4が、Serial Inputノードで、Arduino/DCCMM2シールドからのシリアル通信を受信しています。設定は、以下の通りです。


これから分かるように、DSGatewayは、115200bps 8bit noneparity 1 stopで通信しています。
左側のした二つは、Injectノードで、DSGatewayへのパワーコマンドをセットしています。
PowerOnコマンドの設定は、以下の通りです。



この様に、Payloadに、コマンドをセットし、右側のCOM4へ送信してあげれば制御できますが、コマンドの区切り文字を付加する必要があります。それが、真ん中のFunctionノードです。設定は、以下の通りです。


Node-REDは、ブラウザー上の開発環境が、そのままWEBアプリケーションになります。この例では、Injectノードの、「PowerOn」「PowerOff」をクリックすることで、レールへのパワーの制御が可能になります。同様の方法で、各種のコマンドを送る事で、簡単に制御出来ます。

この実験から分かる様に、DSGatewayは簡単にシリアル通信を使用して制御が出来ます。今回は、Windows 10/Node-REDを使用しましたが、シリアル通信さえ出来れば、IchigoJam等からでも制御が出来ます。

今日は、ここまでですが、次回は、Node-REDにScratchとの通信をさせて、ScratchからDCCを制御する実験をして見たいと思います。

2016年8月17日水曜日

色々な方に刺激されて

何年か振りでBlogを書いています。
色々と原因となるものはあるのですが、DCC関係の方と知り合った事が大きいと思います。

DCCも何年か振りで、仕事の都合で去年再開しました。それが引き金となりDesktop Stationを使い始め、DSpiに触れ、ScratchからDCCを制御できる感触を感じ始めました。
その実験した事などを残したいと思います。

久しぶりと言う意味では、Raspberry Piも最近再び使い始めました。Raspberry Pi 3が直接の起因ではなく、Node-REDを知った事がその理由です。今まで、Raspberry Piに、気が乗らなかったのは、GPIO周りのプログラムを作るのが、面倒に感じていたからなのです。その煩わしさからNode-REDは、解放してくれました。また、IoT周りのプログラミングも割と簡単に解決してくれるので、実験するにはぴったりの環境だと思います。

そして実験するうちに、これまた放擲していたScratchも使い始めました。MESHを使えば、Node-REDと簡単に連携できる事が、再開の理由です。

一つの事を起点として、色々は事が関連し始めたのは、面白い事だと思います。

これから少しづつ、DCCとScratchの連携方法を模索していきたいと思います。