Pi Pico W を単体起動後、NTPサーバーに接続して時刻を取得


Raspberry Pi Pico W というマイコンは内臓クロックを持っていないので、単体駆動するとそのままでは現在時刻が取れません。

ただ、無線通信チップを搭載しているのでネットワークに接続できれば、NTP(Network Time Protocol)サーバーから時刻を取ってこれます。

こんな感じです。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

開発環境の設定は以下参照

Pi PicoにMicroPythonをセットアップして実行してみる(メモ)

 


必要な機能は以下の通り

●NTPサーバーに接続して時刻変数を取得

NTPサーバーはいろいろあります、好きなのをお選びください。

ntp.nict.jpは日本で公開されているサーバーです。

NTPサーバからは1900年1月1日00:00:00(UTC)からの経過秒数が送られてきますが、時刻関連のライブラリの関数はUNIXエポックと呼ばれる1970年1月1日00:00:00(UTC)からの経過秒数を使います。そこで補正するための定数がNTP_DELTA(2208988800秒)です。

 

 

●上記のntptime.pyを読み込んで時刻変数を取得して、曜日も含めて返す関数を定義。Micropythonはzfill関数を持っていないので別途定義して数字をゼロパディングして表示。

日本標準時はサーバーの時刻より先に進んでいます、9時間プラス。

t = t + 9*60*60 は補正秒数です。

datetimetupleは8つの要素を持っていますが、最後のdatetimetuple[7]は経過日数です、今回は使いません。

 

●Wi-Fi ネットワーク接続

SSIDやパスワードは各自の環境ので置き換えます。

 

●表示用有機ELディスプレイ

接続やライブラリ等は以下を参照(日本語表記は今回は使わず)

Pi Pico (W)で有機ELディスプレイに日本語表示(メモ)

 

 

●Lチカ

 


まとめるとこんな感じです。main.py のSSIDとパスワードは書き直してください。

電源投入ー>LED点灯ー>ネット接続ー>完了ー>LED消灯ー>5秒間隔でNTPサーバーから時刻取得ー>有機ELディスプレイに表示

【ntptime.py】

 

【main.py】

 

Pico は1.8V~5.5Vの範囲内なら乾電池やモバイルバッテリーでも3.3Vに昇降圧して起動します。

リチュウムイオン・モバイルバッテリの場合、途中で給電が停止するタイプもあるので注意が必要です。

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*