GPSD問題をもっと引っ張ってみる(^^;
いろいろ問題がありそうな組み合わせに苦労するぐらいなら、状況が好転するまで別の代替手段を考える方が幸せだと思うわけです。
で、スマートフォンのGPS情報(NMEAメッセージ)をネット越しに利用するShareGPSと同じ方法で位置情報と時間を取得することにします。
INDIには GPS NMEA ドライバというのがあって、これがネット越しに流されるGPS NMEAメッセージを解析して位置情報と時間を取り出す仕事をしてくれます。つまり、GPSDの代わりになるものです。
で、スマホにShareGPSアプリを入れれば簡単に使えるのですが、それでは全く面白くない(?)ので、ShareGPSと同等機能のGPSのNMEAメッセージを流すサーバーを M5Atom GPS モジュールを使って作成します。
今回ははんだ付け無しでいきます(^^♪
写真のとおり、とても小さいモジュールです。
コアのM5Atom LiteにESP32-PICOが搭載されていて、プログラムを書けばWifiのAPやクライアントに変身します。GPSモジュールはBeitian BN-200が入ってます。
バッテリーは内蔵していないのでモバイルバッテリーのような外部電源が必要です。
お値段3000円ほど。
Arduino IDE で書き込み環境を作って、以下のコードを書き込めば完成。(^^)
ダウンロード AirNMEA.ino
AirNMEA Settings
表のボタンを押しながらリセットボタンを押すと、LEDが赤色になり設定モードに入ります。
設定モードでは、デフォルトで下記のアクセスポイントとして動作します。
SSID AirNMEA
Password 00000000
スマホなどで接続し、ブラウザで http://192.168.4.1/ を開くと設定画面になります。
Setting Mode
SSID 設定モード時のアクセスポイントSSID名を設定します。複数のAirNMEAを使用する場合はSSIDが被らないように設定してください。
Password SSIDアクセス用のパスワードです。
AirNMEA Mode
SSID, Password 接続するアクセスポイントのSSIDとパスワードを設定します。LAN内のアクセスポイントを指定してください。2.4GHz帯のみの接続です。
IP Addr IPアドレスを指定します。空または 0.0.0.0 に設定するとDHCPを使用します。
ネットワーク内で固定IPにするときに任意のアドレスに設定してください。
Netmask ネットマスクです。固定IPを使用する場合に設定してください。
Gateway ゲートウェイアドレスです。固定IPを使用する場合に設定してください。
Setボタンを押下するとEEPROMに保存されます。電源を切っても記憶されます。
AirNMEA動作
ボタンを押さずに電源を入れると、LEDが緑色に点灯しAirNMEA として動作します。
SSID, Password を使って自動的に無線LANアクセスポイントに接続します。
割り当てられたIPアドレスの50000ポートで動作しています。
DHCPを使用している場合はAirNMEAのアドレスを調べてください。
これで準備完了です。
INDIではGPS NMEAドライバを使用します。
connectするときにIPアドレスとポート番号を指定しておきます。
connectすると、GPSの測位後、位置情報と時刻を自動的に取得します。
定期的に情報を更新したい場合は、インターバルを設定してください。
telnetなどで、AirNMEAの50000ポートにつなぐとNMEAメッセージが流れ続ける様子が観察できます。
以上です。
実際の運用は、INDI環境にWifiアクセスポイントの設置が必要ですが、電源を入れるだけなので楽ではあります。
ずっとLAN内にぶら下げておけるのもメリットです。
が、わざわざ作らなくてもスマホでいいじゃん、と言われればそれまでです(笑)
ちなみにこのモジュール、microSDのスロットもついているのでファイルを何とかする機能も拡張できますが、何にもひらめかないのでどなたかネタをください(^^;
0 件のコメント:
コメントを投稿