趣味のマイコンいじり

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

WeMos D1 mini Motor shield 基板を調べて見ました

ESP-01でI2Cのインターフェイスを実装して使えるモータドライブの基板として
WeMos D1 mini Motor Shield が有ったので購入して調べて見ました。
当初、I2Cの応答が全く無く、今回は外れたのかと思っていたのですが、回路を
調べると基板の構成が、I2Cのインターフェイスを担当するマイコンと2チャンネル
のモータドライブとなっており、マイコンのソフトを変更する事を調査しました。
調査の結果、既にこの事を調べて結果をWeb上に公開している人が居て、その方の
コードをI2Cのインターフェイスマイコンに書き込んだら、あっさり動く様に
なりました。公開している方に感謝・感謝でした。
以下はその時の状況を纏めたものです。

<D1 mini motor shield の概要>
  購入した「WeMos D1 mini motor shield」はI2Cによる2チャンネルのモータ
  駆動用のWeMos D1 mini 用のシールド基板で、次の様なものでした。
 [基板概要]
    イメージ 4

  1.I2Cインターフェイスチップは ST32F030F4 マイコン(書き込み可能)
        (購入したものには何も書き込まれていなかった?)
  2.I2Cアドレスは、0x2D-0x30 (default)
  3.モータドライブチップは TB6612
  4.I2Cインターフェイスの電源は3.3V
  5.モータ側は、VM=15V(Max)、  Iout=1.2A(ave) / 3.2A (peak) 、
          オン抵抗=0.5Ω

   今回購入したものには、I2Cのインターフェイスを担当するマイコンチップには
     何も書かれていなかった様で、下記の様にチップへのコードの書き込みが
     必要でした。なお、動作の検証としては、先の記事で利用した
     TAMIYA Tracked Vehicle にダブルギアボックスを取り付けた次の様なもので
     行いました。

 [動作検証]
    イメージ 1

  1.I2Cのモータ制御はESP-01で行う
  2.制御対象は、TAMIYA Tracked Vehicle のギアボックスを両側独立の
          Double Gearbox に変更したもの
  3.コントロールスマホからWiFi経由で行う

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

<関連資料>
  モータシールド基板のSTマイコン用のコードに関しては次の記事からのものを
    使いました。
   URL : https://hackaday.io/project/18439-motor-shield-reprogramming

    次のURLからSTマイコンバイナリコードの書き込み用ソストを入手しました。
       URL : https://sourceforge.net/projects/stm32flash/

    ESP-01で利用しているWebSocketのライブラリは次のものを使っています。
       URL : https://github.com/Links2004/arduinoWebSockets

    このモータドライブ基板駆動用のライブラリは次のものを使いました。
       URL : https://github.com/wemos/WEMOS_Motor_Shield_Arduino_Library

    この基板の回路図に関しては次のものを参考にしました。
       URL : http://i.imgur.com/PKt8gYx.png

    基板上のSTマイコンとモータドライバのチップのデータシートに関しては
    次のものを参考にしました。
       URL : http://www.datasheetq.com/view.jsp?pn=STM32F030F4&fac=ST-Microelectronics&lang=en
                https://www.sparkfun.com/datasheets/Robotics/TB6612FNG.pdf

<テスト内容と結果>
   I2Cでのモータドライブに関しては、前にTIのDRV8830チップによるもの
     を検討しましたが、今回は2チャンネルのドライバなので、ギアボックスを
     ダブルのものにして同様な内容を、ESP-01でスマホからコントロールする事
     にして行いました。

       1.TAMIYA Tracked Vehicle をダブルギアボックスにして、スマホから制御
       2.制御内容は、モータの回転速度と回転方向、ステアリングは左右の
             モータのバランスで対応

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

       1.スマホからの制御に関しては、目標通りに回転方向および回転速度を
             制御する事が出来ました。
       2.ただし、ステアリングの為の左右のモータのバランスをスライドバーで
             制御する事に関しては、スライドバーの変化の設定がSTマイコン
             スタックされる様で、スライドバーを激しく動作させた後の停止処理は
             スタックの消化の為か、かなり時間が掛かる事が判りました。
       3.その為、スライドバーでの設定に関しては、時間間隔を置いて対応する
             事とし、0.5秒にするとスライドバー動作後の停止がほぼリアルタイム
             となったので、時間間隔を0.6秒にして利用する事で対応する方法を
              採用しました。

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

 [コード類]
   コード類は次のURLからダウンロードできます。

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

<STマイコンの書き込み>
  購入したものには、I2Cインターフェイス用のSTマイコンにプログラムが
    書き込まれていない様で、I2Cのコマンドのレスポンスが全く有りませんでした。
    その為、以下のSTマイコンへのプログラムの書き込みが必要でした。
    書き込みの方法に関しては、上記の関連資料の先頭の項目で詳しく紹介されて
    いて、このページで紹介されているバイナリコードを利用して、次の様な処理を
    行いました。

 [接続]
    接続は、USBtoTTLとWeMos D1 mini motor shield の間で次の様に行います。

      USBtoTTL 側        motor shield 側
           GND                   GND
           3.3V                    RTS
           3.3V                    3V
           TxD                     R
           RxD                     T

 [書き込み処理]
    stm32flashを使って「motor_shiedl.bin」を書き込みます。
   (例はOSがWindowsの場合です。)

       check device  :  stm32flash COMx   (COMは大文字、xは割り当て番号)
       flash write : stm32flash -w motor_shield.bin -v -g 0x0 COMx

       イメージ 3