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 "WiFiのパスワード" 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 <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <Servo.h> #define SSID "WiFiのSSID" #define PASS "WiFiのパスワード" 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」と表示され、サーボモーターが動くようになりました。