WiFi経由で操作するロボットを作成 1

ESPr Developer を使って、スマホからWiFi経由で操作できるロボットを作ろうと思います。


子供部屋にころがっていた「タミヤ 楽しい工作シリーズ組み立てキット リモコンロボット(クローラータイプ)」を使います。


これをESPr Developerと接続し、WiFi経由で動かせるようにしたいと思います。

まずは、ハードウエアのうち、電子回路の部分を作成しました。

モータは消費電力が大きいため、ESPr Developerの出力端子を直接繋ぐことはできません。ESPr Developerでモータを制御するためには、モータドライバを使う必要があります。

今回は、秋月電子で購入した「DRV8835使用 ステッピング&DCモータドライバモジュール」を使います。
これひとつで、2個のモータを駆動できます。
IN/INモードの時、以下のとおり動作します(「x」のところに「A」または「B」が入ります)。

MODE xIN1 xIN2 xOUT1 xOUT2 FUNC
0 0 0 Z Z 空転
0 0 1 L H 逆転
0 1 0 H L 正転
0 1 1 L L ブレーキ

今回は、このモータドライバをふたつ使って、モータを4つまで制御できるようにしたいと思います。
回路図は以下のようにしました。下のモータドライバのBIN2はGNDに繋いでいますので、このモータのみ、回転方向を変えることはできず、モータの回転/停止だけを制御できます。

できあがりです。部品はブレッドボードに組み付けました。

動作確認のため、以下のようなスケッチを準備しました。1秒ごとに、各端子のHIGH/LOWを切り替えるだけのものです。

#define A_AIN1  15
#define A_AIN2  13
#define A_BIN1  12
#define A_BIN2  14
#define B_AIN1  4
#define B_AIN2  5
#define B_BIN1  2

void setup() {
  pinMode(A_AIN1, OUTPUT);
  pinMode(A_AIN2, OUTPUT);
  pinMode(A_BIN1, OUTPUT);
  pinMode(A_BIN2, OUTPUT);
  pinMode(B_AIN1, OUTPUT);
  pinMode(B_AIN2, OUTPUT);
  pinMode(B_BIN1, OUTPUT);
}

void loop() {
  digitalWrite(A_AIN1, HIGH);
  digitalWrite(A_AIN2, LOW);
  digitalWrite(A_BIN1, HIGH);
  digitalWrite(A_BIN2, LOW);
  digitalWrite(B_AIN1, HIGH);
  digitalWrite(B_AIN2, LOW);
  digitalWrite(B_BIN1, HIGH);
  delay(1000);
  digitalWrite(A_AIN1, LOW);
  digitalWrite(A_AIN2, HIGH);
  digitalWrite(A_BIN1, LOW);
  digitalWrite(A_BIN2, HIGH);
  digitalWrite(B_AIN1, LOW);
  digitalWrite(B_AIN2, HIGH);
  digitalWrite(B_BIN1, LOW);
  delay(1000);
}

モータを繋ぐ代わりにLEDを接続して、動作確認しました。所望のとおりに動作しています。
これで、スケッチの内容に従って、モータを動作させることができるはずです。

つづきは こちら