前の記事
準備編
応用編
Arudiono IDEで使う
作りたかった機能
WPS接続する!
うまくいかない・・。ルーター変えたりいろいろ試してみてうまくいったら記事の追加/更新します。
つながらなかったサーバ
- | 内容 |
---|---|
メーカー | IOデータ |
製品 | WN-DX1167GR |
ファームウェアバージョン | 1.11.000 |
ブートコードのバージョン | 1.24.06 |
IPアドレス割当 | DHCP |
試行した結果
試行その1
試行1.WiFi.begin()利用編
WiFi.begin("","")で接続
結果1.接続はできるが、IPアドレスがふられない
WiFi.begin編スケッチ
スケッチ
// WiFi(Connect)
bool connect_WiFi(const char* ssid, const char* password, long connectTimeoutMS) {
bool connected = false;
long connectCheckTime = 0;
wl_status_t connectStatus;
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
connectStatus = WiFi.status();
while (connectStatus != WL_CONNECTED) {
connectCheckTime = connectCheckTime + WIFI_CONNECTED_CHECK_MS;
delay(WIFI_CONNECTED_CHECK_MS);
connectStatus = WiFi.status();
Serial.printf("connected = %d\r\n", connectStatus);
if (connectStatus == WL_CONNECTED)
{
connected = true;
break;
}
if (connectStatus == WL_CONNECT_FAILED)
{
Serial.printf("WL_CONNECT_FAILED");
connected = false;
break;
}
if (connectStatus == WL_DISCONNECTED)
{
Serial.printf("WL_DISCONNECTED");
connected = false;
// Loopは継続する(接続中もこのステータス)
}
if (connectCheckTime > connectTimeoutMS)
{
connected = false;
break;
}
Serial.printf("connected = %d\r\n", connectStatus);
}
return connected;
}
試行その2
試行2.beginWPSConfig()利用編
beginWPSConfigで接続
結果2.接続はできるが、IPアドレスがふられない
beginWPSConfig編スケッチ
スケッチ
#include <ESP8266WiFi.h>
bool startWPSPBC() {
// wpstest.ino
Serial.println("WPS config start");
bool wpsSuccess = WiFi.beginWPSConfig();
if(wpsSuccess) {
String newSSID = WiFi.SSID();
if(newSSID.length() > 0) {
// newSSIDが割り当てられたら成功
Serial.printf("WPS finished. Connected successfull to SSID '%s'\n", newSSID.c_str());
} else {
wpsSuccess = false;
Serial.println("(- -)");
}
}
if (wpsSuccess) {
Serial.println("WPS config success.");
Serial.print("WPS Connected. local IP address: ");
Serial.println(WiFi.localIP());
} else {
Serial.println("WPS config fault.");
}
// WiFi.disconnect();
// delay(500);
// Serial.println("WPS disconnect...");
if (wpsSuccess)
{
delay(500);
Serial.printf("Try to connect to SSID '%s'\n", WiFi.SSID().c_str());
//Serial.printf("Try to connect to password '%s'\n", WiFi.psk().c_str());
//WiFi.begin(WiFi.SSID().c_str(),WiFi.psk().c_str()); // reading data from EPROM,
WiFi.begin(); // reading data from EPROM,
while (WiFi.status() == WL_DISCONNECTED) { // last saved credentials
delay(500);
Serial.print("."); // show wait for connect to AP
}
Serial.printf("Connected SSID '%s'\n", WiFi.SSID().c_str());
Serial.print("Reconnected. local IP address: ");
Serial.println(WiFi.localIP());
}
return wpsSuccess;
}
謝辞
以下の記事を参考に作りました。
最後に
スケッチコードはCC BY-SA 4.0(著作者の情報とCCライセンス継承はお願いします。商用利用・改変・再配布は問題なし)です。