Java
Arduino
IoT
ESP8266
ESP-WROOM-02

技適済み格安高性能Wi-FiモジュールESP8266 コピペでWiFi接続出来るArduinoIDE用ソースコードとその解説

More than 3 years have passed since last update.

さて前回のArduinoIDE上にESP8266の開発環境が出来上がった所で、「どうやってWiFiに接続すれば良いのか分からん!」と言う事になると思うので、次は、このソースコードをコピペしてプログラムを送り込んで楽しんでみて下さい。

結構はまるポイントがあるので、最後まで目を通して下さい。


ESP8266でWiFi接続するためのプログラム

以下のソースコードをコピペしてコンパイルして書き込んで下さい。

起動すれば、IO5のピンがHIGH(3.3v)になり、無線の接続が途絶えるとLOW(0v)になり、また接続されるとHIGH(3.3V)に出力が変化するはずです。

デバッグ用にシリアルにWiFiのステータスや、DHCPで取得したIPを送信するプログラムにしてあります。

書き込めたら、ArduinoIDEにあるシリアルモニタを開くなどして、WiFi状態やIPを確認して下さい。

WiFi環境は、次の環境で試しています。


  • WPA2 パーソナルのアクセスポイントに接続

  • SSIDは広報している(ANY接続拒否のステルスモードでも繋がる事確認しました。マルチSSIDだと繋がらないこともあるようです。2015.08.06修正)

  • ネットワーク上にDHCPサーバが用意されている


QiitaWiFi01

#include <ESP8266WiFi.h>

char toSSID[] = "XXXXXXXX";
char ssidPASSWD[] = "YYYYYYYYYYY";

void setup() {
//デバッグ用にシリアルを開く
Serial.begin(115200);
Serial.println("PG start");

//WiFiに繋がったらLEDを点灯させるので、そのピンをOUTPUTに設定して、LOWに。
pinMode(5, OUTPUT);
digitalWrite(5, LOW);

//WiFiクライアントモード設定
WiFi.mode(WIFI_STA);

//WiFiを繋ぐ前に、WiFi状態をシリアルに出力
WiFi.printDiag(Serial);

//WiFiの設定を入れる。IPは、デフォルトがDHCPのようで、IPが共有されるときはWiFiのアクセス情報だけでOK
WiFi.begin(toSSID, ssidPASSWD);

// 固定IPではネットワークステータスが上手く動かないので、今は使えなさそう。
// 本家にバグ登録はされているらしい。
// WiFi.config(ip, gateway, subnet);

//接続が確立するまで、・・・を表示
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");

//WiFi.printDiag(Serial);

}

//ここに来たら、接続完了している。

//改行して繋がったことをシリアルで伝える。
Serial.println("");
Serial.println("WiFi connected");

//WiFiの状態を表示
WiFi.printDiag(Serial);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());

// 無線LAN接続OK LED点灯
digitalWrite(5, HIGH);

}

void loop() {
if (WiFi.status() != WL_CONNECTED) {
// コネクション確立済み以外のステータスなので
// 無線LAN接続NG LED消灯
digitalWrite(5, LOW);
} else {
//コネクションOKなので、点灯
digitalWrite(5, HIGH );
}

delay(500);

}



とても、とても大切な注意事項

上記のプログラムが動く様になるまで、結構苦戦しました。

以下の各注意事項は、ESP8266 by ESP8266 Community 1.6.4-673-g8cd3697 を使った時の事なので、今後変わると思います。自分がどのバージョンを使っているのか確認して下さい。


  • 固定IP設定用のメソッド WiFi.config(ip, gateway, subnet) が用意されているが、固定IPを設定しようとすると上手くWiFi接続出来ない。クライアントモードではDHCP一択の状態(接続状態を確認する関数が上手く動いていないようですが、どのソースが悪いのかは未確認)

以下だけ、1.6.5-988-gfd1d9daのバージョンで2015.08.06再確認


  • マルチSSIDだと繋げなさそう(手元にある、BUFFALO WAPS-HP-AM54G54で確認した結果。当初はステルスモードだと繋げないと思っていましたが、再確認したら繋げました。私の手元の無線APは一般的でないので他の機種ではマルチSSIDでも繋がる可能性はあります。2015.08.06修正)


次にやろうと思っている事

です。お楽しみに~

またハマりどころを、下記に順次まとめています。あわせてこちらもご覧下さい。(随時更新中なので、ストックしてもらえれば更新時に通知させてもらいます)

http://qiita.com/azusa9/items/fe20794aa858a73fd97b