ここからが今流行りのIoT*1っぽいことをやります。
ATOMはWi-Fiを使うとき、ATOM自身がAPとなるAPモードと、既存のAPにつなぐSTAモードがあります。今回はSTAモードで既存のAPに接続します。Wi-Fiを使うことでATOMはインターネットへ出ることができるようになります。
Wi-Fiを使うには、WiFiモジュールを使います。あらかじめSSIDとパスワードをchar配列に格納しておき、WiFi.begin(ssid,password)で接続待ちにします。
ここからはマイコンっぽいポイントで、1回で接続が成功するとは限らないので、接続状況を観測して接続できていなければdelayして処理を止めます。それを接続が成功するまで無限ループさせ、接続するまで次の処理へ行かないようにします。
うまくいかないとき
AUTH_EXPIREというエラーで接続できないことがあります。自分の場合、別のスケッチを書き込んでから再度アップロードするとうまくいきました。
github.com
サンプル
下記サンプルでは、起動するとLEDが赤く光り、接続されると緑に変わります。myssid、mypasswordの部分は実際に使うSSIDとパスワードにしてください。
#include "WiFi.h"
#include "M5Atom.h"
const char *ssid = "myssid";
const char *password = "mypassword";
uint8_t DisBuff[2+5*5*3];
void setup(){
WiFi.disconnect(false,true);
M5.begin(true, true, true);
WiFi.begin(ssid, password);
DisBuff[0] = 0x05;
DisBuff[1] = 0x05;
for (int i = 0; i < 25; i++)
{
DisBuff[2 + i * 3 + 0] = 0x20;
DisBuff[2 + i * 3 + 1] = 0x00;
DisBuff[2 + i * 3 + 2] = 0x00;
}
M5.dis.displaybuff(DisBuff);
while(WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
for (int i = 0; i < 25; i++)
{
DisBuff[2 + i * 3 + 0] = 0x00;
DisBuff[2 + i * 3 + 1] = 0x20;
DisBuff[2 + i * 3 + 2] = 0x00;
}
M5.dis.displaybuff(DisBuff);
Serial.println(WiFi.localIP());
}
void loop(){
}
緑に変わった後ルータの設定画面へ行くと、ちゃんとSerialにprintされたIPアドレスの端末が表示されています。