본문 바로가기
임베디드 쌩초보 공부/아두이노

GPS 모듈 NEO-6M 간단히.그리고 상세하게 알아보기

by 존버매니아.임베디드 개발자 2021. 12. 11.
반응형

초간단 요약
1)VCC.Gnd 연결하고 Mcu의 Uart Rx 핀에 연결
(Default Badurate은 9600 bps)
2)모듈이  위성으로 부터 받은 gps 정보들을 uart로 보내줌.
3)mcu는 해당정보 rx로 받아서 적절하게 파싱해서 사용.
4)gps 신호가 위성으로부터 정상적으로 수신되면 빨긴불이 깜빡깜빡한다.
5) 실내에선 잘 안된다. 경우에 따라 창가에서도 잘 안되기도 함.근데 위성정보 수신 가능한 탁트인곳이라 할지라도.. 위성정보 처음 받을때 생각보다 많이 오래걸린다 . 밖에서 전원켜도 불 안들어오면 적어도 5~10분은 기다려보자.
난 몇분 기다려도 불 안들어오길래 처음엔 고장인줄 알았는데 한참 기다리니까 켜지더라
.

———

아두이노 GPS 모듈이라고 검색하니까 NEO-6M 이라는게 많이 보이길래 이것에 대해 알아보기로 결정

이렇게 생겼는데 왼쪽에 은색 물건은 안테나 ,오른쪽이 보드이다.

GPS 보드의 RX핀을 자신이 사용하는 MCU의 Uart Tx핀에 연결
GPS 보드의 TX핀을 자신이 사용하는 MCU의 Uart Rx핀에 연결해서 사용하면된다.

NEO-6_DataSheet_(GPS.G6-HW-09005)
0.85MB


이게 해당 제조사에서 만든 Data Sheet 이다.


기본 동작 컨셉:
GPS 보드에 우리가 어떤 명령을 별도로 하지 않아도, GPS 보드에 전원 인가해서 켜면 자동으로 위성으로부터 데이터를 받아서 그것을 Uart 통신으로 계속 송신하고 있다.
그래서 우리 MCU 입장에서는 Uart로 메세지를 수신해서 데이터를 Parsing만 잘하면 끝이다.
근데 생각보다 굉장히 많은 데이터를 보내준다.
위도,경도는 기본이고 그 외에 위성의 상태 이동속도 등등 온갖 정보가 되게 많더라.

그렇다고 Tx가 아예 필요없는건 아니고,
우리가 GPS 보드에 TX로 특정 명령을 날려서 여러가지 Configure 도 가능하다.
예를 들어 Baudrate을 수정하거나, 앞에서 굉장히 다양한 데이터를 보내준다고 했는데 데이터가 너무 많으니까
내가 필요한 메세지 몇가지만 골라서 보내게 한다던지 그런 Configure가 가능하다.

참고로 우리 MCU에서 Uart Tx로 그런 Configure를 할수도있지만
Uart to USB 모듈을 사용해서 GPS 보드와 PC(컴퓨터) 를 USB 포트로 연결해서
그런 Configure가 가능한데 그런 작업을 편리하게 할 수 있는 툴도 제조사에서 제공하고 있다.
https://www.u-blox.com/en/product/u-center
위 프로그램을 사용하면 된다.

임베디드 MCU가 없더라도 uart to USB 모듈만 갖고 있다면
GPS 보드를 사서 PC랑 연결해서 GPS 정보를 받아 볼 수도 있고, 혹은 이런저런 Configure 도 해줄 수 있다.
PC로 먼저 보드가 어떤 데이터를 보내주는지도 분석해보고,
이런저런 Configure도 해본 후에 임베디드 보드에 연결해서 쓰면 더 편할거라는 생각이 든다.


Tx로 Configure 하는건 나중에 얘기하고,
일단 해당 모듈의 기본동작은 전원만 켜면 자동으로 메세지를 보낸다고 했다.
따라서, 우리는 무슨 정보를 보내는지를 파악해야 그것을 파싱 할 수 있을 것이다.
한편, Default Baudrate이 뭔지도 알아야 통신을 할 수 있을 것이다. 아래는 데이터시트의 내용이다.

CFG_COM0, CFG_COM1 이라는 핀이 있어서 이걸로 Default 동작이 결정된다고 한다.
근데 앞에서 살펴봤듯이 우리가 봤던 보드에는 그런 핀들이 없다. 근데 보드 파는 사이트에서 말하기를 Default Baudrate이 9600이라고 하더라. 그러니까 내 생각에는 보드 파는 회사에서 보드로 만들 때 해당 핀을 모두 vcc에 걸어서 둘다 1,1로 셋팅된 것 같다.

암튼 -> 그러므로 일단 우리가 봤던 제품의 Uart Baudrate은 9600이라는것만 알면 된다.

한편, 위 표를 보면 Protocol에 NMEA 라고 적혀있고 메세지에 GSV,RMC,GSA.. 등등 뭐라뭐라 적혀있다.

이거는 아직 정확하게 파악된건 아닌데
내 생각에 저 표의 의미는, Default 로 보내는 메세지의 종류가 무엇인지를 나타내주는 것 같다.
그러니까 우리는 테이블의 첫번째 행에 해당되도록 셋팅되어있으니까
테이블에 적혀있는대로 GSV,RMC,GSA,GGA,GLL,VTG,TXT 메세지를 보낼 것이라고 생각된다.

참고로 GSV,RMC.. 이런 단어들이 뭐냐면 NMEA라고 하는 프로토콜에 정의된 이름인데..
각각이 서로다른 메세지 포멧을 의미한다고 생각하면된다.
NMEA 프로토콜은 정확히 뭔지는 모르겠는데 GPS 관련 데이터 주고받는 내용을 담고있는 프로토콜인 것 같다.

NMEA0183.pdf
0.06MB



NMEA 프로토콜에 관한 문서인데 안에 내용을 보면 아래 같은 설명이 있다.


이제 이해가 될 거 같다.
앞에서 봤던 Default 동작과 관련된 table에서, 어떤 메세지를 보내는지 적혀있었고
그 메세지가 의미하는 바가 뭔지는 위 예시를 보면 이해될 것이다.

한편,
그러면 이제 실제로 메세지를 받아서 한번 출력해보면 정확하지는 않은데(매뉴얼 같은데서 퍼온거라)
대강 아래와 같은 형태로 메세지가 들어온다.


#달러 표시뒤에 적힌 글자를 보면
GSV,GLL, RMC 등의 단어를 볼 수 있는데, 아까 테이블에서 봤던 Message 들의 이름이다.

한편 앞에 GP 라는 단어가 붙어있는데 이게 뭐냐면.. 이 정보가 GPS 정보라는걸 알려주는건데
NMEA 프로토콜에서는 달러표시뒤에 첫 두글자를 Talk Identifier 라고 한다.
우리가 사용하는 모듈은 GPS 관련 정보만 보내니까 아마도 전부 앞에 GP가 붙어있는거 같다.
talk identifier 의 보다 정확한 내용이 궁금하면 위에 올린 첨부파일 문서 읽어보면된다.
메세지 포멧관련해서 그림으로 설명된게 있어서 아래 첨부했다.



암튼 이제 Default로 어떤 메세지 보내는지도 알았고, 그 메세지의 의미도 알았으니까
우리는 uart로 메세지 받아서 적절히 파싱만 해주면 된다.


TX에 대해서는 .. 앞에서 말했듯이 제조사에서 만든 PC용 SW를 사용하거나 혹은.. 유저매뉴얼등을 바탕으로
GPS 모듈 조작하는 방법을 파악한다음... 적절히 조작해서 쓰면된다.
그러면 baud rate을 바꿔서 쓸 수도있고..
앞에서 봤듯이 메세지가 엄청나게 많은데 그 중에 우리가 필요한것만 받는다던지.. 하는 식으로 셋팅이 가능하다.




반응형