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