ArdunioでJJY信号を発信して電波時計を合わせる
40kHz標準電波(JJY)が止まってしまった後、一時的に復旧したのですがまた止まってしました。
復旧したので大丈夫とか思っていたのですが、電波時計もズレが大きくなってきたので合わせられるようにするべく情報法を収集…。やっぱり考える人は多かったみたいで、ArdunioでJJYを送信されている方がいらっしゃいました!!という訳で、コードの方も掲載されていたのでありがたくいただいて使ってみようと思ったのですが…、W5100なんて物はありません!!Orz
そしてなぜかある、ENC28J60のモジュール…。
なんていう状況から始まりまして、色々とコードを継ぎ接ぎして作ってみました。
Ardunio+ENC28J60+電源+アンテナ
アンテナ部分
今回作成したスケッチは、「Ardunio+ENC28J60」で動作します。
必要なライブラリとして、「ENC28J60 Ethernet library」「Timer1」「Time」の3つのライブラリの追加が必要です。
■作成スケッチ:etherShield_NTP_JJYClock.pde
・モジュール接続
LCDモジュール(Ardunio == LCD)
D9 == RS
D8 == enable
D4 == d4
D5 == d5
D6 == d6
D7 == d7
R/W == Ground
ENC28J60モジュール(Ardunio == ENC28J60)
D2 == INT
D10 == CS
D11 == MOSI
D12 == MISO
D13 == SCK
アンテナ部分は余っていたETEF(0.32mm)-5mを15cm位に丸めてループアンテナっぽくしてみました。こんなちゃちな感じでも結構飛びます…。3mぐらい離れたところにある電波時計が合わせられるぐらいです。それ以上離れると合わせられませんでした。
いちようは、内部でms単位まで修正して時間修正を行っています…。(タブン)
コード見てもらえばわかりますが、Webブラウザを使って設定を変更できるようになっています。
「http://IPアドレス/config」で設定画面が表示されて設定変更が可能です。
・Arduino NTP/JJY Clock Network-Setting
○IPアドレス
○GWアドレス
○NTPサーバアドレス
○タイムゾーン
・Arduino NTP/JJY Clock JJY-Setting
○JJY送信設定
○送信周波数
○送信時間
・Arduino NTP/JJY Clock NTP-Setting
○NTP問い合わせ間隔設定
※:設定したデータはEEPROMに書き込まれるので次回以降は電源投入時も設定不要です。
電波の発振部分は、「Okiraku Programming-Arduinoで電波時計を合わせよう」さんのコードを一部修正したものを流用させていただきました。
本当は、RTCでも使ってみようかと思ったんですが面倒になって中断しました。
出来れば、時刻設定を手動で設定できるようにするとスタンドアローンでも使えるんですが、それだと手動で合わせるのと変わらないのですよねぇ。
・Ardunioライブラリ
Arduino ENC28J60 Ethernet library
Timer1
Time
・参考情報
Arduinoで電波時計を合わせよう – Okiraku Programming
Arduino Internet Clock « Andy’s Life
Updated Arduino ENC28J60 Ethernet library available « Andy’s Life
Arduino playground – Time
Arduino playground – Timer1