KATOのスマートコントローラー

 KATOのスマートコントローラーはACアダプター別売で、今回は本体のみを購入しました。電源コントロールにはあまり興味はなく、興味があるのは通信ポートでサウンドボックスをコントロールする動作です。

 スマートコントローラー特設サイトを参照ください。

 スマートコントローラー
スマートコントローラー
スマートコントローラー

 スマートコントローラーの裏面

 ところが電源プラグの規格が微妙に違い、5.5φ/2.1φの規格のサウンドボックスに対し、スマートコントローラーは5.5φ/2.5φの規格でした。どうして規格を統一しないでしょうか。強欲にも新たに購入させるためでしょうか?そのため、急いで5.5φ/2.5φを5.5φ/2.1φに変換するケーブル製作しました。

 通信ポートの電気的な規格は不明ですが、3.5φのジャックの先端が3.3Vでもう1つが0Vで、3.3V側から定期的の信号を出しており、接続確認のための信号ではないかと推測しています。メーカーが規格を公開しないので、Blurtoothを解析できるものがほしい。


 自己責任で、専用のACアダプターを使用せず別のACアダプターを使用しており、推奨してはいません。

 サウンドボックスと接続


 簡単な動作テスト
 
0

    KATOの19Dコンテナに載せ替え

     割引を利用してKATOの19Dコンテナ(23-573)を4つ購入しました。これで国鉄時代とJR貨物の両方のコンテナ車を編成できるようになりました。

     19Dコンテナ(23-573)
    コンテナ

     コキ5000に搭載
    コンテナ車に搭載

     国鉄時代のコンテナとJR貨物のコンテナと並べる
    新旧のコンテナ車
     国鉄時代のコンテナからJR貨物のコンテナに載せ替えて編成を変えて走行させることが出来ます。

     机上でテスト走行
     

     EF210とDF200でそれぞれ牽引されるコンテナ列車
     
     JR貨物の機関車はこの2両しかありません。
    0

      ターンテーブルの無線化にチャレンジ

       KATOのターンテーブルのコントローラを自作しており、今まで基本動作や減速動作とうまくできたので、今度はBluetoothによる無線化にチャレンジしてみました。すでに、Arduino unoを利用してBluetoothによる無線のテストをしていたので、意外と合体がうまく出来て動作確認できました。

       スマホからの操作テスト

       
       反転するように指示したり、左隣へ、右隣へと移動する操作を確認しました。出来上がったゲームコントローラ風のGUIを利用したので簡単なテストをしてみました。なお、無線化に際してロータリーSWの信号を切ってBlutoothからの信号に切替えました。ソフトウェアで切替えるようにする必要があります。


       単純な動作テストですが、意外とあっさりとBluetoothによる無線化が実現できてしまいびっくりしています。まずはこのGUIを利用すれば、短期間でターンテーブルを無線化できることが確認できました。今後は、スマホのGUIのボタンに何を割り当てるかを検討して本格的な自作コントローラに取り組みます。

       GUI設定の予定(追加)
      GUI設定
       EEPROM読出しとEEPROM書込みは、初期設定のためで初期設定のアルゴリズムを検討中なので、EEPROMの読出しと書込みだけを設定しています。前進/後退とポイント切替は、リレー駆動で切替るようにして、ソフトウェアではデジタルI/OのHIGH/LOWで行なう予定です。それ以外はソフトウェアで実現できるので、すでにスケッチを変更して動作確認できました。

       なお、サウンドボックスのコントロールコマンドと端子接続の仕様が分かれば、サウンドボックスを直接、Bluetoothによる無線化でコントロールが出来そうである。

      0

        Bluetooth部品(HC-06)とスマホの通信

         Bluetooth部品(HC-06)とスマホの通信できることは確認できたのですが、コマンドを打つのもスマートではないのでアプリを開発しなければならなくなりそうです。しかし、アプリ開発は全くやったことが無くハードルが高すぎます。一応、図書館から入門版の本を借りてきましたが、開発環境もまったくないのでどうしようかと思います。

         そこで、Arduino bluetooth controllerというのがあり、ゲーム風のインターフェイスがありテストでは使用できるかもしれません。

         テスト中
        テスト中
        いづれ自分で開発できればいいのですが、難しそう。

         こんなGUIができれば最高なのですが・・・
        GUI
        0

          ターンテーブルの仮想原点によるアルゴリズムの検討

           Arduino UNOのEEPROMの変数記録の書き込みと読み出しのテストがうまくできたので、仮想原点を決めて動作するターンテーブルのアルゴリズムを検討してみた。ターンテーブルの原点位置と現位置をEEPROMに記録することで、原点に戻すことや指定位置にまわす操作ができるようになります。

          Setup()では
          1.EEPROMに記録されているm_Count1の値を読み出す(仮想原点はmCount0で0)
          2.m_Count1が0でない場合は、その差が0になるように自動的に動く
            (トラブルがあった場合には、手動で緊急停止ボタンSWで停める)
          3.2.で位置がズレている場合には、手動で位置を合わせる
          4.原点とする位置が決まったら、原点リセットは押しボタンSWを押す
          5.EEPROMにm_Count1の変数値に0を記録する
          6.仮想原点はmCount0に0を設定する

          loop()では
          1.回転方向を仮想原点はmCount0から判別(−/+)をする
          2.回転した時のセンサー回数をカウントしてm_Count1に格納する
            (緊急停止もあるので、実際のセンサー回数をカウント)
          3.1回転(36)したm_Count1を回転方向によって加算と減算を行なう
          4.Stop状態になった時点で、現在のm_Count1をEEPROMにm_Count1の変数値を記録する
          0

            ターンテーブルの緊急停止の追加

             ターンテーブルの動作確認をしながら、機能の改良や追加をしています。なお、端子をできる限り空けておきたいので、LCDはI2Cインターフェイスを使用しています。

             開発とデバッグ中のコントローラ


            改良した機能
             3接点タイプのロータリーSWで左回転、停止、右回転を指示できるようにしました。抵抗分割したロータリーSWの出力をArduinoのアナログ端子に接続して、電圧検出でSWの位置を決めています。なお、ロータリーSWはショートタイプでないため、誤動作を防ぐため電解コンデンサで切替時の電圧を保持させています。

            追加した機能
             実際に操作していると回りすぎるため手動で停止させたくなる場合があるので、緊急停止の押しボタンを追加しました。さらに、緊急停止の時でも減速機能が働くようにしました。ソウトウェアの改良の余地があり、不要になるかもしれない機能です。

            課題
             課題は0原点をどのように実現するかです。1つは原点検出をどのようにするか。もう1つはCPUのEEPROMに原点を記憶させておくこと。原点検出はどうしてもターンテーブルの改造が必要になり、出来る限り加工を少なくしたいのでアイデアを思案中です。ATmega328には1024bytesのEEPROMを内蔵しているので、ライブラリもありそうで何とかなりそうである。

            1つの原点のアイデア
             ターンテーブルを加工しないですぐにできることは、毎回ではあるが起動したらすぐに原点する位置まで移動して押しボタンでその位置を記憶させる。それ以降は、センサーの回数と回転方向からその位置からの加減算で現在の位置を割り出すというアイデアです。何よりも無加工でソフトウェアで実現できるのでよい方法だと思います。EEPROMを使ってソウトウェアのアルゴリズムが複雑になる。

            もう1つの原点のアイデア
             ターンテーブル本体を加工しないですぐにできること方法を思いつきました。利用しない対抗するレールをロータリーSWのように使用するのです。原点とするレールと反対側のレールに通電されるので、その電圧を検出して原点の位置とする方法です。ハードウェアの具体的な回路にどうのようにするか。
            0

              ついに禁断のBuetooth無線に手を出す?

               いろいろ調べるために禁断のBluetooth部品を安く購入しました。なぜ禁断かというとアナログ人間にとって無線が接続できないというトラブルの時にどこが悪いのか全く分からなくなるからです。配線で繋がっていれば、配線をたどったり、部品を交換したり、電圧を測ったりして不良箇所を探っていくことが出来ますが、無線はそれが出来ないので好きになれません。とは言っても、ワイヤレスが当然の社会になっていつまでも拘ってもいられませんから禁断の無線に手を出すわけです。

               まず、KATOから出てくるワイヤレスパワーパックに興味があり、サウンドボックスもスマホのBluetoothで操作できるということなので、その仕組みを解明してコントロールコードまで解析できれば。サウンドボックスを直接コントロールできることになります。どこまでコマンド用意されているかにもよりますが、仮に全てコントロールできるのであれば、1万円もするパワーパックは不要ということになります。最終手段として、サウンドボック内にスマートコントロールを内蔵させてしまうという荒療治もあるかもしれません。

               スマートコントロールとサウンドボックス
              スマートコントロール
               この解析がうまくいけば、サウンドボックスの仕様で明らかにしなかった通信ポートを自作パワーパックからコントロールできるかもしれません。

               通信ポートの推測仕様
              ・Φ3.5のプラグ(ステレオタイプだと思うが確認要)
              ・電圧は3.3V系で、端子はTX、RX、GND
               ではないかと思われます。よって、サウンドボックスにArduinoとBluetootを搭載して接続すれば通信ができるのではないかと考えて楽しみにしています。サウンドボックスを開腹したところではLSIから直接配線が伸びていたので、URATのTX,RXではないかと推測でき、少なくともRS232Cではなさそうである。

               さらに、うまくいけばターンテーブルのコントロールも無線化できるかもしれません。まずは、スマホを使ってペアリングと親機、子機などの設定方法などからやり始めていますが、まだうまくいかず苦戦中です。調査は安物のBluetooth部品を使って、解明後に組み込む場合には正式に認定されたBluetooth部品に切替えるつもりです。

               悪戦苦闘の末、いろいろな方の情報を見ながらなんとか接続できました。それらを自分が忘れた時に思い出せるようにメモにしてみました。
              Bluetooth部品(HC-06)で接続する方法
              0

                Arduinoで温度、湿度、気圧の製作

                 Arduinoにいろいろい取り組んでいて、再利用できる部品やら材料などが出てきたので、Nゲージは一休みしてお遊びで「温度、湿度、気圧」を手軽に見れるものを製作してみました。ところが最終段階でセンサーを壊してしまい、湿度が測れないセンサーに暫定的に置き換えて半完成にたどり着けました。

                 Arduinoで温度、湿度、気圧の測定ができることが確認できたので正式に製作することにしました。問題はケースですが、あまりコストを掛けたくいないので、透明なアクリル板の余り板がありこれを利用することにしました。アクリル板を曲げるのが初めてなのであまりうまく出来ず温度コントロールを失敗してしまいました。折り曲げ部分を隠して利用できそうである。

                 簡易ケース(?)の出来上がり
                ケース前
                ケース後
                 これに、Arduinoのブートローダーを書き込んで専用基板を製作して取り付ける予定でした。しかし、LCDへの接続配線が多く見栄えが悪いので、LCDの裏に専用基板を取り付けるように変更しました。電源はバッテリーを辞めて、USB端子の電源から取るようにUSB端子を取り付けました。PCのUSB端子から電源供給できる方が使い勝手がいいと考えます(データ通信はできません)。

                 配線が終わってセンサーの端子表示が見えなくて配線を間違えていることに気づかず電源投入してしまい壊れてしまい、安いとはいえセンサーを再購入という痛い出費となりました。

                 別のセンサー(BMP280の湿度のないもの)を取り付けて動作テスト
                (LCD右上部から少し見えるのがセンサーで、左側のVRはLCDの調整用です)

                 センサーとして湿度の計測値がないためエラー表示してLEDが点滅していますが、一応これで正常動作していることが確認できたので完成です。センサーを入手できしだい交換して完了です。ちょっと格好いいでしょ。

                 センサーを正規版にして完成!
                正規版
                0

                  ターンテーブルの減速動作の確認

                   KATOのターンテーブルをArduinoで動作させようとチャレンジ中です。今回はターンテーブルが回転して停止する前に減速させるようにできました。
                   HブリッジのVREFという端子を今まではVccに接続していましたが、これをVcc以下の電圧にすることでその比率で出力が25KHzのPWM出力にすることができます。デューティーはVREFとVccの電圧比で決まります。まだ試作なので今回は50%にしてみました。

                   減速動作の動画
                   
                   Arduinoの端子で切替えを制御して、止まる前から減速します。また、隣に移動する場合は、はじめから減速して動作します。もう少し減速を大きくしたいので、正式版では抵抗分割比を変更してVREFの電圧を下げて調整する予定です。
                   これでKATOのターンテーブルを動作させることができたので、今後はどのようなコントロールするかの検討に入ります。

                   すでにあるパワーパックをどう改造するか
                  パワーパック
                   ロータリースイッチは23接点までしかなく高価なので、他の入力方法を考えなければこのサイズには収まらない。当然、どんな小さいテンキーでもサイズ的に無理である。現在の回転方向のスイッチに小さいLED表示をプラスして何番線にするかを決めるしかないかもしれない。
                  0

                    ターンテーブルの基本動作の確認

                     まずKATOのターンテーブルをArduino UNOを利用して動作させることを目標にチャレンジしてきました。ゲヌマ・フジガヤ2さんのサイトのKatoターンテーブルの制御を参考にさせてもらいながら、なんとか基本動作できるところまできました。

                     現時点の動作確認はArduinoIDEのシリアルモニタでも出来ますが、TeraTermをインストールして使用すればいちいちArduinoIDEを立ち上げなくても動作させることは出来ます。

                     10回、右回りと左回りと回転


                     位置合わせの確認

                     KATOのターンテーブルはメカ機構がよく考えられているので、2つのDCモーターをうまく制御できれば、位置ズレは生じないように出来ています。残るは停止する前に減速する方法とその回路を出来る限りシンプルになるように考えてます。
                    0

                      << | 5/49PAGES | >>

                      カレンダ

                         1234
                      567891011
                      12131415161718
                      19202122232425
                      262728293031 
                      << August 2018 >>