編集履歴一覧に戻る
monoのアイコン画像

mono が 2020年06月15日08時37分48秒 に編集

初版

タイトルの変更

+

ESP8266でNTPサーバから時刻を取得する

タグの変更

+

備忘録

+

ESP8266

+

Arduino

本文の変更

+

**はじめに** 電子工作をやってると、特定の時間や一定時間ごとに動かしたいという動作が出てくる。 そういう時にNTPサーバから時刻を取得したら便利かなと思ったので、このやり方で正しいのかわからないけど書き記しておきます。 **準備** ArduinoIDEのスケッチ>ライブラリをインクルード>ライブラリを管理から「ライブラリマネージャ」を開き「NTPClient」をインストールする。 ![キャプションを入力できます](https://camo.elchika.com/bdba92744024fa9aae30fe1138a108997b27ff4f/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34623535663234372d343264612d346463342d383136312d3465313134383033653664362f32386534656431622d623566352d343935382d386637362d343633613734383932353163/) **とりあえず時刻を表示してみる** exapmleファイルから引用 ```arduino:exampleから引用 #include <NTPClient.h> // change next line to use with another board/shield #include <ESP8266WiFi.h> //#include <WiFi.h> // for WiFi shield //#include <WiFi101.h> // for WiFi 101 shield or MKR1000 #include <WiFiUdp.h> const char *ssid = "WiFiのSSID"; const char *password = "WiFiのパスワード"; WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP); void setup(){ Serial.begin(115200); WiFi.begin(ssid, password); while ( WiFi.status() != WL_CONNECTED ) { delay ( 500 ); Serial.print ( "." ); } timeClient.begin(); } void loop() { timeClient.update(); Serial.println(timeClient.getFormattedTime()); delay(1000); } ``` ![キャプションを入力できます](https://camo.elchika.com/b63d3d8b3658032716708cab10058f6a1c444abd/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34623535663234372d343264612d346463342d383136312d3465313134383033653664362f31396637386234652d316363312d346462632d383834332d366230393136393263386633/) UTC時刻だけど表示出来た。 日本標準時にするには、 ```arduino: //NTPClient timeClient(ntpUDP);を以下に書き換える NTPClient timeClient(ntpUDP,32400); ``` **時/分/秒(HOUR, MINUTE, SECOND)を別々に表示する** 時/分/秒を別々に取得出来たほうがより便利かなと思ったので一応… timeClient.getMinutes()で分を取得できる。時や秒も同様に ```arduino: Serial.println(timeClient.getHours()); Serial.println(timeClient.getMinutes()); Serial.println(timeClient.getSeconds()); ``` ![キャプションを入力できます](https://camo.elchika.com/386ac8d5ca941538cf7316f8a868a80cc664ab86/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34623535663234372d343264612d346463342d383136312d3465313134383033653664362f35653432306265332d383930312d346130642d613039662d343736666364626566623264/) 出来た。 ただ、1秒毎の取得だとNTPサーバに負荷がかかりそうだけどどうなんだろうか…