U-blox M8N GPS NMEA 데이터 수신하기

2019. 9. 27. 00:22임베디드/32F429IDISCOVERY

GPS 모듈은 폭넓게 사용한다. 가장 중요한 역할은 현재 지구에서의 자신의 경도, 위도 값을 추출해서 위치를 아는 것이다. GPS에 사용하려는 칩은 u-blox에서 제작한 M8N 칩이다. GPS 모듈이지만 정확히는 GNSS 모듈이다. GNSS 모듈은 미국의 GPS뿐만 아니라 러시아, 유럽, 중국의 위성에서도 데이터를 수신하기도 한다.

 

 

지원하는 통신 인터페이스는 UART, USB, SPI, I2C를 지원한다. 마이크로컨트롤러로 수신하는 인터페이스는 UART를 사용하려고 한다

 

 

출력되는 UART 정보는 다음과 같다. 중요한 점은 NMEA와 UBX 프로토콜을 지원하는 NMEA로 출력을 하기 때문에 UBX로 보고싶다면 따로 변환을 해야만 한다. 그리고 다음 NMEA는 GGA, GLL, GSA, GSV, RMC, VTG, TXT의 글자로 메세지를 출력한다

 

 

주행기록에 따른 속도도 출력하는 것을 알 수 있다

 

 

GPS 데이터를 보다 시각적으로 눈에 띄게 하기 위해서, ublox사에서 제공하는 u-center 프로그램을 다운로드 할 것이다

 

 

UART를 CubeIDE에서 설정할 수 있다. 

[출처] https://noel-embedded.tistory.com/1032

 

 

 

 

 

자주 사용되는 정보는

GPGGA (Global Positioning System Fix Data) : 시간, 위도, 경도, 고도, 위성개수 등 정보

GPGSV (GPS Satellites in View) : GPS 모듈이 수신할 수 있는 모든 위성

GNRMC (Recommended Minimum Data) : 시간, 신뢰성, 위도, 경도 속도 등 최소한의 데이터

 

ex) GNRMC 113842.00, A, 3631.22435, N, 12710.38136, E,0,176,,250919,,,A*6A

113842.00 11시38분42초

A 신뢰할 수 있음

3631.22435 36도31.22435분=36.520405

N 북위

12710.38136 127도10.38136분=127.173022

E 동경

0.176 진행방향속도

250919 19년9월25일

6A 체크섬

[참고] https://ko.wikipedia.org/wiki/NMEA

 

간혹 도/분/초로 표시된 좌표를 경도나 위도로 변환해야 하는 경우가 있다.

이러한 경우에는 아래의 과정을 거쳐서 값을 얻을 수 있다.

① 분( ′ )을 60으로 나누어, 그 결과를 합산

② 초( ″ )를 3600으로 나누어, 그 결과를 합산

 

예시)

130°32’50” 의 경우 130 + 32/60 + 50/3600=130.5472222

39°55’ 의 경우 39+55/60 = 39.91666667

[출처] http://leeyonggeun.com/archives/28482