Arduino UNO R4 WiFiを使って、ネットから日時取得 

 

 その昔(今でも存在するが)は、めっちゃ高い電波塔から現在時刻を知らせる電波を発していて、それを個々の時計が受信し正確な時分を刻み続ける電波時計なるものがあった。

しかし、今では誰もがインターネットに簡単に繋がるデバイスを持つ時代になった。 さらに、インターネットに繋がっている事さえ感じさせないIoTなんて物も普及し始めている。

となれば、日時の取得は専用の受信機が必要な電波時計方式ではなく、インターネットから取得できるNTP(Network Time Protocol)を使うケースの方が断然に多い。 パソコンやスマホの日時はもちろん、このNTPから取得している。

 

 じゃあ、インターネットに接続できるArduino UNO R4 WiFiボードでもネットから日時が取得できるのでは? と思うのは自然な流れ。

結論から言うと、できる。 というか、サンプルプログラムも提供されている。

[ファイル]→[スケッチ例]→[(ArduinoUNO R4 WiFi用のスケッチ例)WiFiS3]→[WiFiUdpNtpClient] の順にクリックすればサンプルプログラムが開く。 あとは自分のネット環境を書き込んでコンパイルすれば実行できる。

 

 実行すればわかるが、このプログラムはネットから日時を取得したらそれをシリアルモニタで表示している。 それだけで事足りるが、せっかくRA4M1マイコンにはRTC(Real Time Clock)が搭載されているのだがら、それを使わない手はない。

というか、それもサンプルプログラムが用意されている。

[ファイル]→[スケッチ例]→[(ArduinoUNO R4 WiFi用のスケッチ例)RTC]→[RTC_NTPSync]の順にクリックすればサンプルプログラムが開く。

 

 これもシリアルモニタで表示する仕様。 しかも、RTCにセットするのが目的のため、1度プログラムを実行させて表示したら終わり。

せっかくのArduino UNO R4 WiFiボードなのだから、LEDマトリックスで表示させたらめっちゃクールじゃね。 ということで、前回の文字スクロールのプログラムも合体してUNO R4 WiFiボード単体でシリアルモニタを使わずに日時表示をすることにした。

それがこちら。

いつ作ったかバレバレだ 555
最初のLED点灯は、Wi-Fi接続やらNTPに接続やらの確認用に使っている。
日時を取得して、RTCにセットして、日時を文字列に変換して、文字列をLEDマトリックス用のドットに変換して、ようやくLEDマトリックスで日時をスクロール表示させている。
見にくいと言えば見にくい。 LCDディスプレイとかに表示させれば簡単だし綺麗だし見やすいと思う。 が、そんなのは他の誰かがやってるでしょ。 たぶん。
私キャッスルは実用性よりもロマンを追求したいと思っている。
 

 プログラム

ロマンだなんだと能書きはいいからプログラムを公開しろ、って思ってる人が大半だと思うので下を参照してもらいたい。

既存のサンプルプログラムに独自に手を加えているので、まだ詰めきれていない感はある。 変数名とか適当過ぎる。 そのうちもうちょっと綺麗に直そうと思う。

で、貼り付けようと思ったら、ブログ記事の文字数オーバーしてしまった・・・。 Arduino IDEの"HTML形式でコピーする"機能は、やたらとFONTタグを多用しててしかも重複してるから文字数が恐ろしい量があるのよ。 短いプログラムだったら気にしなくてもいいのだが、ちょっと長くなると制限をオーバーしてしまう。

なので、別記事にしたので、そちらを参照されたし。