macsbug

Let’s run Maqueen Robot on ESP32

leave a comment »

Maqueen RobotをESP32で動かします。                  2021.12.22

micro:MaqueenDFRobot社の製品です。
MotorはGear付でトルクが大きく低速でも動作はスムーズです。
車輪は大きくタイヤのゴムは床面との接触が良く安定した走行ができます。
Maqueenの様な完成度の高いRobotを製作するのは容易ではありません。
Maqueen Robotを使用する事により工作の手間なく動かす事が出来ます。

Arduino IDEで プログラムできます。
コントローラーは ESP32 MiniKit , ESP32 S2 Mini, M5Stack , M5Stack ATOMを使用しました。
結果、ESP32 MiniKit はコストパフォーマンスが良いです。



.

ライントレース
DownLoad:Maqueen_LineTrace_MiniKit.zip
DL後 pdfを削除しzipを解凍します。

.

障害物回避 (HC-SR04を使用します)
DownLoad:Maqueen_avoid_MiniKit.zip
DL後 pdfを削除しzipを解凍します。

.
Maqueen V3.0 の装備:ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
電源:単3電池3個 4.5Vを使用します。
入力:IRラインセンサー=2個、IR受信機=1個。
出力:LED=2個、RGB LED=4個、ブザー=1個、モーター =2個。
_  5V HC-SR04超音波センサ接続 =1個、3V I2C=1個、
_  3V I/O Expansion Port =2個 が装備されています。
Univerasal Board:端子は 23個あり電源を除き11個使用しています。

ライブラリ:ArduinoやESP32で動作するサンプルが用意されています。
多数のインターフェースとライブラリで容易に動作させる事ができます。


.
準備:

開発環境:Arduino IDE

コントローラー:3つの方法を試しました。
1. MH-ET LIVE ESP32 MiniKit:小型で薄くGPIO数多く 価格(560円)は安いです。
2. ESP32 S2 MIni:薄く小さく GPIO数多く 低価格。だだし Without TELECです。
3. M5Stack:ディスプレーがあり便利ですが 価格が高いです。
4. M5Stack ATOM:小さくて便利ですが GPIOは 少なく機能が限定されます。

Library:
1. github:kd8bxp / micro-Maqueen-Arduino-Library :LeRoy Miller氏に感謝。
2. github:microflo / NewPing


.
部品リスト:

No. Nomen Purchase Price
1 micro Maqueen Bundle one *1
Happy Electronics
(3754+937):2021.12.18=$32
4691円
1 micro Maqueen
アマゾン 3820円
2 micro:bitユニバーサル基板 *2
秋月電子通商 120円
3 MH-ET LIVE ESP32 MiniKit
WAGAT Official Store 1個 560円
3 ESP32 S2 Mini V1.0.0 without TELEC
LOLIN Official Store $5.05 807円
3 M5Stack Basic
M5Stack Official Store
($31.9+$4.73)
4166円
3 M5Stack ATOM PSRAM *3
M5Stack Official Store
($38.5+$4.05)
4839円
3 Arduino Nano 3.0 Atmega328
WAVGAT Official Store
($3.9+$1.16)
579円

.
Maqueen:価格は過去より高くなっていますので低価格をお探しください。
*1 2019年8月の購入情報:価格=3402円($30.7)、輸送期間=9日。
*1 価格変動は Price Archiveで販売店のURLを入力しますと確認できます。

*2 秋月電子通商の基板は 金メッキで接触良くサイズも適切で固定具合が良いです。
*2 aitendoの基板は良くないです。金メッキでなく接触良くなく緩みもあります。

*3 M5Stack ATOMは Serial Tipの設計ミスがあり 上記のATOM PSRAMを使用。
*3 ATOM PSRAMは Serial TipにCH9102Fを使用し問題はありません。
*3 GPIO数が少なく目的により改造が必要や機能が少なくなります。


.
Maqueen Block Diagram:解析したブロック図を示します。
1. Maqueen コネクター:microbit準拠で 3V,GND,P0からP20で表現しています。
2. 電源:単3電池3個で 4.5VDC です。3.5〜5.0Vと基板に書かれています。
3. 電源 5.0V:最大230mA, HC-SR04等の5V系に使用します。
4. 電源 3.3V:最大200mA, I2C, MCU, LED, I/O Expansion Port の3V系に使用。
5. Motor電源:Battery 4.5V です。
6. Motor制御:STM32をI2C Interfaceにし I2C制御によりDriverでMotorを動かしています。

 


.
1. MH-ET LIVE ESP32 MiniKit

部品情報:

No. Nomen Purchase Price
1 MH-ET LIVE ESP32 MiniKit WAGAT Official Store 1個 560円
2 micro:bitユニバーサル基板 秋月電子通商 120円
3 Diode , RSX051VA-30 YIXUANTAI Official Store 1個 13円
3 Diode 秋月電子通商 1個 17円
4 XHコネクタ 2P B2B-XH-A(電源) 秋月電子通商 10円
5 コネクタ付コード2P(D)赤黒(電源) 秋月電子通商 30円
6 Tip Resistor, 1KΩ x 3 秋月電子通商 60円
7 ピンソケット(メス) 1×4(4P) 秋月電子通商 20円
8 シングルピンソケット(低メス) 秋月電子通商 60円
9 小型スライドスイッチ(電源) 秋月電子通商 25円
10 0.96″ 128×64 I2C OLED (白) 秋月電子通商 580円
10 0.96″ 128×64 I2C OLED (青) ebay : 2015.6 491円

.
Universal基板とMiniKit基板:
_ 厚さを薄くする為にコネクターは使用せずハンダで直付けしています。
_ 接触防止の為に基板の間に絶縁テープを貼っています。
HC-SR04 超音波距離センサー:ECHO信号5VをESP32の3.3Vに変換します。
_ HC-SR04は 5V動作で MiniKitは 3.3V動作です。
_ P2 HC-SR04 ECHO_PINは 5Vdcの為 1KΩ Resistoerの組み合わせで3.3Vdcにします。
_ 分圧方法:ECHO(5V) + 1KΩ+(*)1KΩ+1KΩ + GND に接続します。
_ GNDに対し2KΩの所 (*) 3.3Vを MiniKit 13pinに接続します。計算値:2(KΩ)*5(V)/3(KΩ)=3.3Vdc。
4.5V Battery: 2ピンコネクタを通じ Diode で一方向に流し MiniKit 5V pinへ接続します。
_ Diodeの向き:4.5V → MiniKit 5V pin
0.96inch 128×64 I2C OLED:上部 黒い4ピンコネクターに接続できます。
_ OLEDを使用しない時は 黒い4ピンコネクターの配線は不要です。 
_ Libraryは ESP8266_and_ESP32_OLED_driver_for_SSD1306_displays を使用します。
_ OLED Displayは無くても良いですが表示すると便利です。
Maqueen 4.5V Battery:Maqueen基盤裏からUniversal基板へ接続します。
_ 基板裏にある Battery 4.5Vの端子へワイヤーを半田付けします。
_ ワイヤーは基板にあるネジ穴から通すと綺麗に配線できます。

注意:
OLED は種類により VCC とGND が逆です。電源配置を間違えると破損します。
現在は GND,VCC,SCL,SDA タイプが多いです。
画像の配線は VCC,GND,SCL,SDA タイプです。
OLED端子:GND,VCC,SCL,SDA タイプ。秋月電子通商のOLED
OLED端子:VCC,GND,SCL,SDA タイプを使用。2015年6月にebayで購入した物。

 

 
 


.
2. ESP32 S2 Mini

 
.


.
3. M5Stack

M5Stack PROT基板(スルーホール式基板)とmicrobitユニバーサル基板を重ねます。
ライントレースには P1 TRIGGER PIN と P2 ECHO PIN が必要です。
使用する場合は MiniKitを参考に配線を追加して下さい。
.
部品リスト:

No. Nomen Purchase Price
1 M5Stack Basic M5Stack Official Store ($31.9+$4.73) 4166円
2 micro:bitユニバーサル基板 秋月電子通商 120円
3 M5Stackユニバーサル基板 Tommorow氏設計製作 200円
4 小型スライドスイッチ 秋月電子通商 25円
4 XHコネクタ 2P B2B-XH-A 秋月電子通商 10円
5 コネクタ付コード2P(D)赤黒 秋月電子通商 30円

 


.


.
4. M5Stack ATOM

電源:バッテリ(4.5V)からスイッチ経由でATOMの5V端子へ接続します。
改修:GPIOを9個にします。
1. ATOM GROVE端子(2.0mm)を2.54mmに変換します。
2. ATOM Switch端子(G39)をコネクターに増設します。
.
部品リスト:

No. Nomen Purchase Price
1 M5Stack ATOM PSRAM *2 M5M5Stack Official Store
$38.5+$4.05
4839円
2 micro:bitユニバーサル基板 秋月電子通商 120円
3 XHコネクタ 2P B2B-XH-A(電源) 秋月電子通商 10円
4 コネクタ付コード2P(D)赤黒(電源) 秋月電子通商 30円
5 小型スライドスイッチ(電源) 秋月電子通商  25円
6 シングルピンソケット(低メス) 秋月電子通商 60円
7 0.3mm厚 ユニバーサル基板 Cタイプ 秋月電子通商  120円
8 2mmピッチピンソケット1×20(20P) 秋月電子通商 50円
9 ピンソケット(メス) 1×5 (5P) 2個 秋月電子通商 50円
10 縦ピンヘッダ 1×8 2個 秋月電子通商 20円

 

1. GROVE端子 2.0mmメスコネクタ -> 2.54mm基板 -> ピンヘッダ 2ピン

2. ATOMの改修:難易度が高い為 ATOMを破損しない様に注意してください。
_ 事前に検討し無理な場合は実施しない事。
_ チップパーツや基板を壊さない様に注意する事。
_ ATOMのケースを外す。
_ 4ピンと5ピンのコネクタを外す。このピンの幅は狭いタイプです。
_ 4ピン メスコネクタ と 5ピン メスコネクタの足を削り狭くする。
_ 4ピン メスコネクタ と 5ピン メスコネクタ が緩く基板に入ることを確認する。
_ 4ピン メスコネクタ と 5ピン メスコネクタ をハンダ付けする。
_ 追加した5ピンに Switch GPIO G39 を配線する。
_ ケースの4ピン側を5ピンサイズに穴あけ加工をする。
_ ケースを組み上げる。

 

.
.



.
プログラム:ESP32 MiniKit
ライブラリの変更;MaqueenのピンとESP32のピンを合わせます。
ライブラリは スケッチフォルダーの中に配置する方法があります。
スケッチフォルダーの中ならば、個別に設定等を変更できます。
Library:github:kd8bxp /micro-Maqueen-Arduino-Library を使用します。
Maqueen.cpp (I2C) と Maqueen.h (GPIO) を設定します。

モーターは I2C接続で「Maqueen.cpp」で設定されています。
I2CのSDA,SCLを以下の様に設定します。
.
Maqueen.cpp

Wire.begin(14,33); // SDA,SCL macsbug

.
入出力のGPIOは「Maqueen.h」で設定されています。
GPIOを以下の様に設定します。
.
Maqueen.h

#define LED1        27 // left  led
#define LED2        17 // right led
#define PATROLLEFT  23 // left  line sensor
#define PATROLRIGHT 19 // right line sensor
#define CW  0x0        // CW
#define CCW 0x1        // CCW
#define M1  0x00       // left  motor
#define M2  0x02       // right motor
#define BUZZER      25 // BUZZER
#define IR          26 // IR
#define BTNA        -1 // button A
#define BTNB        -1 // button B
#define TRIGGER_PIN  5 // HC-SR04 Trigger Transmit
#define ECHO_PIN    13 // HC-SR04 ECHO Receive
#define MAX_DISTANCE 500

サンプル:ライントレースの変更方法。
HC-SR04 超音波距離センサー(2-400cm)をMaqueen前面のコネクタへ接続します。
exsample 「library_example7_line_follow
microbit に関する記述を削除します。 例:microbit.matrix.begin();

結果:以下の記述になります。
23行でプログラムでライントレースが可能です。
モーターは bot.setSpeed(speed) と bot.forward(); の組み合わせで動作します。

#include <Maqueen.h>
Maqueen bot;
int speed = 10; //this is a percentage from 1 to 100

void setup() {
  bot.begin();
}

void loop() {
 bot.setSpeed(speed);
  if (bot.readPatrolRight() == 0 && bot.readPatrolLeft() == 0){
    bot.forward(); 
  }
  if (bot.readPatrolRight() == 0 && bot.readPatrolLeft() == 1){
    bot.right();
  }
  if (bot.readPatrolRight() == 1 && bot.readPatrolLeft() == 0){
    bot.left();
  }
  if (bot.readPatrolRight() == 1 && bot.readPatrolLeft() == 1){
    bot.spinLeft();
  }
}

走行ラインに対し柔軟な対応のできるプログラムの工夫をすると良いでしょう。
走行ラインの幅やMaqueenの速度と方向の組み合わせは影響が大きいです。
以下は、サンプルよりもエラー動作が少なくなります。

void loop() {
  int R = bot.readPatrolRight(); int L = bot.readPatrolLeft(); int D=0;
  if (R == 0 && L == 0){ bot.setSpeed( 1); bot.forward();   }
  if (R == 0 && L == 1){ bot.setSpeed( 5); bot.right(); D=0;}
  if (R == 1 && L == 0){ bot.setSpeed( 5); bot.left();  D=1;}
  if (R == 1 && L == 1 && D == 1){ bot.setSpeed( 5); bot.spinLeft(); }
  if (R == 1 && L == 1 && D == 0){ bot.setSpeed( 5); bot.spinRight();}
}

モーター制御及び入出力命令
begin(); , setSpeed(int speed); , motorRun(int motor, int direction, int speed);
stop(); , forward(); , backward(); , spinLeft(); , spinRight(); , right(); , left();
isRunning(); , sPlaying(); , beep(float noteFrequency, long noteDuration);
readIR(); , readPatrolLeft(); , readPatrolRight(); , readA(); , readB();
サウンド:r2d2 等の11種類の音が出ます。
squeak(); , catcall(); , ohhh(); , laugh(); , augh2(); , waka(); , r2d2();
scale(); , uhoh(); , error(); , sos();

RGB LED:NeoPixel
RGB0, RGB1, RGB2, RGB3 COLOR LED は P15に接続されています。
今回のライブラリーには 命令はありません。
NeoPixelのLibraryを使用すると良いでしょう。

.
DownLoad:
ライントレース:
Maqueen_LineTrace_MiniKit.zip。DL後 pdfを削除しzipを解凍します。
フォルダー内には Libraryが内蔵され、MiniKit用のI2C,GPIOの設定も記載されています。

障害物回避;
Maqueen_avoid_MiniKit.zip。DL後 pdfを削除しzipを解凍します。
フォルダー内には Libraryが内蔵され、MiniKit用のI2C,GPIOの設定も記載されています。

ライブラリーとサンプル:ライブラリーには以下のサンプルがあります。
変更方法を参考にして動かしてみてください。
gamepad_sender
library_example1_motor
library_example2_avoid :障害物回避
library_example3a_blink_led
library_example4_ultrasonic_display
library_example5_ble_controller
library_example5a_gamepad_control
library_example6_ir_remote_control
library_example6a_get_ir_codes
library_example7_line_follow :ライントレース
library_example8_light_sensor_based_on_Sparkfun_code
Library_LED_Matrix_Demo
More

 



.
プログラム:ESP32 S2 Minikit
ライブラリの変更;MaqueenのピンとM5Stackのピンを合わせます。
.
Maqueen.cpp

Wire.begin(10,8); // SDA,SCL macsbug

Maqueen.h

#define LED1         1 // left  led
#define LED2         4 // right led
#define PATROLLEFT   3 // left  line sensor
#define PATROLRIGHT  5  // right line sensor
#define CW  0x0        // CW
#define CCW 0x1        // CCW
#define M1  0x00       // left  motor
#define M2  0x02       // right motor
#define BUZZER      19 // BUZZER
#define IR           2 // IR
#define BTNA        -1 // button A
#define BTNB        -1 // button B
#define TRIGGER_PIN 11 // HC-SR04
#define ECHO_PIN    14 // HC-SR04
#define MAX_DISTANCE 500

DownLoad:
ライントレース:
Maqueen_LineTrace_S2Mini.zip。DL後 pdfを削除しzipを解凍します。
フォルダー内には Libraryが内蔵され、M5Stack用のI2C,GPIOの設定も記載されています。

障害物回避;
Maqueen_avoid_S2Mini.zip。DL後 pdfを削除しzipを解凍します。
フォルダー内には Libraryが内蔵され、M5Stack用のI2C,GPIOの設定も記載されています。
.



.
プログラム:M5Stack
ライブラリの変更;MaqueenのピンとM5Stackのピンを合わせます。
.
Maqueen.cpp

Wire.begin(21,22); // SDA,SCL macsbug

Maqueen.h

#define LED1        18 // left  led
#define LED2        17 // right led
#define PATROLLEFT  16 // left  line sensor
#define PATROLRIGHT 5  // right line sensor
#define CW  0x0        // CW
#define CCW 0x1        // CCW
#define M1  0x00       // left  motor
#define M2  0x02       // right motor
#define BUZZER      19 // BUZZER
#define IR          16 // IR
#define BTNA        -1 // button A
#define BTNB        -1 // button B
#define TRIGGER_PIN  5 // HC-SR04
#define ECHO_PIN    13 // HC-SR04
#define MAX_DISTANCE 500

DownLoad:
ライントレース:
Maqueen_LineTrace_M5Stack.zip。DL後 pdfを削除しzipを解凍します。
フォルダー内には Libraryが内蔵され、M5Stack用のI2C,GPIOの設定も記載されています。

障害物回避;
Maqueen_avoid_M5Stack.zip。DL後 pdfを削除しzipを解凍します。
フォルダー内には Libraryが内蔵され、M5Stack用のI2C,GPIOの設定も記載されています。
.



.
プログラム:M5Stack ATOM
ライブラリの変更;MaqueenのピンとM5Stack ATOMのピンを合わせます。
.
Maqueen.cpp

Wire.begin(25,21); // SDA,SCL macsbug

Maqueen.h

#define LED1        27 // left  led
#define LED2        17 // right led
#define PATROLLEFT  19 // left  line sensor
#define PATROLRIGHT 5  // right line sensor
#define CW  0x0        // CW
#define CCW 0x1        // CCW
#define M1  0x00       // left  motor
#define M2  0x02       // right motor
#define BUZZER      22 // BUZZER
#define IR          26 // IR
#define BTNA        -1 // button A
#define BTNB        -1 // button B
#define TRIGGER_PIN -1 // HC-SR04
#define ECHO_PIN    -1 // HC-SR04
#define MAX_DISTANCE 500

DownLoad:
ライントレース:
Maqueen_LineTrace_ATOM.zip。DL後 pdfを削除しzipを解凍します。
フォルダー内には Libraryが内蔵され、M5Stack ATOM用のI2C,GPIOの設定も記載されています。

障害物回避;
Maqueen_avoid_ATOM.zip。DL後 pdfを削除しzipを解凍します。
フォルダー内には Libraryが内蔵され、M5Stack ATOM用のI2C,GPIOの設定も記載されています。
.


.
感想:
Maqueen Robot と Arduino IDE:
_ Maqueen RobotとScratchの記事はありますが Arduino IDEの記事が無くまとめました。
_ Scratch , UIFlowの基は LVGLです。LVGLを使用した方が良いでしょう。
_ Scratch , UIFlowは 各機能やセンサー等のライブラリが無いと出来ません。
_ Arduino IDEは ライブラリーが多数ある事と その都度作成する事ができます。
_ Maqueen Robotは Scratchでしか使用できませんでしたが
_ micro-Maqueen-Arduino-Library により
_ 最大の利用者のある Arduino iDEで可能になりました。
_ これにより 完成度の高いMaqueen Robotを多くの人が使用できるでしょう。

Maqueen Robotの回路図:
_ microbit用のMaqueen Robotは 記事が多くありますが、回路図が見つかりません。
_ 回路図無くして、皆、どの様にしているのかと思う次第です。
_ その為 ブロック図を作成しました。各部の電圧も測定し役立つかと思います。

I2C:
_ モーター制御は I2Cで行い Driver ICでDC Motorを動かしています。
_ I2C は STM 8bit MCUで I2C Interfaceを構成しています。
_ I2Cの命令は 前へ進む(forward();)、バックする( backward();) 等が用意されています。
_ これによりモーター制御のプログラムが容易になっています。
_ この方法に関心致しました。

コストパフォーマンス:MiniKit、S2 Mini, M5Stack、M5Stack ATOM の比較。
MiniKitは 費用、小型、薄さ、手間が無く 一番良いです。
S2 Miniは 最も薄く小型でGPIO数が多く便利です。ただしwithout TELECです。
M5Stackの画面を活用して見栄えが良くなるプログラムが出来るでしょう。
M5Stack ATOMは 小さいくて良いですが GPIO少なく機能が低下します。
_ ATOMにI/O Expander ICを追加すれば機能は高くなりますが面倒ですし
_ 限りなくM5Stackに近づき考えてしまいます。
Arduino Nano 3.0 Atmega328は GPIO数がギリギリ間に合い使用可能です。
_ ただし WiFiが無いために機能が限定されます。

 


DFRbot , Maqueen , ESP32 , MH-ET LIVE ESP32 MiniKit , M5Stack , ATOM , ATOM PSRAM ,

Written by macsbug

12月 22, 2021 @ 8:15 pm

カテゴリー: ESP32, M5STACK

コメントを残す