そうだ通信を始めよう
ETH モジュール
今まではデバイスを使う形でサンプルになりそうなものを書いていました。
しかしデータのやり取りはデバックプローブによるログを取り出すぐらいしかできませんでした
そこで前より気になっていたETHモジュールを買ってみました
実際にはETHモジュールとRaspberryPiPicoとSPIで接続されている結合モジュールです。
Ethenet通信できるのとPoEモジュールを追加することでPoE受電できます。
意外にもAliexpressあたりだと売っていなくて秋月電子で売っていました。
一応RP2350でも対応しています。
実装コード
今回は3つのファイルに分割されました(ほぼAIで書いたので)
GitHub
ざっと仕組みとしてembassyによる非同期処理を実装しています。
embassyのタスクとしてインターフェースの初期化、DHCPの受け取り、TCPサーバーの初期化を行います
TCPサーバーでは各エンドポイントごとにレスポンスを返す様になっています。
HTTP1.0の応答ですが、軽い情報の返すぐらいなら大丈夫ですね。
GPSモジュール
前回のePaper同様にGPSモジュールを取り付けられるHATがあります
GPSモジュールでは衛星からの電波を元に現在の位置情報や時刻を取得してUARTで応答します。
なのでUARTに流れてくるテキストをひたすらパースすれば現在値と時刻を取れます。
窓辺などは拾いは悪いですが使ってみると6衛星ぐらいは取れてました。
NTPサーバー
ETHモジュールとGPSが使えるようになったのであとはNTPサーバーを作れますね
NTPは基準となる時計(原子時計など)と接続しているのをstratum 0として、そこからマイクロ秒以内に同期している物をstratum 1、ネットワークを通して同期している物をstratum 2となります。
一般的によくあるNICTなどのNTPサーバーと宅内社内に置くNTPサーバーが必然とstratum 2になります。
一般的には問題はありませんが、ネットワーク越しに同期するという特性上精度が落ちます。
そこでGPSから受けてしまえばええやんという方向ですね。
一応GPSであれば60ms程度なのでギリstratum 1でしょうか
ようやくやりたいことはできたのですが、ほとんどAIに実装させたので何だかなーという気持ち










コメント