製作品 3169
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表示
投稿者の人気記事
-
syouwa-taro
さんが
2022/08/24
に
編集
をしました。
(メッセージ: 初版)
-
syouwa-taro
さんが
2022/08/24
に
編集
をしました。
-
syouwa-taro
さんが
2022/08/24
に
編集
をしました。
-
syouwa-taro
さんが
2022/08/24
に
編集
をしました。
-
syouwa-taro
さんが
2022/08/24
に
編集
をしました。
-
syouwa-taro
さんが
2022/08/25
に
編集
をしました。
-
syouwa-taro
さんが
2022/08/28
に
編集
をしました。
ログインしてコメントを投稿する