Penta creation

ホームへ
2017年08月22日

ESPr® Developerでサーボモーターを遠隔操作

スマートロックを製作しようと思い、ESPr® Developerでサーボモーターを遠隔操作してみました。

ESPr® Developer

ESPr® Developerは、スイッチサイエンス製の、WiFiでインターネットに接続することができるマイコンボードで、IoTのプロトタイプ製作に最適です。開発はArduino IDEでできます。2017年6月に、新たにBluetoothを搭載、動作クロックが向上したESPr® Developer 32が発売されましたが、手元にあったので、ESPr® Developerを使うことにしました。



● Arduino IDEの開発環境の準備

ESPr® DeveloperをArduino IDEで開発するためには、いくつか設定をする必要があります。
詳細は、スイッチサイエンスのWEBサイトに掲載されています。



● ESPr® DeveloperでLチカ

※ESPr® Developerのピンの配置

ESPr® Developerはファブラボ鎌倉のIoT BASIC PROGRAMで習ったのですが、ここ半年スマートミラーの製作で、Arduinoをさわっていなかったので、思い出しながら開発環境を準備、動作確認のためにLチカしました。



サーボモーター SG-90

サーボモーターは、回転回数や回転角度などを指定し制御できるモーターです。

SG-90は1個400円と値段も安いので、テストをするにはお勧めです。パワーが足りるかどうか検証が必要ですが、とりあえず手元にあったので、SG-90で試してみました。





配線は上記のような感じで、SV-90の定格電圧は4.8Vで、ESPr® Developerは3.3Vなので、サーボモーター用の電源は電池(単4電池3本、4.5V)からとります。

● ServoTest.ino

SG-90はArduino標準のServoライブラリで制御することができます。

//Servoライブラリを読み込む
#include <Servo.h>
Servo servo;

void setup(){
     //13ピンをサーボモーターに割り当てる
     servo.attach(13);
}

void loop(){
   //0度に回転
    servo.write(0);
    delay(1000);
    //90度に回転
    servo.write(90);
    delay(1000);
}

サーボモーターは動かせたので、WiFi接続してWEBサーバーを立てて、遠隔操作してみます。

ESPr® DeveloperをWiFiに接続

ESPr® DeveloperをWiFiに接続します。

● WiFiTest.ino

#include <ESP8266WiFi.h>

#define SSID "WiFiのSSID"
#define PASS "WiDiのパスワード"

void setup(){
  Serial.begin(9600);
  WiFi.begin(SSID, PASS);

  while(WiFi.status() != WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }

  //WiFiに接続成功した通知とIPアドレスをシリアルモニタに表示
  Serial.println("WiFi connected");
  Serial.println(WiFi.localIP());
}

void loop(){}

ESPr® DeveloperでWEBサーバーを立ててHTTP通信

ESPr® DeveloperはWEBサーバーをたてて、HTTP通信をすることができます。WiFiに接続すると、ESPr® DeveloperのローカルIPアドレスを取得することができので、ブラウザからローカルIPアドレスにアクセスして、サーボモーターを動かします。

● WEBServerTest.ino

#include <Servo.h>
#include <ESP8266WebServer.h>

#define SSID "WiFiのSSID"
#define PASS "WiDiのパスワード"

Servo servo;

//80番ポートのWEBサーバー
ESP8266WebServer server(80);

void setup(){
  Serial.begin(9600);
  servo.attach(13);

  //WiFiに接続
  WiFi.begin(SSID, PASS);
  while(WiFi.status() != WL_CONNECTED){
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected");
  Serial.println(WiFi.localIP());

  //WEBサーバー起動
  server.on("/", handleRoot);
  server.begin();
  Serial.println("Web Server started");
}

void loop(){
  server.handleClient();  
}

void handleRoot(){
  server.send(200, "text/plain", "Servomotor is moved");

  //サーボモーターを動かす
  servo.write(0);
  delay(1000);
  servo.write(90);
}

これで、「http://192.168.xx.x」等にブラウザからアクセスすると「Servomotor is moved」と表示され、サーボモーターが動くようになりました。

前の記事へ

Raspberry Pi 3Bでスマートミラーを製作!

ページトップへ