・I2C Wemos D1 mini Motor Shield 使かってみた
・ESP32 (M5Stack) で 安価な I2C モータードライバ を使ってみました。
1.安価なのは良いのですが、そのままではM5STACKで認識しない事がわかりました。
よって、Motor Shieldのファームウェアの再プログラミングが、必要な事が分かりました。
次からの説明は、Windows10 x64で実行した物です。
次からの説明は、Windows10 x64で実行した物です。
2.最初に下記より書き込みツールをダウンロードします。
STシリアルブートローダーを使用したSTM32用のオープンソースフラッシュプログラム
(stm32flash.exe)
3.次にバイナリファイルを下記よりダウンロードします。
*書き換えにより、アドレス設定用のランドは、無効となります。
*書き換えにより、アドレス設定用のランドは、無効となります。
標準のものは、I2Cアドレスが、「0x30」に固定の為、複数枚使う場合は、アドレスごと(アドレス0x2d、0x2e、0x2f、0x30)にコンパイルされたファームウェアが、必要です。
下記は、4つの異なるアドレスのファームウェアファイルを含んだzipファイルです。
https://github.com/pbugalski/wemos_motor_shield/files/1434679/motor_shield_XX_bin.zip4.2,3のファイルを同じフォルダに解凍、展開しておきます。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2019/12/19 10:26 3,116 motor_shield.bin
2017/11/02 00:39 3,104 motor_shield_2D.bin
2017/11/02 00:39 3,104 motor_shield_2E.bin
2017/11/02 00:39 3,104 motor_shield_2F.bin
2017/11/02 00:39 3,104 motor_shield_30.bin
2016/02/11 23:44 280 README.txt
2016/02/11 22:04 13,265 stm32flash-manual.pdf
2016/02/10 17:14 252,776 stm32flash.exe
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5.Motor Shield に書き込むための前準備をします。
① Wemos D1 Miniを使う場合
① Wemos D1 Miniを使う場合
①-1 空のスケッチをD1 Miniにアップロードします。これにより、シリアルデータがUSBポートからMotor Shield に、D1 Miniを経由して渡されます。
空のスケッチ:
//------------------------------------------------------------------------void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
//------------------------------------------------------------------------ ①-2 D1 Miniとの結線
*下記の写真のように結線します。
*Motor Shield を書き込みモードにするためにRTSは、3vに結線します。
② USB-SERIALインターフェースを使う場合
*下記の写真のように結線します。
*Motor Shield を書き込みモードにするためにRTSは、3vに結線します。
③次のコマンドを実行します。
重要:COM6を自分のCOMポート番号に置き換えて下さい。
*COMポートをデバイスマネージャにて確認
重要:COM6を自分のCOMポート番号に置き換えて下さい。
*COMポートをデバイスマネージャにて確認
1>C:\motorshield\stm32flash-0.5-win64>stm32flash.exe COM6
*ボードを認識しているか確認します。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
stm32flash 0.5
http://stm32flash.sourceforge.net/
Interface serial_w32: 57600 8E1
Version : 0x31
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0444 (STM32F03xx4/6)
- RAM : 4KiB (2048b reserved by bootloader)
- Flash : 32KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 3KiB
-------------------------------------------------------------------------------------
2>C:\motorshield\stm32flash-0.5-win64>stm32flash.exe -k COM6
*これにより、シールドのロックが解除されます。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
stm32flash 0.5
http://stm32flash.sourceforge.net/
Interface serial_w32: 57600 8E1
Version : 0x31
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0444 (STM32F03xx4/6)
- RAM : 4KiB (2048b reserved by bootloader)
- Flash : 32KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 3KiB
Read-UnProtecting flash
Done.
-------------------------------------------------------------------------------------
3>C:\motorshield\stm32flash-0.5-win64>dir
*ファイル名の確認
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ドライブ C のボリューム ラベルは S3SDD00-960 です
ボリューム シリアル番号は 44C7-1584 です
C:\motorshield\stm32flash-0.5-win64 のディレクトリ
2020/01/04 13:17 <DIR> .
2020/01/04 13:17 <DIR> ..
2019/12/19 10:26 3,116 motor_shield.bin
2017/11/02 00:39 3,104 motor_shield_2D.bin
2017/11/02 00:39 3,104 motor_shield_2E.bin
2017/11/02 00:39 3,104 motor_shield_2F.bin
2017/11/02 00:39 3,104 motor_shield_30.bin
2016/02/11 23:44 280 README.txt
2016/02/11 22:04 13,265 stm32flash-manual.pdf
2016/02/10 17:14 252,776 stm32flash.exe
2020/01/04 13:17 56 wemos_motor_shield.txt
9 個のファイル 281,909 バイト
2 個のディレクトリ 492,288,159,744 バイトの空き領域
-------------------------------------------------------------------------------------
4>C:\motorshield\stm32flash-0.5-win64>stm32flash.exe -f -v -w motor_shield_2F.bin COM6
*ここで希望のI2cアドレスのファイルを、書き込みます(例では「0x2F」)。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
stm32flash 0.5
http://stm32flash.sourceforge.net/
Using Parser : Raw BINARY
Interface serial_w32: 57600 8E1
Version : 0x31
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0444 (STM32F03xx4/6)
- RAM : 4KiB (2048b reserved by bootloader)
- Flash : 32KiB (size first sector: 4x1024)
- Option RAM : 16b
- System RAM : 3KiB
Write to memory
Erasing memory
Wrote and verified address 0x08000c20 (100.00%) Done.
-------------------------------------------------------------------------------------
6.書き込みが終わったら、配線をM5Stackに繋ぎ変え、I2Cで認識するか確認します。
*「0x2F」「0x30」として、認識しています。
*「0x2F」「0x30」として、認識しています。
確認用のスケッチ:
//------------------------------------------------------------------------
#include <M5Stack.h>
#include <M5Stack.h>
void setup()
{
M5.Lcd.begin();
M5.Lcd.setRotation(1);
M5.Lcd.fillScreen( BLACK );
M5.Lcd.setCursor(0, 0);
M5.Lcd.setTextColor(YELLOW);
M5.Lcd.setTextSize(3);
M5.Lcd.fillScreen( BLACK );
M5.Lcd.setCursor(0, 0);
M5.Lcd.println("M5Stack I2C Tester");
Wire.begin();
delay(3000);
M5.Lcd.fillScreen( BLACK );
}
int textColor=YELLOW;
void loop()
{
int address;
int error;
M5.Lcd.setCursor(0, 0);
M5.Lcd.println("scanning Address [HEX]");
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if(error==0)
{
M5.Lcd.print(address,HEX);M5.Lcd.print(" ");
}
else M5.Lcd.print(".");
delay(10);
}
if(textColor==YELLOW) textColor=GREEN;
else textColor=YELLOW;
M5.Lcd.setTextColor(textColor,BLACK);
delay(5000);
}
//------------------------------------------------------------------------7.ライブラリは、下記よりダウンロードします。
Wemos D1ミニモーターシールド(i2cインターフェイス、TB6612ベース)用のArduinoライブラリ。
参考URL:モーターシールドの再プログラミング
コメント