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/ja/3-transport/lessons/1-location-tracking/single-board-computer-gps-d...

3.8 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ファイルのインポート部分に以下のコードを追加して、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')
    

    このコードは、UARTシリアルポートから読み取った行を解析するためにpynmea2ライブラリを使用します。

    メッセージの文型がGGAの場合、これは位置固定メッセージであり、処理されます。メッセージから緯度と経度の値を読み取り、NMEA形式(d)ddmm.mmmmから10進度に変換します。この変換は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 を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。元の言語で記載された文書が公式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤認について、当方は一切の責任を負いません。