Let’s run Maqueen Robot on ESP32
Maqueen RobotをESP32で動かします。 2021.12.22
micro:Maqueenは DFRobot社の製品です。
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 ,
コメントを残す