1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ESP8266 WiFiManager

Last updated at Posted at 2020-04-28

最近ESP8266でWiFiを使うときに、SSIDをコード内に埋め込まなくていいようにするWiFiManagerってのを見つけたので実装してみました。
自分のメモみたいな投稿です。

ライブラリの追加

https://github.com/tzapu/WiFiManager
Arduino IDE に追加しました。

参考サイト

参考にさせていただきました。ありがとうございます。とても助かりました。
IoTラボ ESP8266 WI-FI SSID、パスワードのオンライン設定
https://qiita.com/tomorrow56/items/8c2dfdf61d4741ba91de

実装

ほとんど、スケッチ例のまんまですが、再設定させたくて、webにして、resetコマンドをつけました。
直接URLに記載する方式です(^^)
また、DHCPでIPがわかんない問題をクリアするため、mDNS responder で、IPアドレスでなく名前でつなげるようにしました。

http://sample.local/cmd?CMD=reset

いきなりリセットしちゃうので、ちょっと危険かも・・・。
BASIC認証くらいはつけたほうがいいかも・・・

# include <FS.h>
# include <DNSServer.h>
# include <ESP8266WiFi.h>
# include <ESP8266WebServer.h>
# include <WiFiManager.h> 

# define SERIAL_SPEED 115200

// Web page (Port 8080) 
ESP8266WebServer server(8080);
static const char* cpResponse200 = "<HTML>"
 "<BODY style='background-color:#ffffde;font-family:sans-serif;font-size:40px;'>"
 "CONTROL WEB<br/><br/>"
 "<a href=/cmd?CMD=dummy>DUMMY</a><br/>"
 "</BODY></HTML>\r\n";

 
void setup() {
  Serial.begin(SERIAL_SPEED);
  Serial.println("");
  
  //WiFiManager
  WiFiManager wifiManager;
  wifiManager.setBreakAfterConfig(true);
  if (!wifiManager.autoConnect("AutoConnectAP", "password")) {
    Serial.println("failed to connect, we should reset as see if it connects");
    delay(3000);
    ESP.reset();
    delay(5000);
  }

  Serial.println("");
  Serial.println("WiFi Connected.");
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.println("");
  Serial.println("");

  // Set up mDNS responder:
  if (!MDNS.begin("sample")) { // sample.local
    Serial.println("Error setting up MDNS responder!");
    while (1) {
      delay(1000);
    }
  }
  Serial.println("mDNS responder started");
  Serial.println("");

  // WebServer
  server.on("/cmd", WebCommand);
  server.begin();

  // Add service to MDNS-SD
  MDNS.addService("http", "tcp", 8080);
}

void WebCommand() {
  String cmd = server.arg("CMD");
  if (cmd == "dummy")  {
    // hogehoge...
  }
  else   if (cmd == "reset")  { // resetコマンドでWiFi再設定
    WiFiManager wifiManager;
    delay(1000);
    Serial.println("");
    Serial.println("WiFi Reset !");
    Serial.println("");
    wifiManager.resetSettings();
    delay(3000);
    ESP.reset();
  }
  server.send(200, "text/html", cpResponse200);
}

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

使い方

まっさらなマシンだったら、例えば、iPhoneなどで、「AutoConnectAP」のSSIDをみつけ、パスワード=passwordで接続すると、設定画面がでますので、それに入力すればOKです。

一度、設定すると、覚えてますので、次はそのままつながっちゃいます。
Sketchを入れ直しても、覚えてました。
なので、前述のWEBコマンドで、設定をリセットしてあげます。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?