さて前回の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サーバが用意されている
#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