ublox社製GPSモジュール NEO-7Mから、SPI経由でGPSデータをUBXプロトコルで読み出すライブラリです SPI経由ではGPSの出力設定が出来ないので、予めUART接続でPCから出力データを変更する必要があります。ここら辺の詳細については https://ameblo.jp/tsukuba-step/entry-12282936077.html を参考にして下さい。 出力設定は、 NAV-POSLLH,NAV-TIMEUTC,NAV-VELNED のみを出力して下さい

Dependents:   SensorManager

Committer:
kim1212
Date:
Tue Feb 13 04:52:01 2018 +0000
Revision:
2:5992db47f3c3
Parent:
1:2457089ca195
???

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kim1212 0:956653b6d3ad 1 #ifndef UBLOX_NAV_H
kim1212 0:956653b6d3ad 2 #define UBLOX_NAV_H
kim1212 0:956653b6d3ad 3
kim1212 0:956653b6d3ad 4 #include "mbed.h"
kim1212 0:956653b6d3ad 5 #include "obsvdStruct.h"
kim1212 0:956653b6d3ad 6
kim1212 0:956653b6d3ad 7 #define TIMEUTC_LEN 20
kim1212 0:956653b6d3ad 8 #define POSLLH_LEN 28
kim1212 0:956653b6d3ad 9 #define VELNED_LEN 36
kim1212 0:956653b6d3ad 10
kim1212 2:5992db47f3c3 11 /*
kim1212 2:5992db47f3c3 12
kim1212 2:5992db47f3c3 13 //sample program
kim1212 2:5992db47f3c3 14
kim1212 2:5992db47f3c3 15 #include "mbed.h"
kim1212 2:5992db47f3c3 16 #include "ubloxUBX.h"
kim1212 2:5992db47f3c3 17
kim1212 2:5992db47f3c3 18 GPS gps(PB_5,PB_4,PB_3,PB_6);
kim1212 2:5992db47f3c3 19 Serial pc(USBTX,USBRX);
kim1212 2:5992db47f3c3 20
kim1212 2:5992db47f3c3 21
kim1212 2:5992db47f3c3 22
kim1212 2:5992db47f3c3 23 obsvdData obsvd;
kim1212 2:5992db47f3c3 24 tim gt;
kim1212 2:5992db47f3c3 25
kim1212 2:5992db47f3c3 26
kim1212 2:5992db47f3c3 27 int main() {
kim1212 2:5992db47f3c3 28
kim1212 2:5992db47f3c3 29 while(1) {
kim1212 2:5992db47f3c3 30 while(gps.updateData()); //upload from ublox module
kim1212 2:5992db47f3c3 31 gps.chkData(&obsvd); //position and velocity data update
kim1212 2:5992db47f3c3 32 gps.chkTime(&gt); //time data update
kim1212 2:5992db47f3c3 33
kim1212 2:5992db47f3c3 34 pc.printf("%d,%d,%d,%d\r\n",obsvd.Lon,obsvd.Lat,gt.Year,gt.Month);
kim1212 2:5992db47f3c3 35 wait(0.1);
kim1212 2:5992db47f3c3 36 }
kim1212 2:5992db47f3c3 37 }
kim1212 2:5992db47f3c3 38
kim1212 2:5992db47f3c3 39
kim1212 2:5992db47f3c3 40
kim1212 2:5992db47f3c3 41 */
kim1212 2:5992db47f3c3 42
kim1212 0:956653b6d3ad 43 typedef union{
kim1212 0:956653b6d3ad 44 unsigned char Raw[TIMEUTC_LEN];
kim1212 0:956653b6d3ad 45 struct{
kim1212 0:956653b6d3ad 46 unsigned int iTOW;
kim1212 0:956653b6d3ad 47 unsigned int tAcc;
kim1212 0:956653b6d3ad 48 int nano;
kim1212 0:956653b6d3ad 49 unsigned short year;
kim1212 0:956653b6d3ad 50 unsigned char month;
kim1212 0:956653b6d3ad 51 unsigned char day;
kim1212 0:956653b6d3ad 52 unsigned char hour;
kim1212 0:956653b6d3ad 53 unsigned char min;
kim1212 0:956653b6d3ad 54 unsigned char sec;
kim1212 0:956653b6d3ad 55 unsigned char valid;
kim1212 0:956653b6d3ad 56 }Data;
kim1212 0:956653b6d3ad 57 } bufToTIMEUTC;
kim1212 0:956653b6d3ad 58
kim1212 0:956653b6d3ad 59 typedef union{
kim1212 0:956653b6d3ad 60 unsigned char Raw[POSLLH_LEN];
kim1212 0:956653b6d3ad 61 struct{
kim1212 0:956653b6d3ad 62 unsigned int iTOW;
kim1212 0:956653b6d3ad 63 int lon; //1e-7
kim1212 0:956653b6d3ad 64 int lat; //1e-7
kim1212 0:956653b6d3ad 65 int height;
kim1212 0:956653b6d3ad 66 int hMSL;
kim1212 0:956653b6d3ad 67 unsigned int hAcc;
kim1212 0:956653b6d3ad 68 unsigned int vAcc;
kim1212 0:956653b6d3ad 69 }Data;
kim1212 0:956653b6d3ad 70 } bufToPOSLLH;
kim1212 0:956653b6d3ad 71
kim1212 0:956653b6d3ad 72 typedef union{
kim1212 0:956653b6d3ad 73 unsigned char Raw[VELNED_LEN];
kim1212 0:956653b6d3ad 74
kim1212 0:956653b6d3ad 75 struct{
kim1212 0:956653b6d3ad 76 unsigned int iTOW;
kim1212 0:956653b6d3ad 77 int velN;
kim1212 0:956653b6d3ad 78 int velE;
kim1212 0:956653b6d3ad 79 int velD;
kim1212 0:956653b6d3ad 80 unsigned int speed;
kim1212 0:956653b6d3ad 81 unsigned int gspeed;
kim1212 0:956653b6d3ad 82 int heading;
kim1212 0:956653b6d3ad 83 unsigned int sAcc;
kim1212 0:956653b6d3ad 84 unsigned int cAcc;
kim1212 0:956653b6d3ad 85
kim1212 0:956653b6d3ad 86 }Data;
kim1212 0:956653b6d3ad 87
kim1212 0:956653b6d3ad 88 } bufToVELNED;
kim1212 0:956653b6d3ad 89
kim1212 0:956653b6d3ad 90
kim1212 0:956653b6d3ad 91
kim1212 0:956653b6d3ad 92 class GPS {
kim1212 0:956653b6d3ad 93
kim1212 0:956653b6d3ad 94 public:
kim1212 0:956653b6d3ad 95
kim1212 0:956653b6d3ad 96 GPS(PinName mosi,PinName miso,PinName sck,PinName _cs);
kim1212 0:956653b6d3ad 97
kim1212 0:956653b6d3ad 98 bool updateData();
kim1212 0:956653b6d3ad 99
kim1212 0:956653b6d3ad 100 void chkData(obsvdData* obs);
kim1212 0:956653b6d3ad 101
kim1212 0:956653b6d3ad 102 void chkTime(timData* t);
kim1212 0:956653b6d3ad 103
kim1212 0:956653b6d3ad 104
kim1212 0:956653b6d3ad 105
kim1212 0:956653b6d3ad 106 private:
kim1212 0:956653b6d3ad 107 SPI _gps;
kim1212 0:956653b6d3ad 108 DigitalOut cs;
kim1212 0:956653b6d3ad 109
kim1212 0:956653b6d3ad 110 bufToTIMEUTC timeData;
kim1212 0:956653b6d3ad 111 bufToPOSLLH posData;
kim1212 0:956653b6d3ad 112 bufToVELNED velData;
kim1212 0:956653b6d3ad 113 unsigned char buf0[50];
kim1212 0:956653b6d3ad 114 unsigned char buf1[50];
kim1212 0:956653b6d3ad 115 unsigned char buf2[50];
kim1212 0:956653b6d3ad 116
kim1212 0:956653b6d3ad 117 };
kim1212 0:956653b6d3ad 118
kim1212 0:956653b6d3ad 119
kim1212 0:956653b6d3ad 120
kim1212 0:956653b6d3ad 121
kim1212 0:956653b6d3ad 122 #endif