본문 바로가기
ESP32

ESP32와 RYS352A GPS 모듈을 이용한 자연 산책로 매퍼

by 모빌리티키즈 2024. 2. 3.
728x90

안녕하세요! 

모빌리티키즈 입니다.

오늘은 저의 새로운 프로젝트에 대해 설명드리려고 합니다. GPS 모듈을 활용한 작은 장치인데요, 이 장치는 야외에서 자연 산책로를 기록하기 위해 만들어졌습니다. 저는 기술과 야외 활동을 모두 좋아해서 두 가지를 결합시킬 수 있는 이런 프로젝트는 정말 흥미롭게 다가왔습니다.

이 GPS 매퍼의 핵심은 ESP32 마이크로컨트롤러입니다. 이 마이크로컨트롤러에는 Reyax사의 RYS352A GNSS 모듈이 연결되어 있으며, 별도의 하드웨어 시리얼 포트의 TX 및 RX 연결로 구성되어 있습니다. 이 장치는 3.3볼트 전원으로 작동하며, 데이터 저장을 위해 microSD 카드를 내장한 데이터 로깅 쉴드를 사용합니다. 데이터 저장은 SPI 인터페이스를 통해 이루어지며, 사용자와의 상호작용을 위해 GPS 트랙 녹화 중임을 시각적으로 알려주는 LED와 녹화를 시작하거나 중지할 수 있는 푸시 버튼이 설치되어 있습니다. 산책로는 각 녹화 세션별로 별도의 파일로 microSD 카드에 깔끔하게 저장되어 있어, 현장에서 데이터를 쉽게 정리하고 검색할 수 있습니다.


이제 프로토타입을 손에 쥐고, 어떻게 만들고 작동하는지 설명드리겠습니다.

공급

Reyax에서 사용하는 RYS352A GNSS 모듈은 다음 링크에서 찾을 수 있습니다.

프로젝트에 사용되는 기타 구성 요소 및 재료:

위의 링크에서 구매하면 추가 비용 없이 내 채널을 지원할 수 있습니다!

1단계: RYS352A GPS 모듈 배선

이 GPS 모듈을 연결하는 것은 매우 간단하며 제가 작업한 가장 쉬운 모듈 중 하나라고 말해야 합니다. 이 프로젝트에서는 GPS, GLONASS, Galileo 및 BeiDou와 같은 다양한 위성 시스템을 추적할 수 있는 소형 다중 성좌 GNSS 모듈인 Reyax RYS352A 모듈을 사용하고 있습니다. 크기가 작고 안테나가 내장되어 있어 이와 같은 휴대용 실외 프로젝트에 매우 적합합니다.

ESP32에 연결하려면 먼저 모듈의 TX(전송) 핀을 하드웨어 직렬 연결(이 경우 핀 16)에 할당된 ESP32의 RX(수신) 핀 중 하나에 연결합니다. 그런 다음 모듈의 RX 핀을 ESP32(핀 17)의 해당 TX 핀에 연결하여 장치 간에 양방향 통신을 생성합니다. 모듈에 전원을 공급하는 것은 간단합니다. 모듈의 작동 전압에 맞는 ESP3.3에서 안정적인 32볼트 연결만 필요합니다.

GNSS 모듈을 연결하는 방법에는 여러 가지가 있습니다: 뒷면에 Molex 커넥터가 있지만 저는 장치에 견고하고 영구적으로 부착하기 위해 헤더 핀을 납땜하기로 선택합니다. GPS 모듈에는 실시간 클럭을 계속 실행하기 위한 통합 배터리와 두 개의 LED(하나는 마이크로 컨트롤러와의 데이터 통신을 표시하고 다른 하나는 PPS 신호의 존재를 나타냅니다)가 있습니다. 이러한 피드백 요소는 실제 시험을 위해 야외로 나가기 전에 기능을 테스트하고 적절한 설정을 확인할 때 매우 유용합니다.

2단계: MicroSD 카드 모듈 배선

microSD 카드 모듈은 우리가 수집한 지리 데이터를 저장하는 데 사용하기 때문에 프로젝트의 중요한 부분입니다. 이 모듈은 사전 납땜된 핀 헤더와 함께 제공되므로 ESP의 SPI 인터페이스에 쉽게 연결할 수 있습니다.

microSD 카드 모듈에서 사용하는 통신 프로토콜인 SPI(Serial Peripheral Interface) 연결의 경우 ESP32의 다음 핀을 데이터 로깅 실드의 해당 핀에 연결합니다.

  • ESP32(핀 19)의 MISO(Master In Slave Out)는 쉴드의 MISO로 이동합니다.
  • ESP32(핀 23)의 MOSI(Master Out Slave In)를 쉴드의 MOSI에 연결합니다.
  • 쉴드의 ESP32(핀 18)에서 SCK(직렬 클럭).
  • ESP32(핀 5)의 지정된 GPIO 핀에서 쉴드의 CS로 CS(칩 선택).

CS 핀은 데이터를 쓰거나 읽어야 할 때 microSD 카드 모듈을 활성화하기 때문에 특히 중요합니다. 또한 쉴드에 전원을 공급해야 하므로 ESP5의 32V 및 GND 핀을 데이터 로깅 쉴드의 해당 5V 및 GND에 연결합니다. 일반적으로 모듈 레귤레이터는 microSD 카드의 손상을 방지하기 위해 필요한 3.3V까지의 변환을 처리합니다.

온보드 레귤레이터와 함께 제공되지 않는 모듈 변형 중 하나가 있는 경우 대신 3.3V에서 전원을 공급해야 합니다.

3단계: LED 및 푸시 버튼 배선

GPS 추적 장치를 사용자 친화적으로 만들기 위해 LED 표시기와 푸시 버튼과 같은 간단하지만 효과적인 추가 기능을 통합했습니다. 이러한 구성 요소는 시각적 피드백을 제공하고 녹음 프로세스를 제어하며, 이는 현장에 있을 때 특히 유용합니다.

연결하는 방법은 다음과 같습니다.

녹음 LED(빨간색)의 경우 ESP32의 디지털 핀을 선택하여 제어했습니다. LED가 소손되는 것을 방지하기 위해 일반적으로 약 220옴의 전류 제한 저항을 통해 LED의 양극, 더 긴 다리(양극)를 이 핀에 연결합니다. LED의 음의 짧은 다리(음극)는 ESP32의 접지 핀 중 하나로 이동합니다. 장치가 녹음 중임을 나타내고 싶을 때 선택한 핀에 HIGH 신호를 보내기만 하면 LED가 켜집니다.

푸시 버튼을 통합하여 장치 소프트웨어와 상호 작용하거나 컴퓨터에 연결할 필요 없이 녹음을 시작 및 중지할 수 있습니다. 푸시 버튼을 배선하기 위해 ESP10의 32k 풀다운 저항이 있는 디지털 핀 세트에 한쪽을 연결합니다. 이 경우 핀 25이지만 다른 디지털 입력으로 변경할 수 있습니다. 버튼의 다른 쪽은 3.3V에 연결됩니다. 버튼을 누르면 디지털 핀이 3.3V로 당겨지기 때문에 HIGH가 표시되며 녹음 상태를 전환하여 이 변화에 반응하도록 ESP32를 프로그래밍했습니다.

장치의 상태를 더 명확하게 표시하기 위해 GPS 수정 표시기 역할을 하는 다른 LED(녹색)를 추가했습니다. 이 LED는 자체 디지털 핀(핀 12)과 전류 제한 저항을 사용하여 첫 번째 LED와 동일한 방식으로 연결됩니다. GPS 수정이 이루어지면 불이 들어와 위치 데이터가 정확하고 기록할 준비가 되었음을 확인할 수 있습니다.

4단계: 프로젝트 PCB 만들기

브레드보드에서 내 프로젝트의 기능에 만족하면 인쇄 회로 기판 또는 PCB로 전송하여 보다 영구적이고 견고하게 만들 때라는 것을 알고 있습니다. 다소 깨지기 쉬운 브레드보드 설정에서 한 단계 더 발전한 것으로 장치의 내구성과 휴대성을 높여줍니다.

여기서 가장 좋은 방법은 특수 PCB를 설계하고 PCBWay와 같은 전문 서비스에서 제조하는 것이지만 제 경우에는 대신 프로토타이핑 PCB에서 프로젝트를 구축하기로 결정했습니다.

먼저 각 구성 요소의 헤더를 납땜 한 다음 전선을 사용하여 앞에서 설명한대로 전기 연결을 만들었습니다. 이것은 맞춤형 PCB만큼 전문적이지는 않지만 일회성 프로토타입 제작에는 충분합니다.

5단계: 디바이스에서 실행 중인 Arduino 코드

ESP32 프로그래밍은 GPS 추적기를 시작하고 실행하는 데 필수적인 부분입니다. 저는 Arduino로 코드를 작성했는데, 이 플랫폼은 매우 사용자 친화적이고 다재다능합니다. 따라하고 GPS 매퍼를 제작하는 경우 전체 코드는 내 웹 사이트의 기사에서 사용할 수 있습니다.

https://www.tastethecode.com/trail-mapping-with-gps-esp32-and-microsd-card

 

코드가 수행하는 작업의 기본 사항을 살펴보겠습니다.

1. 코드는 TinyGPS++ 라이브러리를 사용하여 GPS 데이터를 효율적으로 구문 분석하는 데 중점을 둡니다. 경도, 위도 및 고도와 같은 복잡한 GPS 정보 수신을 단순화합니다.

2. ESP32의 UART 직렬 포트 중 하나를 통해 GPS 모듈과의 통신을 초기화하고 SPI 프로토콜을 사용하여 microSD 카드와의 통신을 설정합니다.

3. 푸시 버튼의 상태가 지속적으로 모니터링됩니다. 상태에 따라 녹화가 시작되거나 중지됩니다. 이는 연결된 인터럽트 서비스 루틴을 통해 관리되며, 이를 통해 즉각적이고 신뢰할 수 있는 응답을 얻을 수 있습니다.

4. 새 트랙을 시작하려면 microSD 카드에서 새 파일을 열어야 하며, 여기에서 파일 이름을 점진적으로 할당합니다. 초기 파일 콘텐츠는 Google 어스와 같은 소프트웨어에서 지리 시각화에 사용되는 KML(Keyhole Markup Language) 형식을 따릅니다.

5. 위치를 기록하면 KML 형식의 현재 위도, 경도 및 고도가 있는 줄이 열린 파일에 추가됩니다.

6. 녹화가 완료되거나 중지하기로 결정한 경우 KML 형식에 필요한 닫기 태그로 파일을 마무리하고 SD 카드에서 파일을 닫습니다.

이 코드는 기록을 올바르게 종료하기 위한 'finalizeFile()', 다음 파일 이름을 동적으로 계산하기 위한 'getNewFileName()', 현재 파일에 데이터를 쉽게 추가하기 위한 'writeToFile()' 등 다양한 기능을 사용합니다.

실제 코드에는 GPS 모듈, SD 카드, LED, 버튼 및 상태 및 데이터를 관리하는 데 필요한 변수에 대해 정의된 핀이 표시됩니다. 처음에는 어려워 보일 수 있지만 하나씩 분석하기 시작하면 하드웨어를 제어하고 데이터를 관리하는 논리적 순서를 따른다는 것을 알 수 있습니다.

코드를 자세히 살펴보고 알고 싶은 특정 사항이 있거나 이 프로젝트를 복제하는 동안 장애가 발생하면 주석에 질문하십시오. 실용적인 것을 만들고, 배우고, 그 과정에서 재미를 느끼는 것이 중요하다는 것을 기억하십시오.

6단계: 트래커 테스트

모든 것을 코딩하고 조립한 후 장치를 테스트하는 것은 진실의 순간입니다. 그래서 새로 만든 GPS 매퍼로 무장하고 야외로 나가 말 그대로 야생에서 어떻게 작동하는지 확인하기로 결정했습니다.

현장 테스트를 위해 저는 마을 근처의 언덕을 테스트 장소로 선택했습니다. 버튼을 누르자 LED가 켜지고 첫 번째 트레일을 기록하기 시작했습니다. 상쾌한 겨울 공기가 내 폐를 가득 채웠고, 나는 GPS 매퍼를 팔에 끼고 터벅터벅 걸어갔다. 추가한 새로운 녹색 LED를 면밀히 모니터링하여 장치가 실제로 유효한 위치를 캡처하고 있음을 확인했습니다.

추적기의 정확성을 테스트하기 위해 멋진 하이킹을 한 후, 나는 내 노력의 결실을 보고 싶은 열망으로 집으로 돌아왔다. GPS 추적기에서 microSD 카드를 조심스럽게 빼내고 어댑터에 밀어 넣은 다음 노트북에 삽입했습니다. 데이터가 드디어 내 길을 밝혀줄 수 있었다.

Google 어스를 열고 KML 파일을 가져오면 기록된 트레일이 화면에 생생하게 나타나는 것을 볼 수 있었습니다. 3D 뷰는 내가 건넜던 지형, 꾸준한 오르막길, 얼음 주위를 탐색해야 하는 지점을 보여주었습니다. 후속 파일을 가져와서 모험 중에 취한 전체 경로를 스케치하여 여러 세그먼트의 전체 매핑된 여행을 만들었습니다.

트레일은 위성 사진과 대조되어 선명하게 보였고 실질적인 성취감을 느꼈습니다. 이 장치는 테스트에서 살아남았을 뿐만 아니라 세 가지 다른 트레일을 문제 없이 캡처하는 데 탁월했습니다. DIY 노력이 어떻게 실용적이고 즐거운 결과를 낳을 수 있는지 완벽하게 보여주었습니다. 이 성공적인 테스트를 통해 문서화된 경로에서 등산객을 안내하는 것부터 새로운 트레일을 발견하고 아웃도어 애호가 커뮤니티와 공유하는 것까지 다양한 응용 프로그램을 구상할 수 있었습니다.

7단계: 다음 단계 및 향후 모험

현장 테스트의 성공에 따라 이 프로젝트를 더 발전시키기 위한 몇 가지 다음 단계가 있습니다. 먼저 효율성을 위해 코드를 좀 더 구체화하고 몇 가지 기능을 더 추가하거나 모바일 앱과 통합할 계획입니다. 또한 장치를 위한 맞춤형 인클로저를 설계하여 비바람에 견디고 실외 친화적으로 만들 수 있는 좋은 기회라고 생각합니다.

또 다른 단계는 수집된 트레일 데이터를 커뮤니티와 공유하는 것입니다. 상세한 트레일 지도를 통해 지역 하이킹 데이터베이스에 기여하거나 이 지역의 자연의 아름다움을 탐험하고자 하는 방문객을 위한 가이드를 만들 수 있습니다.

오늘의 기술과 자연의 완벽한 융합에 활력을 느끼지 않을 수 없습니다. 전자 장치와 코드의 간단한 번들인 GPS 매퍼는 야생을 탐험하고 기록하는 새로운 방법을 열었습니다. 열렬한 등산객이든, 캐주얼 워커이든, 새로운 프로젝트를 찾고 있는 기술 애호가이든, 이 연습이 야외 경험을 풍부하게 하는 무언가를 만드는 데 영감을 주기를 바랍니다.

728x90