- リンクを取得
- ×
- メール
- 他のアプリ
- 小型で低コストなSDR環境を作る!ラズパイ4でUSRP B200miniを動かす(1)
- 小型で低コストなSDR環境を作る!ラズパイ4でUSRP B200miniを動かす(2) ディスクベンチマーク編
- ラズパイとUSRPでどの程度の消費電力があるのか?バッテリーベンチマークをする
- ラズパイやUSRPと一緒に使用するGPSの選定(4)
ラズパイに接続したGPSから位置情報を取得する (5)
ラズパイを電源オンしたら自動的にGPSログを記録する (6)
ラズパイでロギングしたGPS情報をGoogle Mapにマッピングする方法 (7)
ラズパイでRSSI計測しながら位置情報を記録する (8)
こんにちはドルフィンシステム福島です。
少し時間が空いてしまいましたが「ラズパイでモバイルセンシング端末を作る」の続きです。
前回は、ラズパイやUSRPと一緒に使用するGPSの選定(4)でした。
具体的なステップ
1. ラズパイ4にUSRP B200miniを接続する
2. 電源は市販のモバイルバッテリーを使用することでコストを抑える
3. 特定周波数のRSSIを計測しながら
4. 接続したGPSの位置情報を取り込みロギングする
5. ロギングしたRSSIと位置情報からマップを作成する
5段階の今日は4番のGPSログ取得を行います。
(3番が後先になってしまいましたが、先にGPSに取りかかったので先にGPSをやっつけます)
ついでにラズパイ4の無線LAN設定をする
この節は福島のメモです。
以前ラズパイをセットアップした際に、無線LANの設定をしていませんでしたが、GPS電波が受信できる場所にラズパイを持って行っても社内LANに接続できるように無線LANを設定します。
$ sudo vi /etc/netplan/50-cloud-init.yaml network: ethernets: eth0: dhcp4: true optional: true wifis: wlan0: dhcp4: true access-points: "アクセスポイント名": password: "アクセスポイントのパスワード" version: 2
$ sudo netplan apply
固定IPにする場合は、
$ sudo vi /etc/netplan/50-cloud-init.yaml ~中略~ wifis: wlan0: dhcp4: false addresses: [192.168.0.30/24] gateway4: 192.168.0.1 nameservers: addresses: [192.168.0.1] ~中略~
とする。
Error in network definition: expected mapping (check indentation)
というエラーメッセージが表示されたら、インデント(行頭のスペースの数など)が間違っているので正しく直します。
GPSを接続して認識を確認する
まず前回購入したGPSをUSBポートに挿入しlsusbコマンドを実行して認識していることを確認します。
以下の「~PL2303 Serial Port」がGPSです。
次にGPSがどのttyに割り当てられたか確認します。
一度GPSをUSBから抜き差ししてdmesgコマンドを実行すると、割当先が表示されます。
下図ではttyUSB0に割り当てられたようです。
$ dmesg
次にGPSから文字列を受信してみます。以下のコマンドを実行します。
すると表示されますね。
$ cat /dev/ttyUSB0
以下のように文字が化けたらGPSのボーレートがおかしいようです。
この場合は、
1. Windows PCにu-centerをインストール。
2. Windows PCにGPSを挿入。
3. u-centerを起動して、Receiver→Action→Revert Config
を行ってGPS設定値をデフォルトに戻しましょう。デフォルトボーレートは9600baudです。
GPSデーモンをインストールする
pythonを使ってSerialで受信したGPSのNMEAをパースしても良いのですが、シリアル受信やパースなどの手間を省いてくれるインテリジェントなgpsdをインストールして使用します。
自作でシリアルポートを開くプログラムを作成した場合、同時に他のプログラムがGPSを開くことは出来ませんが、gpsdは複数のアプリにgps情報を共有する機能があるのでネットワーク経由でgps情報を配信可能です。
$ sudo apt-get install gpsd gpsd-clients
$ sudo killall gpsd
インストールが完了したら、GPS情報を受信してみます。
下図のようにちゃんと見えてますね。
$ sudo gpsmon /dev/ttyUSB0
次にgpsdをGPSサーバとして動かして、その情報をgpsmonクライアントで取得してみます。
$ sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
$ gpsmon
ちゃんと見えてますね。
まとめ
• USBシリアルタイプのGPSなら接続すれば認識する
• 認識したデバイス名はdmesgコマンドで調べる
• catコマンドでGPS NMEAを確認することが出来る
• gpsdを使用すればシリアルポート受信やNMEA文字列パースも行ってくれる
• gpsdなら複数アプリでGPS情報を見ることが出来る
GPS情報の取得まで行おうと思ったのですが、意外と分量があったので、ログ取得は次回にします。
以上です。
- リンクを取得
- ×
- メール
- 他のアプリ
コメント
コメントを投稿