趣味のマイコンいじり

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

スマートフォンによる簡単な2WDカーのコントロール

スマホアプリによる2WDモータカーコントロール
     スマートフォンBluetoothアプリを使って、2WDのロボットカーの制御を
     検討して見ました。スマートフォンのアプリとしては、AndroidiOS
     同じものを提供している2種類を選び、その2種類が同一のソフトで対応
     可能なものにして操作上の違い等も確認しました。その時の、状況は次の
     様なものでした。

   [スマートフォンアプリ]
    スマートフォン側のアプリとしては、Android/iOS両方に同じものが有る
    次の2つを利用しました。

     f:id:I_Satoh:20191022151404p:plain

 [主要部品]
     使用した部品としては下記のもので、長方形の車体にはSTM8S103Fを
     円盤型の車体にはArduino Pro Miniをそれぞれ使用しました。

  f:id:I_Satoh:20191022151734p:plain

 [構成]
     部品を取り付けた状態の車体はそれぞれ下記の様になりました。

     f:id:I_Satoh:20191022151926p:plain

     1.コントロールスマホのアプリとしては、BLEJoystick と
            LOFI control を使用
     2.2WDの車体としては、長方形と円盤型のものを使用
     3.CPUとしては、長方形の車体にはSTM8Sを円盤型には
             Arduino Pro Miniをそれぞれ使用
     4.DCモータ駆動用のHブリッジは L9110 を利用
     5.Bluetooth-4.0のデバイスとしてはHM-10を利用
     6.駆動用の電源は、Ni-MHを4本(1.2Vx4)にして対応
     7.DCモータ駆動時の電圧低下補正用にDC to DC の
            ステップアップコンバータを利用

 [動作状況] 

     
 

<テスト内容>
  動作の検証に関しては次の事を目標としました。

     1.Bluetooth-4.0のデバイスHM-10とのインターフェイス
             動作を確認
     2.2つのスマホアプリからのデータ出力のフォーマットを
             確認
     3.スマホのアプリを利用してロボットカーを制御する状況を
            確認

     結果としては、ほぼ期待通りの制御ができる事を確認しました。
     ただし、2つのアプリで走行方向制御の方法が異なる為、操作に
     関しては好みがあるかと思いました。また、Bluetooth-4.0が
     簡単に利用できる事も確認できました。

 [機器の接続]

     f:id:I_Satoh:20191022152920p:plain

     f:id:I_Satoh:20191022153012p:plain

 [Bluetoothバイスとの接続]
     Bluetoothバイス HM-10 のアクセスに関しては、下記の様になっていて、
     HM-10のBluetoothの無線接続が無効の場合、CPUとHM-10間のATコマンド
     が有効となりBluetoothの無線接続が行われている場合は、無線接続
     デバイスとのやりとりとなっています。その為、ATコマンドを有効に
     するためのスイッチ等は付いていません。 

      f:id:I_Satoh:20191022153306p:plain

      有効なATコマンドの種類に関しては、Bluetooth無線接続が無効の状態で、
      HM-10に"AT+HELP"のコマンドを送れば、有効なコマンドのリストが
      返送されます。    

         f:id:I_Satoh:20191022153542p:plain

 [Applicationからの出力]
    2つのスマホのアプリケーションのデータ出力はそれぞれ異なっており、
     BLEJoystickでは1バイト毎に、LOFI controlでは画面上の6個の
     アイテムをひとつにまとめて、12バイトのパケットで送っています。
     また、LOFI controlではアイテム毎に2バイトを割り付けており、
     最初のバイトがアイテム識別用で、次がアイテムのデータとなって
     います。   

     f:id:I_Satoh:20191022153848p:plain

      f:id:I_Satoh:20191022153933p:plain

 [ホイールの交換]
     もともと付いている駆動部分以外のホイールでは、前進と行進を切り
     替えると、車体が大きく振れるので、下記の様な別なものと交換しま
     した。これにより、前進と行進の切り替え時の振れは止める事が
     できました。

     f:id:I_Satoh:20191022154200p:plain

 [DCモータ制御用PWM]
      車輪用のDCモータの駆動に関しては、モータ毎に2つの出力ポートを
      用意し、1つはレベルをもう一つはPWMとして、モータの電源を
      コントロールする様にしています。なお、CPU全てのポートがPWM
      出力用にできる訳ではないので、回転方向の切り替えに関しては、
      それぞれのポートの極性を切り替える方法で対応しています。また、
      PWMに関しては、モータの起動に、有る程度の時間と電圧が必要と
      なるため、低速時にはPWMの周波数を下げています。ただし、
      そのままではガタガタするので、目標速度に応じて、PWMの周波数も
      動的に変える様にしました。

       f:id:I_Satoh:20191022154539p:plain

      f:id:I_Satoh:20191022154624p:plain

 [CPU基板の電源]
     DCモータを駆動すると、モータの負荷により電源電圧が低下し、
     CPU等が暴走状態となる場合があるので、DC to DCのステップ
     アップコンバータを使って、CPU関連のデバイスの電源電圧を
     保証する様にしています。    

    f:id:I_Satoh:20191022154835p:plain

 [コードの書き込み]
     それぞれにCPUのコード書き込みに関しては、下記の様に行いました。
      なお、STM8S103Fに関しては、IDEを使わないでライターブログラムで
      Hexコードを書き込む事で対応できます。 

      f:id:I_Satoh:20191022155028p:plain

      f:id:I_Satoh:20191022155127p:plain

 [コードの構成]
      STM8S用に関しては、Arduinoのコードを少しの変更で利用できる様に、
      ラッパーを用意し、それにより、メインの部分はほぼそのまま使える
      様にしています。     

      f:id:I_Satoh:20191022155352p:plain

      f:id:I_Satoh:20191022155445p:plain

   [コードダウンロード]

     Code download URL : https://drive.google.com/open?id=1uAgdqboBhSCWWrrdcUTOZzy8lqJpobLc

 

 

rive.google.com