3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

日の出・日の入り時刻を取得するArduinoライブラリ「Dusk2Dawn」

Last updated at Posted at 2020-05-24

発端

Dusk2Dawnは、秋月で買ったesp32-wroom-32dを、リンビングの窓の電動シャッターを開閉するリモコンにつなぎ、外が暗くなったら(日の入時刻になったら)、自動でシャッターを閉める、という工作をしているときに、見つけたライブラリです。

日本語解説サイトがなさそうなので、メモがてらご紹介。

インストール方法

  1. Dusk2Dawnのgithubで「Clone or Download → Download ZIP」を選択して、zipファイルをダウンロード
  2. Arduino IDEを起動し、メニューから「スケッチ → ライブラリをインクルード → .ZIP形式のライブラリをインストール」を選択、さきほどのzipファイルを指定

サンプルコード

dusk2dawn_jp.ino
#include <Dusk2Dawn.h>

void setup() {
  Serial.begin (115200);

  // 経度, 緯度, タイムゾーン
  Dusk2Dawn japan(36.2048, 138.2529, 9);

  // 年, 月, 日, サマータイム
  int jpSunrise = japan.sunrise(2020, 5, 24, false);
  int jpSunset  = japan.sunset(2020, 5, 24, false);

  // 日の出時刻
  char time0[] = "00:00";
  bool response0 = Dusk2Dawn::min2str(time0, jpSunrise);
  if (response0 == false) {
    //Serial.println(time0); // print "ERROR"
    Serial.println("Error!");
  }
  Serial.print("jpSunrise: ");
  Serial.println(time0);

  // 日の入り時刻
  char time1[] = "00:00";
  bool response1 = Dusk2Dawn::min2str(time1, jpSunset);
  if (response1 == false) {
    //Serial.println(time1); // print "ERROR"
    Serial.println("Error!");
  }
  Serial.print("jpSunset: ");
  Serial.println(time1);
}

void loop() {
}

実行結果

上記サンプルコードを実行すると、シリアルコンソールに以下が表示されます。

14:57:27.218 -> jpSunrise: 04:35
14:57:27.218 -> jpSunset: 18:52

手元にあったiPhoneの天気アプリに表示されている日の出時刻・日の入り時刻を見ると、それぞれ「04:29」「18:47」だったので、5分弱ずれています。

上記サンプルの経度・緯度は、「日本 経度 緯度」でググって出てきたものを、何も考えずにそのまま入れましたが、あとあと調べて見ると、今私がいる場所からだいぶ離れた地点のようです。

もしかすると、iPhoneのほうはGPSにより正確な経度・緯度を使っていて、そのせいで差がでたのかも?と思い、試しに上記サンプルの経度・緯度に、今いる場所の値を正確にいれたところ、ほぼ差がなくなりました。

私の用途的にはどちらにせよ、誤差の範囲なので、良しとします。

参考

日没頃に自動で100均イルミネーションをつけてみる」という記事でも似たようなことをしていますが、こちらはWebAPIを使っているようです。

おしまい。

3
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?