syouwa-taroのアイコン画像
syouwa-taro 2022年08月24日作成 (2022年08月28日更新) © Apache-2.0
製作品 製作品 閲覧数 2158
syouwa-taro 2022年08月24日作成 (2022年08月28日更新) © Apache-2.0 製作品 製作品 閲覧数 2158

ESP32を使いタイムサーバーから現時刻データーを読み込み有機EL表示

ESP32を使いタイムサーバーから現時刻データーを読み込み有機EL表示

概要
ntp(ネットワーク・タイム・プロトコル)はネット経由で時計を合わせるための通信規約で、ネットワーク上のタイムサーバと同期させることで正確な時刻を簡単に得ることができる。

内容は難しいが、時刻を得るソフトをコピペするだけでESP32で簡単に実現

時刻を得ることが出来たので、更に以前外部温度を表示させていたOLED(SSD1306)を流用し時計表示を行った。必要なソフトだけにすると(驚くほど)行数も少なかった。

キャプションを入力できます

部品 備考
OLED SSD1306 0.96インチ128×64ドット有機ELディスプレイ。I2C接続、3~5.5V
ESP32 Arduinoで作成 タイムサーバーから時刻データ読み込み 3.3V

ここに動画が表示されます

JSTClock

#include <WiFi.h> #include <time.h> #include <Wire.h> // I2C interface #include <Adafruit_SSD1306.h> // SSD1306 display #include <Adafruit_GFX.h> // SSD1306 display /* OLEDディスプレイの設定 */ #define SCREEN_WIDTH 128 // 幅 (単位:ピクセル) #define SCREEN_HEIGHT 64 // 高さ(単位:ピクセル) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire); #define JST 3600* 9 const char* ssid = "*******"; const char* password = "******"; void setup() { WiFi.begin(ssid, password); while(WiFi.status() != WL_CONNECTED) configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp"); // OLEDディスプレイを初期化する if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { for(;;); // 失敗したら処理を進ませない! } } void loop() { time_t t; struct tm *tm; t = time(NULL); tm = localtime(&t); display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(0, 0); display.print(tm); display.display(); }

参考資料
ESP32で現在時刻を取得する
ESP32でOLEDディスプレイ「SSD1306」にHello-world表示

ログインしてコメントを投稿する