HOME >> 鉄道模型工作室 > モニタ式の操作盤を作ろう 給電操作画面を作る
今まで実施してきた卓上レイアウトの制御について、ラズパイのWebIOPi アプリを使って遠隔操作し、パソコンやタブレットの画面から操作することにした。 今回は給電操作を実施する画面を作って操作状況を確認する。
■ まず、結果を報告
いろいろつまずいて来たので、今回は最初に結果から報告します。 下左の写真はタブレット端末からアクセスしている状態です。 そして、下右の写真は制御対象の電子回路です。
端末から操作すると二つのLEDの点灯が制御可能となっています。 モータドライバの供給電源を12voltに変更し、二つのLEDを接続している出力端子をレールの給電端子とすれば、鉄道模型のリモート式コントローラとして機能するはずと考えています。
******************************************************************************
電子回路を紹介したので、ここで、使用したモータドライバはTB6612 の特徴を説明しておきます。 PWM信号を入力するポートと、出力方向を指定する二つの入力ポートがあります。 その組合せで出力ポートの状態を制御できます。 このICの説明書の一部を転載します。
ボタン1をONにするとOUT1がONになりモータは時計方向に回転します。 ボタン2をONにするとOUT2がONになりモータは反時計方向に回転します。 もし、ボタン1とボタン2を同時に押すと・・・・・・・・・・・・・モータはショートブレーキ状態、即ち両端ともGNDに接続されます。 即ち、LEDは消灯してしまうのです。 どちらのボタンを押していない時は、OFFの状態、即ち、給電側やGND側に接続されていない状態となり、これもLEDは消灯してしまうのです。
何を説明したいかと言いますと、STOPボタンが要らないと言うことです。 当初は、右方向と左方向のボタンに加えて、STOPボタンを加える予定でした。 そして、それぞれのボタン間の連携を、どこでどうやって記述するのかが心配でした。 あるボタンがONになった時、他のボタンをOFFにする必要があったのです。 でも、上記の作動状態によれば、各ボタンを独立させて作動させれば、不具合が無い事がわかりました。 ただし、両方のボタンをONさせると電車は止まってしまうと言う不思議な状態に陥ることになるのですが・・・・・・・・・・。 ただし、フライホール付きモータの場合はどうなるのだろうか? 実際に確認が必要ですね。
この事は、ボタン毎に独立して作動させればよい事になり、極めて簡単に命令文が記述出来ることになります。 連携が不要なのです。 また、 PWM出力は、GPIO 18 から、ボタン1とボタン2の出力は、GPIO 23 と GPIO 23 から出力させます。
*********************************************************************
■ ファイル構成
今回作成したファイルは、フォルダ21をそっくりコピーして新しくフォルダ22を作り、それぞれ関係するファイルの関係する部分を修正しました。 従って、ファイル構成は先回の報告内容と同じであり、ファイル名も全く同じにしています。
.
■ 操作画面を作る
最初に、操作画面をHTMLファイル作成ソフトである Dreamweaver を使って右に示すようなページ構成に修正しました。
全体をテーブルタグを使った構成とし、各セル内に要素を配置した。 要素は、進行方向を指定する二つのボタンと、速度を調整するスライダとしている。 テーブル以外の外側の背景は薄い色をつけ、テーブル内は白色の背景色としている。
タイトル部分は、深緑色として文字の白色を目立つようにした。 ボタンの文字も大きめのサイズとし、さらに、ON時のボタン色も黄色に変更した。 これらの細工はHTMLファイルであるから、自分にとってはお手の物である。 ただし、後期高齢者のおじさんがデザインしたので、野暮ったいのはご容赦頂こう。 また、タイトル名をテスト22と変更するのを忘れていますね。
id="gpio23"とした左方向ボタンがクリックされると、toggleLED(23)を実行せよとの命令が出されます。 右方向のボタンも同様です。 また、スライダに関しては表示場所を設定しているのみです。
作成したHTMLファイルのテキストファイル ⇒ index txt
■ スタイルシートの作成
操作画面の表示スタイルを記述しています。 ボタンの形状と HIGHとLOW時のボタンの色を設定しています。 このスタイルシートは、例1のファイルに、例3の内容を追記し、ボタンの文字サイズを14から16に、また、.HIGH の色指定を #26a1ff から #ffff00 に変更しています。
作成したスタイルシートファイルのテキストファイル ⇒ styles.txt
■ JavaScriptファイルの作成
ブラウザ側で処理する命令を記述しています。 まず、記述を明確にするため、コメント行を削除しました。 本当は残しておく方がベターなのですが・・・・・・・・。 そして、例1の記述内容に例3の記述を追加しています。 勿論、スライダは一本だけなので、余分な記述は削除しています。
toggleLED(23)を実行せよとの命令を受け取ると、ボタンの色の変更と、 webiopi の callMacro を呼び出してtoggleLEDを実行させます。 また、スライダ関係をセットアップし、スライダの位置が変化した場合は、その値を計算して webiopi の pulseRatio(18, ratio) を変更させます。 これはPWM出力を指示しています。
作成したJavaScriptファイルのテキストファイル ⇒ javascript.txt
■ Pythomファイルの作成
ラズパイ側で実行する命令を記述しています。 命令は webiopi アプリの基で実行されます。 GPIO関係の出力設定処理などの初期設定と終了処理などを記述しています。 さらに、ブラウザから送られてきたcallMacroの実行命令にもとずき、指定ポートの状態を反転させます。 これによってポートのON/OFFが実行されます。
作成されたPythonファイルのテキストファイル ⇒ script.txt
****************************************************************************
(注記) 紹介したファイルは、テキスト形式のファイルにしています。 もともとの形式のままですと、それぞれ単独では完全に作動しませんので、ここでは意味がありません。 そこで、ファイルの内容を紹介するため、あえてテキスト形式で提供しました。 でも、それぞれのファイルの記述はテキスト形式で書かれていますので、拡張子の部分を本来のファイル形式に書き直せば、元の機能を発揮します。 しかし、webiopiなどのアプリがセットされ、同じフォルダに設けた jsフォルダが存在する環境でしか機能しません。
なお、
このjsフォルダ内のファイルは、「Raspberry Piで学ぶ電子工作 超小型コンピュータで電子回路を制御する」の演習用のサンプルファイルのダウンロードリンクよりダウンロードし、そのまま利用しているものです。 また、webiopi の環境設定なども必要ですので、上記の書籍を参考にして設定してください。
また、コメント行をあえて削除した理由として、4っつのファイルはその書き方が異なっている事です。 同時に編集しているとその書き方で混乱してしまい、ミスる恐れがあったので削除しています。 凡ミス防止なのです。
■ 残された多くの課題
やっとここまで来たのですが、まだまだ課題が残っています。
次回は、レイアウトでの走行テストを予定しています。
2021/8/10 作成