Raspberry Pi Picoに、GPSモジュール(AE-GYSFDMAXB)を接続して、人工衛星からの信号を受信してみました。とりあえず動作確認できたのでご紹介したいと思います。
使用する電子部品
ラズパイピコとGPSモジュールのみです。思っていたより簡単に組めます。GPSモジュールは結構高いですね。。。
電子部品 | 個数 | 備考 |
![]() | 1個 | Raspberry Pi Pico |
![]() | 1個 | GPS受信キットAE-GYSFDMAXB 太陽誘電のGPSモジュールGYSFDMAXBを使用したセットです。 秋月電子通商で2200円でした。 |
配線図
AE-GYSFDMAXBとラズパイピコはUART(Universal Asynchronous Receiver / Transmitter:汎用非同期送受信)で接続します。いわゆるシリアル通信です。今回は下記のように配線しました。

ピコの16番目のピンはUART0 TXとして使えます。これをAE-GYSFDMAXBのRXDに接続します。またピコの17番目のピンはUART0 RXとして使えますので、これをAE-GYSFDMAXBのTXDに接続します。TX-RXD、RX-TXDと接続することにご注意下さい。
1PPSのピンは今回は使っていません。AE-GYSFDMAXBの説明書を見ると、1000ms(1秒)間隔で、100ms(0.1秒)の3.3Vパルス信号が出力されるようです。
ちなみに上記のfritzingのAE-GYSFDMAXBのパーツは現物を見ながら自分で描いてみました。折角なので公開します。
MicroPythonのコード
コーディングは下記の通りです。GPSの信号は文字列として出力されます。緯度や経度などの情報はその文字列の中に入っていますので、必要に応じて取り出します。今回は簡単のため、単にprintで画面表示しています。
from machine import Pin, UART
import time
uart = UART(0, 9600, tx=Pin(12), rx=Pin(13))
time.sleep(1)
res=uart.read()
print(res.decode('utf-8'))
実行
実行するには、まずAE-GYSFDMAXBを初期化します。ピコに配線して通電した状態で、屋外か窓際に置いてしばらく待ちます。最初はモジュールのLEDが点灯しているのですが、衛星を4機以上追尾している状態(3D-Fix)になると1秒おきに点滅するようになります。場所にもよるのかもしれませんが、私の部屋では数分で3D-Fixしました。
なお一旦初期化すると、AE-GYSFDMAXBの裏側にボタン電池(バックアップ電源)をセットしておけば、衛星を見失ったり電源オフしたりしても、速やかに衛星を再追尾できるようです。

この状態で、上のMicroPythonコードを実行すると、一例として下記のように出力されます。(一部の数字を○としています。)
$GPGGA,071739.000,3○○○.3081,N,13○○○.0448,E,1,10,0.83,26.4,M,39.0,M,,*59
$GPGLL,3○○○.3081,N,13○○○.0448,E,071739.000,A,A*5C
$GPGSA,A,3,14,20,15,05,194,13,23,24,18,195,,,1.17,0.83,0.83*0E
$GPGSV,4,1,13,15,66,001,30,24,57,213,25,05,50,121,34,18,46,274,19*7C
$GPGSV,4,2,13,13,43,047,35,23,
$GPGGAなどのセンテンスは、それぞれ下記の情報です。
$GPGGA | GPS位置情報 |
$GPGLL | 地理的位置-緯度/経度 |
$GPGSA | GPSの精度低下率およびアクティブ衛星 |
$GPGSV | 衛星情報 |
このうち、緯度・経度情報は$GPGGAと$GPGLLにあり、今回の例だと3○○○.3081,N,13○○○.0448,Eというのが位置情報になります(実際には○には数字が入っています)。Nなので北緯、Eは東経という意味で、北緯3○度○○.3081分、東経13○度○○.0448分ということのようです。衛星情報なども、調べてみると面白そうですね。
今回は、とりあえず簡単に、ここまでとしたいと思います。電池駆動にして持ち運べるようにし、表示器もつけたりすれば、GPSロガーなどがつくれそうですね。
コメント