Mbed (LPC1768)로 GPS 데이터 얻기
소개
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에서 표시
전파 힘내라....
Reference
이 문제에 관하여(Mbed (LPC1768)로 GPS 데이터 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/onenechan/items/eea19ee39d12f13901e7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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에서 표시
전파 힘내라....
Reference
이 문제에 관하여(Mbed (LPC1768)로 GPS 데이터 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/onenechan/items/eea19ee39d12f13901e7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#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;
}
전파 힘내라....
Reference
이 문제에 관하여(Mbed (LPC1768)로 GPS 데이터 얻기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/onenechan/items/eea19ee39d12f13901e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)