※この記事は2020年4月7日に更新されました。

本日もC言語の学習を一緒に進めていきましょう。

C言語の学習は目的を持って、デバイスとともに進めていくことをお勧めします。

→プログラミング学習独学派【まずはここから】

M5Stackで温湿度計を作る5つの手順

【参考書籍】M5Stackに関しては下島先生のこちらの書籍を参考にさせて頂ています。

WiFi接続

WiFiはssidとpasswordを最初に定義し、WiFi.begin関数で呼び出します。

以下にサンプルコードを掲載しておきます。

#include <M5Stack.h>
#include <WiFi.h>

const char* ssid = "あなたのssid";
const char* password = "あなたのpassword";

void setup() {
    M5.begin();
    M5.Lcd.setTextSize(2);

    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED){
        delay(500);
        M5.Lcd.print('.');
    }

    M5.Lcd.print("\r\nWiFi connected\r\nIP address: ");
    M5.Lcd.println(WiFi.localIP());
}

void loop() {
}

これで簡単に繋がります。

M5Stack は2.4Ghzですので注意です。

WiFiに接続できたら次にネットワークからしっかりと情報を取得していきましょう。

NTPプロトコルを使って時刻をWiFiで取得する

NTPプロトコルを使って現在時刻を取得するライブラリがArduinoに用意されています。

Arduinoのインストールなどについてはこちら

→M5Stackで温湿度計を作る5つの手順

NTP=Network Time ProtocolサーバーとM5Stackを同期します。

サンプルコード

#include <M5Stack.h>
#include <WiFi.h>

#define JST (3600L * 9)

const char* ssid = "あなたのWiFi";
const char* password = "あなたのpassword";

void setup() {
    M5.begin();
    M5.Lcd.setTextSize(2);

    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED){
        delay(500);
        M5.Lcd.print('.');
    }

    M5.Lcd.print("\r\nWiFi connected\r\nIP address: ");
    M5.Lcd.println(WiFi.localIP());
    delay(500);

    M5.Lcd.setTextSize(3);
    configTime(JST,0,"ntp.nict.jp", "time.google.com",
            "ntp.jst.mfeed.ad.jp");
}

void loop() {
    struct tm tm;
    if(getLocalTime(&tm)){
       M5.Lcd.fillScreen(BLACK);
       M5.Lcd.setCursor(60,80);
       M5.Lcd.printf("%d/%2d/%2d",
               tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
       M5.Lcd.setCursor(80,140);
       M5.Lcd.printf("%02d:%02d:%02d", tm.tm_hour, tm.tm_min, tm.tm_sec);
    }
    delay(1000);
}
#define JST (3600L * 9)

にて、協定世界時間との時差を入力します。

configTimeにてNTPサーバーとの接続を定義。

これでバッチリ表示できました。

printfに関しては自由にカスタマイズしてみてください。