SenseCAP ONE S700を動かしてみた(USB編)

Seeed K.K.の松岡です。

EdgeTech+ 2025のLoRaWANデモで気象センサーSenseCAP ONE S700 V2を使ったのですが、設定や配線などいろいろと迷うところがあったので、整理して書いておきます。今回はUSB編です。

SenseCAP ONE S700とは?

SenseCAP ONE S700は、Seeedが提供するSenseCAP ONEという気象センサーシリーズの1機種です。

SenseCAP ONEは気象観測する複数のセンサーを1台にまとめたオールインワンの気象センサーで、屋外の過酷な環境でも使用できるように設計されています。

現在、10機種販売していて、搭載しているセンサーに違いがあります。

S2120はセンサー以外にも違いがあるので気をつけないといけない。LoRaWAN通信機能を内蔵しているとか。

今回使う気象センサーはSenseCAP ONE S700 V2です。SenseCAP ONEシリーズの表にはS700 V2は書かれておらず、S700に該当します。あぁ、ややこしい。(S700 V2はS700の後継機種)

  • SenseCAP ONEシリーズ
    • SenseCAP ONE S700(S700 V2)
      • 気温、湿度、気圧、風速、風向、雨量、照度

ちなみにS700はS700(S700 V2), S700-A, S700-B, S700-Cの4機種あって、センサーが微妙に違います。あぁ、ややこしい。(2回目)

PC/SBCとの接続は4通り

SenseCAP ONE S700とPC/SBC(Single Board Computer)でデータをやりとりする手段は4通りあります。

シンプルなのはUSB接続です。USBケーブル1本でSenseCAP ONE S700への電源供給とPCとの通信が出来ます。ただし、この方式で屋外利用はオススメできません。USB-Cコネクタがフタを開けたところにあるからです。SenseCAP ONE S700をセットアップするときや、屋内での利用に限り使用するようにしましょう。

屋外で利用するときはRS485もしくはSDI-12接続です。製品に同封のM12ケーブルを使います。RS485は独自ASCIIプロトコルもしくは産業オートメーションで広く使われているModbus/RTUプロトコルで通信できます。SDI-12は環境測定分野で一般的な通信プロトコルです。PC/SBCやシステム全体の設計に適したものを選択しましょう。

設定ツールSenseCAP ONE Configuration Tool

SenseCAP ONE S700とRS485SDI-12で接続する前に、通信プロトコルやアドレスなどの設定が必要ですが、これをUSB経由で行う専用ツールがSeeedから提供されています。SenseCAP ONE Configuration Toolと言います。

SenseCAP ONE Configuration Toolを使うと、通信プロトコルやアドレスを設定したり、ファームウェアのアップデートができます。また、センサーの値を確認することもできます。

SenseCAP ONE S700を動かす

それでは動かしてみましょう。

PCとUSB接続する

開梱します。 気象センサーとM12ケーブル、USB-Cケーブル、ワッシャー、ネジが入っています。 ワッシャーはUSB-Cコネクタのフタを開けるためのものです。ちょっと親切。

それっぽいフタが2箇所あるので開けます。 どちらか一方から、USB-Cコネクタが出てきます。

同封のUSB-CケーブルでPCに接続します。すると、PCに仮想COMが1つ追加されます。(ここではCOM5でした。)

専用ツールで観測する

GitHubから専用ツールSenseCAP ONE Configuration ToolをダウンロードしてPCにインストール、起動します。

Serial Portを選んでConnectをクリックすると、観測した値がリアルタイムに表示されます。

Settingsをクリックすると設定画面が表示されます。Read From Deviceをクリックすると、デバイスの設定値を読み出して画面に表示されます。

Pythonで観測する

それでは、独自のPythonコードでUSB接続のASCIIプロトコルを使って観測してみましょう。

ASCIIプロトコルの詳細はSenseCAP ONEのUser Guideの「4.2 ASCII Protocol」に書かれています。これを参考に、1秒周期にセンサー値を取得して画面に表示してみます。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import serial
import time

PORT = "COM5"
TIMEOUT = 1


def main():
    ser = serial.Serial(port=PORT, timeout=TIMEOUT)

    try:
        while True:
            # Read all measurement parameters.
            ser.write(b"0XA;G0?\r\n")
            resp = ser.readline()
            if not resp:
                print("No response (timeout)")
                return

            # Convert response to dict.
            data = {}
            for p in resp.decode().strip().split(";"):
                if "=" in p:
                    key, value = p.split("=", 1)
                    data[key] = float(value)

            # Print
            print()
            print(f"Air temprature {data['AT']} C")
            print(f"Air humidity {data['AH']} %RH")
            print(f"Barometric pressure {data['AP']} Pa")
            print(f"Light intensity {data['LX']} Lux")
            print(f"Average wind direction {data['DA']} deg")
            print(f"Average wind speed {data['SA']} m/s")
            print(f"Rainfall intensity {data['RI']} mm/h")

            time.sleep(1)

    finally:
        ser.close()


if __name__ == "__main__":
    main()

観測できました。

まとめ

  • SenseCAP ONEはオールインワンの気象センサー
  • SenseCAP ONEは10機種ある(センサーが違う)
  • SenseCAP ONE S700は気温、湿度、気圧、風速、風向、雨量、照度が分かる
  • SenseCAP ONE S700の接続はUSB、RS485、SDI-12
  • 設定ツールSenseCAP ONE Configuration Toolがある
  • Pythonでセンサー値を取得できた(USB接続)

参考

変更履歴

日付 変更者 変更内容
2025/12/25 松岡 作成