메뉴 전체보기

회원메뉴

패스파인더: DIY GNSS 웨이포인트 내비게이션 장치 > 게시판

본문 바로가기

쇼핑몰 검색

NO. 3349
제목 : 패스파인더: DIY GNSS 웨이포인트 내비게이션 장치
2026-09-23 14:01

소개: 패스파인더: DIY GNSS 웨이포인트 내비게이션 장치


소개: 패스파인더: DIY GNSS 웨이포인트 내비게이션 장치


소개: 패스파인더: DIY GNSS 웨이포인트 내비게이션 장치


소개: 패스파인더: DIY GNSS 웨이포인트 내비게이션 장치


소개: 패스파인더: DIY GNSS 웨이포인트 내비게이션 장치


한 달 전, 나는 GNSS 모듈을 들고 다음과 같은 생각을 했습니다:

"목적지 좌표를 간단히 입력하면, 내가 걷는 동안 장치가 목표까지의 거리와 방향을 지속적으로 보여주는 내비게이션 장치를 만들 수 있을까?"

그 간단한 질문이 이 프로젝트의 출발점이 되었습니다.

나는 ESP32-C6, GNSS 수신기, 작은 디스플레이를 사용하여 대충 프로토타입을 신속하게 조립했습니다. 테스트 코드를 작성한 후, 내가 움직이는 동안 시스템이 실시간으로 목적지까지의 거리를 성공적으로 계산하는 것을 보고 놀랐습니다.

하지만 한 가지 큰 제한이 있었습니다.

GNSS 모듈은 사용자가 적극적으로 움직일 때만 이동 방향을 결정할 수 있습니다. 걷기를 멈추면 수신기가 이동 방향을 계산할 충분한 데이터가 없기 때문에 방향 정보가 신뢰할 수 없게 됩니다.

해결책을 연구하는 동안, 전용 웨이포인트 내비게이션 장치가 스마트폰 내비게이션이 일반화되기 훨씬 이전에 사용되었다는 것을 발견했습니다. 이 장치들은 위치 데이터를 나침반과 결합하여 목적지의 방향을 지속적으로 표시했습니다.

그것이 나에게 프로젝트에 디지털 나침반을 추가하도록 영감을 주었습니다.

BMM350 자력계를 통합함으로써, 내비게이터는 이제 정지해 있을 때도 방향을 결정할 수 있게 되었습니다. 결과는 내가 상상했던 것과 정확히 일치했습니다: 미리 정의된 웨이포인트까지의 거리와 방위를 실시간으로 표시할 수 있는 컴팩트한 핸드헬드 장치입니다.

더욱 인상적인 것은, 이 시스템이 약 ±5미터의 정확도를 지속적으로 달성했으며, 이는 DIY 내비게이션 프로젝트로서는 훌륭한 성과입니다.

이 빌드에 사용된 하드웨어는 다음과 같습니다:

  1. DFRobot FireBeetle 2 ESP32-C6
  2. Gravity GNSS Positioning Module
  3. Gravity BMM350 Triple-Axis Magnetometer
  4. Fermion 1.54" 240×240 IPS TFT Display
  5. 사용자 입력을 위한 로터리 인코더
  6. 피드백을 위한 피에조 부저
  7. 휴대용 작동을 위한 LiPo 배터리

프로젝트를 완성하기 위해 모든 것이 Fusion 360에서 설계된 컴팩트한 맞춤형 인클로저 안에 포장되어 프로토타입이 실용적인 핸드헬드 내비게이션 장치로 변모했습니다.

이 튜토리얼에서는 내가 이 DIY 웨이포인트 내비게이터(경로 탐색기)를 설계하고 조립하며 프로그래밍하고 테스트한 방법을 보여드릴 것이므로, 여러분도 직접 만들 수 있습니다.




STEP 1. 준비물


준비물


준비물


준비물


준비물


준비물


준비물


준비물


준비물


준비물


전자기기

  1. DFRobot FireBeetle 2 ESP32-C6
  2. Gravity GNSS 위치 모듈
  3. Gravity BMM350 삼축 자력계
  4. Fermion 1.54" 240×240 IPS TFT 디스플레이
  5. 로터리 인코더
  6. 피에조 버저
  7. 리튬 폴리머 배터리
  8. 미니 전원 스위치


하드웨어

  1. M2 나사 키트
  2. M3 나사 키트
  3. 드라이버


제작

  1. 3D 프린터 접근 또는
  2. 미리 인쇄된 인클로저 부품


소프트웨어

  1. Arduino IDE
  2. Autodesk Fusion 360 (인클로저 디자인 및 수정용)




STEP 2. GNSS란 무엇이며, 어떻게 작동하나요?


GNSS란 무엇이며, 어떻게 작동하나요?


Pathfinder를 구축하기 전에 이를 가능하게 하는 기술을 이해하는 것이 도움이 됩니다.

GNSS란 무엇인가요?

GNSS는 Global Navigation Satellite System의 약자입니다. 이는 지구상의 수신기가 자신의 위치를 결정할 수 있도록 하는 위성 기반 위치 시스템을 위한 일반적인 용어입니다.

현재 전 세계에서 여러 GNSS 별자리가 운영되고 있습니다:

  1. GPS (미국)
  2. GLONASS (러시아)
  3. Galileo (유럽 연합)
  4. BeiDou (중국)

현대 GNSS 수신기는 여러 위성 시스템과 동시에 통신할 수 있어 정확성을 높이고 위치 고정을 얻는 데 필요한 시간을 줄입니다.

GNSS는 어떻게 작동하나요?

각 GNSS 위성은 다음을 포함하는 신호를 지속적으로 방송합니다:

  1. 우주에서의 정확한 위치
  2. 정확한 전송 시간
  3. 시스템 타이밍 정보

GNSS 수신기는 여러 위성으로부터 이러한 신호가 도달하는 데 걸리는 시간을 측정합니다.

전파 신호는 빛의 속도로 이동하므로, 수신기는 각 위성으로부터의 거리를 계산할 수 있습니다.

최소 네 개의 위성으로부터의 측정을 결합하여, 수신기는 삼변측량(trilateration)이라는 과정을 수행하여:

  1. 위도
  2. 경도
  3. 고도
  4. 시간

수신기에 보이는 위성이 많을수록 위치 정확도가 더 좋아지는 경향이 있습니다.

단순화된 예시

지구의 어딘가에 서 있다고 상상해 보세요:

  1. 첫 번째 위성이 당신이 큰 구체의 어딘가에 있다는 것을 알려줍니다.
  2. 두 번째 위성이 가능한 위치를 좁힙니다.
  3. 세 번째 위성이 가능성을 더욱 줄입니다.
  4. 네 번째 위성이 정확한 3D 위치를 계산할 수 있는 충분한 정보를 제공합니다.

이 과정은 지속적으로, 종종 초당 여러 번 발생합니다.


이 프로젝트의 GNSS

Pathfinder는 ESP32-C6에 연결된 DFRobot Gravity GNSS Positioning Module을 사용합니다.

GNSS 모듈은 지속적으로 다음을 제공합니다:

  1. 현재 위도
  2. 현재 경도
  3. 고도
  4. 지상 속도
  5. 보이는 위성 수

목적지 웨이포인트가 입력되면, ESP32는 현재 GNSS 좌표와 목적지 좌표를 비교하고 계산합니다:




STEP 3. 목적지까지의 거리: 하버사인 공식


목적지까지의 거리: 하버사인 공식


내비게이터가 현재 좌표와 목적지 좌표를 알게 되면, 두 지점 간의 거리를 계산해야 합니다.

언뜻 보기에는 간단해 보입니다. 그러나 지구는 평평하지 않고 대략 구형입니다. 이 때문에 위도와 경도를 사용한 직선 계산은 긴 거리에서는 부정확한 결과를 초래할 수 있습니다.

이 문제를 해결하기 위해 펌웨어는 하버사인 공식을 사용합니다. 이는 구의 표면에서 두 점 간의 최단 거리를 계산하는 잘 알려진 내비게이션 방정식입니다.

이 공식은 네 가지 입력값을 필요로 합니다:

  1. 현재 위도
  2. 현재 경도
  3. 목적지 위도
  4. 목적지 경도

이 좌표를 사용하여, 지구 표면을 따라 두 점 간의 최단 경로인 대원 거리를 계산합니다.

이 거리는 사용자가 이동함에 따라 지속적으로 업데이트되어, 내비게이터가 선택한 웨이포인트까지의 남은 거리를 실시간으로 표시할 수 있게 합니다.

펌웨어에서는 계산된 거리를 다음과 같이 표시합니다:

  1. 근처 목적지에 대한 미터
  2. 긴 거리의 킬로미터

이는 목표를 향한 진행 상황을 추적하는 간단하고 직관적인 방법을 제공합니다.




STEP 4. 목적지 방향


목적지 방향


거리만 아는 것으로는 충분하지 않습니다—어떤 방향으로 이동해야 하는지도 알아야 합니다.

여기서 방위각 계산이 필요합니다.

방위각은 한 위치에서 다른 위치로의 나침반 방향으로, 지리적 북쪽에서 시계 방향으로 측정됩니다.

예를 들어:

  1. 0° = 북쪽
  2. 90° = 동쪽
  3. 180° = 남쪽
  4. 270° = 서쪽

내비게이터가 90°의 방위각을 계산하면, 목적지는 현재 위치의 바로 동쪽에 있습니다.

225°의 방위각을 계산하면, 목적지는 남서쪽에 위치합니다.

펌웨어는 현재 GNSS 좌표와 목적지 좌표를 사용하여 이 방위각을 계산합니다.

예시

당신이 다음 위치에 서 있다고 상상해 보세요:

  1. 위도: 17.4000°
  2. 경도: 78.5500°

그리고 당신의 목적지는:

  1. 위도: 17.4100°
  2. 경도: 78.5600°

방위각 계산은 현재 위치에서 웨이포인트까지의 방향을 결정합니다. 이 예시에서 목적지는 대략 당신의 위치의 북동쪽에 있을 것입니다.




STEP 5. 디지털 나침반과 베어링 결합하기


디지털 나침반과 베어링 결합하기


계산된 방위각은 목적지가 진북에 대해 어디에 있는지를 알려주지만, 장치가 현재 어떤 방향을 향하고 있는지는 알려주지 않습니다.

여기서 BMM350 자력계가 필요합니다.

자력계는 장치의 방위를 지속적으로 측정하여 ESP32가 현재 방향을 파악할 수 있도록 합니다.

펌웨어는 다음을 비교합니다:

목표 방위각

현재 방위

을 통해 목적지가 장치에 대해 어디에 위치하는지를 결정합니다.

예를 들어:

  1. 목표 방위각 = 90° (동쪽)
  2. 장치 방위 = 45° (북동쪽)

목적지는 현재 향하고 있는 방향의 오른쪽으로 45° 위치해 있습니다.

디스플레이의 내비게이션 화살표는 이 차이에 따라 회전하여 선택된 웨이포인트로의 실시간 안내를 제공합니다.

GNSS 위치 측정, 방위각 계산, 디지털 나침반 방위의 조합이 Pathfinder가 사용자가 가만히 서 있을 때도 지속적으로 목적지를 가리킬 수 있게 해줍니다.




STEP 6. 제가 FireBeetle 2 ESP32-C6를 선택한 이유


제가 FireBeetle 2 ESP32-C6를 선택한 이유


이 프로젝트의 핵심은 DFRobot FireBeetle 2 ESP32-C6,로, 휴대용 내비게이션 장치에 적합한 훌륭한 선택이었습니다.

저는 세 가지 주요 이유로 이 제품을 선택했습니다:

  1. 합리적인 가격 – 약 $5.90 USD로 제공되는 기능에 비해 뛰어난 가치를 제공합니다.
  2. 배터리 친화적 – 내장된 LiPo 배터리 커넥터 및 충전 회로가 포함되어 있어 별도의 충전 모듈이 필요 없습니다.
  3. 충분한 성능 – ESP32-C6는 GNSS 데이터 처리, 나침반 계산, 디스플레이 업데이트 및 사용자 입력을 쉽게 처리할 수 있으며, 작업에 비해 과도하지 않습니다.

또 다른 주요 장점은 내장된 Wi-Fi 및 Bluetooth 연결성입니다. 장치에 직접 좌표를 입력하는 대신(하드코드), 웨이포인트의 위도와 경도 값을 로컬 네트워크를 통해 무선으로 전송할 수 있는 간단한 웹 인터페이스를 만들 수 있습니다.

이로 인해 하드웨어를 간단하고 컴팩트하게 유지하면서 사용자 경험이 크게 향상됩니다.

전반적으로 FireBeetle 2 ESP32-C6는 이 Pathfinder에 대해 비용, 기능, 성능 및 전력 관리의 완벽한 균형을 제공했습니다.




STEP 7. Fusion 360에서 인클로저 설계하기


Fusion 360에서 인클로저 설계하기


Fusion 360에서 인클로저 설계하기


Fusion 360에서 인클로저 설계하기


Fusion 360에서 인클로저 설계하기


저는 프로토타입을 컴팩트한 핸드헬드 장치로 변환하기 위해 Fusion 360에서 맞춤형 인클로저를 설계했습니다.

인클로저는 세 개의 3D 프린트된 부품으로 구성됩니다:

하우징

주 하우징은 다음을 포함한 모든 주요 구성 요소의 장착 지점을 포함합니다:

  1. FireBeetle 2 ESP32-C6
  2. GNSS 모듈
  3. BMM350 자력계
  4. 회전 인코더
  5. 피에조 부저
  6. 전원 스위치

상단 부분에는 GNSS 안테나를 위한 전용 장착 공간이 포함되어 있어 좋은 위성 수신을 보장합니다. 측면에는 프로그래밍 및 충전을 위한 ESP32-C6 USB Type-C 포트에 쉽게 접근할 수 있도록 개구부가 제공됩니다.

전면 커버

전면 커버는 장착 나사를 사용하여 1.54" TFT 디스플레이를 고정합니다.

또한 다음을 포함합니다:

  1. 회전 인코더 컷아웃
  2. 전면 패널의 장식 그래픽
  3. 내비게이터를 배낭이나 장비에 부착할 수 있는 통합 카라비너 루프

인코더 노브

세 번째 부품은 3D 프린트된 맞춤형 회전 인코더 노브로, 인코더 샤프트에 압착하여 장착됩니다.

모든 인클로저 부품은 지지 재료 없이 쉽게 인쇄할 수 있도록 설계되었으며, 필요에 따라 다양한 하드웨어 구성에 맞게 수정할 수 있습니다.

이 프로젝트에서 Fusion 360 설계 파일과 STL 파일을 다운로드하여 자신의 요구 사항에 맞게 사용자 정의할 수 있습니다.




STEP 8. 부품 3D 프린팅하기


부품 3D 프린팅하기


부품 3D 프린팅하기


부품 3D 프린팅하기


부품 3D 프린팅하기


부품 3D 프린팅하기


CAD 설계를 완료했으므로 이제 인클로저를 인쇄할 차례입니다.

이번 제작에는 다음을 사용했습니다:

  1. 주황색 PLA 는 하우징과 노브에 사용했고,
  2. 검은색 PLA 는 장식 그래픽에 사용했습니다.

인쇄할 부품

다음 구성 요소를 인쇄하세요:

  1. 1× 하우징
  2. 1× 전면 커버
  3. 1× 인코더 노브

모든 부품은 0.4 mm 노즐과 0.2 mm 레이어 높이를 사용하여 표준 PLA 설정으로 인쇄했습니다. 특별한 인쇄 설정은 필요하지 않으며, 모든 부품은 서포트 재료 없이 인쇄할 수 있습니다.




STEP 9. 모듈 장착하기


모듈 장착하기


모듈 장착하기


모듈 장착하기


모듈 장착하기


모듈 장착하기


모듈 장착하기


인클로저가 인쇄되었으므로, 전자 장치를 하우징에 설치할 시간입니다.

ESP32-C6 장착:

FireBeetle 2 ESP32-C6를 하우징 내부의 지정된 장착 위치에 놓는 것으로 시작합니다.

USB Type-C 커넥터가 인클로저 측면의 개구부와 제대로 정렬되었는지 확인하세요.

정렬이 완료되면, 다음을 사용하여 보드를 고정합니다:

  1. 2× M2 나사


GNSS 및 자력계 모듈 장착:

다음으로, GNSS 위치 모듈BMM350 자력계 모듈을 각각의 장착 위치에 배치합니다.

각 모듈의 장착 구멍을 하우징의 스탠드오프와 정렬하고, 다음을 사용하여 고정합니다:

  1. GNSS 모듈용 2× M3 나사
  2. BMM350 모듈용 2× M3 나사

나사를 조이기 전에 두 모듈이 장착 표면에 평평하게 놓여 있는지 확인하세요.




STEP 10. 인코더, 부저 및 전원 스위치 장착하기


인코더, 부저 및 전원 스위치 장착하기


인코더, 부저 및 전원 스위치 장착하기


인코더, 부저 및 전원 스위치 장착하기


인코더, 부저 및 전원 스위치 장착하기


주요 모듈이 설치되었으므로, 사용자 인터페이스 구성 요소를 장착할 시간입니다.

로터리 인코더 장착

로터리 인코더를 하우징 내부에 제공된 두 개의 스탠드오프 위에 놓습니다.

장착 구멍을 정렬하고 인코더를 다음을 사용하여 고정합니다:

  1. 2× M2 나사

인코더 샤프트가 전면 패널 개구부의 중앙에 위치하고 자유롭게 회전하는지 확인합니다.

부저 장착

  1. 피에조 부저를 가져와 하우징에 설계된 전용 슬롯에 부드럽게 눌러 넣습니다.
  2. 부저는 추가 하드웨어 없이도 제자리에 꼭 맞아야 합니다.

전원 스위치 장착

  1. 다음으로, 전원 스위치를 하우징의 스위치 개구부에 삽입합니다.
  2. 슬롯에 안전하게 자리 잡을 때까지 단단히 눌러 넣습니다.
  3. 스위치가 느슨하게 느껴지면 소량의 빠른 경화 접착제를 사용하여 고정합니다. 접착제가 스위치 메커니즘 내부에 들어가지 않도록 주의하세요. 이는 작동에 영향을 줄 수 있습니다.




STEP 11. GNSS 안테나 장착하기


GNSS 안테나 장착하기


GNSS 안테나 장착하기


GNSS 안테나 장착하기


GNSS 안테나 장착하기


GNSS 안테나를 하우징의 전용 안테나 구획에 배치하십시오. 이미지를 참조하십시오. 이 인클로저는 안테나를 안전하게 고정하면서 장치의 상단에 위치하도록 설계되었습니다.

안테나가 제자리에 놓이면, 안테나 케이블을 GNSS 모듈의 안테나 커넥터에 연결하십시오. 커넥터를 아래로 눌러 클릭 소리가 날 때까지 고정하십시오.

커넥터를 부착할 때는 조심하십시오. 커넥터가 작고 섬세합니다. 케이블 자체를 잡아당기지 마십시오; 항상 커넥터 본체를 잡고 다루십시오.




STEP 12. 모든 것을 연결하기


모든 것을 연결하기


모든 것을 연결하기


지금까지 빌드는 꽤 깔끔하고 간단했습니다. 이제 모든 것을 연결하는 부분이 다가옵니다: 배선 및 납땜.

GNSS 모듈 및 BMM350 자력계

GNSS 수신기와 BMM350 자력계는 I²C 인터페이스를 사용하여 ESP32-C6와 통신합니다.

다음 핀을 연결하세요:

모듈에서 ESP32-C6로

  1. GND~ GND
  2. VCC~ 3.3V
  3. SDA~ SDA
  4. SCL~ SCL

두 모듈 모두 I²C를 사용하므로 동일한 SDA 및 SCL 라인을 공유할 수 있습니다.


회전 인코더

회전 인코더를 다음과 같이 연결하세요:

인코더에서 ESP32-C6로

GND~ GND

VCC~3.3V

A~ GPIO 6

B~ GPIO 7

C~ GPIO 2


부저

피에조 부저를 다음과 같이 연결하세요:

부저에서 ESP32-C6로

GND~ GND

신호 (+) ~ GPIO 4


배터리 및 전원 스위치

LiPo 배터리를 ESP32-C6의 배터리 커넥터에 연결하세요.

장치를 켜고 끌 수 있도록 전원 스위치를 배터리의 양극선과 직렬로 연결하세요.

배선 순서:

배터리 (+) → 스위치 → ESP32 배터리 (+)

배터리 (-) → ESP32 배터리 (-)

이렇게 하면 장치가 사용되지 않을 때 스위치가 전체 시스템의 전원을 차단할 수 있습니다.

모든 연결이 완료된 후:

  1. 모든 납땜 접합부를 확인하세요.
  2. 인접한 와이어 간에 단락이 없는지 확인하세요.
  3. 장치를 켜기 전에 배터리 극성이 올바른지 확인하세요.
  4. 최종 조립 중 인클로저와의 간섭을 방지하기 위해 와이어를 깔끔하게 배선하세요.

모든 것이 배선되고 테스트가 완료되면 디스플레이를 설치하고 인클로저를 닫을 준비가 된 것입니다.




STEP 13. 디스플레이 장착하기


디스플레이 장착하기


디스플레이 장착하기


모든 내부 구성 요소가 연결되었으므로, 이제 디스플레이를 전면 커버에 설치할 시간입니다.

1.54" TFT 디스플레이를 가져와 전면 커버의 디스플레이 개구부 뒤에 위치시킵니다. 디스플레이의 장착 구멍을 커버에 제공된 장착 포스트와 정렬합니다.

정렬이 완료되면, 디스플레이를 다음을 사용하여 고정합니다:

  1. 2× M2 나사

디스플레이가 커버에 평평하게 놓이고 디스플레이 창 안에서 중앙에 위치하도록 하여 최상의 외관을 유지하세요.

장착 후, 전면 커버 조립체는 본체에 연결되고 최종 조립을 위해 준비될 수 있습니다.




STEP 14. 디스플레이를 ESP32에 연결하기


디스플레이를 ESP32에 연결하기


디스플레이를 ESP32에 연결하기


디스플레이를 ESP32에 연결하기


디스플레이를 ESP32에 연결하기


디스플레이를 ESP32에 연결하기


이 단계는 GDI (일반 디스플레이 인터페이스) 커넥터 덕분에 전체 빌드에서 가장 쉬운 단계 중 하나입니다. 이 커넥터는 디스플레이와 FireBeetle ESP32-C6에서 사용됩니다.

디스플레이와 함께 제공된 GDI 케이블을 가져와 한쪽 끝을 디스플레이에 연결하고 다른 쪽 끝을 ESP32-C6의 GDI 포트에 연결하기만 하면 됩니다.

전원과 통신 신호가 이 단일 케이블을 통해 전달되므로 추가 배선이 필요하지 않습니다.

케이블을 연결하기 전에 커넥터 방향을 주의 깊게 확인하고 참조 이미지와 비교하세요. 케이블을 잘못 연결하면 디스플레이가 제대로 작동하지 않을 수 있습니다.




STEP 15. 최종 조립


최종 조립


최종 조립


최종 조립


최종 조립


최종 조립


최종 조립


최종 조립


최종 조립


최종 조립


모든 전자 장치가 설치되고 테스트가 완료되었으므로, 이제 인클로저를 닫고 조립을 완료할 시간입니다.

LiPo 배터리를 하우징에 조심스럽게 넣으세요. 인클로저가 닫힐 때 배선이 끼이지 않도록 깔끔하게 정리하세요.

다음으로, 앞면 커버를 하우징 위에 놓고 다음 사항을 확인하세요:

  1. 두 부분 사이에 배선이 끼어 있지 않다.
  2. 디스플레이 케이블이 안전하게 배치되어 있다.
  3. 인코더 샤프트가 커버 개구부를 깨끗하게 통과한다.

모든 것이 정렬되면, 다음을 사용하여 커버를 고정하세요:

  1. 3× M3 나사

커버의 뒷면에서 나사를 삽입하고 인클로저가 단단히 닫힐 때까지 고르게 조입니다.

조립 후, 3D 프린트된 인코더 노브를 인코더 샤프트에 설치하고 부드럽게 회전하는지 확인하세요.

이제 귀하의 DIY Pathfinder가 완전히 조립되었으며, 전원 켜기, 구성 및 현장 테스트를 준비할 수 있습니다.




STEP 16. 펌웨어 플래싱


펌웨어 플래싱


펌웨어 플래싱


펌웨어 플래싱


펌웨어 플래싱


펌웨어 플래싱


하드웨어 조립이 완료되면, 마지막 단계는 ESP32-C6에 Pathfinder 펌웨어를 업로드하는 것입니다.

Pathfinder 펌웨어 다운로드:

코드를 업로드하기 전에 GitHub에서 최신 Pathfinder 펌웨어를 다운로드하세요: Pathfinder GitHub 저장소

  1. zip 파일을 다운로드합니다.
  2. ZIP 파일을 추출합니다.
  3. Arduino IDE에서 Pathfinder.ino 프로젝트를 엽니다.


Arduino IDE 설치: 아직 설치하지 않았다면, 공식 웹사이트에서 Arduino IDE를 다운로드하고 설치하세요:

  1. Arduino IDE 다운로드
  2. 기본 설정을 사용하여 설치합니다.

ESP32 보드 패키지 설치:

  1. Arduino IDE를 엽니다.
  2. 파일 → 환경설정으로 이동합니다.
  3. 추가 보드 관리자 URL에 다음을 추가합니다:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
  1. 확인을 클릭합니다.
  2. 도구 → 보드 → 보드 관리자로 이동합니다.
  3. ESP32를 검색합니다.
  4. Espressif Systems의 ESP32를 설치합니다.

필요한 라이브러리 설치

DFRobot GNSS 라이브러리:

  1. 라이브러리 관리자를 엽니다.
  2. 스케치 → 라이브러리 포함 → 라이브러리 관리
  3. 다음 검색:
DFRobot_GNSS
  1. 설치를 클릭합니다.

DFRobot GDL 디스플레이 라이브러리:

다음 검색:

DFRobot_GDL

그리고 최신 버전을 설치합니다.

BMM350 라이브러리 설치:

BMM350 라이브러리는 현재 수동으로 설치해야 합니다.

  1. DFRobot BMM350 GitHub 저장소를 방문하세요: DFRobot BMM350 GitHub 저장소
  2. 코드 → ZIP 다운로드를 클릭합니다.
  3. Arduino IDE에서 다음으로 이동합니다: 스케치 → 라이브러리 포함 → .ZIP 라이브러리 추가
  4. 다운로드한 ZIP 파일을 선택합니다.

이제 라이브러리가 Arduino 설치에 추가됩니다.

올바른 보드 선택:

FireBeetle 2 ESP32-C6를 USB Type-C 케이블을 사용하여 컴퓨터에 연결합니다.

그런 다음 Arduino IDE를 구성합니다:

  1. 보드: DFRobot FireBeetle 2 ESP32-C6
  2. 포트: 장치에 해당하는 COM 포트를 선택합니다.


  1. 업로드를 클릭합니다.
  2. 컴파일 및 플래싱이 완료될 때까지 기다립니다.

업로드가 성공적으로 완료되면, Pathfinder가 자동으로 재부팅되고 시작 화면이 표시됩니다.




STEP 17. 액세스 포인트에 연결하고 패스파인더를 구성합니다.


액세스 포인트에 연결하고 패스파인더를 구성합니다.


액세스 포인트에 연결하고 패스파인더를 구성합니다.


액세스 포인트에 연결하고 패스파인더를 구성합니다.


액세스 포인트에 연결하고 패스파인더를 구성합니다.


펌웨어 플래싱이 완료되었으니 Pathfinder를 구성할 차례입니다.

Pathfinder Wi-Fi 네트워크에 연결하기:

전원 스위치를 사용하여 Pathfinder의 전원을 켭니다.

부팅이 완료되면 장치가 자체 Wi-Fi 액세스 포인트를 생성합니다.

  1. 휴대폰이나 컴퓨터에서 Wi-Fi 설정을 엽니다.
  2. Pathfinder 핫스팟을 찾습니다.
  3. 다음 비밀번호를 사용하여 연결합니다:
X123456789


구성 포털 열기:

Pathfinder 네트워크에 연결한 후 웹 브라우저를 열고 다음 주소로 이동합니다:

192.168.0.4

Pathfinder 구성 인터페이스가 표시됩니다.


웨이포인트 추가:

웹 인터페이스에서 저장하려는 각 위치의 세부 정보를 입력합니다:

  1. 위치 이름
  2. 위도
  3. 경도

다음을 클릭하여 저장 웨이포인트를 저장합니다.

여러 위치를 추가할 수 있으며, 이후 Pathfinder에서 직접 사용할 수 있습니다.


시간대 설정:

웹 인터페이스에는 시간대 선택 메뉴도 있습니다.

다음과 같이 합니다:

  1. 현지 시간대를 선택합니다.
  2. 다음을 클릭하여 저장합니다.

이렇게 하면 장치에 올바른 현지 시간이 표시됩니다.


영구 저장:

모든 웨이포인트 및 시간대 정보는 ESP32의 비휘발성 저장소(NVS)에 저장됩니다.

따라서 장치의 전원을 꺼도 설정이 저장된 상태로 유지됩니다.

저장된 위치는 자동으로 로드되어 Pathfinder 메뉴 시스템에서 사용할 수 있게 됩니다.


나침반 보정:

Pathfinder를 내비게이션에 사용하기 전에 나침반을 보정해야 합니다.

보정 시작

  1. 인코더 노브를 두 번 클릭하여 메뉴를 엽니다.
  2. 로터리 인코더를 사용하여 스크롤합니다.
  3. 다음을 선택합니다: 설정.
  4. 다음을 엽니다: 나침반 보정.

보정 과정에서 다음 8개 나침반 방향을 안내합니다:

  1. 북쪽(N)
  2. 북동쪽(NE)
  3. 동쪽(E)
  4. 남동쪽(SE)
  5. 남쪽(S)
  6. 남서쪽(SW)
  7. 서쪽(W)
  8. 북서쪽(NW)

각 방향에서:

  1. 표시된 방향을 향하도록 실제로 몸을 돌립니다.
  2. 인코더 노브를 눌러 측정값을 기록합니다.
  3. 다음 방향으로 이동하여 반복합니다.

이는 일반적으로 한 번만 수행하는 설정 이지만, 장치를 새로운 환경으로 이동하거나 나침반 성능이 변경되는 경우에는 다시 수행해야 합니다.


문제 해결:

내비게이션 화살표가 목적지를 정확하게 가리키지 않는 경우:

  1. 나침반 보정 과정을 반복합니다.
  2. 각 보정 단계에서 올바른 방향을 향하고 있는지 확인합니다.
  3. 보정하는 동안 장치를 큰 금속 물체나 강한 자기장으로부터 멀리 둡니다.


내비게이션 시작:

위치를 추가하고 나침반을 보정한 후:

  1. 인코더 노브를 두 번 클릭하여 메뉴를 엽니다.
  2. 저장된 위치를 선택합니다.

이제 기본 화면에 다음이 표시됩니다:

  1. 선택한 목적지까지의 거리
  2. 목표를 가리키는 방향 화살표
  3. 추가 내비게이션 정보

이동하면 거리가 실시간으로 업데이트되고, 나침반이 선택한 웨이포인트를 향하도록 내비게이션 화살표를 계속 가리킵니다.




STEP 18. 패스파인더 코드 작동 방식


패스파인더 코드 작동 방식


Pathfinder 펌웨어는 GNSS 수신기와 BMM350 자력계의 데이터를 결합하여 실시간 웨이포인트 내비게이션 시스템을 구축합니다.

높은 수준에서 펌웨어는 다음 다섯 가지 주요 작업을 수행합니다:

1. GNSS 데이터 읽기

GNSS 모듈은 다음 정보를 지속적으로 제공합니다:

  1. 위도
  2. 경도
  3. 고도
  4. 속도
  5. 위성 수
  6. UTC 시간

이 정보는 지구상 어디에서든 장치의 현재 위치를 확인하는 데 사용됩니다.

2. 저장된 웨이포인트 불러오기

장치가 시작되면 ESP32의 비휘발성 저장소(NVS)에서 저장된 모든 웨이포인트와 설정을 불러옵니다.

여기에는 다음이 포함됩니다:

  1. 저장된 위치
  2. 위도 및 경도 값
  3. 선택한 시간대
  4. 장치 설정

데이터가 NVS에 저장되므로 장치의 전원이 꺼진 후에도 계속 사용할 수 있습니다.

3. 거리 및 방위 계산

웨이포인트를 선택하면 펌웨어는 다음을 비교합니다:

  1. 현재 GNSS 좌표
  2. 목적지 좌표

다음 Haversine 공식을 사용하여 지구 표면에서 두 지점 사이의 최단 거리를 계산합니다.

코드는 또한 방위를 계산하며, 이는 진북에 대한 목적지의 방향을 나타냅니다.

결과는 다음과 같습니다:

  1. 목표까지의 거리
  2. 목표 방향

4. 자력계 읽기

BMM350은 지구의 자기장을 지속적으로 측정합니다.

펌웨어는 이러한 측정값을 사용하여 장치의 현재 진행 방향을 계산합니다.

GNSS 진행 방향과 달리 나침반은 사용자가 가만히 서 있어도 계속 작동합니다.

따라서 Pathfinder는 자신이 어느 방향을 향하고 있는지 항상 알 수 있습니다.

5. 내비게이션 화살표 그리기

최종 내비게이션 화살표는 다음을 사용하여 계산됩니다:

Arrow Angle = Target Bearing - Current Heading

목적지가 바로 앞에 있으면 화살표는 정위쪽을 가리킵니다.

목적지가 왼쪽이나 오른쪽에 있으면 화살표가 그에 맞게 회전합니다.

이 과정은 지속적으로 반복되어 실시간 내비게이션 안내를 제공합니다.

나침반 방향 문제 디버깅

자력계를 인클로저 내부에 장착한 방식에 따라 나침반 방향이 예상된 방향과 일치하지 않을 수 있습니다.


일반적인 증상은 다음과 같습니다:

  1. 화살표가 반대 방향을 가리킴
  2. 화살표가 좌우 반전되어 보임
  3. 북쪽과 남쪽이 뒤바뀜
  4. 동쪽과 서쪽이 뒤바뀜

이를 수정하기 위해 Pathfinder에는 두 가지 나침반 구성 설정이 포함되어 있습니다:

// ==========================================
// COMPASS ORIENTATION SETTINGS
// ==========================================
int heading_offset = 180;
bool reverse_compass = true;


heading_offset: 이 값은 나침반의 전체 진행 방향을 회전시킵니다.

예:

int heading_offset = 0;

회전을 적용하지 않음.

int heading_offset = 90;

나침반을 90도 회전.

int heading_offset = 180;

나침반을 180도 회전.

나침반이 일정한 크기만큼 지속적으로 잘못된 방향을 가리키면 이 값을 조정합니다.

일반적인 값:

  1. 90°
  2. 180°
  3. 270°


reverse_compass: 이 설정은 나침반 회전 방향을 반대로 바꿉니다.

bool reverse_compass = false;

정상 작동.

bool reverse_compass = true;

반전된 진행 방향 계산.


다음과 같은 경우 사용합니다:

  1. 왼쪽으로 돌면 화살표가 오른쪽으로 움직임.
  2. 오른쪽으로 돌면 화살표가 왼쪽으로 움직임.
  3. 나침반 동작이 좌우 반전된 것처럼 보임.

빠른 디버깅 절차

펌웨어를 업로드한 후:


테스트 1: 북쪽을 향하기

휴대전화의 나침반을 사용하여 북쪽을 향합니다.

Pathfinder의 진행 방향에는 대략 다음 값이 표시되어야 합니다:

또는

360°


테스트 2: 시계 방향으로 회전하기

시계 방향으로 천천히 돕니다.

진행 방향 값이 부드럽게 증가해야 합니다:

0° → 90° → 180° → 270°

대신 값이 감소하면 다음을 시도합니다:

reverse_compass = !reverse_compass;


테스트 3: 방향 확인

북쪽이 남쪽으로 표시되면:

heading_offset = 180;

북쪽이 동쪽으로 표시되면:

heading_offset = 90;

북쪽이 서쪽으로 표시되면:

heading_offset = 270;


이 두 설정을 사용하면 하드웨어를 변경하지 않고도 다양한 자력계 장착 방향에 맞게 펌웨어를 보정할 수 있습니다.




STEP 19. 결론


결론


결론


Pathfinder를 구축하는 것은 임베디드 전자기기, GNSS 위치 측정, 디지털 나침반, 무선 구성, 펌웨어 개발, 3D 디자인, 제품 프로토타입 제작을 하나의 프로젝트로 결합한 매혹적인 여정이었습니다.

단순한 질문으로 시작된 이 프로젝트는 — "목적지까지의 거리와 방향을 지속적으로 보여주는 장치를 만들 수 있을까?" — 결국 사용자를 실시간으로 미리 정의된 위치로 안내할 수 있는 완전한 기능을 갖춘 휴대용 웨이포인트 내비게이터가 되었습니다.

이 프로젝트에서 가장 매혹적이었던 점은 그 개념 자체가 새로운 것이 아니라는 사실을 발견한 것이었습니다. 이를 구축하는 동안, 웨이포인트 내비게이터와 유사한 내비게이션 보조 장치가 스마트폰과 구글 맵이 우리의 일상에 들어오기 수십 년 전부터 존재했다는 것을 알게 되었습니다.

그 시대의 엔지니어와 발명가들에 대한 경외심이 생겼습니다. 그들은 제한된 도구와 제한된 컴퓨팅 파워, 그리고 오늘날 우리가 가진 소프트웨어 생태계, 개발 프레임워크, AI 어시스턴트, 자원 없이도 놀라운 성과를 이루어냈습니다.

현대 하드웨어, 오픈 소스 라이브러리, 그리고 약간의 코딩으로, 저는 단 이틀 만에 유사한 시스템을 재현할 수 있었습니다. 이 깨달음은 혁신이 항상 완전히 새로운 것을 발명하는 것을 의미하지는 않는다는 것을 상기시켜 주었습니다. 때때로 최고의 아이디어는 오래된 개념을 재방문하고 현대 기술로 재구성하는 데서 나옵니다.

그 과정에서 저는 GNSS 시스템, 내비게이션 수학, 자기계측기 보정, 임베디드 사용자 인터페이스, 프로토타입을 휴대용 장치로 전환하는 데 따른 실질적인 도전 과제에 대해 더 많이 배웠습니다.

이 프로젝트에서 제가 얻은 가장 큰 교훈은 간단합니다:

과거의 개척자처럼 생각하되, 오늘날의 도구로 구축하라.

이 프로젝트가 여러분이 내비게이션 기술을 탐구하고, 새로운 것을 배우며, 어쩌면 여러분만의 Pathfinder 버전을 만드는 데 영감을 주기를 바랍니다. 만약 그렇게 하신다면, 여러분이 추가한 개선 사항과 아이디어를 보고 싶습니다.

행복한 구축 되세요!


원문: https://www.instructables.com/Pathfinder-a-DIY-GNSS-Waypoint-Navigation-Device/

좋아요 0
게시판

회사명 공방유니언 주소 각 공방 주소 참조
사업자 등록번호 0000 대표 공방유니언 전화 019-60105846 팩스 0000 이메일 gongbangunion@gmail.com
통신판매업신고번호 0000 개인정보관리책임자 공방유니언
Copyright © 2017 공방유니언. All Rights Reserved.