ジオラマ・システム製作での残りの課題整理


目標とするジオラマ・システム製作にあたっては、まだ10%も進捗していませんが、一番問題であった無線による個別機器制御が全く見えていなかった
部分が前頁で紹介したようにプログラムが確定したので、改めて今後開発すべき課題を整理したいと思います。

【 残りの開発課題 】
 1.各端末からの電池(コンデンサ)電圧を親機に返す。
 2.各端末(列車、車)への論理デバイスIDを設定<001、002、003>し、個別コマンド確認
 3.レギュレーター回路検討<レール電圧:6.0V、コンデンサ満充電圧:5.4V、レギュレータ入力:2.5V-6V、レギュレータ出力:3.3V or 5.0V>
 4.5.4V/25Fコンデンサーの満充電から2.5Vまでの時間(運行時間)を、実回路で測定し運行プログラムを検討
 5.列車出発優先順フラグ作成用ランダム発生と割込み処理プログラム
 6.ArduinoMEGAで、列車位置検出+ポイント切替のソフト検討とRasPiとの情報交換テスト
 7.バスロケ関連のソフトは、ジオラマ完成後入れ込んでいきます。
 8.最終RasPi側のPythonソフトの自動立上げ

以上が現在見えている課題である。


【 端末の電池電圧を親機にフィードバック 】
前回は。親機である RasPi から端末へアナログとディジタルでの制御を行うPythonプログラムを紹介しました。
今回は、子機であるTWELITE-DIPから、アナログ電圧値を親機に返すプログラムを考えます。

ひな形は下記のプログラムで、ここのアナログ部のみを最終的に切り出します。



この状態で受信した結果が以下の通りです。


アナログ端子は全ピン開放状態の為、データは安定していませんが、読取りは成功しています。
ここからバッテリ電圧部分(アナログCH1)のみ取り出します。



Shell部にバッテリー電圧相当値が表示されました。
実際はバッテリー電圧5.4V(Max)を、TWELITE-DIPには、2Vに分圧して入力するので表示値に係数を掛ける必要があります。

これで開発課題(1)はクリアしました。


【 論理デバイスIDの書込み 】
次の開発課題は、各端末子機に論理デバイスIDを書込むことです。書込み終了後には、個別コマンドで動作するかの確認です。
書込みは、TWELITE-Rで書き込みます。
書込むことで工場出荷時に入っていたアプリケーション・ソフトは上書きされるので慎重に書き込みましょう。
論理デバイスIDは、1~100(10進数)まで任意の値を設定可能です。設定するには「インタラクティブ・モード」で設定します。
「TWELITE-DIP」をインタラクティブ・モードで操作するには、26番ピンをGNDに接続して「TWELITE-R」に装着します。
装着方向は、アンテナがUSBコネクタ側に向く様に挿入します。

インタラクティブ・モードに入ったら「i」キーを押します。< set Device ID >
「論理デバイスID」が求められるので、今回は1から始まり5までを振り当てます。(列車、車を合わせて5台の場合)
10以上の数値を設定した場合、ID確認をして表示されるのは、16進数表示なので注意が必要です。10の場合は「A」になります。

ここで致命的な事が判明しました。論理デバイスIDを変更すると「標準アプリ機能」が失われ「無線タグ・アプリ」に変わり子機から親機への一方通信
になってしまう事が判明しました。
これでは親機から制御が出来なくなってしまい、各子機からのバッテリー電圧のみ入手できるシステムとなり意味がなくなります。

最悪、親機と子機のペアを列車、車の台数分用意するかです。台数分のMONOSTICKをRasPiのUSBポートに挿す事となりますが、とりあえず論理デバイスID
を書き換えてみて、親機から子機へ制御コマンドを送ってみて無視されるのか確認したいと思います。

26番とGND(1番)を短絡し、USB給電の為、右下の短絡ピンを1、2番を短絡します。


Windows10・PCのTeraTermより下記コマンド[i」に論理デバイスID「1」を選択します。


書込みコマンド「S」を打つと書込み終了で下記画面になります。


さて論理デバイスID「1」の確認と送信、受信の確認をしていきましょう。TWELITE-RからTWE-LITEを外し、26番、GND間の短絡を外します。

RasPi+MONOSTICKで端末のデータを読んでみましょう。


「Shel」にあるように「論理デバイスID」が「1」に変化しています。成功です。
時々、従来通りの「78」も見えています。現在2個のTWELITEが動いています。

ここからが勝負です。親機からのコマンドを子機が受けとることが出来るかです。


49行目のanalogCH1番目に数値を「00」~「100」まで変化させて見た。(論理デバイスID=1で):見事動いた!!
もう1個の標準デバイス論理デバイスID=78は、上記コマンドに一切反応していないので、論理デバイスIDによる端末の切り分けが出来たことになる。

これを受けて、もう1個のTWELITEの論理デバイスID=2に変えてPythonプログラムで個別制御の確認をする必要があるが、まずは課題(2)クリアー

論理でデバイスID1、2を作り読取りテストをした結果です。
1と2から情報が送られる中で、時々標準デバイスの78からもデータが送られています。
結果は問題なしでした。