본문 바로가기
작업/Rasp & Arduino

GPS 센서 NEO-6M 연결하기 (아두이노)

 

 

 

 

GPS(Global Positioning System)은 현재의 위치정보를 획득하는 용도로 사용합니다.

아두이노와 라즈베리파이에서 사용 가능한 GPS 센서인 NEO-6M을 사용하여 위치정보를 얻어보았습니다.

이번 글은 아두이노를 사용하여 위치정보를 받아볼 것이며 다음 글에서는 라즈베리파이를 사용합니다.

 

 

 

라즈베리파이로 적용한 글

 

2021.06.29 - [작업/라즈베리파이 & 아두이노] - GPS 센서 NEO-6M 연결하기 (라즈베리파이)

 

GPS 센서 NEO-6M 연결하기 (라즈베리파이)

이전 글에는 "아두이노" 기준으로 GPS 모듈인 NEO-6M을 연결했었습니다. https://zifmfmphantom.tistory.com/117 GPS 센서 NEO-6M 연결하기 (아두이노, 라즈베리파이) GPS(Global Positioning System)은 현재의..

zifmfmphantom.tistory.com

 

 


 

NEO-6M 제품 구성과 사양(Specification)

 

 

NEO-6M 제품 구성

 

 

일반적으로 NEO-6M을 구매하시면 회로판(좌측)과 안테나(우측)로 구성된 제품을 받을 수 있습니다.

 

여기서 중요한 것은 회로판에 핀 헤더가 포함되어 있지 않기 때문에 아두이노(또는 라즈베리파이)와 연결하기 위해서는 별도로 핀 헤더를 구매해서 납땜을 해야 합니다.

 

 

 

NEO-6M 핀 구성

 

VCC

3.3V (라즈베리파이) 또는 5V (아두이노) 모두 호환
GND GND
RX GPIO 14 (Rasp Tx), 아두이노는 별도 지정
TX GPIO 15 (Rasp Rx), 아두이노는 별도 지정

시리얼 통신의 속도인 보드레이트(Baud Rate) = 9600

 

 

 

 

 


 

 

GPS 센서 조립

 

 

먼저 회로판과 안테나를 연결해줍니다.

 

안테나 연결

 

 

사진처럼 회로판에 안테나와 연결할 수 있는 접합부가 있습니다.

똑딱이처럼 되어 있어서 잘 맞추어서 누르면 "똑"느낌이 나면서 결합됩니다.

 

 

 

 

다음으로 GPS 사용을 위한 준비의 핵심인 핀 헤더와 "납땜"입니다.

다른 회로와 연결하기 위해서는 핀 헤더가 필요하며 핀 헤더에 적절한 전류 제공을 위해서는 납땜을 해야 합니다.

 

납땜하기 귀찮아서 그냥 핀 헤더와 회로판을 본드로 붙였지만 작동이 안 되었습니다...

 

 

 

핀 헤더

 

핀 헤더 자체는 작기 때문에 묶어서 판매합니다.

Snipe-Nose Pliers (흔히 롱노우즈) 같은 걸로 뜯어서 낱개로 사용 가능합니다. 손으로 뜯어도 됩니다.

 

 

납땜을 위해서는 인두기와 땜납이 필요합니다. 근처에 다이소가 있는데 거기에서도 판매합니다.

성능도 나름 좋다고 평가받기 때문에 아이쇼핑도 할 겸 구매하고 왔습니다.

 

 

 

납땜 준비

 

 

땜납에는 플럭스(flux)라는 납땜이 잘 되도록 도와주는 녀석이 있습니다.

(산화 방지, 전기 접촉 개선 및 납 흐름 개선과 같은 역할을 한다고 합니다.)

그 녀석이 기화되어 발생하는 연기는 몸에 매우 해롭기 때문에 납땜은 환기가 잘 되는 야외에서 진행합니다.

 

 

 

 

땜납 전

 

 

핀 헤더와 회로판의 직경이 일치하지 않기 때문에 고정이 필요합니다.

그래서 핀 헤더의 검은색 머리에 본드를 발라서 고정시켰습니다.

 

 

납땜 후

 

매우 초보스러운 납땜을 완료했습니다.

주의할 점은 땜납도 전류가 흐르기 때문에 각자 분리되어 있어야 한다는 것입니다.

너무 많이 녹여서 다른 핀의 땜납과 연결되어 붙게 된다면 작동에 문제가 생깁니다.

 

 

 


 

아두이노 (라즈베리파이) 준비 및 세팅

 

 

이번 글에서는 아두이노를 활용하고, 다음 글에는 라즈베리파이를 활용하겠습니다.

아두이노 스케치에 간단한 코드를 작성하여 실행하겠습니다.

아두이노는 예시 자료가 많기 때문에 관련 코드를 찾는 것이 수월합니다.

 

 

GPS 데이터 받아오고 출력하는 코드

 

 

#include <SoftwareSerial.h>

SoftwareSerial gps(11,12);     <- gps(x, y)에서 x는 GPS 센서의 Tx, y는 Rx와 연결된 핀을 지정합니다.

void setup() {                     <- 실행 시 한 번 진행되는 코드 공간
    Serial.begin(9600);         <- 보드레이트 값을 지정하여 시리얼 통신을 시작합니다.
    gps.begin(9600);             <- gps 객체를 지정된 보드레이트 값으로 작동시킵니다.
}


void loop() {                            <- 종료될 때까지 반복 진행되는 코드 공간
    if (gps.available()) {                <- gps 센서에서 값이 들어오고 있다면
        Serial.write(gps.read())       <- gps 센서에서 수집된 데이터를 출력합니다.
    }
}

 

 

오류가 없는지 확인합니다. 다음으로 아두이노에 업로드하기 위해 아두이노를 센서와 연결합니다.

 

 

GPS 센서 회로판에 핀 연결

 

 

납땜이 완료된 gps 센서 회로판의 핀에 점퍼선을 연결합니다.

 

 

11 - gps Tx,&nbsp; 12 - gps Rx

 

Vcc - 5V,   Gnd = Gnd,  Tx = 11,  Rx = 12에 연결합니다.

 

(Tx, Rx 핀은 기호에 맞게 설정해서 연결해주시면 됩니다.)

 

 

연결한 후에 스케치를 통해 아두이노로 소스를 업로드합니다.

최종적으로 값이 잘 들어오는지 스케치 툴의 시리얼 모니터를 통해서 확인합니다.

 

 

 

확인했을 때, GPS 센서에서 정확한 값이 바로 들어오지는 않습니다.

GPS가 현재 위치를 바르게 잡으려면 시간이 좀 걸리며 빠르게 잡기 위해서는 야외에서 측정합니다.

저는 원룸에서 측정했고, 창문 열고 안테나를 밖에까지 노출시켜서 측정했습니다.

 

 

 

GPS 센서 측정 결과

 

사진의 출력 결과는 측정이 완전히 이루어지지 않은 화면입니다.

 

 

측정이 정확히 이루어진다면 GPS 센서 회로판에 빨간불이 점등합니다.

정확한 측정 결과는 사진보다 더 길고 자세한 값들이 출력되어 있습니다. (크게 차이 납니다.)

 

 

GPS 센서에서 들어오는 데이터는 그대로 활용할 수 없기 때문에 목적에 맞게 정제하는 과정이 필요합니다.

자세한 과정까지는 접근하지 않았기 때문에 정리를 하지 않았습니다.

 

 

아두이노는 GPS 센서가 잘 작동하는지 간단한 테스트 용도였습니다.

이제 라즈베리파이로 세팅해서 사용하는 방법에 대해 작성하겠습니다.

 

 

읽어주셔서 감사합니다.  : )

 

 

- 끝 -