You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ko/3-transport/lessons/1-location-tracking/single-board-computer-gps-d...

3.5 KiB

GPS 데이터 디코딩 - 가상 IoT 하드웨어와 Raspberry Pi

이 수업의 이 부분에서는 Raspberry Pi 또는 가상 IoT 장치의 GPS 센서에서 읽은 NMEA 메시지를 디코딩하고 위도와 경도를 추출합니다.

GPS 데이터 디코딩

직렬 포트에서 읽은 원시 NMEA 데이터를 오픈 소스 NMEA 라이브러리를 사용하여 디코딩할 수 있습니다.

작업 - GPS 데이터 디코딩

장치를 프로그래밍하여 GPS 데이터를 디코딩하세요.

  1. gps-sensor 앱 프로젝트를 열지 않았다면 열어주세요.

  2. pynmea2 Pip 패키지를 설치하세요. 이 패키지는 NMEA 메시지를 디코딩하는 코드를 포함하고 있습니다.

    pip3 install pynmea2
    
  3. app.py 파일의 import 섹션에 다음 코드를 추가하여 pynmea2 모듈을 가져오세요:

    import pynmea2
    
  4. print_gps_data 함수의 내용을 다음 코드로 교체하세요:

    msg = pynmea2.parse(line)
    if msg.sentence_type == 'GGA':
        lat = pynmea2.dm_to_sd(msg.lat)
        lon = pynmea2.dm_to_sd(msg.lon)
    
        if msg.lat_dir == 'S':
            lat = lat * -1
    
        if msg.lon_dir == 'W':
            lon = lon * -1
    
        print(f'{lat},{lon} - from {msg.num_sats} satellites')
    

    이 코드는 pynmea2 라이브러리를 사용하여 UART 직렬 포트에서 읽은 줄을 파싱합니다.

    메시지의 문장 유형이 GGA인 경우, 이는 위치 고정 메시지이며 처리됩니다. 위도와 경도 값은 메시지에서 읽어들여지고 NMEA (d)ddmm.mmmm 형식에서 소수점 형식으로 변환됩니다. dm_to_sd 함수가 이 변환을 수행합니다.

    그런 다음 위도의 방향을 확인하고, 위도가 남쪽인 경우 값을 음수로 변환합니다. 경도도 마찬가지로, 서쪽인 경우 음수로 변환됩니다.

    마지막으로 좌표와 위치를 얻는 데 사용된 위성 수를 콘솔에 출력합니다.

  5. 코드를 실행하세요. 가상 IoT 장치를 사용하는 경우, CounterFit 앱이 실행 중이며 GPS 데이터가 전송되고 있는지 확인하세요.

    pi@raspberrypi:~/gps-sensor $ python3 app.py 
    47.6423109,-122.1390293 - from 3 satellites
    

💁 이 코드는 code-gps-decode/virtual-device 폴더 또는 code-gps-decode/pi 폴더에서 찾을 수 있습니다.

😀 GPS 센서 프로그램과 데이터 디코딩이 성공적으로 완료되었습니다!

면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.