青ポスの部屋

旅と技術とポエムのブログ

ATOM Matrix (4) Wi-Fiにつなぐ

ここからが今流行りのIoT*1っぽいことをやります。

Wi-Fiにつなぐ

ATOMWi-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アドレスの端末が表示されています。

*1:もうレッドオーシャンとか言わないでください。。。