티스토리 뷰
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 모듈을 사용하였다.
'전자 > Raspberry' 카테고리의 다른 글
mqtt 프로토콜을 이용한 통신 (0) | 2017.05.31 |
---|---|
i2c를 이용한 초음파센서 구동 (0) | 2017.05.16 |
라즈베리에서의 타이머 사용 (0) | 2017.05.15 |
소형 로봇을 위한 라즈베리파이 제로 (0) | 2017.05.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 라즈베리파이
- NMEA
- pi
- 모듈
- ti
- 무선
- C++
- 개발
- 라즈베리
- 소나 센서
- vectornav
- 파이
- 영화
- dsp
- WiFi
- GPS
- G2
- RaspberryPi
- Raspberry Pi
- 카메라
- 복구
- 비전
- Raspberry
- 라즈베리 파이
- 알레한드로
- opencv
- 벽돌복구
- 통신
- vn-200
- RTSP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함