ラズベリーパイ zero GPSロガー作成 その4 GPSロガーの完成

2019年1月3日

それでは、GPSロガーを完成させます。

1.終了スイッチを用意する

終了のタイミングは、ラズベリーパイzero(Raspberry Pi Zero)に終了スイッチを用意します。ここまでGPIO26番でスイッチを付ける予定でしたが、こちらの事情により12番を使用することにしました。

スイッチはプッシュ式が良いですが、手元になかったのでトグルスイッチを付けました。

スイッチの検出プルアップを使用しているため、スイッチがONのとき0が通知されます。

2.ファイルへの書き込み

ファイルの書き込みは、fopen関数関連のファイル入出力を使います。C言語での基本的なライブラリで、使うのは30年ぶり位です。

ファイルのオープン

if ((fp = fopen("gpslog.pot", "w")) == NULL) {
	printf("file open error!!\n") ;
	return -1 ;
}

// POT header write
fputs("DAT=WGS84/WGS84/0.000/0.00000000/0/0/0\n", fp);

fopen関数でファイルの書き込み(上書き)モードでオープンします。ファイル名は"gpslog.pot“としました。

fputs関数で、POT形式のヘッダーを書き込んでいます。

ログの書き込み

sprintf(potbuff, "ORD=POI/tex=point%d/ido=%s/kei=%s/alt=-0/pda=/pti=\n", pointnumber, ido, keido) ;

if (fp > 0) {
	fputs(potbuff, fp);
}

緯度経度POT形式で書き込みます。高度時間は今回は処理していないので空白です。

ファイルのクローズ

fclose(fp) ;

fclose関数で、ファイルを閉じます。

3.プログラムのダウンロード

プログラムに関しては以上です。以下のリンクでプログラムソースをダウンロードできます。

ダウンロード

プログラムソースは、以下のコマンドでコンパイルしてください。

$ gcc -o gpstest gpstest.c -I/usr/local/include -L/usr/local/lib -lwiringPi

4.起動用のスクリプトを用意する

今回のGPSロガーは、スマートフォンから起動します。スマートフォンに表示されたラズベリーパイの画面のアイコンをクリックして起動します。そこで、ラズベリーパイのデスクトップに、GPSロガー起動のスクリプトを用意します。

デスクトップ上で、ファイルの新規作成を行います。適当な名前と修飾子を".sh“で作成してください。

作成したファイルを開きます。起動用のスクリプトはデスクトップにあるので、GPSロガーのプログラムを相対位置で指定します。

デスクトップのアイコンをダブルクリックすると、確認ダイアログが表示されます。「端末で実行する」を選択すると、ターミナルが表示されて実行状況が分かるので良いでしょう。

5.まとめ

以上でGPSロガーの作成の説明は終わりです。あくまでもサンプルとして作成したものなので、高度や時刻、まるめ処理など行っていません。そこは、みなさんで改良して使ってみてください。

自作にはは大きなメリットがあります。まず費用ですが、ラズパイ本体、GPSユニット、SDカード、モバイルバッテリーなどを合わせても、1万円で十分におつりがきます。実用にするには振動などの補強が必要ですが、それでも追加費用は少なくて済むでしょう。

そして、ソフトウェアを自由に自分好みに作ることができます。これらを業者に頼んだら、とんでもない高額請求をされるでしょう。業務用の既製品は高いし、ソフトウェアも個別で頼むとありえない高額請求されます。

ぜひ、自作にトライしてください。

以下、実際に動かしてみた状況の報告です。

6.モバイルバッテリーを接続したGPSロガーを使ってみた

100均のプラスチックケースに、ラズベリーパイzeroGPS受信パーツモバイルバッテリーを組みこんでみました。特に設計したわけではないので美しくないですが、これでGPSロガーとして役立ちます。

取得したデータはPOT形式なので、ウェイポイントの扱いです。これは、カシミール3Dなどでトラッキングログなどに変換してください。自分はログ形式に作り直す予定です。

その他、ログを分割したり、同じ地点の場合はログを丸めるなどの処理を入れる予定です。これは公開しないので、みなさんで改良してみてください。