ワークショップ「スマホで自由自在に操作できるIoTミニ四駆を作ろう!」に参加できなかったので、自分で作ってみた(前編)


前回、Arduinoに接続したUSBケーブルを介して、有線でミニ四駆を操作しました。
今回は、ArduinoとUSBケーブルをESP8266に置き換えて無線(Wifi)で操作できるようにします。Blynkを使って、スマホで操作できるようにします。

部品調達

前回、購入したESP8266を使用します。

また、ESP8266を使うにあたり下記を使用しています。

USBシリアル変換アダプター

USBシリアル変換アダプター (FTDI FT232RL) Arduino mini等接続用 420円

 3.3Vレギュレータ

低損失三端子レギュレーター 3.3V500mA TA48M033F(S Q) 100円

配線

  • ESP8266とサーボとモータを接続。
  • ESP8266の電源は、FTDI FT232RLから3.3Vレギュレータを介して共有。
  • サーボの電源は、Arduino UNOの5Vを共有。
  • モータは乾電池から共有。

公開いただいている回路図をみると、コンデンサを使って電源周りをまとめています。手元にコンデンサがないので、今回はとりあえず、これでいくことにします。

Blynk

DMM.makeのワークショップでは、javascriptでスマホの操作パネルを作っていましたが、自分で作る自信がなかったのでどうしようかなと思っていると、ちょうどいいアプリを見つけました。

操作するモジュールとして、ボタンやスライダー等があります。

今回は、ジョイスティックを使います。

ESP8266スケッチ

Blinkをメインに使用するようにしましたが、前後の動作が不自然。一度、前後進したら5秒程進み続ける。
Blynk側では、入力された値(Param)を確認するだけで、モータの動作はloop内でやった方が、こまかく動作ができるのかも。。。

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Servo.h>
Servo myservo;
char auth[] = ""; # Blynkアプリで生成されるAUTH TOKENを入力

void setup()
{
  Serial.begin(9600);
  Serial.println("start!");
  Blynk.begin(auth, "<SSID>", "<PW>");
  myservo.attach(16);  # IO16に接続

  pinMode(12, OUTPUT);  # IO12に接続
  pinMode(13, OUTPUT);  # IO13に接続
}

BLYNK_WRITE(V0)
{
  myservo.write((180 * (255 - param.asInt())) / 255);

  Serial.print("X:");
  Serial.println(param.asInt());
  Serial.println((180 * param.asInt()) / 255);
}

BLYNK_WRITE(V1)
{
  if (param.asInt() > 135){  
    digitalWrite(12, HIGH);
    digitalWrite(13, LOW);
  }
  else if (param.asInt() < 70){
    digitalWrite(12, LOW);
    digitalWrite(13, HIGH);
  }
  else if (param.asInt() == 126) {
    digitalWrite(12, HIGH);
    digitalWrite(13, HIGH);
  }

  Serial.print("Y:");
  Serial.println(param.asInt());
}

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

動作

ミニ四駆+ESP8266

まとめ

  • 前篇、後編と分かれましたが、DMM.makeのワークショップの内容を、公開されている情報を参考に自作してみました。
  • 回路は手元にある部品を元に作成しましたが、前後の動きに不自然な部分が残りました。公開された回路図を参考に、回路図の勉強をしたいと思います。電源の安定共有が課題です。
  • 操作パネルはBlynkを使いましたが、自分でJavaScriptで作るよりははるかに簡単に、短時間で動くものをつくる事ができました。