ラズベリーパイ zero GPSロガー作成 その4 GPSロガーの完成
それでは、GPSロガーを完成させます。
1.終了スイッチを用意する
終了のタイミングは、ラズベリーパイzero(Raspberry Pi Zero)に終了スイッチを用意します。ここまでGPIOの26番でスイッチを付ける予定でしたが、こちらの事情により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均のプラスチックケースに、ラズベリーパイzeroとGPS受信パーツ、モバイルバッテリーを組みこんでみました。特に設計したわけではないので美しくないですが、これでGPSロガーとして役立ちます。
取得したデータはPOT形式なので、ウェイポイントの扱いです。これは、カシミール3Dなどでトラッキングログなどに変換してください。自分はログ形式に作り直す予定です。
その他、ログを分割したり、同じ地点の場合はログを丸めるなどの処理を入れる予定です。これは公開しないので、みなさんで改良してみてください。