Mira&Luna's nursery lab

旅乙女と発明娘の子供部屋

手作りGPSロガー プラスβの1回目     「高度を記録するためのプログラム」

🎀 手作りGPSロガー +β(+高度) 🎀
高度情報も取得できるGPSロガーにレベルアップ

f:id:miraluna:20180806220931j:plain:w70 Mira               🎀手作りGPSロガーの目次🎀

GPSロガーを使って緯度経度、それから「高度(標高)」を記録します。

「高度」についての目次
○ プログラムの変更
○ 取得したログデータをkmzファイルに変換する
○ GoogleEarthで立体地図にルートを描画する

f:id:miraluna:20180906094328p:plain

今まで紹介してきた手作りGPSロガーはルナとカタリの「旅」に使うためのものだったので、「緯度と経度」の記録に特化したプログラムでした。
だから平面地図でのルート表示に向いていたの。

こんな感じで。  ↓ 緯度と経度のみによる平面座標ルートの描画
f:id:miraluna:20180524183416p:plain
 ↑この地図の行程を書いたルナの日記記事は「こちら」です🎀
 海の上を歩いたんだって。


今回は「登山」でも使えるような、緯度と経度の他にも「高度(標高)」の記録もとれるプログラムに書き換えてみました。



1.プログラムの書き換え

プログラムは前回書いた緯度経度を記録するものにほんのちょっぴり付け足すだけです。
          🎀前回のプログラム🎀

プログラムの中の緯度と経度をLCDに表示してSDカードに記録する部分、
「void log_sd()」に手を加えます。

void log_sd(){   //緯度と経度をSDカードに書くプログラム
 if(gps.location.isValid()){
 String n;
 String m;
  n = String(gps.location.lat(),6); //緯度情報を取得
  m ="N";
  m +=n;
   lcd.setCursor(0,0);
   lcd.print(m);   //緯度に Nを付けてLCDに表示
   sd.print(n);   //SDカードに緯度を記録
   sd.print(",");   //SDカードに「,」を記録
  n = String(gps.location.lng(),6); //経度情報を取得
  m ="E";
  m +=n;
   lcd.setCursor(0,1);
   lcd.print(m);
   sd.println(n);   //lnを消す
   sd.print(",");   //この行を加える
  n = String(gps.altitude.meters());  //この2行を加える
   sd.println(n);
  sd.flush(); //SDカードに書き込んだ記録を保存
 }else{
 lcd.print("Not Find GPS ");
}

色を変えてある3カ所を書き換えるだけです。
これで新たに高度(Altitude)を取得してSDカードに記録します。「TinyGPS++」のライブラリって便利ね。
そのときに経度の後にカンマを入れて、高度のあとで改行するようにしました。

          🎀TinyGPS++についての記事🎀


私が使っているLCD(液晶ディスプレイ)は緯度と経度を表示するだけの2行のもので、高度は表示しません。
もしLCDに高度も表示させたいのなら、
lcd.setCursor(○,○);」で表示位置を指定して、
lcd.print(n);」の行を「sd.flush();」の上に書き加えればO.K.
LCDの○,○の位置に高度が表示されるはずよ。

今回取得した高度の単位は「メートル」。
「フィート」や「マイル」など、他の単位で取得することもできます。
詳しくは上のリンク「TinyGPS++の記事」を見てね。

さあ、これでデータファイルには「緯度,経度,高度」の情報が記録されます。

次回は立体地図に位置情報を描画するため、ログデータをkmzファイルに変換する方法を紹介します。


🎀 手作りGPSロガー目次のページへ 🎀

🎀 「高度」についての目次へ 🎀
🎀 次の記事+βの2回目「記録したログデータをkmzファイルに変換する」へ 🎀