M5StackでGPSトラッカー

GPS tracker ・ GPS追踪

M5Stack Core2 に GPS モジュールを接続して現在位置を記録・追跡します。

この構成をエディタで開く・編集する →

部品リスト(BOM)

部品役割ポートリンク・価格
M5Stack Core2Controllergrove_i2c, grove_analog, grove_uart, mbusofficial page — $46.9
Unit GPS v1.1GPS modulegrove_uartofficial page — $9.95

配線

作り方

M5Stack Core2とGPSユニットで作る、位置情報ロガー/トラッカーです。GPSユニットが現在の緯度・経度・時刻を取得し、Core2の画面に表示します。データはシリアル通信でやり取りし、簡単なプログラムで動作します。

  1. 部品を用意する — 用意するもの:M5Stack Core2本体、Unit GPS v1.1(GPSユニット)、Groveケーブル(青いコネクタのもの、通常ユニットに付属)、Core2とパソコンをつなぐUSB-Cケーブル。
  2. GroveケーブルでGPSユニットをつなぐ — GPSユニットはUART(シリアル)通信を使います。Groveケーブルの青いコネクタをGPSユニットに差し込みます。もう一端をCore2の青いPort.C(UARTポート)に差し込みます。コネクタは一方向にしか入らないので、無理に押し込まないでください。
  3. GPSユニットのアンテナを上に向けて設置する — GPSユニットの上面(セラミックアンテナ部分)を空に向けて置きます。窓際や屋外など、空が見える場所で使用してください。屋内では電波が弱く、位置情報の取得に時間がかかる場合があります。
  4. パソコンにつないでMicroPythonを書き込む — USB-CケーブルでCore2をパソコンにつなぎます。UIFlowやThonnyなどのツールで、Core2にMicroPythonファームウェアが入っていることを確認し、下のコードをデバイスにコピーして実行します。
  5. GPSの動作を確認する — コードを実行すると、Core2の画面にGPSの状態と位置情報が表示されます。最初は「衛星未捕捉」と表示されることがあります。その場合は、しばらく待つか、窓際や屋外に移動してください。衛星を捕捉すると、緯度・経度・時刻が表示されます。

サンプルコード(micropython)

# M5Stack Core2 + Unit GPS v1.1 (GPS position logger)
# Wiring: GPS Unit -> Core2 blue Port.C (UART)
import time
from machine import UART, Pin
from m5stack import lcd

# Initialize UART on Port.C (TX=13, RX=14)
uart = UART(2, baudrate=9600, tx=13, rx=14)

# NMEA sentence buffer
line = b''

while True:
    if uart.any():
        line = uart.readline()
        if line:
            # Decode as ASCII and strip whitespace
            try:
                sentence = line.decode('ascii').strip()
            except:
                continue
            # Look for $GPGGA sentence (contains position fix)
            if sentence.startswith('$GPGGA'):
                parts = sentence.split(',')
                if len(parts) >= 10:
                    time_utc = parts[1]
                    lat = parts[2]
                    lat_dir = parts[3]
                    lon = parts[4]
                    lon_dir = parts[5]
                    fix_quality = parts[6]
                    num_sats = parts[7]
                    altitude = parts[9]
                    
                    lcd.clear()
                    lcd.print('GPS Tracker', 10, 10)
                    lcd.print('Sats: ' + num_sats, 10, 40)
                    if fix_quality != '0':
                        lcd.print('Fix: OK', 10, 70)
                        lcd.print('Lat: ' + lat + ' ' + lat_dir, 10, 100)
                        lcd.print('Lon: ' + lon + ' ' + lon_dir, 10, 130)
                        lcd.print('Alt: ' + altitude + ' m', 10, 160)
                        lcd.print('UTC: ' + time_utc, 10, 190)
                    else:
                        lcd.print('No fix', 10, 70)
    time.sleep(0.1)

コツ・安全上の注意

この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。

この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。

エディタで開く →

UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。