Raspberry Pi PicoW × MicropythonでNTPサーバから時刻取得をしてみました。
Raspberry Pi PicoのMicroPythonのファームウェアをセットアップや開発環境の設定については下記をご覧ください。
【MicroPythonのファームウェアをセットアップ】
設定方法は下記のURLに記載されています。
URL: https://www.raspberrypi.org/documentation/rp2040/getting-started/#getting-started-with-micropython
また、当ブログでは下記の記事に記載しています。
今回の注意点としてはファームウェアをダウンロードする際にRaspberry Pi Pico Wのほうを選択してください。 【開発環境の設定】
当ブログでは下記の記事に記載しています。
準備が整ったらUSBケーブルをコンピューターに接続します。
BOOTSELボタンを押しながら起動するのは初期設定のときのみで、普段は普通の接続で大丈夫です。
Thonnyを起動し、インタプリタとして「MicroPython(Raspberry Pi Pico)」を選択します。
これは、右下のボックスをクリックして行うことができます。
プログラムですが、Wifiへの接続はRaspberry Pi公式ページのDocumentationのMicrocontrollersのRaspberry Pi Pico and Pico Wのページの下記の項目のDocumentの3.6. Connecting to a wireless networkの
ページをほぼそのまま引用しました。
Raspberry Pi公式ページのDocumentationのMicrocontrollersのRaspberry Pi Pico and Pico Wのページ
Connecting to the Internet with Raspberry Pi Pico Wへのリンク
作成したプログラムはこんな感じです。
次に、NTPサーバーからの時刻の取得ですが、ntptimeモジュールを使用して取得できます。
ただし、Micropythonではタイムゾーン設定が未実装らしく手動で設定する必要あるらしく、時刻を合わせるために下記のように記述します。
実行結果は下記の通りとなります。
数字は左から、年、月、日、時、分、秒、曜日、?となっていています。
なお曜日は、0は月、1は火、2は水、3は木、4は金、5は土、6は日となります。
上記の結果をもとに出力方法の体裁を整えて、1秒ごとに時間を更新して記載したプログラムが下記の通りとなります。
実行結果は下記の通りとなります。
これをOLEDなどのディスプレイに表示すれば時計として使うことができるので、
今回はSSD1306 128×64 OLEDを使って表示してみたプログラムが下記になります。
なお、OLEDを使う際はモジュールが必要になりますので下記の方法で入手してください。
実行結果は下記の通りです。
接続はGND⇔GND(青)、3V3⇔VCC(赤)、GP1⇔SCL(白)、GP0⇔SDA(黄)となっています。
参考にしたサイト
Bhavesh Kakwani Sync time in MicroPython using NTP
e-DIYで行こう! MicroPythonでLCDクロックを作る
Comments