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の連携方法を模索していきたいと思います。