Mbed (LPC1768)로 GPS 데이터 얻기

9431 단어 mbedGPS

소개



LPC1768을 사용하여 GPS를 얻는 방법의 비망록.

사용하는 것



Mbed LPC1768
htps //w w. 슈 tch-s 시엔세. 코 m/가타 g/250/
GPS AE-GPS
htp // 아키즈키덴시. 코 m/두 w응아 d/ds/아키즈키/아에- GPS_마누아 l_아. pdf

절차



➀ 배선하기





이번에는 p9, p10의 핀을 사용했지만, LPC1768은 Serial 핀을 3세트 가지고 있으므로 p13, p14나 p28, p27이어도 좋다.

②코드 작성



GPSscript.cpp
#include "mbed.h"
#include "math.h"

#define TIME_GAP      6.0   

Serial           gps(p9,p10);   //ピンを指定

Timer  timer_open;
Timer  timer_log;
Ticker tic_open;
Ticker tic_log;

float   _DMS2DEG(float raw_data);
int     _input(char cha);

float Time;
char  gps_data[256];
int   cnt_gps;
int   Cnt_GPS=0;

int main(){
    while(1){     
        if(gps.readable()){
            gps_data[cnt_gps] = gps.getc();
            if(gps_data[cnt_gps] == '$' || cnt_gps ==256){
                cnt_gps = 0;
                memset(gps_data,'\0',256);
            }else if(gps_data[cnt_gps] == '\r'){
                float world_time, lon_east, lat_north;
                int rlock, sat_num;
                char lat,lon;
                if(sscanf(gps_data,"GPGGA,%f,%f,%c,%f,%c,%d,%d",&world_time,&lat_north,&lat,&lon_east,&lon,&rlock,&sat_num)>=1){
                    if(rlock==1){
                        lat_north = _DMS2DEG(lat_north);
                        lon_east = _DMS2DEG(lon_east);
                        printf("%s\r\n",gps_data);
                        printf("Lat:%f,Lon:%f\r\ntime:%f,sat_num:%d\r\n",lat_north,lon_east,world_time,sat_num);
                    }else{
                        printf("%s\r\n",gps_data);
                    }
                }
            }else{
                cnt_gps++;
            }

        }
        if(timer_log.read()>=30.0*60.0) timer_log.reset();
    }
}

float _DMS2DEG(float raw_data){
    int d=(int)(raw_data/100);
    float m=(raw_data-(float)d*100);
    return (float)d+m/60;
}

참고 h tp // w w. 히라미네. 코 m/phy 밖에 l 코 m 쁘띠 g/게네라 l/gps_ 응메아후아 r마 t. HTML? 이 f 라메 = t

③Tera Term에서 표시





전파 힘내라....

좋은 웹페이지 즐겨찾기