TOPページ / 徒然なるままに

2021/04/04(日)

Raspberry Pi PicoでW5500


Raspberry Pi PicoとW5500搭載モジュールで時刻を取得してみました。OLEDへ表示まで。
DHCPとDNS部分は既にSTM32系で実現、利用していましたが、NTPサーバから時刻を取得するのは初だったのでメモがわりの記録。
全てUDP通信、IPv4で実現。
1-1. 68番ポートで67番ポート宛、DHCPのDiscoverパケットをブロードキャスト。
1-2. DHCPサーバ(一般家庭では普通はルータ上で稼働)からの返信Offerパケットを受信し、IPアドレス、ネットマスク、デフォルトゲートウェイ、DNSサーバの情報を取得。
1-3. DHCPのRequestパケット(IPアドレスを返信)をブロードキャスト。
1-4. DHCPサーバからの返信Ackパケットを受信し、IPアドレス、ネットマスク、デフォルトゲートウェイ、DNSサーバの情報をモジュールに設定。

2-1. DHCPで取得した通信先、DNSサーバに対して53番ポート宛、NTPサーバ(今回はntp.nict.jpを利用)のIPアドレス問い合わせパケットを送信。
2-2. DNSサーバから問い合わせ返信パケットを受信、NTPサーバのIPアドレスを取得し通信先としてモジュールに設定。

3-3. DNSで取得した通信先、NTPサーバに123番ポートで123番ポート宛にパケットを送信。
3-4. NTPサーバからNTP返信パケットを受信し64ビットNTP TimeStampのうち、秒部分の32ビット(1900年1月1日 0時0分0秒からの経過秒数)を利用、うるう年等を計算して時刻を表示。


Blog

CCNA(Cisco Certified Network Associate)取得を目指している取得した取得後有効期限満了したぎりぎり20代30代突入30代30代後半40代突入管理人のブログです。

Recent Entries

Google Maps API

googlemap.jpg
地図 ブログ

 

Twitter

Category

Monthly Archives