- Found at :
- www.seeedstudio.com
Grove_GPS
Grove GPSモジュール(Grove - GPS)から情報を取得するライブラリです。
機能はGYSFDMAXBとほぼ同じですが、Grove GPSモジュールには1PPM出力がありません。
<!-- HTML Example -->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@latest/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<h1>obniz GPS</h1>
<div id="obniz-gps"></div>
<script>
var obniz = new Obniz("95496709");
obniz.onconnect = async function () {
let gps = obniz.wired("Grove_GPS", { rx: 0, tx: 1, vcc: 2, gnd: 3 });
setInterval(async function () {
let gpsInfo = gps.getGpsInfo();
console.log(gpsInfo);
document.getElementById("obniz-gps").textContent = "longitude:" + gpsInfo.longitude + " latitude:" + gpsInfo.latitude;
}, 1000);
}
</script>
</body>
</html>
wired(rx, tx {, vcc, gnd, grove})
obniz BoardにGPSモジュールを接続します。
次のように接続を行います。
grove | cable | obniz |
---|---|---|
tx | - | rx |
rx | - | tx |
vcc | - | vcc |
gnd | - | gnd |
突入電流対策のため、obniz Boardのvcc(5V出力)とGPSモジュールのvccの間に5~10Ω程度の抵抗を挿入してください。
// Javascript Example
let gps = obniz.wired("Grove_GPS", { rx:0, tx:1, vcc:2, gnd:3 });
groveを持つデバイスでは、パラメータに{grove: obniz.grove0}を指定することで接続できます。
// Javascript Example
let gps = obniz.wired("Grove_GPS", {grove: obniz.grove0});
readSentence()
受信したGPSデータ(NMEAフォーマット)の1センテンス(1行の)データを読み出します。
データがない場合は、空文字が返ります。
NMEAフォーマットのデータを直接使いたい場合にこのAPIを使います。
受信した1センテンス分のデータが文字列としてセットされます。
例: "$GPGGA,134214.000,3599.9999,N,13999.9999,E,2,11,0.97,57.4,M,39.5,M,,*5C"
// Javascript Example
let gps = obniz.wired("Grove_GPS", { rx:0, tx:1, vcc:2, gnd:3 });
let sentence = gps.readSentence();
getGpsInfo({editedData})
受信したNMEAフォーマットのセンテンスから有用なデータをオブジェクト化した結果を取り出します。同じ情報がgpsInfo
プロパティにもセットされます。
通常は引数を省略しますが、後述のeditedData
を指定すると、その情報を使用してオブジェクト化します。
// Javascript Example
let gps = obniz.wired("Grove_GPS", { rx:0, tx:1, vcc:2, gnd:3 });
let gpsInfo = gps.getGpsInfo();
console.log(gpsInfo);
getEditedData()
受信したNMEAフォーマットのセンテンスをオブジェクト化した結果を取り出します。同じ情報がeditedData
プロパティにもセットされます。
- editedData.enable : 以下が有効なデータを保持している場合true
- editedData.GPGGA : GPGGAセンテンスデータ
- editedData.GPGLL : GPGLLセンテンスデータ
- editedData.GPGSA : GPGSAセンテンスデータ
- editedData.GPGSV[ ] : GPGSVセンテンスデータの配列
- editedData.GPRMC : GPRMCセンテンスデータ
- editedData.GPVTG : GPVTGセンテンスデータ
- editedData.GPZDA : GPZDAセンテンスデータ
- editedData.xxx : その他xxxセンテンスデータ
- editedData.timestamp : GPZDAセンテンスの日付時刻情報(Date型)
各センテンスのデータが文字配列としてセットされます。
例: $GPGGA,134214.000,3599.9999,N,13999.9999,E,2,11,0.97,57.4,M,39.5,M,,*5C
["$GPGGA","134214.000","3599.9999","N","13999.9999","E","2","11","0.97","57.4","M","39.5","M","","*5C"]
// Javascript Example
let gps = obniz.wired("Grove_GPS", { rx:0, tx:1, vcc:2, gnd:3 });
function mainLoop() {
var data = gps.getEditedData();
if (data.enable) {
if (data.GPGGA) console.log(data.GPGGA.join(","));
if (data.GPGLL) console.log(data.GPGLL.join(","));
if (data.GPGSA) console.log(data.GPGSA.join(","));
if (data.GPGSV[0]) console.log(data.GPGSV[0].join(","));
if (data.GPGSV[1]) console.log(data.GPGSV[1].join(","));
if (data.GPGSV[2]) console.log(data.GPGSV[2].join(","));
if (data.GPGSV[3]) console.log(data.GPGSV[3].join(","));
if (data.GPRMC) console.log(data.GPRMC.join(","));
if (data.GPVTG) console.log(data.GPVTG.join(","));
if (data.GPZDA) console.log(data.GPZDA.join(","));
if (data.PMTK010) console.log(data.PMTK010.join(","));
if (data.PMTK011) console.log(data.PMTK011.join(","));
}
setTimeout(mainLoop, 1000);
}
setTimeout(mainLoop, 10);
経度・緯度情報の単位変換メソッド
NMEAフォーマットの経度・緯度情報の単位変換を提供します。
nmea2dms(value)
NMEAの緯度経度を「度分秒(DMS)」の文字列に変換(999°99'99.9")nmea2dm(value)
NMEAの緯度経度を「度分(DM)」の文字列に変換(999°99.9999')nmea2dd(value)
NMEAの緯度経度を「度(DD)」の数値に変換(999.999999)nmea2s(value)
NMEAの緯度経度を「秒(S)」の数値に変換(999999.999)
// Javascript Example
let gps = obniz.wired("Grove_GPS", { rx:0, tx:1, vcc:2, gnd:3 });
let d = gps.getEditedData();
if (d.enable) {
if (d.GPGGA) {
let p = d.GPGGA;
if (p[6] !=="0") {
//経度
let longitude = gps.nmea2dd(p[2]);
//緯度
let latitude = gps.nmea2dd(p[4]);
}
}
}
Supported from: obniz.js 3.5.0