아두이노 나노 GPS
이 튜토리얼은 아두이노 나노를 NEO-6M GPS 모듈과 함께 사용하는 방법을 알려줍니다. 구체적으로, 우리는 배울 것입니다:
Arduino Nano를 NEO-6M GPS 모듈에 연결하는 방법
Arduino Nano를 프로그래밍하여 NEO-6M GPS 모듈에서 GPS 좌표(경도, 위도 및 고도)를 읽는 방법
현재 GPS 위치에서 사전 정의된 GPS 좌표(예: 런던의 좌표)까지의 거리를 계산하도록 Arduino Nano를 프로그래밍하는 방법
경도, 위도, 고도 외에도, 아두이노 나노는 NEO-6M GPS 모듈에서 GPS 속도(km/h)와 날짜 시간을 읽을 수도 있습니다.
| 1 | × | 아두이노 나노 | 쿠팡 | 아마존 | |
| 1 | × | USB A to Mini-B USB 케이블 | 쿠팡 | 아마존 | |
| 1 | × | NEO-6M GPS module | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 브레이크아웃 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 전원 분배기 | 쿠팡 | 아마존 | |
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
NEO-6M GPS 모듈은 다음 정보를 제공할 수 있는 GPS 모듈입니다:
경도
위도
고도
GPS 속도 (km/h)
날짜 시간
NEO-6M GPS 모듈에는 네 개의 핀이 있습니다:
VCC 핀: VCC(5V)에 연결해야 합니다.
GND 핀: GND(0V)에 연결해야 합니다.
TX 핀: 직렬 통신에 사용되며, 아두이노 나노의 직렬(Serial) 또는 소프트웨어 직렬(SoftwareSerial) RX 핀에 연결해야 합니다.
RX 핀: 직렬 통신에 사용되며, 아두이노 나노의 직렬(Serial) 또는 소프트웨어 직렬(SoftwareSerial) TX 핀에 연결해야 합니다.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아래 그림은 브레드보드 없이 같은 연결을 보여줍니다:

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
배선이 제자리에 단단히 고정되기를 원하시나요? 이를 위해 Arduino Nano를 아두이노 나노용 스크루 터미널 확장 보드에 장착하세요. 아래 그림처럼 각 전선은 같은 핀의 나사 단자로 연결됩니다.

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
Arduino Nano와 기타 부품에 전원을 공급하는 가장 효과적인 방법은 다음 링크를 참조하세요: 아두이노 나노 전원 공급 방법.
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
const int RX_PIN = 6, TX_PIN = 5;
const uint32_t GPS_BAUD = 9600;
TinyGPSPlus gps;
SoftwareSerial gpsSerial(RX_PIN, TX_PIN);
void setup() {
Serial.begin(9600);
gpsSerial.begin(GPS_BAUD);
Serial.println(F("Arduino - GPS module"));
}
void loop() {
if (gpsSerial.available() > 0) {
if (gps.encode(gpsSerial.read())) {
if (gps.location.isValid()) {
Serial.print(F("- 위도: "));
Serial.println(gps.location.lat());
Serial.print(F("- 경도: "));
Serial.println(gps.location.lng());
Serial.print(F("- 고도: "));
if (gps.altitude.isValid())
Serial.println(gps.altitude.meters());
else
Serial.println(F("무효"));
} else {
Serial.println(F("- 위치: 무효"));
}
Serial.print(F("- 속도: "));
if (gps.speed.isValid()) {
Serial.print(gps.speed.kmph());
Serial.println(F(" km/h"));
} else {
Serial.println(F("무효"));
}
Serial.print(F("- GPS 날짜&시간: "));
if (gps.date.isValid() && gps.time.isValid()) {
Serial.print(gps.date.year());
Serial.print(F("-"));
Serial.print(gps.date.month());
Serial.print(F("-"));
Serial.print(gps.date.day());
Serial.print(F(" "));
Serial.print(gps.time.hour());
Serial.print(F(":"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
Serial.println(gps.time.second());
} else {
Serial.println(F("무효"));
}
Serial.println();
}
}
if (millis() > 5000 && gps.charsProcessed() < 10)
Serial.println(F("GPS 데이터를 받지 못했습니다: 배선을 확인하세요"));
}
Arduino IDE의 왼쪽 바에 있는 Libraries 아이콘을 클릭하십시오.
“TinyGPSPlus”를 검색한 후, Mikal Hart의 TinyGPSPlus 라이브러리를 찾으십시오.
TinyGPSPlus 라이브러리를 설치하려면 Install 버튼을 클릭하십시오.
위에 언급된 코드를 복사하고 Arduino IDE에서 엽니다.
Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino Nano로 전송합니다.
결과를 관찰하려면 시리얼 모니터를 확인하세요.
Newbiely | Arduino IDE 2.3.8
8
Serial.println("Hello World!");
Message (Enter to send message to 'Arduino Nano' on 'COM15')
Ln 11, Col 1
Arduino Nano on COM15
2
아래 코드는 현재 위치와 런던(위도: 51.508131, 경도: -0.128002) 사이의 거리를 계산합니다.
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
const int RX_PIN = 6, TX_PIN = 5;
const uint32_t GPS_BAUD = 9600;
TinyGPSPlus gps;
SoftwareSerial gpsSerial(RX_PIN, TX_PIN);
const double LONDON_LAT = 51.508131;
const double LONDON_LON = -0.128002;
void setup() {
Serial.begin(9600);
gpsSerial.begin(GPS_BAUD);
Serial.println(F("Arduino - GPS module"));
}
void loop() {
if (gpsSerial.available() > 0) {
if (gps.encode(gpsSerial.read())) {
if (gps.location.isValid()) {
double latitude = gps.location.lat();
double longitude = gps.location.lng();
unsigned long distanceKm = TinyGPSPlus::distanceBetween(latitude, longitude, LONDON_LAT, LONDON_LON) / 1000;
Serial.print(F("- latitude: "));
Serial.println(latitude);
Serial.print(F("- longitude: "));
Serial.println(longitude);
Serial.print(F("- distance to London: "));
Serial.println(distanceKm);
} else {
Serial.println(F("- location: INVALID"));
}
Serial.println();
}
}
if (millis() > 5000 && gps.charsProcessed() < 10)
Serial.println(F("No GPS data received: check wiring"));
}
Newbiely | Arduino IDE 2.3.8
8
Serial.println("Hello World!");
Message (Enter to send message to 'Arduino Nano' on 'COM15')
Ln 11, Col 1
Arduino Nano on COM15
2
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.