ブログパーツUL5

PSタイプの学習リモコンが完成

 PSタイプの赤外線の学習リモコンがやっと完成しました。配線が多いので蓋が閉まらないのではと心配もしました。あまりきつく締めるとタクトスイッチがONになってしまう現象が発生します。く蜘蛛の巣状の配線の位置をいろいろ調整した結果やっと動作するようになりました。

 しかし、ここで問題が発生しました。単4電池を2本にして3V使用するようにしたので、赤外線コードの学習用に装備した受光モジュール(PL-IRM0101-3)が4.5〜5.5Vで動作する使用の為、3Vでは波形が出てきませんでした。そこで、学習させる時に強制的に4.5V電源に接続して、学習後は利用しないので3Vで通常のリモコン動作をさせることにしました。電池の内部抵抗もあり、赤外線LEDの到達距離もあまり伸びていません。しかし、到達距離を伸ばしたい時には、リチウムイオンバッテリを使うか電源電圧を5Vにすればかなり到達距離を伸ばすことができます。別に競技に参加するわけではないので、当分はこれで良しとしました。

【完成したPS2タイプの赤外線リモコン】


 リモコン解析器で赤外線コードの確認と出力波形を受光モジュールの出力で確認できました。全てのキーに学習させてコードを記憶させることが出来ました。最終確認としてROBOZAKのRZ-1を実際に動作させることが出来るか確認しました。ちょっと感激ですね。ジョイスティックのリモコン化は残っていますが、スペース的に厳しいのでこれで学習リモコンの製作については一応終了します。
0

    PS2タイプの学習リモコン

     PS2コントローラを改造して学習リモコンを組み込む作業も最終段階に入り、最大の難関であった電池の格納方法と受光モジュールの設置方法もなんとか解決して回路を組み始めました。しかし、部品があちこちにぶつかり試行錯誤しながら配置しています。

    (1)電池格納
     RZ-1のハンドを製作したときのアクリル板があったので切り出して、折り曲げは半田コテの熱で曲げました。あまりきれいに出来ませんでしたが、壊れた時にもう少し丁寧に製作することにして一応これでよしとしました。

    (2)メイン基板
     ICソケットが載せられないので、受光モジュール(写真の左下)を搭載して学習できるようにしました。従って、出来上がったらモーションプログラムとは別にリモコン側の配置を自由に変更できることになります。
     ジョイスティックは取り外して新しい基板に搭載しなおしました。今回はジョイスティックそのものは使いませんが、いずれ組み込みたい。但し、プッシュSWは使いので載せ変えました。半田がなくなってしまい、お天気が雨続きで買いにもいけず、まだ回路は完成していません。残りは配線ですから、くもの巣になりそうなので結束する予定です。

     加速度センサーは部品の高さが高く基板には乗りませんでした。一工夫がひつよなようです。グリップには載せられそうですが、水平に搭載できません。画面右側に追加回路がいれらるように空けておきました。

    (3)外観
     操作性を優先させたので妥協した点があります。1つは、電池ボックスを前に載せたので重心が前になってしましたこと。も1つは、学習リモコンに学習させる時に電池ボックスを外して、その後ろ側にある受光モジュールの開口部が見えるようにしてから学習させることになる。間違って学習させないというプロテクト的な意味になったかも。

     学習リモコン用のページLEDと動作LEDの窓を4つ開けました。消費電力削減でスタンバイ状態になると4つのLEDは消灯する。電池ボックスにON/OFFスイッチがあるので、PS2コントローラにあったLEDは電源LEDとして電流制限抵抗を1KΩと大きくして流用することにしました。

    ●固定キー3つを決定
     SELECT → ページ切替(学習リモコン)
     START → 電源キー(RZ-1用リモコン電源)
     ANALOG → 記録キー(学習リモコンの記録)
    ●学習キー
     学習で記録できるキーは、12キー×4ページ=48
     ページ数は、4ページ(デフォルト3ページ+カスタム1ページ)
     →デフォルトでRZ-1用リモコン全てを網羅して、カスタムで操作しやすいように集めたものを設定できるようにした。
     
    0

      PS2コントローラ改造の構造試作

       フレキシブル基板の回路を調べたところリモコンの回路とは違うのと、接続端子が錆びており接触不良しそうなので流用を諦めました。従って、フレキシブル基板の自作難しそうなので、プリント基板と配線で改造することにしました。回路を組まず構造的にうまく出来るか試作してみることにしました。

      (1)組立部品一覧
       
      ・SW基板大
       (5mmスペーサ)
      ・SW基板小
      ・LED用基板
      ・SWボタン及びSWゴムシート(流用)


      (2)SW基板を置く
       ユニバーサル基板を格納できるサイブに切り出してタクトスイッチがうまく配置できるかを検討して、動作可能な範囲でなんとか配置できました。その基板を置きます。マイコンと周辺回路は別途考えることにして、SWがうまく動作するかの検討を優先しました。基板の上に5mmのスペーサを3箇所立てます。立てる場所は元の回路基板が載る範囲です。スペーサは接着剤で基盤に軽く接着させておくと組立やすいでしょう。

      (3)赤外線LED用基板を差し込む
       SW1の部分に赤外線LEDを装着します。基板は裏蓋の部分も含め大き目のサイズします。好みでSW2でもいいかもしれませんが、指で隠れそうなので上側のSW1にしました。試行なので赤外線LEDは付けていないが、コントローラの左右にこの基板に2本づつ装着する予定です。


      (4)SW2の構造
       SW2の部分はちょっと難しく基板を凸形状にしてボタンが通るようにします。また、スリットは本体に差し込むために入れます。少しきつ目の方が組立てやすいでしょう。SWのゴムシートとボタンは流用しますが、ボタンの中央にある突起は少し削って摺り合わせしました。


      (5)元の回路基板を搭載
       ジョイスティックが搭載している元の回路基板をそのまま流用して載せます。ただ、不要なコネクタやICは取除きました。
       SW2用基板を差込み、次にゴムシートを差し込みます。

      (6)裏蓋を閉める
       SW2の部分を裏蓋に差し込みながら、ここで元通りに裏蓋を慎重に閉めます。ここでネジ止めします。SW2のボタンは爪を押しながら差し込むことでうまくいきます。


      (7)これで組立完成
       ボタンを押して感触を確認する。タクトスイッチになったので押すとカチ、カチと音がします。しない時はどこかに不具合がありますから調整してください。

      【残る課題】
      ・電池の格納方法について
      ・受光モジュールを搭載するかどうか
       (組立て直さなくても変更できるため)
      ・ページ用LEDの場所(穴あけが必要)
      ・キーの割り振り
      ・マイコンの搭載場所
      などまだまだあります。でも外観上は予定通りです。

      完成外観のイメージ(まだ動作しません)
      0

        PSコントローラの分解

         学習リモコンが出来上がったので、不要なPS2コントローラで外形とジョイスティックだけを再利用する。PS2コントローラはなんでも良いが純正品が捨てられていたので回収して使用する。リモコン機能を組み込むためにはどうすればよいか、まず分解して構造を調べることにしました。

        (1)分解1
         左右の振動モーターは不要なので取除きます。この部分に電池を格納したかったのですが、どうも単3電池2本は入りませんでした。電池をどのように格納するかが難しそうである(検討課題1)。
         配線も不要なので邪魔な部分は切断しておく。

        (2)分解2
         裏蓋を取るとこのようになっています。回路基板とフレキシブルとの接続は裏蓋を締めると圧着するように蓋にクッション材が付いていました。
         前面のスイッチ側にフレキシブルがあるので、切れないように外します。

        (3)分解3
         コントローラの内部は大きくは3つに分かれます。
        .献腑ぅ好謄ックを含めた回路基板
        ▲好ぅ奪蘇分にフレキシブル基板
        スイッチ部分と回路基板の間に挟ます固定構造部
         スイッチ部をそのまま利用できるか回路を調べる。スイッチの回路と構造をどのようにするかが一番難しそうである(検討課題2)。スイッチのしたのゴムには導電性はなく、スイッチのON/OFF緩衝として入っている。フレキシブル基板の裏側に固定構造部にスイッチの場所だけに導電性印刷されたのシートがあり、これに押し付けてスイッチONとなるようである。
         製作の第二段階でジョイステティっックも流用するつもりであるので、回路を調べる。X方向とY方向に10KΩの可変抵抗があり、中点に端子が出ている。さらに、タクトスイッチがありジョイステティっックを押すとONになる。このスイッチは無線コントローラにはない機能で、ストップ機能として利用したり、リモコンの□や■の機能を割り当てることもできる。


        (4)分解4
         前面左右のスイッチ1とスイッチ2をどうするかが問題である(検討課題3)。スイッチ1の部分は赤外線LEDを装備してスイッチ2はP1とP2に割り当てるか、右突きや左突きのモーションを割り当てることを考えている。ただ、ここのスイッチはフレキシブル基板が流用できないと構造が難しそうである。
         フレキシブル基板の回路を調べたCOMが共通に回ってと各スイッチへは独立配線となり、SELECT、START、ANALOGはV+が共通でこれも各スイッチへは独立配線となっていた。リモコンのようなマトリック配線ではなかった。


        (5)分解5
         回路基板で中央のマイコンが小さいので割と最近のコントローラのようである。3Vを印加してもLEDが点灯しないので壊れているようである。このチップをきれいに外せば、そこに配線を半田付けして端子の接続はできそうであるが、ICの4方向の半田付けを取るのは難しい。フレキシブルに半田付けはできそうにない。

        0

          リモコン用赤外LEDについて検討

           リモコン用の赤外線LEDとして強化しておきたいので、購入可能なLEDを探した所、現在はTLN115A(PDF)が良さそうです。定格ではVF=1.35VでIF=100mAですが、最大定格のパルス順電流=1Aであるから瞬間的なパルス駆動なので5%程度(50mA)と見ておけばよいでしょう。
           大雑把には次のように計算して見ました。
            100mA/5%=2A
            (3Vー1.4V)/2A=0.8Ω → 1Ω
          ということで、市販のリモコンやROBOZAK用のリモコンでも3V電源では1Ωのチップ抵抗が付いていたので、妥当なのかもしれません。上のカタログのグラフを詳細にみてわかるように、38Khz搬送波からパルス幅は26.3uSで、一番長いスタートビットでも5mSなので、許容パルス順電流は1Aまで流せるようです。従って、マージンを見ても1Ωで良さそうで暫く操作してみましたが熱くなることもなく1Ωで問題なさそうである。

           赤外線LEDは安いので多目に購入して、実験してみました。赤外線LED1個での実験では2Ωでは1〜2m程度でしか正しく送信されないようです。そこで、PS2コントローラに組み込む時には、送信距離を伸ばすために電流制限抵抗は1Ωにして複数(2〜4個)駆動して送信強化する(光線が見えないので直視しないように注意!)。
          0

            学習リモコンがやっと完成!

             プログラムソースの解析のためにPA.EXEを少し勉強して、修正やチューニングをどのようにすればよいかいろいろ勉強してみました。オリジナルのプログラムをMPLAB IDE用のアセンブラ言語に書き換えることも検討していました。
             どこをどう修正したかわからなくなってしまいましたが、一応、左のグラフのようにROBOZAKU用のきれいな波形が出るようになりました。評価用なので赤外線LEDの出力が大きくないのですが、RZ-1もちゃんと正常動作することを確認できました。
             結局、ハードは回路修正はしなかったのですが、受光モジュールの交換とプログラム修正の試行錯誤でPIC16F84Aを1つ壊してしまいました。まだ、予備の16F84Aがあったので完成できました。

             プログラムではページ切替はリモコンのボタン数から3ページで十分なので、3ページに変更しています。あとは時間的なチューニングを修正したり加えました。外付けのEEPROMはRZ-1のモーション増設用の在庫を流用して24CL512を使いました。そこまで利用しないのですが、プログラム中のアドレスMAXは24CL256の7Fh(1Fh→7Fh)に変更しました。
             結局、スタートビットやデータビットのHiとLoの時間をリモコン解析器2とハンディ・オシロスコープ(以前から利用しているソフト)を使って、調べならうまく出来ました。

             学習リモコンには、仮に次のように記憶させました。P1とP2はどのページにもあるようにしました。電源SWはモーションをあまり利用しておらず音声認識モードへの切替え程度なので、3ページ目だけにしました。記録キーとページ切替キーはどのページも固定です。

            1ページ目
            [P1] [P1] [録] [頁}
            [9] [0] [*] [#]
            [5] [6] [7] [8]
            [1] [2] [3] [4]

            2ページ目
            [P1] [P1] [録] [頁]
            [A] [△] [B] [E]
            [<-] [□] [->] [F]
            [C] [▽] [D] [G]

            3ページ目
            [P1] [P1] [録] [頁]
            [A] [▲] [B] [電]
            [<] [■] [>] [ ]
            [C] [▼] [D] [ ]

             これでリモコンの回路とプログラムが出来たので、PS2コントロ−ラを改造してこの学習リモコンをどのようにいれるかということと、コントローラのジョイスティックをどのようにするかの検討をしていきます。
             さらに、加速度センサーが手持ちに1個あるので、これも組み込むことを検討中です。加速度センサでバランス調整ができればいいのですが、これはモーションのプログラムの問題でかなり難しそうです。
             いずれにしても、もう1つのA/D内蔵のマイコンを入れて、PS2コントローラのシフトキー(前面)で切替える方式にしてあまり複雑にしないようにしようと思います。コードがわかったので今度はA/D値から指定のコードを赤外線送信するだけにしようと考えています。
            0

              テスト用のワンキー送信機

               赤外線リモコン解析器2で解析できたので、写真のようにPIC12F975とLEDとキーだけの簡単なワンキーの送信機を製作してみました。解析データから多少のチューニングが必要です。
               サンプルプログラムに習って、ROBOZAK用のリモコンコードを1つだけ組んでみました。見事に、「1」に登録してある「お辞儀」のモーションが動作しました。これで、赤外線リモコン解析器2の解析が有効であることが判りました。

               フリーソフトのソフトオシロで波形も見てみましたが、オリジナルの波形と同じで問題なさそうです。

              (1)ROBOZAKの純正リモコン

              コード分析の結果
              スタートビットHi:159
              スタートビットLo: 32
              データビットHi:31〜29
              データビットLo:16〜14
              データビット長:12bit


              (2)テスト用ワンキー送信機
               上記の製作したワンキーリモコンで、これも余り物で作ってみました。赤外線LEDは入らないリモコンのものを再利用しました。この時に電流制限抵抗が1Ωだったのには驚きましたが、パルスなので熱問題はなさそうです。ここではPICマイコンのドライブ能力の関係から33Ωにしておきました。


              (3)学習リモコン送信機

               bit数は正しいのですが、左のようにコードが最初から出力コードがおかしいようで、プログラムを解析して修正しないと駄目なようです。やっばり学習して記録するというのは動作が不安定なのでしょうか。
               最悪の場合、コードがわかったのでプログラムに盛込んでしまう方がよいかもしれません。以前より1歩前進したようです。


              【テスト用プログラム】テストするために利用したCプログラムです。

              /*   Infrared controller PIC12F675   */

              #include

              __CONFIG(
              INTIO
              & UNPROTECT
              & BORDIS
              & MCLRDIS
              & WDTDIS
              & PWRTEN
              );

              __IDLOC(F675);
              #define SW GPIO0
              #define IR GPIO4

              #define RH 159
              #define RL 32
              #define TH 15
              #define SH 30
              #define SL 15
              #define N 12

              const unsigned char sig[N] = {
              0,1,0,1,0,0,0,0,
              0,0,0,0
              };

              /* 38KHz */
              void shot(unsigned char s){
              IR = s;
              NOP(); NOP(); NOP();
              NOP(); NOP(); NOP();
              NOP(); NOP(); NOP();
              IR = 1;
              }

              void main(void){

              unsigned char i;

              CMCON = 0b00000111;
              ANSEL = 0b00000000;
              GPIO = 0;
              TRISIO = 0b00000001;
              WPU = 0b00000001;
              GPPU = 0;
              OPTION = 0b00000100;

              IR = 1;

              while(1){

              while(SW);

              //Start bit H
              TMR0 = 0;
              while(TMR0 < RH) shot(0);
              //Start bit L
              TMR0 = 0;
              while(TMR0 < RL) shot(1);

              for(i = 0; i < N; i++){

              //Data bit H
              TMR0 = 0;
              while(TMR0 < TH) shot(0);
              //Data bit L
              TMR0 = 0;
              if(sig[i])
              while(TMR0 < SH) shot(1);
              else
              while(TMR0 < SL) shot(1);
              }

              //Stop bit
              TMR0 = 0;
              while(TMR0 < TH) shot(0);
              }
              }
              0

                赤外線リモコンの解析器2の製作

                 うまく学習リモコンが動作しないので、本当はオシロスコープがあれば良いのですが、測定器はテスターぐらいしか手元にはなく、購入するのも高い測定器なので躊躇します。

                リモコン解析器2 そこで、今度はリモコンのHighとLowの時間が測定できるリモコン解析器をもう1つ製作することにしました。材料費をケチって、以前に製作した赤外線リモコン解析器の空いている基板スペースに回路を組みました。組むといっても受光モジュールや液晶表示は兼用するようにして、動作させないPICマイコンは抜いておくことにしました。使用したのは、手持ちのPICマイコンの16F628AとディップSW(兼用回路で一部切替が必要なため)だけです(写真の基板で下にあるのが今回のマイコン)。

                 参考にしたのが図書館で見つけて借りてきた「PICとセンサの電子工作」という本で、丁寧に解説されているのでわかりやすいと思います。今度はC言語(PICC-Lite)なのでプログラムソースがわかりやすいので改良も簡単である。なお、本にはフリーソフトウェアもCDに格納されている(図書館から借りれます)。

                PICとセンサの電子工作
                PICとセンサの電子工作
                鈴木 哲哉
                0

                  学習リモコン難航

                   学習リモコンが一応組み上がりテストをしてみました。基本動作は動作しているようですが、リモコンのコードがオリジナル通りに再現せずにうまくコードが再現できていません。各社のリモコンをテストしてみたのですが、どれも駄目でした。市販の学習リモコンではうまくいき、リモコンコード解析器でみてもオリジナルと違うコードが出ているのが判かります。製作したリモコンのソースプログラムがPAという特殊なためどこが悪いのか全くわかりません。ノイズでの誤動作も発生しているようです。悩む・・・(やはり、どうもコード解析プログラムが弱いのようです)。

                   もう少し調べて判らなければ、ノイズにも弱そうなので学習リモコンは諦めるようと思います。メーカー製の学習リモコンは安定しているので流石ですね。どうしても駄目であれば、ROBOZAK用のリモコンをばらして入れるという方法が一番安上がりで確実なのかもしれません。
                  0

                    学習リモコンの製作

                     学習リモコンも多くの方が自作されており、今更、新規開発することもないので探してみました。ボタンの数は最終的には、PS2コントローラを赤外リモコンにするのですからそのボタン数だけあれば良いのですが、適当なものがなかなかありません。小型な学習リモコンの「学習リモコンの作成」を参考に改良することにしました。

                     ハードは標準のユニバーサル基板に納まるように配置して、省力別電源の回路はフィルタ回路を挿入してノイズ対策をしております。一応、試作は5Vでの動作を考えていますが、赤外LEDの到達距離よりも消費電力を削減する為に、正式のリモコンは単3電池2本の3Vにするつもりです。なお、I2CのSCLにプルアップ抵抗が入っていないので規格上問題なのでSDAとSCLに1.5K(3V化するので推奨最小値に)を入れました。

                     プログラムソースを見たら見慣れないソースでDOS版のPA.EXEでコンパイルするようになっていました。一部修正なので、最新版のPA.EXE(pa-3.0.5sはここから)をインストールすることにしました。しかし、オリジナルソースをコンパイルしてもいろいろ問題が発生しました。

                    (1)pIC16F84Aに対応していない
                     PIC16F84のままコンパイルして、HEXファイルの後半にあるデバイスのコンフィグレーション部分は削除する。
                     判りにくいので図で説明します。一般的なエディタでファイルを開いて、後半部分で左の反転表示させている部分を削除します。

                    (2)コンパイルエラー
                     多分、バージョンの違いだろうと思いますが、561行と609行の2ヶ所エラーが発生します。

                    ・561行のエラー箇所
                    cja bit_len,#BUF_LEN*8,n_get_err
                    →修正方法
                    mov data_buf,#BUF_LEN*8
                    cja bit_len,data_buf,n_get_err ; データバッファオーバーフロー
                    ・609行のエラー箇所
                    cja bit_len,#BUF_LEN*8,s_get_err
                    →修正方法
                    mov data_buf,#BUF_LEN*8
                    cja bit_len,data_buf,s_get_err ; データバッファオーバーフロー

                    上記の修正でコンパイルエラーはなくなります。
                    (work_bufをdata_bufに修正しました)

                    (3)書込みソフト
                     デバイスはPIC16F84Aを指定して、書込みソフトでコンフィグレーションを指定してから書き込みます。

                    あとは、リモコンのコードを理解して出来るかまた赤外線LEDがちゃんと発光しているかのチェックが必要である。これでも小型でボタン数は少ないですが、ページ切替できるので多機能である。小型なのでこれだけでも携帯電話感覚でRZ-1をコントロールできそうである。

                    (4)操作方法
                    .據璽孤充LED
                     次のように表示されるページが現在のページです。
                    ●●(ページ1)、●●(ページ2)、●●●(ページ3)・・・●●●(ページ7)
                    各ページに14個のデータを記憶できるので、最大14×7=98個のデータを記憶できる。
                    ▲好董璽織坑味釘
                     点灯中は操作可能で、消灯中は省電力モードになっている。短く2回点滅はReady状態で次の操作可能で、長く3回点滅はエラー状態でやり直しする。
                    ページキー
                     1回押すごとにページ(増加)が切り替わり、7ページの次は1ページに戻る。
                    ぅ如璽燭竜憶
                     メモリキーを押し、Ready表示されたら記憶させたいリモコンを本機に向けて目的の操作をする。続いてReady表示されたらもう一度リモコンを本機に向けて目的の操作をする(ちょっと面倒ですが2回行う)。次に記憶させたいキー(1〜14のどれか)を押せば記憶完了です。記憶させる前にページキーでページを切り替えることもできる。
                     エラー表示された場合、もう一度同じ操作を行ってみて、それでもダメな場合は残念ながらそのリモコンは対応できないコードです。
                    ゥ如璽燭料信
                     表示ページで、押されたキー(1〜14)に記憶されたデータを送信する。
                    Δ修竜’
                    ・5秒以上何も操作しないと省電力モードに切り替わる。
                    ・メモリ内容を全て消去したい場合、RB6と7を同時にGNDに接触(回路図内のJPをショート)させるとメモリクリアが行われる。クリア中はステータス点灯、ページLEDは消灯する。Ready表示され、ページLEDが点灯すればクリア完了です。
                    0


                      カレンダ

                            1
                      2345678
                      9101112131415
                      16171819202122
                      23242526272829
                      30      
                      << April 2017 >>