아두이노 나노 ESP32 - GPS | Arduino Nano ESP32 - GPS

이 가이드에서는 NEO-6M GPS 모듈에서 GPS 좌표(경도, 위도, 고도), GPS 속도(시간당 킬로미터), 그리고 날짜-시간 정보를 추출하는 방법을 알아보겠습니다. 또한, 현재 GPS 위치와 사전 정의된 GPS 좌표(예: 런던의 좌표) 사이의 거리를 계산하는 과정도 탐구할 것입니다.

준비물

1×Arduino Nano ESP32 Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×NEO-6M GPS module Amazon
1×Jumper Wires Amazon
1×Breadboard 쿠팡 | Amazon
1×(Recommended) Screw Terminal Expansion Board for Arduino Nano 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

NEO-6M GPS 모듈에 대하여

핀배열

NEO-6M GPS 모듈에는 4개의 핀이 있습니다:

  • VCC 핀: VCC(3.3V 또는 5V)에 연결해야 합니다.
  • GND 핀: GND(0V)에 연결해야 합니다.
  • TX 핀: GPS 모듈과 ESP32 간의 통신에 사용되며, Arduino Nano ESP32의 Serial RX 핀에 연결해야 합니다.
  • RX 핀: GPS 모듈과 ESP32 간의 통신에 사용되며, Arduino Nano ESP32의 Serial TX 핀에 연결해야 합니다.
NEO-6M GPS module Pinout

선연결

Arduino Nano ESP32 GPS module Wiring Diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

아두이노 나노 ESP32 코드

GPS 좌표, 속도(시간당 킬로미터), 및 날짜 시간 읽기

/* * 이 Arduino Nano ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-esp32-gps */ #include <TinyGPS++.h> #define RX1PIN D2 // Arduino Nano ESP32 핀이 GPS 모듈의 TX에 연결됨 #define TX1PIN D3 // Arduino Nano ESP32 핀이 GPS 모듈의 RX에 연결됨 TinyGPSPlus gps; // The TinyGPS++ object void setup() { Serial.begin(9600); Serial1.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN); Serial.println(F("Arduino - GPS module")); } void loop() { if (Serial1.available() > 0) { if (gps.encode(Serial1.read())) { if (gps.location.isValid()) { Serial.print(F("- latitude: ")); Serial.println(gps.location.lat()); Serial.print(F("- longitude: ")); Serial.println(gps.location.lng()); Serial.print(F("- altitude: ")); if (gps.altitude.isValid()) Serial.println(gps.altitude.meters()); else Serial.println(F("INVALID")); } else { Serial.println(F("- location: INVALID")); } Serial.print(F("- speed: ")); if (gps.speed.isValid()) { Serial.print(gps.speed.kmph()); Serial.println(F(" km/h")); } else { Serial.println(F("INVALID")); } Serial.print(F("- GPS date&time: ")); 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("INVALID")); } Serial.println(); } } if (millis() > 5000 && gps.charsProcessed() < 10) Serial.println(F("No GPS data received: check wiring")); }

사용 방법

아두이노 나노 ESP32를 시작하는 방법은 다음과 같습니다:

아두이노 나노 ESP32에 처음이라면, 아두이노 IDE에서 아두이노 나노 ESP32 환경 설정하는 방법에 대한 튜토리얼을 참조하세요.

제공된 다이어그램에 따라 구성 요소를 연결하십시오.

아두이노 나노 ESP32 보드를 USB 케이블을 사용하여 컴퓨터에 연결하십시오.

컴퓨터에서 아두이노 IDE를 실행하십시오.

Arduino Nano ESP32 보드와 해당 COM 포트를 선택하십시오.

아두이노 IDE의 왼쪽 바에 있는 Libraries 아이콘을 클릭하십시오.

"TinyGPSPlus"를 검색한 다음, Mikal Hart가 만든 TinyGPSPlus 라이브러리를 찾으십시오.

Install 버튼을 클릭하여 TinyGPSPlus 라이브러리를 설치하십시오.

Arduino Nano ESP32 TinyGPS++ library

위의 코드를 복사하고 Arduino IDE로 열기

Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino Nano ESP32에 업로드하세요

시리얼 모니터에서 결과를 확인하세요:

COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

현재 위치에서 사전에 정의된 위치까지의 거리 계산

아래 코드는 현재 위치와 런던(위도: 51.508131, 경도: -0.128002) 사이의 거리를 계산합니다.

/* * 이 Arduino Nano ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-esp32-gps */ #include <TinyGPS++.h> #define RX1PIN D2 // GPS 모듈의 TX에 연결된 Arduino Nano ESP32 핀 #define TX1PIN D3 // GPS 모듈의 RX에 연결된 Arduino Nano ESP32 핀 TinyGPSPlus gps; // TinyGPS++ 객체 const double LONDON_LAT = 51.508131; const double LONDON_LON = -0.128002; void setup() { Serial.begin(9600); Serial1.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN); Serial.println(F("Arduino - GPS module")); } void loop() { if (Serial1.available() > 0) { if (gps.encode(Serial1.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")); }

사용 방법

  • 위의 코드를 복사하고 Arduino IDE로 열기
  • Arduino Nano ESP32에 코드를 업로드하기 위해 Arduino IDE에서 Upload 버튼을 클릭하세요
  • 시리얼 모니터에서 결과를 확인하세요:
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

관련 튜토리얼

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!