趣味のマイコンいじり

安価なマイコンを利用して作成したアプリの紹介です。

FS1000A/MX-RM-5V と STM8S103F3P6ボードでラジコンカー作って見ました

eBayを見ていると433MHzの送信モジュールと受信モジュールのペアが
100円位で有ったので購入して、先に調べた1ドルCPUボードと組み合わせて
CPUボードによるラジコンカーを作って見ました。433MHzの送受信モジュールは
さすがに強い癖が有ってなかなか使いこなせなかったのですが、癖も取り敢えず
理解できて、目標のラジコンカーを作る事が出来ました。
その内容は以下のものです。

<433MHz 無線送信/受信モジュールの概要>
 購入した433MHz無線送信/受信モジュールは433MHxzのAMでデータの
   転送を行う為のもので、次の様なものでした。

 [デバイスの概要]
    イメージ 1

  1.送信モジュールはFA1000A
        433MHz、 AM変調、送信電力10mW、電源電圧 3.5V - 12V
   2.受信モジュールはMX-RM-5V
        電源 5V/4mA (4.5V以上必要)

 [デバイス利用上の注意点]
    受信モジュールは一筋縄で行くものではなく、利用する時に次の3つの大きな
    問題が有り、その対策が必要でした。

    1.データのHigh期間が長いと途中からデータが不安定になる。
        (原因は送受どちらに有るかは不明)
         そのため、UARTのデータをそのままバーストで送ると休止期間でエラーが
         多発し、UARTのデータを反転して送るか、バーストを止めて連続送信に
         する必要が有りました。今回はデータ反転のトランジスタをケチって
         連続転送にしました。

           UARTのバースト転送 --- そのままでは転送エラー多発
           UARTの反転データのバースト転送、UARTの連続転送 --- OK

    2.転送時にHighレベルのパルス幅が細り、距離が離れると更にその傾向が
          増える為、利用する時にHighレベルのパルス幅の補正が必要でした。
          反転のバースト転送では、送信側の反転用のトランジスタの出力に
          コンデンサを付ける事により、High->Lowの立下りを遅らせれば簡単に
          対応する事が出来ました。今回は連続転送にしましたが、CPUの利用
          ポートの特性上、UART出力にコンデンサつ付ける事で対応できました。

            High レベルのパルス幅が細くなる --- 遠距離、高速転送ではUARTの
                                                                   タイミングが確保できない
            データの High レベルのパルス幅を補正 --- OK

     3.これが一番厄介な問題で、受信モジュールの電源ラインに変動が有ると、
           チューニングがずれてデータの受信が不可能となりました。また、
           5V品は4.5V以上の電源電圧が無いと、いくらチューニング用の
           コイルを回しても受信できず、レギュレータを利用して5Vから変動の
           ないきれいな電源を作って利用する事はできませんでした。Webには
           3V品もあるので、多分どこかの抵抗を変更すれば対応できるのかと
           思いましたが、Web上に受信モジュールを9Vで利用しているとの記事も
           有りましたので、一旦9Vに昇圧してモーター駆動時等の電源変動の
           影響のないものを用意し、更に昇圧コンバータからのノイズを低減する
           電源フィルタを追加して対応できました。(本格的利用時には更なる
           検討が必要です。)

            受信モジュールの電源が変動あるいはノイズが有る  --- 受信不可能となる
            受信モジュールの電源を昇圧してノイズフィルタを入れてきれいな電源を
            用意  --- OK

 [動作検証]
    イメージ 2

  1.2つのCPUボードを用意して一つはジョイスティックの情報の送信、
          もう一つはそれを受信してモーターを駆動
  2.CPUボードは、1ドルCPUボード(CPU:STM8S103F3P6) を利用する
  3.制御対象は、2軸のジョイスティックによる左右のモーターの
          回転方向と速度
  4.ジョイスティックデータ転送はダミーデータを付加したUARTデータの
          連続転送

  [動作状
況]
  動作状況は次のURLから確認できます。
   

<関連資料>
  送受信モジュールの仕様は次のものを参考にしました。
   URL : https://www.willhaben.at/iad/kaufen-und-verkaufen/d/mx-rm-5v-433-mhz-rf-sender-und-empfaenger-fuer-arduino-215104263/

    CPUボードのプログラムに関しては次のものを参考にしました。
       URL : http://blog.mark-stevens.co.uk/the-way-of-the-register/

<テスト内容と結果>
    今回のモジュールは、上記の利用上の問題が有り、いつもネット上で最低価格の
    ものを探して購入していても全く問題は無かったのですが、当初全く動作する
    気配が無く、今回だけは外したのかと思いました。それでも、色々検討して、
    最終的に希望の機能が実現できる様になりました。
    諦めないで良かったと思いました。そこで、購入時の予定通り、このモジュール
    と1ドルCPUボードを利用してラジコンカーを作って見る事にしました。

       1.この送受信モジュールを使ってラジコンカーを作成
       2.制御用のCPUボードとしては、1ドルCPUボードを利用

   動作させた結果としては、次の様なものでした。

       1.受信モジュールの電源対策が美しく有りませんでしたが、当初の目標で
             有る1ドルCPUボードによるラジコンカーを作る事が出来ました。
       2.ただし、2つのモータをXY2軸の一つのジョイスティックで行う部分に
             関しては、現在の方法では操作がしづらく、それでも取り敢えずまとめる
             事にしましたが、まだまだ改善が必要かと思いました。
       3.課題は沢山在りましたが、それでも、無線モジュールを利用しての
             ラジコンカーは現実的なもので有る事が良く判りました。(色んな
             無線モジュールから、今回の目的に最適なものが見つかる事が期待
             できました。)

 [テストでの機器の接続]
    イメージ 4

    イメージ 3


 [コード類]
    今回は、コード作成時に参照した記事に合わせて、コードの開発にはIARの
    システムを利用しました。(STM8S103F3P6ボードののコード開発に関しては
    こちらの記事を参照して下さい。)

     Code download URL : https://www.dropbox.com/s/mkrah2so8la4ofe/IAR_STM8S103F3.zip?dl=0