macsbug

Archive for 8月 2019

Operate M5 Whell (moio) with RCWControll

leave a comment »

M5 Whell ( moio ) を RCWController アプリ で操作しました。 2019.08.26

RCWController アプリは ゲームパッドのインターフェイス を持ち、
iPhone や iPad で 操作する事ができます。

 M5 Wheel ( moio ) RCWController

RCWController の機能:UDP通信でWi-Fi機器と接続でき、ジョイスティク や ボタン
_ などを タップすることで、操作に対応するデータが送信されます。

RCWController ダウンロード:App Store RCWController。micutil氏に感謝致します。

robo8080氏のブログに RCWController アプリを使用した記事、
ESP32-DevKitCに、RCWControllerを接続してみた。」があります。
その github に ESP32とRCWControllerを接続するテストプログラム
ESP32_RCWController_Test」があり 設定、操作、データの仕様が書かれています。
上記からダウンロードして RCWController.h を入手します。robo8080氏に感謝致します。

以上から RCWController.h を使用し、M5 Whell ( moio ) のスケッチを作成しました。

仕様:今回のスケッチは Right Joystick 操作のみです。
_  必要に応じて 他の操作を追加します。
_  追加機能は Loop内の x , y に 操作の値を入れます。


.
データフォーマット表: Operation と buffer[ 0 to 9 ]
_ 縦軸は Operation、横軸は 0 – 9 で buffer[ 0 to 9 ] の配列です。
_ 例:Right Joystick の UP / DN は 配列5の値が UP は 255 , DN は 1 です。
_ 例:Right Joystick の Right/Left は 配列4の値が Right は 255 , Left で 1 です。

Operation \ buffer 0 1 2 3 4 5 6 7 8 9
 ……………………………. ……… ……… ……… ……… ……… ……… ……… ……… ……… ………
 R JOY CENTER 128 128 9
 R JOY UP 255 9
 R JOY DN 1 9
 R JOY R 255 9
 R JOY L  1 9
 R PUSH SW Y 16 1
 R PUSH SW A 32 1
 R PUSH SW B 64 1
 R PUSH SW X 1 1
 R1 8 1
 R2 16 1
 L1 2 1
 L2 4 1
 SELECT 12 1
 START 3 1
 L JOY CENTER  128 128 18
 L JOY UP 255 18
 L JOY DN  1 18
 L JOY R 255 18
 L JOY L 1 18
 L TOGGLE UP 1 1
 L TOGGLE DN  2 1
 L TOGGLE R  4 1
 L TOGGLE L  8 1
 R ACCEL CENTER 128 128 1 97
 R ACCEL UP 1 1 97
 R ACCEL DN 255 255 97
 R ACCEL R 255 255 97
 R ACCEL L 1 1 97
 L ACCEL CENTER 128 128 1 65
 L ACCEL UP 1 1 65
 L ACCEL DN 255 255 65
 L ACCEL R 255 255 65
 L ACCEL L 1 1 65
 ……………………………. ……… ……… ……… ……… ……… ……… ……… ……… ……… ………
Operation \ buffer 0 1 2 3 4 5 6 7 8 9

.
作成:
_ RCWController と Blynk 、Servo のスケッチを合体しました。
_ iOS RCWController アプリからの値は データフォーマット表に示す 1 〜 255 です。
_ M5の Blynk servo ルーチンでは この値を 255 〜 -255 で使用します。
_ これにより void loop内で map命令にて 以下の様に変換しています。
_ 例:x = map(buffer[4], 1, 255, 255, -255); // R JOYSTICK X
_ 後に Blynk servo ルーチンは 見やすくする為に while文から if文に変更しました。

接続方法:
_ 1. iPad の WiFi設定 は ESP32-RCWC を選択します。 Password は esp32pass です。
_ 2. RCWController アプリを動かし 中央の ON ボタンで WiFi接続します。
_  もしくは接続時に IP が表示されます。
_ 3. 右下側の ANALOG ( pink ) を選択し Joystick にします。
_ 4. Joystick で操作が出来ます。


.
参考:
M5 Wheel Module ( moio )
Make M5Stack Servo Module
robo8080のブログ:ESP32-DevKitCに、RCWControllerを接続してみた。
ESP32_RCWController_Test


.
感想:
身近な iPhone や iPad で操作出来ると簡単です。
Blynk:前回記事の Blynk は ネット接続が必要で 不便です。
RCWController の 接続は iPad と M5 moio 間で接続する時に便利です。
PS4 等の専用コントローラーで操作出来るとさらに便利になります。
コントローラー以外に、自動操縦の機能が出来ると良いかと思っています。

BeetleC:操作性の良く無い BeetleC のコントローラーに使用出来ます。


.
スケッチの構成:
_ 

スケッチ:M5 moio RCWControll :
_ ORG : : 2019.08.26 : macsbug
_ rev.1 : battery, motor : 2019.09.01 : macsbug
_ rev.2 : UDP, Operability of x : 2019.09.05 : macsbug
仕様:Right Joystick のみのスケッチです。
.

// M5Stack moio + RWCController JoyStick: org 2019.08.26 : macsbug
// rev.1 : battery, motor                   : 2019.09.01 : macsbug
// rev.2 : UDP, Operability of x            : 2019.09.05 : macsbug  
// https://macsbug.wordpress.com/2019/08/26/operate-m5-whell-mono-with-rcwcontroll/
// RCWController Test Program for ESP-WROOM-32 2017/4/3 by robo8080
// https://github.com/robo8080/ESP32_RCWController_Test
// https://macsbug.wordpress.com/2019/08/21/m5-wheel-module-moio/
// https://homemadegarbage.com/esp32_minirobot01
// https://mvdlande.wordpress.com/2019/06/02/drv8833-motor-driver-module/
// DRV8833 + M5Stack + DC MOTOR
// INx  :GPIO:  OUTx : MOTOR   :CH : 
// IN1  :  5 :  OUT1 : RIGHT - : 1 : 
// IN2  : 17 :  OUT2 : RIGHT + : 2 : 
// IN3  : 13 :  OUT3 : LEFT  + : 3 : 
// IN4  :  0 :  OUT4 : LEFT  - : 4 : 
// DRV8833 H-BRIDGE
// IN1 = PWM, IN2 = 0   : Foword  PWM, fast decay
// IN1 = 1  , IN2 = PWM : Foword  PWM, slow decay
// IN1 = 0  , IN2 = PWM : Reverse PWM, fast decay
// IN1 = PWM, IN2 = 1   : Reverse PWM, slow decay
// Controll/buffer:   0   1   2   3   4   5   6   7   8   9
// ---------------: --- --- --- --- --- --- --- --- --- ---
// R JOY CENTER   :                 128 128               9
// R JOY UP       :                     255               9 
// R JOY DN       :                       1               9
// R JOY R        :                 255                   9
// R JOY L        :                   1                   9
// R PUSH SW Y    :      16                               1
// R PUSH SW A    :      32                               1
// R PUSH SW B    :      64                               1
// R PUSH SW X    :   1                                   1
// R1             :   8                                   1
// R2             :  16                                   1
// L1             :   2                                   1
// L2             :   4                                   1
// SELECT         :      12                               1
// START          :       3                               1
// L JOY CENTER   :         128 128                      18
// L JOY UP       :             255                      18
// L JOY DN       :               1                      18
// L JOY R        :         255                          18
// L JOY L        :           1                          18
// L TOGGLE UP    :       1                               1
// L TOGGLE DN    :       2                               1
// L TOGGLE R     :       4                               1
// L TOGGLE L     :       8                               1
// R ACCEL CENTER :   0   0 128 128 128 128 128 128   1  97
// R ACCEL UP     :   0   0 128 128 128   1 128   1 128  97
// R ACCEL DN     :   0   0 128 128 128 255 128 255 128  97
// R ACCEL R      :   0   0 128 128 255 128 255 128 128  97
// R ACCEL L      :   0   0 128 128   1 128   1 128 128  97
// L ACCEL CENTER :   0   0 128 128 128 128 128 128   1  65
// L ACCEL UP     :   0   0 128   1 128 128 128 255 128  65
// L ACCEL DN     :   0   0 128 255 128 255 128 255 128  65
// L ACCEL R      :   0   0 255 128 128 128 255 128 128  65
// L ACCEL L      :   0   0   1 128 128 128   1 128 128  65
// ---------------: --- --- --- --- --- --- --- --- --- ---
// Controll/buffer:   0   1   2   3   4   5   6   7   8   9

#include <M5Stack.h>
#include <WiFi.h>
#include <WiFiUdp.h>
#include "RCWController.h"
const char ssid[] = "ESP32-RCWC";
const char pass[] = "esp32pass";
WiFiUDP udp;
unsigned int localPort = 10000;
const int PACKET_SIZE = 256;
char packetBuffer[PACKET_SIZE];
long S, L, R, c1, c2, c3, c4, x = 0, y = 0;
char buff[32]; // UDP buffer

int8_t getBatteryLevel(){
  Wire.beginTransmission(0x75);
  Wire.write(0x78);
  if (Wire.endTransmission(false) == 0
    && Wire.requestFrom(0x75, 1)) {
    switch (Wire.read() & 0xF0) {
    case 0xE0: return 25;
    case 0xC0: return 50;
    case 0x80: return 75;
    case 0x00: return 100;
    default: return 0;
    }
  }
  return -1;
}

void battery_level(){
  M5.Lcd.setCursor(0, 200);
  M5.Lcd.print("Battery Level: ");
  M5.Lcd.print(getBatteryLevel());
  M5.Lcd.print("%");
  M5.Lcd.setCursor(0, 220);
  if (getBatteryLevel() == -1){M5.Lcd.print(" or Not USB IP5306");}
}

void motor() {
  S = sqrt( x * x + y * y );
  if ( S > 255 ){ S = 255;}
  M5.Lcd.clear(BLACK);
  M5.Lcd.setCursor(5, 25);M5.Lcd.print("speed: ");M5.Lcd.print(S);
  M5.Lcd.setCursor(5, 65);M5.Lcd.print("x: ");M5.Lcd.print(x);
  M5.Lcd.setCursor(5,105);M5.Lcd.print("y: ");M5.Lcd.print(y);
  R  = 0 ; if (x >= 0){ R = abs(x);}
  L  = 0 ; if (x <  0){ L = abs(x);}
  c1 = c3 = 1 ; if ( y >= 0 ){ c1 = S - R; c3 = S - L;}
  c2 = c4 = 1 ; if ( y <  0 ){ c2 = S - R; c4 = S - L;}
  ledcWrite(1, c1); // ch1, Phase,  5, IN1, RIGHT MOTOR-
  ledcWrite(2, c2); // ch2, PWM  , 17, IN2, RIGHT MOTOR+
  ledcWrite(3, c3); // ch3, Phase, 13, IN3, LEFT  MOTOR+
  ledcWrite(4, c4); // ch4, PWM  ,  0, IN4, LEFT  MOTOR-
}

void setup() {
  M5.begin();
  M5.Lcd.fillScreen(TFT_BLACK);
  M5.Lcd.setTextColor(GREEN);
  M5.Lcd.setTextSize(2);
  ledcSetup(1,5000,8);ledcSetup(2,5000,8); // channel,freq,resolution_bits
  ledcSetup(3,5000,8);ledcSetup(4,5000,8); // channel,freq,resolution_bits
  ledcAttachPin( 5, 1); // GPIO 5 , ch1, IN1, OUT1, RIGHT MOTOR-
  ledcAttachPin(17, 2); // GPIO17 , ch2, IN2, OUT2, RIGHT MOTOR+
  ledcAttachPin(13, 3); // GPIO13 , ch3, IN3, OUT3, LEFT  MOTOR+
  ledcAttachPin( 0, 4); // GPIO 0 , ch4, IN4, OUT4, LEFT  MOTOR-
  ledcWrite(1,0);ledcWrite(2,0);ledcWrite(3,0);ledcWrite(4,0);// STOP
  battery_level();delay(3000);
  WiFi.softAP(ssid, pass);
  IPAddress myIP = WiFi.softAPIP();
  M5.Lcd.setCursor(5, 15);M5.Lcd.print("AP IP address: ");M5.Lcd.println(myIP);
  M5.Lcd.setCursor(5, 35);M5.Lcd.print("Starting UDP");
  udp.begin(localPort);
  M5.Lcd.setCursor(5, 55);M5.Lcd.print("Local port: ");M5.Lcd.println(localPort);
  M5.Lcd.setCursor(5, 75);M5.Lcd.print("wifi ssid = ESP32-RCWC");
  M5.Lcd.setCursor(5, 95);M5.Lcd.print("password  = esp32pass");
  M5.Lcd.setCursor(5,115);M5.Lcd.print("Operate RCWController");delay(5000);
  M5.Lcd.fillScreen(BLUE);delay(1000);M5.Lcd.fillScreen(TFT_BLACK);
  M5.Lcd.setTextSize(3);
  M5.Lcd.setCursor(5,25);M5.Lcd.print("START");
}

void loop() {
  int rx = udp.parsePacket();              // UDP packet size
  if (rx) {                                // UDP recive
    int len = udp.read(buff,rx);           // recive lengs
      if (len > 0){                        // recive action
         buff[len] = '\0';                 // Termination clear
         x = map(buff[4],1,255,  50,-50);  // R JOYSTICK X:  50 to -50
         y = map(buff[5],1,255,-255,255);  // R JOYSTICK Y:-255 to 255
         if ( abs(y) < 100 ){ x = x * 2;}  // Operability of x 
         motor();                          // move motor
      }
  } 
}

moio , M5Stack , M5 Wheel Module , RCWController , wifi , UDP ,

Written by macsbug

8月 26, 2019 at 6:00 pm

カテゴリー: M5STACK

M5 Wheel Module ( moio )

leave a comment »

M5 Wheel Module を製作しました。               2019.08.21
全体の名称は moio と言います。

moio moio


.
M5 Wheel Module の Metal Gear Type:費用 1500円

M5 Whell Module ( Metal gear ) M5 Whell Module ( Metal gear )

.
M5 Wheel Module の Plastic Gear Type:費用 760円。

M5 Whell Module ( Plastic gear ) M5 Whell Module ( Plastic gear )

.
M5Stackを除く 2400mA Battery + Servo + Metal  Gear Type:費用 2500円
M5Stackを除く 2400mA Battery + Servo + Plastic Gear Type:費用 1800円。

M5Stack + 2400mA Battery  (640円) Servo Module DRV8833  (330円)
M5 Wheel Module (Metal Gear) (1500円) M5 Wheel Module (Plastic Gear)(760円)

.
構成とサイズ:


.
準備:
1. M5Stack:
2. M5STACK Strongest 2400 mAh Battery Module:633円。
3. Make M5Stack Servo Module:329円。
4. M5 Wheel Module: Metal Gear Type:1492円。
5. M5 Wheel Module:Plastic Gear Type:  752円。


.
費用詳細:
全体 ( moio )
_ 以前の記事にある  2400 mAh Battery ModuleServo Module を組み合わせます。

No Nomen Purchase Price
1  M5Stack
2  2400mA Battery Module  2400 mAh Battery Module     633円
3  Servo Module  M5Stack Servo Module     329円
4  Wheel Module:Metal  Gear  以下の部品表に記載   1492円
4  Wheel Module:Plastic Gear 以下の部品表に記載     752円
= ==================== ================ ======
1 費用総計: Metal Gear   2454円
2 費用総計:Plastic Gear   1714円

 


.
部品表:
⭕ M5 Wheel Module:Metal Gear Type:Gear は金属製です。
_ 価格は円レートにより変化します。

No Nomen Purchase Price
1  3V DC Micro U-Typ Gear Box
. Motor N20 5-4000RPM
. Voltage:3V, Speed:200RPM
.
 ebay:xyfs-us Store
. 輸送期間:7-11日。
. 557円 x 2個(pcs)
 1114円
1 3V DC Micro U-Typ Gear Box
. Motor N20 5-4000RPM
. Voltage:3V, Speed:200RPM
.
 Aliexpress:miniyard Store
. 輸送期間:16day, 9day
. 469円 x 2個(pcs)
.
.追記:2019.08.22:$4.41
  938円
2  Oring 18mm :
. Thickness: 1.9mm
. Outside Dia: 18mm
 ebay:mnsmoresell
. 輸送期間:25日
      12円
3  Screw:8ea
. M2 5mm ナベTapping Screw
 西川電子部品株式会社       12円
4  pcb:0.3mm厚ユニバーサル基板  秋月電子通商:Cタイプ     120円
5  ピンヘッダー 1×6 (6P)  秋月電子通商:6P       20円
6  シングルピンソケット(低メス)14p  秋月電子通商:低メス14P       50円
7  CASE  3D Printer 自作:材料費     340円
8
= ==================== ================ ======
費用総計 ( Total cost )  Motor : xyfs-us Store   1668円
費用総計 ( Total cost )  Motor : miniyard Store   1492円

メモ:Motor の No-load speed(RPM) は  50 から 1000 までの種類があります。
_  50 や 100 は 進む速度が遅いです。
_  150 か 200, 300 が良いかと思います。
_  (計算:150=11cm/s, 200=16cm/s, 300=21cm/s)
_  最初は 150 を使用してましたが その後は 200 又は 300 を使用しています。
_   200 は 適度に速く細かな動作が出来ます。
_   300 は 速度は速く傾く程でなく 機敏な動作をします。
_  追記:2019.08.22 Aliexpress の miniyard Store をリストに追加しました。
メモ:O-Ring は 千石電商で ゴムベルト15mm (163円)が販売されています。
.

⭕ M5 Wheel Module:Plastic Gear Type:赤いケースの中にPlastic Gear内臓。

No Nomen Purchase Price
1  Micro 412 Coreless
. Gear Motor DC 3V
.
 ebay:supersinostore
.  輸送期間:13日. 93円 x 2個(pcs)
 186円
2  Oring 18mm :
. Thickness: 1.9mm
. Outside Dia: 18mm
 ebay:mnsmoresell
.  輸送期間:25日
     12円
3  Screw:4ea
. M2 5mm ナベTapping Screw
 西川電子部品株式会社      12円
4  pcb:0.3mm厚ユニバーサル基板  秋月電子通商:Cタイプ    120円
5  ピンヘッダー 1×6 (6P)  秋月電子通商:6P      20円
6  シングルピンソケット(低メス)14p  秋月電子通商:低メス14P      50円
7  CASE  3D Printer 自作:材料費    352円
8
= ==================== ================ ======
費用総計    752円

 


.
仕様:全重量とタイヤ直径、ギヤー比から速度を計算する。
1. Metal Gear:速度は 1秒間11cm。
_ 全体の重さ:125g :Rorted Torque=63g (2綸の片側)。
_      :補助 2400mA Battery 追加 = 170g
_ タイヤ直径:18mm
_ トルク表から計算:販売店 xyfs-us Store に記載あり。
_ 1. Voltage:3VDC 。( 他に 6V, 12V がある )
_ 2. Speed:150RPM ( 他に 200RPM, 300RPM がある)
_ 3. トルク:3V:NO LOAD SPEED=150, Rorted Torque=63g (2綸の片側)
_ 4. LOAD SPEED:120rpm
_ 5. Roted Torque:100g.cm:Rorted Torque=63g に対し 100g/cm で動く。
_ 計算値:18×3.14=56mm。120/56=2rpm/sec。56×2=112mm/sec
_  結果:11cm/sec

_ メモ:
_ NO LOAD SPEED=150 の場合は 11cm/sec
_ NO LOAD SPEED=200 の場合は 16cm/sec
_ NO LOAD SPEED=300 の場合は 21cm/sec
_

2. Plastic Gear:
_ 1. Voltage:DC3V-3.7V。
_ 2. Speed:300RPM
_ 全体の重さ 125g でも動きます。


.
諸元:
1. Metal Gear:全体の価格の半分を占め、高めになります。
_ 騒音は モーター音 ぐらいで静かです。
_ 価格は高めですが 騒音や複数の稼働環境を考慮すると Metal Gear が良い。
2. Plastic Gear:価格は低価格です。Gearの音が大きいです。
_ 低価格で気楽ですし、少しだけ試すのに良いかと思います。


.
製作:3D Printer で製作しました。白色の6つが Printer の出力です。
.

_ CAD図面:

Metal Gear Plastic Gear

.
_ 配線:Make M5Stack Servo Module を参照ください。
_  注意: Motor回転方向:Motor の + – は Motorにより回転方向が異なります。
_      回転方向が異なる場合は + – の配線を逆にします。

 M5Stack 3V3 GND GPIO 5 GPIO 17 GPIO 13 GPIO 0
 DRV8833 VCC GND IN1 IN2 IN3 IN4
 DRV8833 ULT GND OUT1 OUT2 OUT3 OUT4
 DC Motor L Motor – L Motor + R Motor + R Motor –

.
_ 組み立て完成:Metal Gear Type + Motor

.
_ Motor + Servo Module 組立。+ M5Stack + 2400mA 組立後の裏側。
_ 車輪を含めた高さは 43mmです。
_ 車輪は2個で球体の支えは1個の3本足です。
_ 転倒防止の為に補助の球体の支えがあり 位置は 1mm 低く通常は設置されていません。

.
_ Servo専用 2400mA Battery Module :
_ 画像左 の 2400mA専用バッテリー追加により 長時間動作が可能になります。
_ 高さは 11mm 追加。全体は 45 + 11 = 56mm の高さになります。
_ M5Stackの幅(54mm)より高く見えると デザイン的に綺麗で無くなります。

Added 2400mA Battery ( H=56mm ) moio STANDARD  ( H = 45mm )

.
メモ:
_ 車輪:直径 18mm、幅 2.6mm で 設置面に半円の溝を設け O-Ringを填めます。
_    構造的に横からの力に弱い点が考えられます。
_    強度が足りない場合は 再設計する必要があります。
_ 強度:全体の強度は通常の玩具と比べるとかなり弱いと思われます。
_ 価格:ケースの材料費は 340円 (SCL)。
_    調査:DMM.makeの価格は高く 作る意味が無い為、使用しません。
_    M5サイズで凸凹のかみ合わせ形状に捕らわれずに製作すれば低価格が可能。
_ 接続:M5Stack Proto Board は横にコネクターを出す物が多く見た目が綺麗でない。
_    綺麗さを出す為に コネクター接続は 内部で縦に接続するデザインです。

ABS版(左) と スケルトン版(右):


.
スケッチ作成:
1. BLYNKで操作する。以下を参照に GPIO を設定するとJoystickで操作が可能です。
_ blynkkk/blynk-library:Blynk Library
_ App Store:Blynk – IoT for Arduino, ESP32:iOSアプリ
_ 参考:ホームメイドガービッジ:ESP32 と BLYNK と円形ロボットシャーシーキットと
_ 上記スケッチを参照し M5 Wheel Module ( moio ) 版を作成。
_ リストは この記事の最下位に記載します。
_ 参考:お父ちゃん:M5Stick-Car:I made Blynk-controlled mini Car using M5Stick-C.
_ 
_ ⭕追記:2019.08.27
_  Operate M5 Whell (moio) with RCWControllRCWController アプリ操作方法。
_  iPhone (iPad) と M5 moio 間で直接 WiFi 接続するので便利です。
_  
.
以下、他の方法を示します。
2. JoaoLopesF氏の ESP32MotorControl Library を使用する。
_ 例:MotorControl.motorForward(0, speed); にて制御出来ます。
3. M5StckCのBeetleCを使用する。m5stack/M5-ProductExampleCodes
4. iOSアプリの RCWController を使用する。
_ robo8080/ESP32_RCWController_Test


.
参考:
_ JoaoLopesF/ESP32MotorControl:ライブラリー
_ jkb-git/ESP32Servo:ライブラリー
_ blynkkk/blynk-library:Blynk ライブラリー
_ App Store:Blynk – IoT for Arduino, ESP32:iOSアプリ
_ ホームメイドガービッジ:ESP32 と BLYNK と円形ロボットシャーシーキットと
_ BeetleC (W/O M5StickC) $11.95:
_ M5StickC+BeetleC M5StickC+BeetleC+M5StickVで自動運転する
_ m5stack/M5-ProductExampleCodes:BeetleC:UDP通信による WEBコントロール。
_ iOSアプリの:RCWController
_ robo8080/ESP32_RCWController_Test:RVWControllerの使用例。
_ ホームメイドガービッジ:M5StickC で倒立振子 PID制御編 ー倒立振子への道 3
_ ごじ:ESP-WROOM-02で動かす小型 (50x50x50mm) のラジコンカー
_ 


.
感想:
M5サイズの車輪製作:
_ M5Stack 発売時より M5サイズの車輪を望んでいました。
_ 多くの車は 車輪が大きく本体より外にあり、動作範囲も大きく綺麗でないです。
_ 製作する内に 何故か 限りなく SONYの「toio」に近づいてきました。
_ 比べれば比べる程 天と地の差を ひしひしと感じます。今回の製作物は
_ おもちゃにもならないレベルです。
_ センサー等を駆使すると多機能な物ができますが 今回は基本の駆動部分のみです。

_ 拡張性:センサー等を PROTO Module で Stack する予定です。
_ スケッチ:制御用アプリは重要で 今回は Blynk を試しました。Blynk は 目の前の
_  物をネット経由で操作する為、好みではありません。他に 距離センサー や
_  光センサー、accelerator 等を駆使し 操作性の良い スケッチが必要です。
_ Motor:No load Speed(RMP) は 50,100,150,200 を試しました。
_    結果、50,100 は速度が遅く 使い道に難があります。当初 150 を試し
_    使用できていますが 200 の方が速度対応が広く 200 を追加発注しました。
_    250以上は試していませんが 速度が速くなると本体が傾くか 全体を高く
_    すると、倒れる事が起きるかと思います。動画は 200 を使用しています。
_    調査の為に 300 を Order中です。
_ Gear:Gear 未使用の作品や製品を見かけますが Gear が無いと 速度が速く
_    Controll しにくい事や トルク不足になるかと判断しています。

メモ:追記:2019.08.24
_ CAD データーと出力について:
_ 1. ブログの WordPress は 圧縮データーを投稿出来ない為に 残念ながら
_   CAD データー を公開する事ができません。GitHubは使用方法が解りません。
_ 2. データーは プロ用の3D Printer (300万クラス)を使用した CADデーターです。
_   通常のプリンターは 精度(X,Y軸)が低く正しく出力しません。
_   理由は 凸部分(幅が狭い)を出力する事ができないからです。
_   M5Stackは 射出成型でX,Y軸が 0.6mm幅(凸部)で 材質も強く
_   通常のプリンターでは 出力出来ない精度と強度になっています。
_   この条件をクリヤーする為に 他の工作では Expansion方式を記載しています。
_ 3. Wheel Module のような M5Stack の後部の場合は 凸部の工夫により低精度
_   でも可能です。低精度用の図面は 作成しておらず 低精度に合わせた現物合わせ
_   も 0.2mm 単位で必要になります。
_ 4. 都内や M5Stack 等の集まりで出力品をお渡しする事は可能です。

.
_ toio と moio の比較:toioの機能と超小型サイズは見事です。

SONY toio:技術と努力の集大成から学ぶ物が多いです。
_ ロボットや玩具の中で1番の製品で、他に toio にまさる製品はありません。
_ 参考:toio 分解図
_ 現物や分解画像から想像すると、見れば見る程 検討に検討を重ねた内容に驚きます。
_ 外観や素材の安全性があり 投げても壊れない設計。
_ 車輪は縦横の力に強い材料と構造になっている。不思議な素材で出来ています。
_ Motor は今回使用している Motor より小さく強力(速度が速い)。
_ このサイズのMotorは素人では秋葉原やebay、Aliespress では手に入らない。特注品?
_ Gear は プラスチック製で騒音は殆ど無く SONYらしい高精度な設計。これは凄い!
_ ケース事態のネジ止めはない。
_ 車輪は2つで 支えは 1つ。4輪だと浮く場所ができるからだろう。
_ 2つ目の支えは 転倒を防ぐことが出来る様です。高速の時に必要。
_ 支えはスイッチにもなっている。ここまでアイデアが入っている。
_ シートの微細な画像を読む為に、画像を認識出来るセンサーが下に搭載されている。
_ この画像認識出来るセンサーは 素人には手に入らない。
_ シートのアイデアは素晴らしい。シートから情報を得る事ができる。
_ シートでプログラムも出来る高度な内容。このアイデアは他にも使用できる。
_ 速度は 30cm/sec 位かと思われます。
_ 小さい為に小回りが出来て 遊べる範囲が広いです。
_ 小さなバッテリーが内蔵され 2時間以上持つと公表されています。凄い省エネ技術。
_ このサイズに入る程 各部のチューニングが素晴らしい。
_ ハードとソフトの作り込みが凄いです。
_ 圧倒され 他に、私には解らない事も含まれていると思います。
_ APIが公開され M5StackやESP32で操作する事が可能です。
_ 今回のWheelの製作が面倒な場合は toio を購入された方が良いです。
_ 長年の開発期間と内容から 価格は理解出来ますが 遊ぶには高い。
_  低価格で 車輪部分だけの販売があれば良いなと思っています。

 


.
スケッチ:M5Stack moio + BLINK : 2019.08.21 macsbug

// M5Stack moio + BLINK : 2019.08.21 macsbug
// https://macsbug.wordpress.com/2019/08/21/m5-wheel-module-moio/
// https://homemadegarbage.com/esp32_minirobot01
// https://mvdlande.wordpress.com/2019/06/02/drv8833-motor-driver-module/
// DRV8833 + M5Stack + DC MOTOR
// INx  :GPIO:  OUTx : MOTOR   :CH : 
// IN1  :  5 :  OUT1 : RIGHT - : 1 : 
// IN2  : 17 :  OUT2 : RIGHT + : 2 : 
// IN3  : 13 :  OUT3 : LEFT  + : 3 : 
// IN4  :  0 :  OUT4 : LEFT  - : 4 : 
// DRV8833 H-BRIDGE
// IN1 = PWM, IN2 = 0   : Foword  PWM, fast decay
// IN1 = 1  , IN2 = PWM : Foword  PWM, slow decay
// IN1 = 0  , IN2 = PWM : Reverse PWM, fast decay
// IN1 = PWM, IN2 = 1   : Reverse PWM, slow decay 

#include <M5Stack.h>
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "frss_BKbeyBIIehKeBK2hAEp78NCB-Ym"; // BLINK
char ssid[] = "your ssid";
char pass[] = "your password";
long S, L, R;

BLYNK_WRITE(V0) {   // V0 ( Joystick ) 
  long x = param[0].asInt();
  long y = param[1].asInt();

  M5.Lcd.fillScreen(TFT_BLACK);
  M5.Lcd.setCursor(5,25);M5.Lcd.print("x: ");M5.Lcd.print(x);
  M5.Lcd.setCursor(5,65);M5.Lcd.print("y: ");M5.Lcd.print(y);

  S = sqrt( x * x + y * y );
  if( S > 255 ){ S = 255;}
  M5.Lcd.setCursor(5,105);M5.Lcd.print("speed: ");
  M5.Lcd.print(S);M5.Lcd.print("  ");

  if( y >= 0 ){ M5.Lcd.println("FOWARD");    // FOWARD
    if( x >= 0 ){ L = 0;        R = abs(x/2);
    }else{        L = abs(x/2); R = 0;
    }
    ledcWrite(1, S - R); // ch1, PWM  ,  5, IN1, RIGHT MOTOR-
    ledcWrite(2, 1);     // ch2, Phase, 17, IN2, RIGHT MOTOR+
    ledcWrite(3, S - L); // ch3, PWM  , 13, IN3, LEFT  MOTOR+
    ledcWrite(4, 1);     // ch4, Phase,  0, IN4, LEFT  MOTOR-
  }else{      M5.Lcd.println("BACK");        // BACK
    if( x >= 0 ){ L = 0;        R = abs(x/2);
    }else{        L = abs(x/2); R = 0;
    }
    ledcWrite(1, 1    ); // ch1, Phase,  5, IN1, RIGHT MOTOR-
    ledcWrite(2, S - R); // ch2, PWM  , 17, IN2, RIGHT MOTOR+
    ledcWrite(3, 1    ); // ch3, Phase, 13, IN3, LEFT  MOTOR+
    ledcWrite(4, S - L); // ch4, PWM  ,  0, IN4, LEFT  MOTOR-
  }
}

void setup(){
  M5.begin();
  M5.Lcd.fillScreen(TFT_BLACK);
  M5.Lcd.setTextColor(TFT_WHITE);
  M5.Lcd.setTextSize(3);
  
  ledcSetup(1, 5000, 8); // channel, freq, resolution_bits
  ledcSetup(2, 5000, 8);
  ledcSetup(3, 5000, 8);
  ledcSetup(4, 5000, 8);
                        //GPIO,Ch, INx, OUTx, MOTOR
  ledcAttachPin( 5, 1); //  5 , 1, IN1, OUT1, RIGHT MOTOR-
  ledcAttachPin(17, 2); // 17 , 2, IN2, OUT2, RIGHT MOTOR+
  ledcAttachPin(13, 3); // 13 , 3, IN3, OUT3, LEFT  MOTOR+
  ledcAttachPin( 0, 4); //  0 , 4, IN4, OUT4, LEFT  MOTOR-
  
  M5.Lcd.setCursor(1,25);M5.Lcd.print("SSID=" + String(ssid));
  Blynk.begin(auth, ssid, pass);
  delay(3000);
}

void loop(){
  Blynk.run();
}

M5Stack , M5 Wheel Module , moio , DRV8833 , Wheel , SONY , toio , Blynk , BeetleC ,

Written by macsbug

8月 21, 2019 at 2:00 pm

カテゴリー: M5STACK

Make M5Stack Servo Module

leave a comment »

M5Stack Servo Module を製作しました。            2019.08.10

Servo Module は DC Motor 又は Stepper Motor を ドライブします。
Driver tip は DRV8833 (90円) を使用し 費用は 400円です。

調査チップは 左上から L9110, DRV8833, MX1508, DRV8835 の4種類です。


.
Drive IC と Module 表:

 

 

Name price Size mm Store Transport Operation
 L9110     83円 29×23   yang-sell584  22 day X
 DRV8833     90円 19×16   shoptongs  15 day
 MX1508   267円 25×21   sweetsale07  16 day
 DRV8835   300円 15×10   秋月電子通商
 L297     80円 25×21   picturesqre-
 L298N     40円 25×21   Glintdeer
 DRV8833     59円 19×16   SAMIORE

_ 評価:価格, 輸送期間, サイズ, 工作容易, 動作 調査の結果 DRV8833 を採用。
_   仕様:Output Current=1.5A, e Power Supply Voltage Range=2.7 to 10.8 V

_ L9110:基板に組む為のコネクターの取り外しが手間と動作が不安定で非採用。
_ DRV8833:ebay の shoptongs Store は 2個180円と安く、輸送期間は15日で短い。
_      小型の為、複数個の搭載が可能。
_ DRV8833国内価格:スイッチサイエンスは 733円で8倍の高価格。購入は非採用。
_ MX1508 は L298N と同等品の様です。低価格重視の為に非採用。
_ DRV8835:超小型で組み込み便利。優秀な基板です。低価格重視の為に非採用。
_       入力電源と出力電源は別系統の設計になっています。
_ 追記:2019.08.27:L297, L298N , DRV8833 調査中


.
部品準備:

No Nomen Purchase Price
1  DRV8833  ebay;shoptongs    90円
2  ピンヘッダー ( male, H=7.7mm )  秋月電子通商:

  低オス 2 x 40

   90円
3  ピンヘッダー 1×6 (6P)  秋月電子通商:ピンヘッダ    20円
4  M5Stack PROTO Board  tomorrow氏設計製作 基板  100円
5  M2 5mm ナベTapping Screw(4ea)  西川電子部品株式会社      6円
6  ケース:H=8.3mm  自作:材料費 FDM
  Low cost PROTO module
  of M5STACK Part 2
   14円
7  ショットキーバリアダイオード
. RSX101VAM-30, 30V1A
 秋月電子通商:
  RSX101VAM-30
     9円
=  ====================  ================ ======
費用総計 329円

.
配線:
_ M5Stack 配線例:配線は 10本です。
_ DRV8833 の 入力(GPIO)電源はVCC、出力 (Motor)電源は ULT(VM) です。
_  電源は 共に M-BUS の 3.3Vを使用します。
_  ULT – VCC間のショットキーバリアダイオードは VCC から ULT へ供給します。
_   補足:補助バッテリ未接続時に ULT へ電源を供給します。
_  外部もしくは補助バッテリーを使用する時は ULT(VM) へ接続します。
_ DRV8833 の IN 1,2,3,4 に M5Stack の GPIO を接続します。
_ DRV8833 の OUT 1,2,3,4 に DC Motor を接続します。
_ メモ : IN, OUT は基板上の名前、IC の名前は AIN, BIN, AOUT,BOUT です。
_ メモ:MOTORの回転方向:+, – 表示と回転方向は MOTORにより異なります。

 M5Stack 3V3 GND GPIO 5 GPIO 17 GPIO 13 GPIO 0
 DRV8833 VCC GND IN1 IN2 IN3 IN4
 DRV8833 ULT GND OUT1 OUT2 OUT3 OUT4
 DC Motor L Motor – L Motor + R Motor + R Motor –

.
_ 各端子と動作表: 1つの Motor の動作を示します。

INx IN1 IN2 DRV8833 Input
GPIO 5 7 M5Stack M-BUS
Motor RIGHT – RIGHT + DC Motor
1 PWM 0 Foward fast
2 1 PWM Foward slow
3 0 PWM Reverse fast
4 PWM 1 Reverse slow

.
_ スケッチの基本:

ledc Channel 1 2 3 4
    M-BUS GPIO 5 17 13 0
    DRV8833 IN 1 2 3 4
    DRV8833 OUT 1 2 3 4
    Motor Right – Right + Left  + Left  –

 

ledWrite ( ch , PWM or Phase );
ledWrite ( 1 , PWM);  // PWM   : Foward slow
ledWrite ( 1 , 1 );   // Phase : Foward slow

_ 基板レイアウトと回路図、配線。

.
_ DRV8833 Module Schematic

.
Servo Module Layout:

.
_ Solder side wiring

メモ:
_ Motorの電源は M5Stack USB 又は 2400mA Battery の 3.3v を使用します。
_ Motorの電源は 外部バッテリーを使用する事も可能です。
_ 配線面の右上のコネクターは 外部バッテリー接続時の予備のコネクターです。
_ 綺麗なデザインにする為に 接続コネクターは横から出さず 縦に接続します。


.
資料:
L9110:L9110 Datasheet
DRV8833:DRV8833 Dual H-Bridge Motor Driver
MX1508:Using the MX1508 Brushed DC Motor Driver , pdf
DRV8835:DRV8835 Dual Low-Voltage H-Bridge IC
H-BRIDGE:どの Module (tip) も H-BRIDGE 接続 ( Motor の正逆転) が可能です。
_ H-Bridge DC Motor Applications
Adafruit DRV8833 DC/Stepper Motor Driver Breakout Board
My Tech notes:DRV8833 motor driver module:回路動作と回路図。
Pololu:DRV8833 Dual Motor Driver Carrier:基板と動作の詳細。
HACKADAY.IO:Low level DC motor driver:H-bridge circuit の説明。
コーヒーとチョコレート:ESP32でローバーの基板を作ったお話:ESP32+DRV8833


.
感想:
今回の記事は DC Motor を低価格で動作させる為の Servo Drive です。
格安で動作する Servo Module を調査 及び 動作試験を実施しました。
Module を使用するとCR部品も装備されている為、便利です。
結果、DRV8833 は 格安で輸送期間も短くリーズナブルです。

次回は DC Motor Module の製作記事を予定です。


M5Stack , Servo , H-bridge , DRV8833, DRV8835 , MAX1508 , L9110 , L298N ,

Written by macsbug

8月 10, 2019 at 12:41 pm

カテゴリー: M5STACK