M5Stackを使って簡単なプログラミングを実施しました。
M5StackをWiFiにつなげてNTPサーバから時刻を取得し、取得した時刻を画面に表示するものです。
-
環境
- M5Stack BASIC
- Windows 10 (作業用PC)
-
事前準備
M5Stackでの作業は初めてのため、以下の事前準備作業をしました。- 作業用PCにArduino IDEとCP210X Driverをインストールします。
詳細はM5Stackの開発環境を構築する参照してください。 - 作業用PCとM5STACKをUSBで接続します。
- 作業用PCでArduino IDEを起動します。
- 作業用PCにArduino IDEとCP210X Driverをインストールします。
-
ソースコード
ほぼ参考元のコピペで作成しました。
ssidとpasswordに自身のWiFi環境の情報を記載するとM5StackがWiFi接続可能になりました。
# include <M5Stack.h>
# include <WiFi.h>
# include "time.h"
const char* ssid = "XXXXXXXXXXXXX";
const char* password = "XXXXXXXXXXXXX";
const char* ntpServer = "ntp.nict.jp";
const long gmtOffset_sec = 3600 * 9;
const int daylightOffset_sec = 0;
void printLocalTime()
{
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
M5.Lcd.println("Failed to obtain time");
return;
}
// テキストサイズ指定
M5.Lcd.setTextSize(2);
// カーソル位置を設定
M5.Lcd.setCursor(40,100);
M5.Lcd.printf("%04d-%02d-%02d %02d:%02d:%02d"
,timeinfo.tm_year + 1900
,timeinfo.tm_mon + 1
,timeinfo.tm_mday
,timeinfo.tm_hour
,timeinfo.tm_min
,timeinfo.tm_sec
);
}
void setup()
{
M5.begin();
//connect to WiFi
int cnt=0;
M5.Lcd.print("Connecting to YOUR_SSID ");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
cnt++;
delay(500);
M5.Lcd.print(".");
}
M5.Lcd.println(" CONNECTED");
//init and get the time
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
printLocalTime();
//disconnect WiFi as it's no longer needed
WiFi.disconnect(true);
WiFi.mode(WIFI_OFF);
}
void loop()
{
delay(1000);
printLocalTime();
}
Arduino IDEで上記ソースコードを保存します。
その後、コンパイルとマイコンボードへの書き込みを実施するとM5Stackの画面に日時が表示されました。
- 参考元
今回の作業は以下のサイトを参考に実施しました。