はじめに
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
さんが
2020/12/28
に
編集
をしました。
(メッセージ: 初版)
-
miso
さんが
2020/12/28
に
編集
をしました。
-
miso
さんが
2020/12/28
に
編集
をしました。
ログインしてコメントを投稿する