🙆

"GNSS + LoRa + microSD + センサ統合ロガー基板を試作しました(JLCPCB提供)"

に公開

PR / 提供表記
本記事は JLCPCB 様より基板製造のサポート(クーポン/製造費用の提供 等)を受けて作成しています。
設計・評価は筆者の開発記録であり、記載している所感や判断は筆者個人のものです。

作ったもの(概要)

屋外実験・フィールド計測向けに、GNSS測位(Quectel L80RE-M37)LoRa通信(RAK3172)microSDログIMU(SCH16T-K01)磁気センサ(TMAG5273)・**ステッピングモータドライバ(DRV8834)**を 1枚の基板に統合したロガー基板を試作しました。
コアには Waveshare Core2350B2(RP2350系) を前提にし、配線を減らして「記録・送信・同期」をまとめて扱えるようにしています。


何ができる基板なのか

  • GNSS(UART)で測位データ取得 + 1PPSで時刻同期
  • LoRa(RAK3172)でテレメトリ送信(SPI接続 + UARTも引き出し)
  • microSD(SPI)へロギング(通信が途切れてもデータを落とさない)
  • IMU(SCH16T-K01 / SPI)で姿勢・角速度・加速度などの取得(用途次第)
  • 磁気センサ(TMAG5273 / I2C)で磁場計測
  • DRV8834(VM=VIN)でステッピングモータ駆動(STEP/DIR + M0/M1 + EN/SLEEP)
  • サーボ用 3pin×4(GND / VIN / SIG) + 汎用3pin×2(GND / VIN / SGx)

回路ブロック図(ざっくり)

電源と信号の流れは次の構成です。

  • 電源

    • VIN_BAT(バッテリー入力)
      LTC4412 + AO4407A(理想ダイオード構成)
      VIN(基板メイン入力)
      TPS62163(降圧)
      → VDD5
      → Core2350B2 の VBUS
      → Core側レギュレータで VDD3_3 生成
  • 通信 / 記録

    • RAK3172:SPI(SCK/MISO/MOSI/CS_RAK) + UART(RP_TX/RP_RX)
    • microSD:SPI(SCK_SD/MISO_SD/MOSI_SD/CS_SD)
    • GNSS:UART(GPS_TX/GPS_RX) + 1PPS
  • センサ / モータ

    • SCH16T-K01:SPI(SCK/MISO/MOSI/CS ※CSは抵抗経由) + DRY_SYNC
    • TMAG5273:I2C(SCL/SDA)
    • DRV8834:STEP/DIR + M0/M1 + NENABL/NSLEEP、出力は AOUT/BOUT を4pinコネクタへ

主要部品(抜粋BOM)

ブロック 部品 備考(回路図ベース)
コア Waveshare Core2350B2 VBUS=VDD53V3=VDD3_3
LoRa RAK3172 VCC=VDD3_3、SPI + UART配線
GNSS Quectel L80RE-M37 VCC/V_BCKP=VDD3_3、UART + 1PPS
ログ microSD socket (TF-01A) VDD=VDD3_3、SPI(DAT3をCS扱い)
IMU SCH16T-K01 V3P3/VDDIO=VDD3_3、SPI、DRY_SYNC
磁気 TMAG5273 I2C(※INTの扱いは後述)
モータ DRV8834 VM=VIN、STEP/DIR + M0/M1 + EN/SLEEP
電源 TPS62163 VIN -> VDD5(ENはVINに直結で常時ON)
電源保護 LTC4412 + AO4407A VIN_BAT -> VIN の理想ダイオード

GPIO割り当て(Core2350B2 → 各デバイス)

回路図のネット名から、Core側 GPIO と接続先を整理すると次の通りです。

GNSS(L80RE-M37)

Core pin Net 接続先
GP10 GPS_TX L80RE RXD1(Core→GNSS)
GP11 GPS_RX L80RE TXD1(GNSS→Core)
GP30 1PPS L80RE 1PPS

LoRa(RAK3172)

SPI

Core pin Net RAK3172 pin
GP14 SCK_RAK SCK/PA5
GP15 MOSI_RAK MOSI/PA7
GP12 MISO_RAK MISO/PA6
GP13 CS_RAK SS/PA4

UART(ATコマンド用途など)

Core pin Net RAK3172 pin
GP0 RP_TX UART2_RX/PA3(Core→RAK)
GP1 RP_RX UART2_TX/PA2(RAK→Core)

microSD(TF-01A)

Core pin Net microSD pin
GP18 SCK_SD CLK
GP19 MOSI_SD CMD
GP16 MISO_SD DAT0
GP17 CS_SD CD/DAT3(CS扱い)

IMU(SCH16T-K01)

Core pin Net SCH16T pin 備考
GP6 SCK SCK
GP7 MOSI MOSI
GP4 MISO MISO
GP5 CS CS R27を介して接続、R26でCSプルアップ
GP31 DRY_SYNC DRY_SYNC 割り込み/同期用

磁気センサ(TMAG5273)

Core pin Net TMAG5273 pin
GP3 SCL SCL
GP2 SDA SDA

ステッピングモータ(DRV8834)

Core pin Net DRV8834 pin
GP20 STEP STEP/BENBL
GP21 DIR DIR/BPHASE
GP22 NENABL NENBL/AENBL
GP23 NSLEEP NSLEEP
GP24 M0 M0/APHASE
GP25 M1 M1

出力は AOUT1/AOUT2/BOUT1/BOUT2 を 4pin コネクタへ引き出しています。

サーボ(3pin×4)

Core pin Net 備考
GP8 SERVO_TX SN74LVC1G126 の入力 A
GP29 SERVO_OE バッファ OE(有効化制御)
GP9 SERVO_SIG バッファ出力側と同一ネット

サーボコネクタ(SV1〜SV4)は Pin1=GND / Pin2=VIN / Pin3=SERVO_SIG です。
※サーボ電源が VIN 直結なので、使用するサーボの定格に合わせて入力電圧を選ぶか、必要なら外部BECを併用してください。


回路図を見て気づいた点(改善メモ)

  • TMAG5273 の INT が電源ネットと同一(N$4)になっている
    回路図上は VCC と INT が同じネットに入っています(デカップリングC3も同ネット)。
    もし割り込みを使うなら、INTをCoreのGPIOへ引き回し、必要ならプルアップ抵抗を追加する方が安全です。
    (「INTを使わない」方針なら、ピン名・シンボル定義の再確認だけしておくと後で混乱しにくいです)

  • SCH16TのCSは抵抗経由(R27)+ プルアップ(R26)
    ノイズや多重接続の対策としては合理的ですが、SPI速度や立ち上がりが厳しい場合は値の見直し余地があります。

  • モータ・サーボがVIN直結
    実験用途では扱いやすい一方、ノイズが強い構成になりやすいので、
    「GNDの戻り」「電源入力のデカップリング」「センサ系の安定化」は実機で様子を見て詰めるのが良さそうです。


JLCPCBで基板を作った話(提供の紹介)

今回の試作は JLCPCB様のサポートにより基板を製造しました。
試作では「まず動く実物を早く作って、問題を潰して次版へ」という回し方が多いので、発注〜到着までの手離れが良いのは助かります。

発注メモ(Zenn向けテンプレ)

  1. EAGLE/KiCad等で Gerberを出力
  2. JLCPCBのページで Gerberをアップロード
  3. 層数・板厚・表面処理・色などを選択
  4. 支払い → 製造 → 発送

JLCPCB(URLはコードブロック内に記載します):
text
https://jlcpcb.com/


まとめ

GNSS・LoRa・microSD・IMU・磁気センサ・モータ駆動を統合したロガー基板を試作しました。
今後は ファーム実装(ログ形式・送信プロトコル・1PPS同期)を詰めつつ、実機でノイズや電源のクセを見て改版していく予定です。


URL

英語発注システム
https://jlcpcb.com/JPV/
日本語発注システム
https://jlcpcb.com/jp/

Discussion