知的好奇心 for IoT

IoT関連の知的好奇心を探求するブログです

キャタピラ車で使っているMotor Shieldのファームウェアの更新の仕方

キャタピラ車の記事で使っているWeMos Motor Shieldは、TB6612という2チャンネルのモータードライバをI2Cインターフェースで使えるようにした便利なボードです。

 

I2Cインターフェースの利点

秋月電子さんのTB6612をブレッドボードで使えるようにしたキットの説明書を見ると分かるのですが、TB6612でモーター2つをコントロールするにはGPIOを7つも使います。ESP8266にはGPIOが9つあるのでTB6612を1個使うと残りが2つしかなくなってしまいます。しかし、I2Cインターフェースを使うとSCLとSDA用にGPIOを2つしか使う必要がなく、しかもSCLとSDAは共有できるでの他のI2C対応ボードを使用してもGPIOを消費しなくなります。

 

Motor Shieldの欠陥

良いことづくめのように見えるWeMos Motor Shieldですが、かなり残念な欠陥があります。TB6612をI2C対応させるコントローラー"STM32F030"のメーカー製ファームウェアの動作がショボイんです。一応、動作はするんですが、スタンバイの状態でもグズグズ動いたりします。どうしてこうなった!

 

救世主はいた

しかし、世界は広いものです。この欠陥を自力で修復したプロジェクトが存在していました。

基本的には、この記事を見ながら手順に従って操作を行えばファームウェアを書き換えることができるんですが、記事が英語であることや書き換えるために必要な機器とプログラムについてあまり説明がないために、ちょっとハードルが高めでした。

 

Motor Shieldのファームウェアの更新の仕方

使ったもの(ハードウェア)

 

配線

f:id:IntellectualCuriosity:20180214190607j:plain

・WeMos Motor Shield
 G → -電源
 RTS → +電源
 3V → +電源
 R → TxD (超小型USBシリアル変換モジュール)
 T → RxD (超小型USBシリアル変換モジュール)
 DTR → (接続なし)

・超小型USBシリアル変換モジュール
 +5V → (接続なし)
 GND → -電源
 TxD → R (WeMos Motor Shield)
 RxD → T (WeMos Motor Shield)

・WeMos D1 mini
 3V3 → +電源
 GND → -電源

 

ファームウェア更新プログラム「stm32flash」の入手

以下のサイトからプログラムのソースコードが入手できます。(緑のDownloadボタンを押す)

URL:https://sourceforge.net/projects/stm32flash/

f:id:IntellectualCuriosity:20180214202807p:plain

64bit版のWindows用にだけ「stm32flash-05.win64.zip」というバイナリが用意されていますが、Windowsではシリアルポートの指定の仕方がUNIX系のOSと異なるため注意が必要です。

ここではRaspberry Piを使って説明していきます。

 

アーカイブファイルの展開

ブラウザでファイルをダウンロードすると「Downloads」フォルダにファイルが保存されます。ファイルマネージャーでダウンロードした「stm32flash-0.5.tar.gz」を右クリックして、「ここでファイルを展開」を選びます。

f:id:IntellectualCuriosity:20180214203719p:plain

 

実行ファイルの作成とインストール

ターミナルを実行して、ファイルを展開したディレクトリに移ります。

makeを実行すると、コンパイルが始まって実行ファイルが作成されます。

f:id:IntellectualCuriosity:20180214205121p:plain

実行ファイルができたらsudo make installを実行して、実行ファイルをインストールします。

f:id:IntellectualCuriosity:20180214205621p:plain

 

ファームウェアのダウンロード

Motor Shield Reprogramming」のサイトの比較的上の方にあるDownloadリンクをクリックして、新しいファームウェアをダウンロードします。

f:id:IntellectualCuriosity:20180214210126p:plain

 

更新プログラムの実行(接続確認)

Rapsberry Piと超小型USBシリアル変換モジュールを通信のできるUSBケーブルで繋ぎます。次にWeMos D1 miniを充電用のUSBケーブルでRaspberry Piに繋ぐか、他のUSB源に繋ぎます。

ターミナルでDownloadsフォルダに移動して、以下のコマンドを実行します。

stm32flash /dev/ttyUSB0

f:id:IntellectualCuriosity:20180214210439p:plain

上のように表示されればOKです。

 

更新プログラムの実行(ロックの解除)

コントローラーのロックを解除するコマンドを2つ実行します。

stm32flash /dev/ttyUSB0 -k

f:id:IntellectualCuriosity:20180214211841p:plain

stm32flash /dev/ttyUSB0 -u

f:id:IntellectualCuriosity:20180214212311p:plain

 

更新プログラムの実行(ファームウェアの書き込み)

最後に以下のコマンドを実行してファームウェアを書き換えます。

stm32flash /dev/ttyUSB0 -v -w motor_shield.bin

f:id:IntellectualCuriosity:20180214212606p:plain

100%と表示されたら書き込みは終了です!

USBケーブルやジャンパーワイヤを外して、生まれ変わったMotor Shieldを使ってみてください。

 

おわり