sample for GPS (used by nucleo_STM-F303K8)

Dependencies:   mbed

Fork of Nucleo_GPS by Kosuke Furumoto

Committer:
mikawataru
Date:
Mon Nov 21 04:17:17 2016 +0000
Revision:
2:59b33f158822
Parent:
1:91f4ae33e6ac
Child:
3:03e5370e74a3
???????????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mikawataru 1:91f4ae33e6ac 1 /*
mikawataru 1:91f4ae33e6ac 2 説明
mikawataru 1:91f4ae33e6ac 3 Nucleo-F303K8とGPSモジュールを使ったサンプルプログラム
mikawataru 1:91f4ae33e6ac 4
mikawataru 1:91f4ae33e6ac 5 参考
mikawataru 1:91f4ae33e6ac 6 http://www.hiramine.com/physicalcomputing/general/gps_nmeaformat.html
mikawataru 1:91f4ae33e6ac 7
mikawataru 1:91f4ae33e6ac 8
mikawataru 1:91f4ae33e6ac 9 以下ピン配置
mikawataru 1:91f4ae33e6ac 10 Nucleo GPSモジュール
mikawataru 1:91f4ae33e6ac 11 GND-----GND-----------0V
mikawataru 2:59b33f158822 12 5V------VIN
mikawataru 1:91f4ae33e6ac 13 D0------TX
mikawataru 1:91f4ae33e6ac 14 D1------RX
mikawataru 1:91f4ae33e6ac 15 */
Koob 0:8889ed33c550 16 #include "mbed.h"
mikawataru 1:91f4ae33e6ac 17
mikawataru 2:59b33f158822 18 DigitalOut myled(LED1);
mikawataru 2:59b33f158822 19 Serial gps(D1, D0); // tx, rx
mikawataru 1:91f4ae33e6ac 20 Serial pc(PA_2, PA_3); // tx, rx
mikawataru 2:59b33f158822 21 int i,rlock,mode;
mikawataru 2:59b33f158822 22 char gps_data[256],gps2_data[256];
mikawataru 2:59b33f158822 23 char ns,ew;
mikawataru 2:59b33f158822 24 float w_time,hokui,tokei;
mikawataru 2:59b33f158822 25 float g_hokui,g_tokei;
mikawataru 2:59b33f158822 26 float d_hokui,m_hokui,d_tokei,m_tokei;
mikawataru 2:59b33f158822 27 unsigned char c;
Koob 0:8889ed33c550 28
mikawataru 2:59b33f158822 29 void getGPS() {
mikawataru 2:59b33f158822 30 c = gps.getc();
mikawataru 2:59b33f158822 31 if( c=='$' || i == 256){
mikawataru 2:59b33f158822 32 mode = 0;
mikawataru 2:59b33f158822 33 i = 0;
mikawataru 2:59b33f158822 34 }
mikawataru 2:59b33f158822 35 if(mode==0){
mikawataru 2:59b33f158822 36 if((gps_data[i]=c) != '\r'){
mikawataru 2:59b33f158822 37 i++;
mikawataru 2:59b33f158822 38 }else{
Koob 0:8889ed33c550 39 gps_data[i]='\0';
mikawataru 2:59b33f158822 40
mikawataru 2:59b33f158822 41 if( sscanf(gps_data, "$GPGGA,%f,%f,%c,%f,%c,%d",&w_time,&hokui,&ns,&tokei,&ew,&rlock) >= 1){
Koob 0:8889ed33c550 42 if(rlock==1){
mikawataru 1:91f4ae33e6ac 43 pc.printf("Status:Lock(%d)\n\r",rlock);
mikawataru 2:59b33f158822 44 //logitude
Koob 0:8889ed33c550 45 d_tokei= int(tokei/100);
Koob 0:8889ed33c550 46 m_tokei= (tokei-d_tokei*100)/60;
mikawataru 1:91f4ae33e6ac 47 g_tokei= d_tokei+m_tokei;
mikawataru 2:59b33f158822 48 //Latitude
Koob 0:8889ed33c550 49 d_hokui=int(hokui/100);
Koob 0:8889ed33c550 50 m_hokui=(hokui-d_hokui*100)/60;
Koob 0:8889ed33c550 51 g_hokui=d_hokui+m_hokui;
mikawataru 2:59b33f158822 52 pc.printf("Lon:%.6f, Lat:%.6f\n\r",g_tokei, g_hokui);
Koob 0:8889ed33c550 53 }
Koob 0:8889ed33c550 54 else{
Koob 0:8889ed33c550 55 pc.printf("\n\rStatus:unLock(%d)\n\r",rlock);
mikawataru 2:59b33f158822 56 pc.printf("%s",gps_data);
Koob 0:8889ed33c550 57 }
mikawataru 2:59b33f158822 58 sprintf(gps_data, "");
Koob 0:8889ed33c550 59 }//if
mikawataru 2:59b33f158822 60 }
mikawataru 2:59b33f158822 61 }
mikawataru 2:59b33f158822 62 }
mikawataru 2:59b33f158822 63
mikawataru 2:59b33f158822 64 int main(){
mikawataru 2:59b33f158822 65 pc.printf("*** GPS GT-720F ***");
mikawataru 2:59b33f158822 66 gps.baud(9600);
mikawataru 2:59b33f158822 67 pc.baud(115200);
mikawataru 2:59b33f158822 68 gps.attach(getGPS,Serial::RxIrq);
mikawataru 2:59b33f158822 69 while(1) {}
mikawataru 2:59b33f158822 70 }