misoのアイコン画像
miso 2020年12月28日作成 (2020年12月28日更新)
製作品 製作品 閲覧数 1818
miso 2020年12月28日作成 (2020年12月28日更新) 製作品 製作品 閲覧数 1818

M5Stackで作るGMT表示なNTP時計

M5Stackで作るGMT表示なNTP時計

はじめに

M5StackでGMT表示なNTP時計を作ったのでご紹介。
elchikaへの投稿も今回初です。

なんで作ったの?

普段からAWS上で作業することが多いのですが、多くの部分で時刻がGMT表記となっております😰

混乱することが多いです・・・それに伴う単純な作業ミスを連発😢
ふと「混乱を解消してくれるステキなデバイスが欲しい」と思って作ってみました😁

概要

  • NTPで時刻同期を行いながら液晶にGMTな時刻を表示する装置
  • ついでに温度と湿度も表示
  • 液晶の上に置けてデザイン的にも良い感じの奴

材料

  • M5Stack Basic
  • DHT12(Grove)
  • 3Dプリンターで自分で作った良い感じのケース

作る工程は接続とケースに入れるだけなので割愛😉

GNU Lesser General Public License v2.1

#include <M5Stack.h> #include "DHT12.h" #include <Wire.h> #include <WiFi.h> #include <WiFiClient.h> #include <WiFiClientSecure.h> #pragma GCC diagnostic ignored "-Wdeprecated-declarations" // Wifi const char* ssid = "GUEST"; const char* password = "VivaM5Stack"; // Time const long gmt_offset = 3600 * 0; // GMT const int daylight = 3600 * 0; // No daylight time const char* ntp_server = "pool.ntp.org"; struct tm td; // DHT DHT12 dht12; void setup() { M5.begin(); Wire.begin(); Serial.begin(115200); WiFi.disconnect(true); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.println("Error: WiFi"); delay(1000); } configTime(gmt_offset, daylight, ntp_server); while (!getLocalTime(&td)) { Serial.println("Error: NTP"); delay(1000); } Serial.printf("Free Heap Size = %d\r\n", esp_get_free_heap_size()); Serial.printf("System Free Heap Size = %d\r\n", system_get_free_heap_size()); M5.Lcd.fillScreen(BLACK); playBeep(2000,100); } void loop() { while (!getLocalTime(&td)) { Serial.println("Error: NTP"); delay(1000); } M5.Lcd.setTextColor(WHITE); M5.Lcd.setTextSize(2); char now[26]; strftime(now, sizeof(now), "%Y-%m-%dT", &td); M5.Lcd.fillRect(65,50,100,20, BLACK); M5.Lcd.setCursor(65, 50); M5.Lcd.println(now); strftime(now, sizeof(now), "%H:%M:%S+GMT", &td); M5.Lcd.fillRect(65,70,100,20, BLACK); M5.Lcd.setCursor(65, 70); M5.Lcd.println(now); int temperature = int(dht12.readTemperature()); int humidity = int(dht12.readHumidity()); M5.Lcd.setTextSize(4); M5.Lcd.fillRect(200,100,100,100, BLACK); M5.Lcd.setCursor(65, 100); M5.Lcd.print("TEMP: "); M5.Lcd.printf("%d\n", temperature); M5.Lcd.setCursor(65, 140); M5.Lcd.print("HUMI: "); M5.Lcd.printf("%d\n", humidity); delay(1000); }

おわりに

これでGMTな時刻と温室度を何時でも確認できるようになりました!😋
ちょっとした工夫で作業効率が上がります。

あると便利が実現できる電子工作って素晴らしいですね!

misoのアイコン画像
寝るのが趣味
ログインしてコメントを投稿する