앞에서 알아 본 TIMEUTC와 POSLLH 메시지를 분석하여 현재 시간과 위치를 출력해서 제대로 동작되는 프로그램을 만들어 볼 것이다. 위에 보이는 그림처럼 일정한 주기로 보내주는 시간과 위치 정보를 분석하여 콘솔화면에 출력해 보는 것이다. void setup() { uart0.init(); uart1.init(); stdout = std_inout; _delay_ms(500); printf("\x1B[2J\x1B[H GPS Test Program\n"); send_cfg_prt(); _delay_ms(100); gps.cfg_msg_utc(); _delay_ms(100); gps.cfg_msg_loc(); sei(); } 두개의 UART를 초기화 한다음 UART0로 디버깅 메시지를 출력해주기 위해서 ..
이전의 두개의 글에서 현재 시간을 가지고 오거나 현재 위치 정보를 가지고 오기 위해서는 매번 필요한 키를 입력해 주었다. GPS 모듈에 처음 전원이 들어왔을때 NMEA 메시지를 주기적으로 보내주는 것처럼 UBX 메시지도 주기적으로 보내주면 좋을것 같다. 이를 위해서 CFG-MSG 패킷을 이용하면 된다. CFG-MSG 패킷에 원하는 메시지에 해당하는 class ID와 message ID를 넣어주면 된다. void loop() { uint8_t ch; if (uart0.getchar(ch)) { if (ch == 'p') gps.cfg_prt(); if (ch == 'm') gps.cfg_msg(); if (ch == 'u') gps.nav_utc(); if (ch == 'l') gps.nav_loc(); ..
현재 위치 정보를 가지고 오기 위한 UBX 메시지는 NAV-POSLLH 이다 void loop() { uint8_t ch; if (uart0.getchar(ch)) { if (ch == 'p') gps.cfg_prt(); if (ch == 'u') gps.nav_utc(); if (ch == 'l') gps.nav_loc(); } if (uart1.getchar(ch)) { uart0.puthex(ch); } } void Gps::nav_loc() { make_header(CLASS_NAV, NAV_POSLLH, 0); chksum(0); uart1.send_data(gps_data, 8); } 'l' 키를 누르면 NAV-POSLLH request 메시지를 내 보낸다. 오렌지 색으로 보이는 영역이 경도 ..