M5STACK 製品をいくつか購入していますが、いまだWifiに接続したことが無かったので試してみました。調べてみたところ、WiFi.hを使用すれば簡単に接続できるようです
#include <M5StickCPlus2.h>
#include <M5Unified.h>
#include <WiFi.h>
const char* ssid = "********"; // 接続先WiFiのSSID
const char* password = "********"; // 接続先WiFiのパスワード
void setup() {
auto cfg = M5.config();
M5.begin(cfg);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setBrightness(5);
M5.Lcd.setRotation(3); // 画面向き
M5.Lcd.setTextSize(2); // フォントサイズ
M5.Lcd.print("SSID : ");
M5.Lcd.println(ssid);
WiFi.begin(ssid, password); // WiFi接続
M5.Lcd.print("Connecting");
while (WiFi.status() != WL_CONNECTED) { // 接続チェック
delay(500);
M5.Lcd.print(".");
}
M5.Lcd.println("");
M5.Lcd.print("IP Adress : \n");
M5.Lcd.println(WiFi.localIP()); // IPアドレス表示
}
void loop() {}
wifi.begin()で接続して、Wifi.status()で接続チェックを行うだけでと簡単でした。実行も問題なくでき簡単です。
折角、Wifiに接続できましたので、APIなどを使用しないで使えるNTPサーバーに接続して日時を取得して表示するスケッチを作成しました
#include <M5StickCPlus2.h>
#include <M5Unified.h>
#include <WiFi.h>
#define JST 9 * 3600L
const char* ssid = "********"; // 接続先WiFiのSSID
const char* password = "********"; // 接続先WiFiのパスワード
void setup() {
auto cfg = M5.config();
M5.begin(cfg);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setBrightness(5);
M5.Lcd.setRotation(3); // 画面向き
M5.Lcd.setTextSize(2); // フォントサイズ
M5.Lcd.print("SSID : ");
M5.Lcd.println(ssid);
WiFi.begin(ssid, password); // WiFi接続
M5.Lcd.print("Connecting");
while (WiFi.status() != WL_CONNECTED) { // 接続チェック
delay(500);
M5.Lcd.print(".");
}
M5.Lcd.println("");
M5.Lcd.print("IP Adress : \n");
M5.Lcd.println(WiFi.localIP()); // IPアドレス表示
// NTPサーバと、ローカルのタイムゾーンを設定
// タイムゾーン:日本、夏時間無し、PUBLIC NTPと日本標準時グループに接続
configTime(JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
}
void loop() {
M5.Lcd.clear(BLACK);
M5.Lcd.setCursor(0, 0);
struct tm tm;
/*
tm構造体の要素:
int tm_sec 秒:(0~61)
int tm_min 分:(0~59)
int tm_hour 時:(0~23)
int tm_mday 日:(1~31)
int tm_mon 1月からの月数:(0~11)
int tm_year 1900年からの年数
int tm_wday 日曜日からの日数:(0~6)
int tm_yday 1月1日からの日数:(0~365)
int tm_isdst 夏時間フラグ
*/
getLocalTime(&tm);
M5.Lcd.printf(" %04d/%02d/%02d %02d:%02d:%02d",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, // 年、月、日
tm.tm_hour, tm.tm_min, tm.tm_sec); // 時、分、秒
delay(1000);
}
#define JSTは日本時間にするための設定で、configTime()でPUBLIC NTPと日本標準時グループに接続して時間を取得しています、なお、メモとして構造体 tmの内容をコメントとして記載しています。ま、使用するたびに調べるのが面倒なだけですが...
無事に動作し、時間を取得できました。
NTPサーバーへの接続は、WEBサービスを使用するスケッチの最初の一歩ですね
0 件のコメント:
コメントを投稿