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/wio-terminal-gps-sensor.md

7.2 KiB

GPSデータを読み取る - Wio Terminal

このレッスンでは、Wio TerminalにGPSセンサーを追加し、その値を読み取ります。

ハードウェア

Wio TerminalにはGPSセンサーが必要です。

使用するセンサーはGrove GPS Air530センサーです。このセンサーは複数のGPSシステムに接続でき、迅速かつ正確な位置情報を取得できます。センサーは2つの部分で構成されており、センサーのコア電子部品と、衛星からの電波を受信するための薄いワイヤーで接続された外部アンテナがあります。

このセンサーはUARTセンサーであり、UARTを介してGPSデータを送信します。

GPSセンサーを接続する

Grove GPSセンサーはWio Terminalに接続できます。

タスク - GPSセンサーを接続する

GPSセンサーを接続します。

Grove GPSセンサー

  1. Groveケーブルの片方の端をGPSセンサーのソケットに差し込みます。ケーブルは一方向にしか差し込めません。

  2. Wio Terminalをコンピュータやその他の電源から切断した状態で、Groveケーブルのもう片方の端をWio Terminalの画面左側のGroveソケットに接続します。このソケットは電源ボタンに最も近いソケットです。

    左側のソケットに接続されたGrove GPSセンサー

  3. GPSセンサーを配置し、接続されたアンテナが空を見渡せるようにします。理想的には窓の近くや屋外に置くと良いです。アンテナに障害物がない方が信号を受信しやすくなります。

  4. Wio Terminalをコンピュータに接続します。

  5. GPSセンサーには2つのLEDがあります。青色のLEDはデータが送信されると点滅し、緑色のLEDは衛星からデータを受信すると毎秒点滅します。Wio Terminalの電源を入れた際に青色のLEDが点滅していることを確認してください。数分後に緑色のLEDが点滅します。点滅しない場合はアンテナの位置を調整する必要があるかもしれません。

GPSセンサーをプログラムする

Wio Terminalをプログラムして接続されたGPSセンサーを使用できるようにします。

タスク - GPSセンサーをプログラムする

デバイスをプログラムします。

  1. PlatformIOを使用して新しいWio Terminalプロジェクトを作成します。このプロジェクトをgps-sensorと名付けます。setup関数内にシリアルポートを設定するコードを追加します。

  2. main.cppファイルの冒頭に以下のインクルードディレクティブを追加します。これにより、左側のGroveポートをUART用に設定する関数が含まれます。

    #include <wiring_private.h>
    
  3. その下に以下のコードを追加して、UARTポートへのシリアルポート接続を宣言します。

    static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
    
  4. 内部のシグナルハンドラをこのシリアルポートにリダイレクトするコードを追加する必要があります。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();
    }
    
  5. setup関数内でSerialポートを設定した後、以下のコードを使用してUARTシリアルポートを設定します。

    Serial3.begin(9600);
    
    while (!Serial3)
        ; // Wait for Serial3 to be ready
    
    delay(1000);
    
  6. setup関数内のこのコードの下に、以下のコードを追加してGroveピンをシリアルポートに接続します。

    pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
    
  7. loop関数の前に以下の関数を追加して、GPSデータをシリアルモニターに送信します。

    void printGPSData()
    {
        Serial.println(Serial3.readStringUntil('\n'));
    }
    
  8. loop関数内に以下のコードを追加して、UARTシリアルポートからデータを読み取り、シリアルモニターに出力します。

    while (Serial3.available() > 0)
    {
        printGPSData();
    }
    
    delay(1000);
    

    このコードはUARTシリアルポートからデータを読み取ります。readStringUntil関数は終端文字この場合は改行まで読み取ります。これにより、1つのNMEA文NMEA文は改行文字で終端されますを読み取ることができます。UARTシリアルポートからデータを読み取れる間は、データを読み取り、printGPSData関数を介してシリアルモニターに送信します。データが読み取れなくなると、loop関数は1秒1,000ms遅延します。

  9. コードをビルドしてWio Terminalにアップロードします。

  10. アップロードが完了したら、シリアルモニターを使用して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 を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された原文が公式な情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の使用に起因する誤解や誤認について、当方は一切の責任を負いません。