6.8 KiB
GPS 데이터 읽기 - Wio Terminal
이 강의의 이 부분에서는 Wio Terminal에 GPS 센서를 추가하고 데이터를 읽는 방법을 배웁니다.
하드웨어
Wio Terminal에는 GPS 센서가 필요합니다.
사용할 센서는 Grove GPS Air530 센서입니다. 이 센서는 여러 GPS 시스템에 연결하여 빠르고 정확한 위치를 제공합니다. 센서는 두 부분으로 구성되어 있습니다 - 센서의 핵심 전자 부품과 얇은 선으로 연결된 외부 안테나로, 위성에서 오는 전파를 수신합니다.
이 센서는 UART 센서로, UART를 통해 GPS 데이터를 전송합니다.
GPS 센서 연결하기
Grove GPS 센서를 Wio Terminal에 연결할 수 있습니다.
작업 - GPS 센서 연결하기
GPS 센서를 연결하세요.
-
Grove 케이블의 한쪽 끝을 GPS 센서의 소켓에 삽입하세요. 케이블은 한 방향으로만 들어갑니다.
-
Wio Terminal이 컴퓨터나 다른 전원 공급 장치에 연결되지 않은 상태에서, Grove 케이블의 다른 쪽 끝을 Wio Terminal 화면을 기준으로 왼쪽에 있는 Grove 소켓에 연결하세요. 이 소켓은 전원 버튼에 가장 가까운 소켓입니다.
-
GPS 센서를 배치할 때, 연결된 안테나가 하늘을 볼 수 있는 위치에 두세요. 이상적으로는 창문 옆이나 야외에 두는 것이 좋습니다. 안테나에 장애물이 없을수록 신호가 더 잘 잡힙니다.
-
이제 Wio Terminal을 컴퓨터에 연결할 수 있습니다.
-
GPS 센서에는 두 개의 LED가 있습니다 - 데이터가 전송될 때 깜박이는 파란색 LED와 위성에서 데이터를 수신할 때 매초 깜박이는 녹색 LED입니다. Wio Terminal에 전원을 켰을 때 파란색 LED가 깜박이는지 확인하세요. 몇 분 후 녹색 LED가 깜박이기 시작합니다. 그렇지 않다면 안테나의 위치를 조정해야 할 수 있습니다.
GPS 센서 프로그래밍
이제 Wio Terminal을 프로그래밍하여 연결된 GPS 센서를 사용할 수 있습니다.
작업 - GPS 센서 프로그래밍
장치를 프로그래밍하세요.
-
PlatformIO를 사용하여 새로운 Wio Terminal 프로젝트를 생성하세요. 이 프로젝트의 이름을
gps-sensor
로 지정하세요.setup
함수에 직렬 포트를 설정하는 코드를 추가하세요. -
main.cpp
파일 상단에 다음 포함 지시문을 추가하세요. 이 코드는 UART용 왼쪽 Grove 포트를 설정하는 함수가 포함된 헤더 파일을 포함합니다.#include <wiring_private.h>
-
그 아래에 UART 포트와의 직렬 포트 연결을 선언하는 다음 코드를 추가하세요:
static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
-
내부 신호 핸들러를 이 직렬 포트로 리디렉션하는 코드를 추가해야 합니다.
Serial3
선언 아래에 다음 코드를 추가하세요:void SERCOM3_0_Handler() { Serial3.IrqHandler(); } void SERCOM3_1_Handler() { Serial3.IrqHandler(); } void SERCOM3_2_Handler() { Serial3.IrqHandler(); } void SERCOM3_3_Handler() { Serial3.IrqHandler(); }
-
setup
함수에서Serial
포트를 설정한 아래에, UART 직렬 포트를 설정하는 다음 코드를 추가하세요:Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000);
-
setup
함수에서 이 코드 아래에 Grove 핀을 직렬 포트에 연결하는 다음 코드를 추가하세요:pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
-
loop
함수 전에 GPS 데이터를 직렬 모니터로 전송하는 다음 함수를 추가하세요:void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); }
-
loop
함수에서 UART 직렬 포트에서 데이터를 읽고 이를 직렬 모니터에 출력하는 다음 코드를 추가하세요:while (Serial3.available() > 0) { printGPSData(); } delay(1000);
이 코드는 UART 직렬 포트에서 데이터를 읽습니다.
readStringUntil
함수는 종료 문자(이 경우 새 줄 문자)까지 읽습니다. 이는 전체 NMEA 문장을 읽습니다(NMEA 문장은 새 줄 문자로 종료됩니다). UART 직렬 포트에서 데이터를 읽을 수 있는 동안 데이터를 읽고printGPSData
함수를 통해 직렬 모니터로 전송합니다. 더 이상 읽을 데이터가 없으면loop
는 1초(1,000ms) 동안 대기합니다. -
코드를 빌드하고 Wio Terminal에 업로드하세요.
-
업로드가 완료되면 직렬 모니터를 사용하여 GPS 데이터를 확인할 수 있습니다.
> Executing task: platformio device monitor < --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $BDGSA,A,1,,,,,,,,,,,,,,,*0F $GPGSV,1,1,00*79 $BDGSV,1,1,00*68
💁 이 코드는 code-gps/wio-terminal 폴더에서 찾을 수 있습니다.
😀 GPS 센서 프로그램이 성공적으로 작동했습니다!
면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.