ESP8266 (ESP-WROOM-02)에서 Wi-Fi 사용 시 SSID/비밀번호를 브라우저에서 설정할 수 있도록
15251 단어 ArduinoIoTESP8266ESP-WROOM-02
개요
ESP8266 (이하 WROOM02)에서 Wi-Fi를 사용할 때 브라우저에서 SSID/Password를 설정할 수 있습니다.
소개
샘플 코드는 Wi-Fi SSID와 암호를 하드 코딩하는 경우가 많습니다.
이 상태에서는 Wi-Fi를 전환하기 위해 재컴파일이 필요합니다.
브라우저에서 SSID와 비밀번호를 설정할 수 있도록 하고 싶습니다. (아, 계란이 먼저인가 닭이 먼저인가..)
따라서 Wi-Fi를 설정할 때 WROOM02 자체가 액세스 포인트 겸 웹 서버가 되어 브라우저를 사용한 설정 변경을 서비스하도록 합니다. (서버 모드)
구성 후 재부팅하면 구성된 SSID에 연결됩니다. (클라이언트 모드)
(덧붙여 서버 모드에서의 액세스 포인트는 SSID는 WROOM02의 mac 주소, 패스워드는 「thereisnospoon」으로 하고 있습니다.)
모드 전환
편의를 위해 GPIO0 및 리셋은 택트 스위치를 사용하여 구현해야합니다.
자세한 내용은 다음을 참조하십시오.
ぃ tp // 이 m / 에우 gs / ms / 9 또는 4093813db71278b39
하드 WROOM02 부팅 모드는 다음과 같습니다.
모드
IO15
IO2
IO0
EN
쓰기
Low
High
Low
High
실행
Low
High
High
High
쓰기를 할 때는 IO0을 Low(버튼 누르기)로 한 상태에서 리셋 버튼을 클릭합니다. (시작 순간에 IO0가 Low이면 괜찮습니다)
이번에는 또한 실행 모드에서 시작한 후 서버 모드인지 클라이언트 모드인지를 IO0 상태로 결정했습니다.
모드
재부팅
클라이언트
리셋 버튼을 누르면
서버
리셋 버튼을 눌러 즉시 (1 초 이내) IO0을 길게 누릅니다.
스케치
스케치는 다음과 같습니다.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <FS.h>
// モード切り替えピン
const int MODE_PIN = 0; // GPIO0
// Wi-Fi設定保存ファイル
const char* settings = "/wifi_settings.txt";
// サーバモードでのパスワード
const String pass = "thereisnospoon";
ESP8266WebServer server(80);
/**
* WiFi設定
*/
void handleRootGet() {
String html = "";
html += "<h1>WiFi Settings</h1>";
html += "<form method='post'>";
html += " <input type='text' name='ssid' placeholder='ssid'><br>";
html += " <input type='text' name='pass' placeholder='pass'><br>";
html += " <input type='submit'><br>";
html += "</form>";
server.send(200, "text/html", html);
}
void handleRootPost() {
String ssid = server.arg("ssid");
String pass = server.arg("pass");
File f = SPIFFS.open(settings, "w");
f.println(ssid);
f.println(pass);
f.close();
String html = "";
html += "<h1>WiFi Settings</h1>";
html += ssid + "<br>";
html += pass + "<br>";
server.send(200, "text/html", html);
}
/**
* 初期化(クライアントモード)
*/
void setup_client() {
File f = SPIFFS.open(settings, "r");
String ssid = f.readStringUntil('\n');
String pass = f.readStringUntil('\n');
f.close();
ssid.trim();
pass.trim();
Serial.println("SSID: " + ssid);
Serial.println("PASS: " + pass);
WiFi.begin(ssid.c_str(), pass.c_str());
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
/**
* 初期化(サーバモード)
*/
void setup_server() {
byte mac[6];
WiFi.macAddress(mac);
String ssid = "";
for (int i = 0; i < 6; i++) {
ssid += String(mac[i], HEX);
}
Serial.println("SSID: " + ssid);
Serial.println("PASS: " + pass);
/* You can remove the password parameter if you want the AP to be open. */
WiFi.softAP(ssid.c_str(), pass.c_str());
server.on("/", HTTP_GET, handleRootGet);
server.on("/", HTTP_POST, handleRootPost);
server.begin();
Serial.println("HTTP server started.");
}
/**
* 初期化
*/
void setup() {
Serial.begin(115200);
Serial.println();
// 1秒以内にMODEを切り替える
// 0 : Server
// 1 : Client
delay(1000);
// ファイルシステム初期化
SPIFFS.begin();
pinMode(MODE_PIN, INPUT);
if (digitalRead(MODE_PIN) == 0) {
// サーバモード初期化
setup_server();
} else {
// クライアントモード初期化
setup_client();
}
}
void loop() {
server.handleClient();
}
사용법
SSID: 18fe34eexx92 ← ここはチップ(WROOM02)毎に異なります
PASS: thereisnospoon
HTTP server started.
htp://192.168.4.1/ 방문. Wi-Fi 설정 화면을 엽니다.
요약
ESP8266(이하 WROOM02)에서 Wi-Fi를 사용할 때 브라우저에서 SSID/Password를 설정할 수 있습니다.
Reference
이 문제에 관하여(ESP8266 (ESP-WROOM-02)에서 Wi-Fi 사용 시 SSID/비밀번호를 브라우저에서 설정할 수 있도록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/exabugs/items/2f67ae363a1387c8967c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)