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 のみを出力して下さい
ubloxUBX.h@2:5992db47f3c3, 2018-02-13 (annotated)
- Committer:
- kim1212
- Date:
- Tue Feb 13 04:52:01 2018 +0000
- Revision:
- 2:5992db47f3c3
- Parent:
- 1:2457089ca195
???
Who changed what in which revision?
User | Revision | Line number | New 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(>); //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 |