티스토리 뷰

전자/Raspberry

라즈베리에서의 GPS 이용

geniuskpj 2017. 5. 23. 12:33

GPS를 이용해본 사람이라면 다들 알고 있겠지만


대다수의 GPS가 UART를 이용하고 NMEA라는 통신 프로토콜을 사용한다.


대부분의 GPS 수신기가 같은 통신 프로토콜을 사용하기때문에 GPS 프로그램은 한번 짜두면 두고두고 쓸 수 있다.


사실 가장 쉬운 방법은  gpgga로 시작하는 문자열을 따서 ','를 기준자로 자른다음에 위도,경도, 고도를 뽑아내면 된다.


GPGGA Global Positioning System Fix Data라고 한다. 여기에서 주로 알 수 있는 것은 시간, 위도, 경도, 고도 등이다.


다음은 위키에서 발췌한 내용인데 이를 참고해서 parsing 하면 쉽게 구할 수 있다.



하지만 GPS의 경우 대개 켜고 끌 수 없기때문에 UART가 열려있는 상태일때 수신데이터를 제때 버리거나


처리해줘야 한다. 해당 처리에 자신이 없는 경우엔 남이 짜 놓은 코드를 적극 활용하도록 하자.


https://github.com/wdalmut/libgps


#include <stdio.h>
#include <stdlib.h>
#include <gps.h>

int main(void) {
    // Open
    gps_init();

    loc_t data;

    while (1) {
        gps_location(&data);

        printf("%lf %lf\n", data.latitude, data.longitude);
    }

    return EXIT_SUCCESS;
}

위 라이브러리를 사용하면 이렇게 쉽게 데이터를 받아올 수 있다.


P.S. 왠지 모르지만 내 라즈베리의 경우엔 자체 UART로 수신할 시 자꾸 뻗어버려  USB to UART 모듈을 사용하였다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함