RTC搭載の場合はどうするのかな。
RTCは、M5Stack Core 2 などで搭載されている。
ちょっと、プログラム内容が異なるから、実装してみるか。
この記事では、M5StackをアクセスWi-Fiアクセスポイントに接続し、インターネットの時刻サービス(NTPサーバー)と時刻を同期する方法について紹介します。
M5Stackは、内蔵タイマであるRTCが搭載されているモデル(例:M5Stack Core 2、M5Stack Tough、M5Stack for AWSなど)と搭載されていないものがあります。
今回は「RTC搭載」のM5Stackを使った場合の時刻同期を記述しています。
記事内でご紹介するM5Stackはこちら!
M5Stack Core2 開発キット
Arduino、UIFlow、MicroPythonに対応している組み込み開発キットです。
タッチスクリーン、マイク、IMUを使うことができ、従来のM5Stackよりも多機能なモデルです。 バッテリーも搭載しています。一台でいろいろと遊べる機器なのでおススメです!
RTC非搭載のM5Stackを使った時刻同期は、次の記事で紹介しています。
すけろく 前回は、Wi-Fiアクセスポイントに 接続することができた。 次は時刻同期かな。 げんろく うむ。 時刻同期は、全ての基本だからな。 実装してみるか。 この記事では、M5[…]
IoTなどで複数マイコンを使ってデータ取得を行う場合、機体間の時刻同期をしっかり行うことが重要です。
時刻同期することで、取得データの時系列をほかのマイコンから取得したデータのものと合わせて使用ることができます。
Wi-Fiアクセスポイントへの接続方法は、次の記事で紹介しています。
すけろく M5Stackは、Wi-Fi機能がついているのか。 げんろく ESP32のおかげだな、2.4GhzのWi-Fi接続に 対応している。 すけろく では、早速Wi-Fi接[…]
これからはじめる方にお勧めの参考図書はこちら!
アイデアをカタチにする! M5Stack入門&実践ガイド | M5Stack&M5StickCではじめるIoT入門 | みんなのM5Stack入門 | ESP32&Arduino 電子工作 プログラミング入門 | みんなのArduino入門 |
確認する | 確認する | 確認する | 確認する | 確認する |
時刻同期とは?
Webサイトを構成するサーバやパソコン、スマートフォンなどでも内部に時刻を持っていますよね。インターネットに接続する各機器で内部に持っている時刻がずれていたら、正確な処理や履歴が残せないといったことが起こります。
そこでインターネットには、標準時刻の提供サービスを行う場所があります。それがNTPサーバです。スマートフォンやパソコンでもNTPサーバを使って時刻同期することができます。
また、一度時刻同期を行っても機器内部の時刻をカウントしているクロックの微細なずれが積み重なって時刻がずれていきますので定期的な時刻同期が必要です。
日本国内の環境にて時刻同期をする際に使用できるNTPサーバは以下のものがあります。
- 独立行政法人情報通信研究機構(NICT)
NTPサーバー:ntp.nict.jp - MFEED時刻情報提供サービス
NTPサーバ:ntp.jst.mfeed.ad.jp
今回は、「MFEED」の公開NTPサーバーを使用したいと思います。
M5Stackの時刻を同期させよう!
それでは早速、時刻同期のプログラムを記述していきます。
Wi-Fiアクセスポイントへの接続後、「MFEED」の公開NTPサーバーとの時刻同期を行います。
その後、同期した内容をもとに時計を、M5Stackのディスプレイに表示させます。
今回は「RTC搭載」のM5Stackを使った場合の時刻同期を記述しています。
時刻同期プログラム
Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。
Arduino IDE スケッチ例
M5Stackへの書き込み
- 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、次のものを選択します。この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
ボード:「M5Stack-Core2」または「M5Stack Tough」など対応するボードを選択します。
「Partition Scheme」で「Not OTA(2MB)」を選択します。 - 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。(転送速度は「115200」です)
- 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
プログラム実行結果
シリアルモニタ上に以下の通り表示されれば成功です。
M5Stack initializing...
microSD card initialized.
SSID.txt exists.
/SSID.txt Content:
Can read from JSON Data!
ID: xxxx-xxxxx-xxxxxxx
PW: xxxxxxxx
Conecting Wi-Fi ..WiFi connected
IP address: xxx.xxx.xxx.xxx
NTP : ntp.jst.mfeed.ad.jp
RTC 2022-12-05 16:04:58
Disconnect from WiFi
WiFi disconnected
M5Stackのディスプレイ上に次のように時計が表示されます。
秒を表示している部分あたりがチラついていますが、対処方法はあります。
画面制御ライブラリ「LovyanGFX」の「Sprite(スプライト)」機能を使うことで改善できますよ!
LovyanGFXのSpriteを使った制御方法は、次の記事で紹介しています。
すけろく ん~。 げんろく どうした難しい顔をして。 すけろく M5Stackのディスプレイにいろいろ描画しているのだが。 画像がチラチラしてみずらいのだ。 […]
編集後記
いかがだったでしょうか。
さて、これでWi-Fiアクセスポイントに接続して、時刻同期を行うことができました。今回の記事は以上になります。
今後、他の機能を使ったプログラムの実行例などをご紹介していきます。
ご期待ください。
今回の記事は以上になります。
最後までご覧いただきありがとうございました。
記事内でご紹介した商品はこちら!
M5Stack Core2 開発キット
Arduino、UIFlow、MicroPythonに対応している組み込み開発キットです。
タッチスクリーン、マイク、IMUを使うことができ、従来のM5Stackよりも多機能なモデルです。 バッテリーも搭載しています。一台でいろいろと遊べる機器なのでおススメです!
これからはじめる方にお勧めの参考図書はこちら!