注目キーワード

【Arduino】M5StickCを時刻同期する

この記事では、Arduino IDEを使ってM5StickCをアクセスWi-Fiアクセスポイントに接続し、インターネットの時刻サービスを使って時刻を同期する方法について紹介します。

M5StickCなどのマイコンも内部に時刻をもっていますが、機体ごとに時間が異なる可能性があります。IoTなどで複数マイコンを使ってデータ取得を行う場合、機体間の時刻同期をしっかり行うことが重要です。

時刻同期することで、取得データの時系列をほかのマイコンから取得したデータのものと合わせて使用ることができます。

Wi-Fiアクセスポイントへの接続方法については次の記事で紹介している内容を使って行います。詳細は記事を参照してくださいね!

関連記事

この記事では、Arduino IDEを使ってコンピュータをWi-Fiルータに接続する方法について紹介します。 Wi-Fi接続する方法は、2つあります。2回目の今回はマイコンにアクセスポイント情報(SSID、パスワード)を記憶させることでプ[…]

 

時刻同期とは?

Webサイトを構成するサーバやパソコン、スマートフォンなどでも内部に時刻を持っていますよね。インターネットに接続する各機器で内部に持っている時刻がずれていたら、正確な処理や履歴が残せないといったことが起こります。

そこでインターネットには、標準時刻の提供サービスを行う場所があります。それがNTPサーバです。スマートフォンやパソコンでもNTPサーバを使って時刻同期することができます。

また、一度時刻同期を行っても機器内部の時刻をカウントしているクロックの微細なずれが積み重なって時刻がずれていきますので定期的な時刻同期が必要です。

日本国内の環境にて時刻同期をする際に使用できるNTPサーバは以下のものがあります。

  • 独立行政法人情報通信研究機構(NICT)
    NTPサーバー:ntp.nict.jp
  • MFEED時刻情報提供サービス
    NTPサーバ:ntp.jst.mfeed.ad.jp

今回は、「MFEED」の公開NTPサーバーを使用したいと思います。

 

M5StickCの時刻を同期させよう!

それでは早速、時刻同期のプログラムを記述していきます。
Wi-Fiアクセスポイントへの接続後、「MFEED」の公開NTPサーバーとの時刻同期を行います。

時刻同期プログラム

Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。

 Arduino IDE スケッチ例

今回は、時刻同期処理を関数と呼ばれる書き方で記述しました。関数で記述するとSetup()やloop()関数の中の記述を簡略化でき、見やすくなります。また、繰り返し呼び出す場合も関数を呼び出すだけで処理が実行できるため便利です。

 

 M5Stack/M5StickCへの書き込み

  1. 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
  2. 「ツール」メニューから「ボード」情報を確認し、M5StickCであるか確認します。
    この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
  3. 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
  4. 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。

 

 プログラム実行結果

シリアルモニタ上に以下の通り表示されれば成功です。

Connecting to your-ssid
...............
WiFi connected
IP address: 
192.xxx.xxx.xxx
NTP : ntp.jst.mfeed.ad.jp
RTC 2021-04-16 11:43:18
Disconnect from WiFi
.
WiFi disconnected

 

さて、これでWi-Fiアクセスポイントに接続して、時刻同期を行うことができました。今回の記事は以上になります。
次回は、今回のこれまでの処理結果をシリアルモニターではなくM5StickCに搭載されているディスプレイ上に表示します。

今回使用したマイコンは・・・

M5StickC
ディスプレイ付きのマイコンです。非常にサイズが小さいですがディスプレイも搭載しており、使いやすいです。Amazonで確認
げんろく
どちらもディスプレイ付きとは思えない小さいサイズのマイコンです。センサーと組み合わせてIoTデバイスとして活躍できる機能を持っています。