アプリ「ひまわりサーキット」専用
GPS受信機 組み立て手順書

はじめに知っておいてください

このGPS受信機はアプリ「ひまわりサーキット」専用です。
ほかのラップタイマーアプリでは使えません。

自作は自己責任です。動作も精度も保証せず、製作上の問い合わせにも応じられません(詳しくはページの末尾)。

できあがったGPS受信機。ケースに収めた本体と、ケーブルで繋がるGPSアンテナ
受信機本体とGPSアンテナ
電源はUSBから供給

スマートフォンの内蔵GPSのおよそ25倍となる25Hzで測位するGPS受信機を 部品代¥11,000ほどで自作して、ひまわりサーキットにBluetoothで繋ぐまでの手順です。 はんだ付けの経験がある方なら半日程度で完成できると思います。

目的

ラップタイムは、スマートフォンの内蔵GPSのままで十分です。 自作GPSで変わるのは、走行ラインとGの細かさです。

内蔵GPSは、iPhoneもAndroidも毎秒1回しか測位しません。 時速100kmで走ると、測位と測位の間に車は28m進みます。 その28mをどう走ったかは残りません。 コーナーは数本の直線をつないだ形になり、そこで掛かっていたGもならされます。

毎秒25回測位するGPS受信機を外付けすれば、同じ区間で車が進む距離は1.1mまで縮みます。 走った弧も、そこで掛かっていたGも、そのまま残ります。

スマホの内蔵GPS自作GPS
測位毎秒1回毎秒25回
時速100kmで、測位と測位の間に進む距離28m1.1m
スマホの置き場所空が見える場所に固定するどこでもよい(アンテナだけ外へ)
費用0円約1.1万円

差は走行ラインにそのまま出ます。下は同じコーナーを記録したものです。

スマホの内蔵GPSで記録した走行ライン。コーナーが角張っている
スマホの内蔵GPS。測位が毎秒1回なので、 コーナーが数本の直線をつないだ形になります。
自作GPSで記録した走行ライン。コーナーが滑らかな弧になっている
自作GPS。毎秒25回なので、 実際に走った弧がそのまま残ります。
公式計測(トランスポンダー)と照合しました

筑波サーキット コース2000で、サーキットが発行する個別ラップ表と 23ラップを1本ずつ照合しました。

トランスポンダーとの差平均 0.023秒

同じコースで、スマホの内蔵GPSの115ラップも照合しました。 こちらも平均 0.026〜0.101秒差で、取りこぼしも余計なラップもありません。 ラップタイムが内蔵GPSのままで十分なのは、この照合によります。

仕様

GNSSチップu-blox NEO-M9N(外付けアクティブアンテナ1m付属)
測位レート25Hz(40msごと・欠測なし)
水平精度実走で ±0.31〜0.34m
G・ジャイロBMI270 を 25Hz で読んで送信
通信Bluetooth 5(ESP32-C3)
電源USB 5V・約70mA
技適M5Stamp C3U が取得済み

購入

部品は4点です。アンテナも六角レンチも本体に付属します。 下の価格はあくまで参考です。

販売店は指定しません

品名のリンクは参考です(上の3点はスイッチサイエンス、ケースはメーカーのタカチ電機工業)。 ほかの通販サイトでも買えるので、型番で探して、手に入るところで購入してください。 価格は2026年10月に調べたもので、店によっても時期によっても変わります。

品名備考価格の目安
M5Stack用GNSSモジュール NEO-M9N / BMI270 / BMM150 / BMP280
アンテナ1m・ネジ(アンテナ端子用)・六角レンチ付き
¥9,174
M5Stamp C3U Mate ESP32-C3・USB-C直結で書き込み可
ピンヘッダ・六角レンチ同梱
¥1,386
ジャンパワイヤ
オス-メス
M5Stack用GNSSモジュールとM5Stamp C3U Mateを接続するのに使う(6本) ¥671
タカチ SW-100B
プラスチックケース
内寸 95.6 × 60.6 × 27.5mm
スナップインのはめ込式
約¥300
合計の目安約 ¥11,500
ほかに要るもの
  • USB-Cケーブル(データ通信対応のもの。充電専用では書き込めません)
  • はんだごて(ピンヘッダを付けるため・GNSS側の線をピンに直付けするため)
  • パソコン(Windows / Mac)
  • 六角スペーサーとネジ(GNSSモジュールをケースに留めるため。M2のナイロン製。 例: M2 六角スペーサーのセット)
  • 両面テープ(Stampをケースに貼るため)

組み立て

C3U Mateに付属のピンヘッダをはんだ付けして、GNSSモジュールのM-Busコネクタから6本つなぎます。

先に白いカバーを外します

C3U Mate は白いプラスチックのカバーが付いた状態で届きます。 付けたままではピンヘッダをはんだ付けできません。 ネジで留まっているので、C3U Mateに付属の六角レンチで外してから付けてください。

ピンヘッダをはんだ付けしたM5Stamp C3Uと、外した白いカバー・ネジ・付属の六角レンチ
上がピンヘッダを付けたC3U、下が外した白いカバー。 右がそのネジと、C3U Mateに付属の六角レンチです。
GNSS側(M-Bus)Stamp側用途
3V33V3電源
GNDG電源
16G5GNSSのUART(GNSS→Stamp)
12G6GNSSのUART(Stamp→GNSS)
21G7IMUのI2C(SDA)
2210IMUのI2C(SCL)
Stamp側の G と G5 は別物です

数字が付かない単独の G だけがGNDです。 G5 G6 G7 は信号のピンで、 2桁のピンには G が付きません(10 20 21)。

単独の G は基板に3か所あります。 右側を下から数えて4番目を使ってください(下)。

M5Stamp C3Uの裏面。配線に使う6か所のピンが赤丸で示されている
Stampの裏面。赤丸の6か所に繋ぎます。 G は3か所ありますが、使うのは丸を付けた 右側を下から数えて4番目です。

GNSS側の基板には番号が印字されています。数えるのではなく、印字された番号で合わせてください。 奇数側は GND が3つ続くので、数え始めを間違えやすい並びです。

GNSSモジュールのM-Busコネクタ。各ピンの番号が印字されている
コネクタのすぐ横に番号が印字されています。これを見て合わせます。 ただし2本は見つかりません。 3V3 は基板の裏に、数字ではなく 3V3 と書かれています(下)。 22 はどこにも印字がありません—— 反対側の列の、21 の真向かいです。
基板の裏。3V3 のラベルから白い線が伸び、その先のピンが赤丸で示されている
3V3 はこちら。ラベルから伸びる白い線の先(赤丸)がそのピンです。
GNSS側は挿さずに、裏に出たピンへはんだ付けする

ジャンパのメス端子をGNSSモジュールのソケットに挿すこともできますが、 振動で抜ける恐れがあります。

反対側に出ているピンへ、線を直接はんだ付けしてください。 隣のピンと触れないようにしてください。 Stamp側は挿したままで構いません(抜けやすいのはGNSS側です)。

GNSSモジュールの裏に出たピンへ、ジャンパ線を直接はんだ付けした状態
裏に出ているピンへジャンパーを直接はんだ付けしたところ。
M5Stamp C3U にジャンパ線を挿した状態と、外した白いカバー
Stamp側は挿したまま。こちらははんだ付けしなくて構いません。
ケースを開けた状態。上がGNSSモジュール、下がM5Stamp C3U、6本の線で繋がれている
繋ぎ終わったところ。上がGNSSモジュール、下がM5Stamp C3U。 アンテナは上辺のコネクタから外へ出し、USB-Cは左下のStampに挿します。

DIPスイッチ

基板の左から RX ・ TX ・ PS の3つ。ONは上側です。

スイッチ設定
RX(左・4個)1番だけON
TX(中・4個)3番だけON
PS(右・3個)全部OFF
DIPスイッチ3つ。左のRXは1番、中のTXは3番だけが上がっている
この状態にします。上がっているのはRXの1番と、TXの3番だけで、残りはすべて下です。

ケースに入れる

タカチ SW-100B にGNSSモジュール(54 × 54mm)とStampを並べて収まります。実機で確認済みです。 穴あけが2か所(アンテナのケーブルとUSB-C)要ります。ABSなのでピンバイスやリーマーで開けられます。 これとは別に、下のスペーサーを留める穴も開けます。

GNSSモジュールは六角スペーサーでケースの底にネジ止めします。 取り付け穴は M2 です。 スペーサーとネジは別に購入してください(上のほかに要るものにリンクがあります)。 部品面を下に向けて留めるので、部品がケースの底に当たらない高さのものを選びます。

Stampは両面テープでケースの底に貼ります。

しっかり留めるのはGNSSモジュールだけでよい

Gを測っているセンサー(BMI270)はGNSSモジュールに載っています。 Stampにセンサーは無いので、こちらは動いても記録は変わりません。

高さはぎりぎりです

内寸の高さは 27.5mm です。はんだ付けした所と曲げた線が積み上がると、 フタが閉まらなくなることがあります。

タカチ SW-100B の外観
ケースの外観。タカチ SW-100B(外寸 100 × 65 × 35mm)

プログラムのインストール

書き込むプログラムは、GNSSモジュールから毎秒25回の測位とGを受け取り、 ひまわりサーキットが読める形にしてBluetoothで送るものです。 測位レートなどGNSSモジュール側の設定も、起動のたびにこのプログラムが送ります。

1. Arduino IDE を入れる

arduino.cc から Arduino IDE 2.x を落とします。

Windows

  1. 「Windows」のインストーラー(.exe)を落とす
  2. 実行して、そのまま進める
  3. 途中でドライバのインストールを聞かれたら許可する

Mac

  1. Apple Silicon か Intel かを選ぶ。 分からなければ、画面左上のリンゴマーク >「このMacについて」で確認する
  2. .dmg を開いて、Arduino IDE を「アプリケーション」へドラッグする
  3. 初回起動で「開発元を確認できません」と出たら、 アプリを右クリック(control+クリック)して「開く」を選び、もう一度「開く」を押す

2. ボードマネージャにURLを足す

設定画面を開いて、「追加のボードマネージャのURL」に次の1行を貼ります。

Windowsファイル > 基本設定(Ctrl+,)
MacArduino IDE > 設定…(⌘+,)
https://espressif.github.io/arduino-esp32/package_esp32_index.json

3. esp32 の 3.2.1 を入れる

  1. ツール > ボード > ボードマネージャ(左端のアイコンからも開けます)
  2. 「esp32」で検索し、esp32 by Espressif Systems を見つける
  3. バージョンのプルダウンから 3.2.1 を選ぶ
  4. インストールを押す

1GB近く落ちるので、回線によっては数分から十数分かかります。 既定で選ばれているのは最新版なので、必ずプルダウンを開いて選び直してください。

4. ライブラリを入れる

Gを読むためのライブラリを1つ入れます。これが無いと書き込みのときにエラーで止まります。

  1. ツール > ライブラリを管理(左端のアイコンからも開けます)
  2. 「BMI270」で検索し、SparkFun BMI270 Arduino Library を見つける
  3. インストールを押す

ほかに必要なものがあれば、Arduino IDE が「一緒に入れますか」と聞いてくるので、 すべてインストールを選んでください。

5. ボードを設定する

ボードツール > ボード > esp32 > ESP32C3 Dev Module
USB CDC On Bootツール > USB CDC On Boot > Enabled

ほかの項目は既定のままで動きます。USB CDC On Boot を忘れるとログが出ません。

6. ファームを書き込む

プログラム本体をここから落とします。

HimawariGPS.zip をダウンロード

このプログラムは MIT ライセンスです(zip の中の LICENSE)。改造も再配布も自由にどうぞ。 1つ前で入れたライブラリは同梱していません。SparkFun BMI270 Arduino Library は SparkFun の表記、 その中の Bosch BMI270 Sensor API は BSD-3-Clause、esp32 Arduino core は LGPL-2.1 と Apache-2.0 です。

  1. 落とした HimawariGPS.zip をダブルクリックして展開する
  2. 出てきた HimawariGPS フォルダの中の HimawariGPS.ino をダブルクリックして、Arduino IDE で開く
  3. USB-Cケーブル(データ通信対応のもの)でStampを繋ぐ

続いて、つないだStampのポートを選びます。

Windowsツール > ポート > COM3 など。挿したときに増えたものを選ぶ
Macツール > ポート > /dev/cu.usbmodem で始まるもの

あとは左上の→(書き込み)を押すだけです。

ポートに出てこないとき

買ったばかりのStampは、工場出荷時のプログラムがUSBを掴んでいることがあります。 USBを抜いて、中央のボタンを押したまま挿し直してください。 2〜3秒押し続けてから離すと必ず認識されます。一度書き込めば、以後は普通に見えます。

それでも出てこなければケーブルを疑ってください。充電専用のUSB-Cケーブルでは、 電源は入る(給電される)のにポートに出てきません。

動作テスト

  1. 書き込みが終わったら、USB-Cは繋いだままにする
  2. Arduino IDE の ツール > シリアルモニタを開く (Windows: Ctrl+Shift+M / Mac: ⌘+Shift+M)
  3. 画面の下に出たシリアルモニタの右上の数字を 115200 baud に変える。 既定は 9600 で、そのままだと文字化けします
  4. 何も出ていなければ、USB-Cを一度抜いて挿し直す(下のログは起動のときだけ出ます)
Himawari GPS 起動 / GNSS 38400 bps / RX=5 TX=6
[CFG] GNSS へ設定を送る
[CFG]   NMEA を停止(GGA/GLL/GSA/GSV/RMC/VTG)
[CFG]   UBX-NAV-PVT を有効化
[CFG]   測位レート 40 ms を指示
[CFG] 実測 25.5 Hz(期待 25 Hz): OK
[BLE] "Himawari GPS 0548C8" として広告開始
[GNSS] 25 Hz(測位 25 / 衛星 10 / fixType 3) / BLE 未接続
       IMU: 生 X +0.060 Y -0.005 Z -1.001 / 送る 前 -0.005 左 +0.060 上 +1.001 g

見るところ

  • 25 Hz と出ていれば、GNSSとの配線は正解です
  • 測位 25 が0のままなら、まだ衛星を掴んでいません
  • IMU の行が出ていれば、I2Cの2本も正しく繋がっています
  • 名前の末尾6桁は機体ごとに違います。上のログの 0548C8 は一例です
  • 上は要点だけの抜き書きです。ほかに [I2C] と [IMU] の行も出ます
必ず外に出てください

室内や窓際では衛星を捕まえられません。初めての測位は20〜40秒かかります。 衛星が6個を超えて fixType 3 になれば成功です。

アプリからの登録

  1. ひまわりサーキットの設定を開く
  2. 外部GPSの登録画面でスキャンする
  3. 一覧に出た Himawari GPS で始まるGPS受信機を選んで登録する
  4. 登録したGPS受信機のスイッチをONにする
外部GPS受信機を検索中の画面。一覧に Himawari GPS が出ている
「+ 追加」を押すと近くのGPS受信機を探します。出てきた Himawari GPS を選びます(iPhoneの画面)。
登録済みの Himawari GPS がスイッチONで並んでいる画面
登録できた状態。右のスイッチをONにするまで繋がりません。

動作確認(実走行)

取り付け

向きが決まっています

部品面を下、アンテナのコネクタを車の前に向けて固定してください。 この向きを前提に、ファームがセンサーの軸を車体の前後左右へ直して送ります。

違う向きで付けると、横Gの左右が逆になります。

  • 本体は助手席の足元など、なるべく平坦で固定できるところに置きます。 グローブボックスの中は床が傾いていることがあります
  • アンテナだけダッシュボードの上など、空が見える場所に出します
  • わずかな傾きは問題ありません。停車中に傾きぶんをアプリが測って引きます

電源

USBで給電します。消費は70mA程度なので、5000mAhのモバイルバッテリーで30時間以上もちます。 シガーソケットからのUSBでも構いません。夏の車内は60〜70℃になるので、 モバイルバッテリーは車内に置いたままにしないでください。

走り出す前に

計測画面のBluetoothアイコンの色を見てください

コースイン画面で「通過」したあとの計測画面、その右上にあります。

緑測位が届いています。これでOK
オレンジBluetoothは繋がっているが、測位がまだ届いていない
灰色繋がっていない
計測画面。右上のBluetoothアイコンが緑になっている
この状態です。右上のアイコンが緑になっています。
緑以外のまま走らないこと

緑以外のときは内蔵GPSで記録されます。