본문으로 바로가기

아두이노 GPS모듈 NEO 6M/7M 사용하기


애드라이프의 아두이노 모든 포스팅 리스트를 보고 싶으신 분은 공지 읽어주세요.


참고로 중급편 부터는 응용편이 없습니다. 

왜냐하면 고급편에서 중급에 사용했던 부품의 응용편을 다룰 예정이기 때문이죠!!



안녕하세요. 애드라이프 입니다.

이번에는 GPS모듈을 가지고 왔습니다.

GPS라고 하면 핸드폰에도 있고 영화에도 많이 나오는 소재이기때문에

모르는 사람이 없을것 같은데요. 이번에는 직접 GPS모듈을 사용하법을 포스팅 하도록 하겠습니다.



이번에 제가 다뤄볼 GPS모듈은 Waveshare의 NEO 6M/7M GPS입니다.

실제 장착된 GPS IC는 7M Series입니다. ▼

아두이노 GPS모듈 NEO 6M/7M 사용하기아두이노 GPS모듈 NEO 6M/7M 사용하기

위 모듈 시리즈의 더 자세한 정보를 원하시는 분들은 아래 링크를 참고해 주세요.

UART-GPS-NEO 자세히 알아보기(링크)

링크에는 다른 시리즈의 정보도 나와있으니 찾아보시면 좋을 것 같습니다.


회로에 따로 추가없이 아두이노와 GPS모듈만 연결하면 되는 간단한 회로 구성이기때문에

바로 회로를 살펴보도록 하겠습니다.

아두이노 GPS모듈 NEO 6M/7M 사용하기

실제 연결은 5pin중 4개pin만 하면됩니다.


아두이노 우노    ============       GPS모듈

+5V     ===================    VCC

GND     ===================    GND

D2     ===================    TX

D3     ===================    RX




프로그램도 매우 간단하기 때문에 사전 설명 없이 바로 살펴보도록 하겠습니다.▼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <SoftwareSerial.h>     //라이브러리 추가필요(기본 라이브러리)
 
SoftwareSerial gpsSerial(2,3);  //소프트웨어로 구현된 시리얼 통신포트 선정 Arduino : RX 2 TX 3
 
void setup() {
  Serial.begin(9600);               //시리얼 통신속도 9600
  Serial.println("Start GPS... ");
  gpsSerial.begin(9600);            //gps통신 속도 9600
}
 
void loop() {
  if(gpsSerial.available())         //통신데이터가 수신되면
  {
    Serial.write(gpsSerial.read()); //수신된 데이터를 출력합니다.
  }
}
cs

프로그램의 전체적인 흐름은 주석을 참고해주시기 바랍니다.


알아야 할 점이 한가지 있습니다. 

프로그램을 보면 아시겠지만 GPS모듈이 반응을 하지 않으면 Start GPS...라는 문구만 나오고

아무런 문구도 나오지 않습니다. 절대 GPS가 고장난게 아닙니다.

실제로 모듈이 고장일 수도 있겠지만 실내에서 TEST할 경우 GPS모듈이 반응을 하지 않는 경우가 많습니다.

밖에서 TEST하는 것을 권장합니다.

아니면 저 처럼 베란다로 나가세요! 요즘 날씨가 추우니까요!! ^^;;

아두이노 GPS모듈 NEO 6M/7M 사용 야회


우선 중요한 것은 밖으로 나가야 반응도 잘하고 데이터도 빠짐없이 들어온다는 사실이죠.

실내에서 GPS모듈이 반응을 하더라도 데이터가 대부분 손실되어 들어오기 때문에 값을 해독 할 수가 없습니다.

야외에서 TEST한다는 것을 믿고 프로그램을 업로드한 결과를 확인 해보록 하겠습니다.▼

위 데이터에서 GPGLL부분이나 GPGGA부분을 보면 NE앞의 값들이 위도 경도 값을 나타냅니다.

원래는 파일의 위치부분을 모자이크 처리를 하여 했는데 마침 얻어진 데이터가 오류로 다른 위치를 나타내고 있더군요.

다시 돌아오긴 했지만 모자이크 없이 데이터의 예시를 들기 좋을 것 같아서 남겨두었죠.!!



그럼 시리얼 모니터에서 나오는 저 데이터 들은 대체 뭘 나타낼까요?

NMEA(National Marine Electronics Association)라고하는 GPS규약에 의한 데이터입니다.

그렇다면 NMEA는 뭘까요!!?


NMEA자세히 알아보기(링크)


링크를 따라가보면 시리얼 모니터 데이터의 앞부분 GPGLL,GPGGA 가 어떤 의미를 나타내는지 

설명되어져 있습니다. 그것을 표로 정리되어있는 부분만 발췌해봤습니다. ▼


NMEA 2.0

NameGarminMagellanLowranceSiRFNotes:
GPAPBNYYNAuto Pilot B
GPBODYNNNbearing, origin to destination - earlier G-12's do not transmit this
GPGGAYYYYfix data
GPGLLYYYYLat/Lon data - earlier G-12's do not transmit this
GPGSAYYYYoverall satellite reception data, missing on some Garmin models
GPGSVYYYYdetailed satellite data, missing on some Garmin models
GPRMBYYYNminimum recommended data when following a route
GPRMCYYYYminimum recommended data
GPRTEYUUNroute data, only when there is an active route. (this is sometimes bidirectional)
GPWPLYYUNwaypoint data, only when there is an active route (this is sometimes bidirectional)

이제 우리가 얻은 데이터로 위치를 알아보는 법을 설명하겠습니다.

우선 구글맵으로 이동해주세요.

구글맵으로 이동하기

구글맵으로가서 검색창에 얻은 정보를 그대로 붙여 넣으면 찾지못합니다.!!


예를들어보면 

3509.93645,N,12648.20379,E 이런식으로 데이터가 얻어지면

35.0993645,126.4820379 이렇게 데이터를 검색해주셔야합니다.

검색한 결과를 확인해보겠습니다. ▼

전라남도 함평군 함편읍 장년리 549-9라는 곳이 검색되네요.

한번도 가본적은 없지만 설명하기에는 최상의 자료네요.


지금까지 아두이노(Arduino) 중급 GPS모듈 NEO 6M/7M에 대한 포스팅이였습니다.

계속해서 도움되는 포스팅으로 찾아뵙겠습니다.

by 애드라이프