miso が 2020年12月28日13時13分12秒 に編集
コメント無し
本文の変更
# はじめに M5StackでGMT表示なNTP時計を作ったのでご紹介。
普段からAWS上で作業することが多いのですが、多くの部分で時刻がGMT表記となっており結構混乱することが多いです。 ふと「混乱を解消してくれるステキなデバイスが欲しい」と思って作ってみました。
普段からAWS上で作業することが多いのですが、多くの部分で時刻がGMT表記となっております😰
混乱することが多いです・・・それに伴う単純な作業ミスも連発😢 ふと「混乱を解消してくれるステキなデバイスが欲しい」と思って作ってみました😁
# 概要 - NTPで時刻同期を行いながら液晶にGMTな時刻を表示する装置 - ついでに温度と湿度も表示 - 液晶の上に置けてデザイン的にも良い感じの奴 # 材料 - M5Stack Basic - DHT12(Grove)
- 3Dプリンターで自分で作った良い感じのケース
作る工程は接続とケースに入れるだけなので割愛😉
#### GNU Lesser General Public License v2.1 ```c #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な時刻と温室度を何時でも確認できるようになりました。 ちょっとした工夫で作業効率が上がるので、あると便利が実現できるのは良いですね。
これでGMTな時刻と温室度を何時でも確認できるようになりました!😋 ちょっとした工夫で作業効率が上がるので、あると便利が実現できるし作る工程が楽しかったです!