GPS NMEA. (GPRMC, GPGSV, GPGGA) 전자공학, 컴퓨터, IT

$ELEXTECH, Inc  G1800s
$HW Version 1.6
$SW Version 231.000.100
$Startup    4
$TOW: 0
$WK:  1192
$POS: 6378137  0        0
$Baud rate: 9600  System clock: 24.553MHz



$GPGGA,215235.670,3735.0064,N,12701.6746,E,1,03,50.0,0.0,M,19.6,M,0.0,0000*4F
$GPGSA,A,2,10,08,02,,,,,,,,,,50.0,50.0,20.0*0A
$GPGSV,3,1,10,26,78,314,00,29,71,017,00,24,48,156,00,10,44,079,46*79
$GPGSV,3,2,10,21,39,309,32,08,21,046,36,09,16,187,00,02,14,151,35*73
$GPGSV,3,3,10,06,14,296,00,15,06,319,00*7F
$GPRMC,215235.670,A,3735.0064,N,12701.6746,E,0.000000,,060905,,*12
$GPGGA,215236.670,3735.0066,N,12701.6748,E,1,03,50.0,0.0,M,19.6,M,0.0,0000*40
$GPGSA,A,2,10,08,02,,,,,,,,,,50.0,50.0,20.0*0A

..
..
..
$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48
$GPGSA,A,2,19,25,15,,,,,,,,,,21.5,7.9,20.0*32
$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77
$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71
$GPGSV,3,3,10,21,18,051,,27,12,315,*77
$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A




1. NMEA Code

GPS에서는 신호가 대략 위와 같은 형식으로 오는데 이걸 NMEA 라고 한다.

NMEA는 The National Marine Elecrtronics Association이라고 하는데,
원래 이 신호가 해양에서의 배의 정확한 위치 확인에 가장 먼저 이용되었나 보다.


그냥 위와 같이 보면 복잡한데,
데이터의 형식은
$로 시작해서 GP로시작하는 NMEA코드이름, 그리고 데이터와 맨 마지막에 *??의
Check Sum그리고 혹은
로 끝난다.
(,
은 개행(줄바꿈)을 뜻한다)

-- 2008-12-09 --
NMEA 0183의 Sentence는 $로 시작해서 *로 끝나며,
그 사이의 모든 글을 XOR 연산하여 *뒤에 체크섬으로 나타낸다.
또한 Sentece뒤에는 <CR><LF>를 붙여서 한 줄로 나타낸다.


Elextech에서 만든 G1800sLP+라는 GPS 모듈에서 나온 GPS정보이며,
UART로 데이터를 전송하고, baud rate는 9600bps (bit per second)라는 것을 알 수 있다.


이 GPS는 총 네가지 종류의 NMEA코드를 출력하는데
$GPGGA,  $GPGSA, $GPGSV, $GPRMC이다.

그리고 뒤의 데이터는 모두 comma ( , )로 구분되어 있다.


2. GPGGA
(Global Positioning System Fix Data)


$GPGGA는 Fix Data라고 하는데, 여기에서 주로 알 수 있는 것은
시간, 위도, 경도, 고도 등이다.





               시간           위도            경도        사용된위성수
$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48
                                                            계산종류    고도             


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

114455.532는 시간으로서
Zulu time (그리니치 표준시) 기준으로 11시 44분 55.532초를 뜻한다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

3735.0079는 위도로서
37도 35.0079분을 뜻한다. 60분이 1도니까, 대략 37.5도가 된다. -> 서울
뒤의 N은 북위라는 것을 뜻한다. S라면 남위가 되는 것.
(37˚ 35.0079' = 37.583465˚ = 37˚ 35' 0.474")-- 2009-03-03 --


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

12701.6446은 경도로서
127도 1.6446분을 뜻한다. 그러니까, 대략 127도가 된다 -> 서울
뒤에 E는 동경을 뜻하므로, W가 되면 서경이 된다.
(127˚ 1.6446' = 127.02741˚ =  127˚ 1' 38.676")-- 2009-03-03 --


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

1은 fix종류를 뜻하는데

GPS는 미국에서 써아올린 GPS 위성에서 동시에 쏘아준 신호의 시간차를 이용하여
거리를 계산하는 방법을 쓴다(삼각측량, 불확정성의 원리)
지구의 어디에 있든지 최소한 3개 이상의 GPS신호를 받을 수 있다.

그런데, 이 경우에 상업용 GPS는 오차가 15m정도 생기는데, 이를 보정하는게
dgps라는 것이다. 지상의 특정하고 정확한 곳에 GPS기지국을 설치하고
여기에서도 신호를 쏘아보내는 것이다.

그러면 오차가 5m이내로 줄어들게 된다.

0 이면 invalid한 데이터(못쓰는 데이터) 라는 의미
1 이면 gps 위성신호만으로 계산
2 라면 dgps도 사용하여 계산 등등이다.

-- 2008-12-09 --
DGPS 기지국을 지상의 특정한 곳에 설치할 수도 있지만,
따로 GPS기기 회사에서 위성을 발사하여 보정하는 경우도 있다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

계산에 사용한 위성의 갯수인데,
최소한 3개 이상의 신호를 받아야 한다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

horizontal dillusion of position이래는데.
무슨 말인지 ~_~)

-- 2009-01-13 --
위성과의 노이즈에 관련된 자료 라고 하네요

-- 2010-06-23 --
Horizontal dillusion of precision으로 2차원적 오차 결정을 뜻한다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

고도 정보인데
M법으로 환산했을때 48.8M라는 것이다. (해수면 기준)

$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

지구를 모델링할때에, 구형으로 모델링할 수도 있고
타원체로 모델링할 수 도 있다.

타원체로 모델링할 경우에, 지표면상에서 정확한 위치를 구하기 위해서
(위도 경도 고도를 x,y,z로 고친다는 뜻)
구형과 타원체가 얼마나 차이가 나는지, 지표면에서 얼마나 높게 있는지
그 정보를 알 필요가 있다 이것은, 위도, 경도에 따라 다른데, 이 높이이다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

dgps를 사용했을 경우 마지막으로 update한 시간과, dgps 기지국의 ID이다.


$GPGGA,114455.532,3735.0079,N,12701.6446,E,1,03,7.9,48.8,M,19.6,M,0.0,0000*48

check sum이다.



3. GPGSA

사용을 안한다.


4. GPGSV

GPS Satellites in View
계산에 사용한 위성이 아니라, 현재 위치에서 보이는 모든 위성정보이다.


$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77
$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71
$GPGSV,3,3,10,21,18,051,,27,12,315,*77

줄이 몇 줄인지 나타낸다.
GPGSV가 총 3줄이 나온다./* 2009-03-03 --


$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77
$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71
$GPGSV,3,3,10,21,18,051,,27,12,315,*77

몇번째 줄인지 나타낸다.
총 3줄의 GPGSV 중 1번째 줄 이다/* 2009-03-03 --


$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77
$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71
$GPGSV,3,3,10,21,18,051,,27,12,315,*77

보이는 위성의 갯수를 나타낸다.
10개의 위성이 보이고 있고 한줄당 4개의 위성정보가 출력된다/* 2009-03-03 --


$GPGSV,3,1,10,03,86,244,00,19,51,218,38,16,51,057,00,07,40,048,00*77
$GPGSV,3,2,10,13,34,279,00,23,33,236,00,15,29,076,40,25,25,143,38*71
$GPGSV,3,3,10,21,18,051,,27,12,315,*77

03,86,244,00

3번 위성이고,
현재 자신의 위치에서 86도 (degree) elevation
244도 (degree)의 Azimuth
그리고 신호대잡음비 (SNR)은 0 이다.


그렇게 위성 3개가 적히고
*77은 checksum이다.


5. GPRMC
Recommended Minimmum data라고 하는데
추천되는 가장 최소한의 데이터 들이다.

$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A



$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A

역시 시간을 의미한다. zulutime 기준으로 11시 44분 55.532초


$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A

지금 현재 출력되는 값이
쓸 수 있는 값인지 (valid) 아니면 쓰면 안되는 이상한 값인지를 나타내는데
A라면 valid하고 V라면 valid하지 않다.


$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A


뒤의 위도와 경도는 GPGGA와 동일하다.


$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A


Speed over ground라고 하는데
knots 단위의 속도이다.

비행기에서는 보통 KIAS라는 속도단위를 쓰고,
배에서는 knots라는 속도단위를 사용한다.
KIAS는 대략 km/h 단위의 1/3이라고 보면된다.

만약 900km/h라면 300KIAS정도 된다.
KIAS는 knots indicator air speed의 약자이다.

-- 2007-12-19 --
Knot단위계와 km/h단위계의 변환은 대략 1.8을 곱하면 된다.



$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A

Track Angle in degree true라고 하는데 잘 모르겠다. ~_~)

-- 2007-12-19 --
진행방향을 정북으로부터 0도부터 359도까지로 표현한 것이다.
121.61 이니까. 동남쪽으로 이동하고 있다.



$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A

Date이다.
11th, July, 2006. 2006년 7월 11일을 뜻한다.


$GPRMC,114455.532,A,3735.0079,N,12701.6446,E,0.000000,121.61,110706,,*0A


안나오는데 (이 장치가 지원을 안해서..)
원래 북쪽을 0으로 한, magnetic variation,
즉 나침반이다.


*0A

체크섬이다.






- 참조자료 - reference

http://www.nmea.org/ - National Marine Electronics Association
http://www.gpsinformation.org/dale/nmea.htm - GPS Information
http://home.pacific.net.au/~gnb/gps/nmea.html - GPS NMEA reference


추가 (2012-02-14)
http://blog.naver.com/dgnss?Redirect=Log&logNo=150034978262
GPS 거리 해석하기




GPS 해석, GPS 패킷, GPS 분석, NMEA, GPRMC, GPGSV, GPGGA, GPS 데이터, GPS 데이타, GPS 로그


핑백

덧글

  • 리토 2006/07/12 10:05 # 답글

    외, 외계어(굳었다)
  • dekarno 2006/07/12 12:23 # 삭제 답글

    설명 감사감사^^
  • 에로리 2006/07/12 18:25 # 삭제 답글

    에린님이 쓰신 글은 언제나 이해하기 쉬워서 좋아요.
    이렇게 쉬운 거였구나.

    (...)
  • 에린 2006/07/12 22:56 # 답글

    릿호쨩 //

    한국말인걸..!!!
    원래 영어자료를 번역한 거인걸요..

    dekarno //

    위성 뽑아내는거까지 해둘게
    자동비행알고리즘은
    새로 짜야 하니까,
    그 운동 방정식은 그... 분이 짜 주신다고 했고.



    에로링 //

    .... 죄송합니다.
  • ddosori 2007/07/13 10:51 # 삭제 답글

    좋은자료 감사합니다~담아갈께요~^^
  • 에린 2007/07/13 14:44 # 답글


    넹 ^ㅡ^
  • 수현 2007/08/14 14:53 # 답글

    저도 담아갈께요+_+잘읽었습니다.
  • 오군 2007/09/18 14:42 # 삭제 답글

    좋은 자료 감사합니다.
  • 에린 2007/10/04 11:51 # 답글

    //ㅅ//)
  • Thank you 2007/11/01 21:21 # 삭제 답글

    좋은정보 감사합니다^^
  • 불곰 2007/11/10 11:31 # 삭제 답글

    좋은자료 감사합니다
  • 에린 2007/11/14 03:01 # 답글

    //ㅅ//)
  • 마린보이 2007/11/16 15:22 # 삭제 답글

    좋은자료를 올려주셔서 감사합니다.
  • 에린 2007/12/19 03:23 # 답글

    별 말씀을요 /ㅅ/)
  • 창민 2008/01/25 15:06 # 삭제 답글

    좋은 자료 감사합니다.
  • 에린 2008/01/27 01:35 # 답글

    들어와주셔서 감사합니다.
  • bruce 2008/01/30 11:53 # 답글

    좋은 자료 감사합니다. 퍼가요^^
  • 에린 2008/01/30 12:58 # 답글

    //ㅅ// ㅎㅎ 네에
  • Hy054nz 2008/02/04 21:31 # 삭제 답글

    좋은정보 감사드립니다. 퍼갈께요~
  • 에린 2008/02/05 20:19 # 답글

    네에 ^^
  • 바다사랑 2008/09/03 16:07 # 삭제 답글

    검색하다 찾아들어왔습니다. 자세한 설명 잘 보고 이해 했습니다. 감사드려요
  • 에린 2008/09/04 16:15 # 답글

    :)
  • 이승수 2008/09/24 21:44 # 삭제 답글

    좋은 정보 감사합니다. 정말 많은것을 배우고갑니다.
    이해가 정말 잘되게 써놓으셨네요.
    스크랩 해 갑니다. ^^
  • 최상규 2008/10/22 14:02 # 삭제 답글

    좋은 자료 감사드립니다.
  • 드록바 2009/07/02 15:04 # 삭제 답글

    덕분에 이해하는데 많은 도움이 되었습니다.
    좋은 자료 진심으로 감사합니다.
  • 2009/11/10 14:59 # 삭제 답글 비공개

    비공개 덧글입니다.
  • mydeepblue 2009/11/26 15:26 # 삭제 답글

    NMEA에 관한 자료 찾다가 우연히 들렀습니다. 자세한 설명이 많은 도움이 되었습니다.
    감사감사~
  • 히나Love 2011/03/05 02:53 # 삭제 답글

    예전에 pda용으로 사용하던 GPS를 어떻게 사용할까 하다가
    GPS를 이용한 시계를 만들어보자는 생각이 갑자기 들어서 자료 찾다가 찾아오게 되었습니다.
    정말 좋은 정보 감사합니다..
  • 소남자 2011/07/11 13:33 # 삭제 답글

  • 박충희 2012/08/23 18:50 # 삭제 답글

    군더더기가 없는 설명이시군요.. 한 글이 계속 업데이트 되는 것도 보기가 좋습니다~!
    잘보고 갑니다^^
  • 아햏ㅇㅋ 2013/01/03 19:51 # 삭제 답글

    잘보고가요.. 종종 둘러볼께요.. 좋은자료 감사합니다.
  • kskim 2016/12/15 19:59 # 삭제 답글

    정말 감사합니다.
    좋은 정보 너무 감사합니다.
댓글 입력 영역