コンテンツにスキップ

外部インターフェース

この章は自作ホストや自作ESP32ファームウェアを使う方向けです。通常の測定はUSB有線計測またはアプリを使用してください。

システム全体の構成

STM32は超音波計測と校正済み測定値の生成を担当し、ESP32-C3はBLE、USB、カード記録、更新を担当します。

風と超音波センサー、STM32計測部、ESP32-C3連携部、アプリ、PC、カード、自作ホストの接続関係

外部I2Cホストを接続するときは、ESP32を同じバスのホストとして同時動作させません。

内部電気接続

STM32計測部、ESP32-C3連携部、USB Type-C、Grove互換ポートの内部接続を示します。外部端子のピン配列や定格は、後述の電気接続の前提も確認してください。

内部電気接続図

ULSA EVO内部のSTM32とESP32間UART、BOOT0・NRST、I2C・Grove、USB Type-Cの接続を示す分解図

ESP32 flashの構成

公式FWの更新領域を確認したい開発者向けの資料です。通常の計測・更新手順には、この表は不要です。

4 MiBの領域構成

ESP32-C3のapplication slotと設定領域の配置

領域 Offset 容量 用途
Boot/Partition Table 0x000000 36 KiB 起動とpartition定義
nvs 0x009000 20 KiB ESP32設定
otadata 0x00E000 8 KiB OTA slot選択
app0 0x010000 1,728 KiB application slot 0
app1 0x1C0000 1,728 KiB application slot 1
stm32pkg 0x370000 512 KiB 公式STM32更新packageの一時保存
coredump 0x3F0000 64 KiB ESP32障害解析

公式のESP32 OTAとUSB復旧を利用する場合は、この構成を維持してください。

電気接続の前提

製品はUSB Type-CからDC5Vで給電します。内部ソースのGPIO番号は、製品コネクタのピン番号ではありません。外部UART/I2C、Groveへ接続する前に、端子配列、信号電圧、GND、電源接続条件を確認してください。

ESP32もI2Cのホストとして動作します。外部ホストを追加する際に、2つのホストを動作したまま同じバスへ接続しないでください。PCからの内部バス確認と、外部配線の設計を区別します。端子配列やホストの共存方法が確認できない場合は、本体サポートへ接続図を送って確認してください。

UARTの計測フレーム

通常のSTM32 UART計測フレームは、#で始まる8フィールドのカンマ区切りです。STM32 CLIではPCからSTM32へコマンドを送り、ESP32 CLIではESP32宛てのコマンドを入力します。

#,7,1,90,1.00,0.00,346.00,25.00

これは書式の例です。

順番 内容
1 固定文字#
2 Node ID、0~255
3 状態コード
4 風向、整数度
5 風速、m/s
6 機首方向成分、m/s(符号付き)
7 音速、m/s
8 音仮温度、℃

受信側は行終端とフィールド数を確認します。状態コード1だけを正常とし、0(異常)、2(低温)、4(高温)、8(風速範囲)などは無効として扱います。欠けたフィールドや不正な数値を0で補完しないでください。

基準ESP32スナップショットのSTM32接続は115200 bps・8N1です。接続先のUART設定を変更済みの場合は一致させる必要があります。公開ソース内の数値の許容上限は製品の定格ではありません。

I2C

バス条件、全レジスタ、アクセス権、計測値の変換方法はユーザー向けI2Cレジスタ一覧にまとめています。外部配線では端子配列と信号条件を確認してください。SDA/SCLには内部10 kΩプルアップ(3.3V系)があります。USBの5VをI2C信号へ加えないでください。

BLEの基本データ

デモFWではEnvironmental Sensingサービスの風向・風速・温度と、ULSA独自サービスの音速等を使用します。自作クライアントでは端末と本体の接続・切断、独立して届く通知、欠損を扱う必要があります。

BLE特性(UUID) 伝送値
0x2A73 風向 uint16 / 100 → 度
0x2A72 風速 uint16 / 100 → m/s
0x2A6E 音仮温度 int16 / 100 → ℃
e147a12a-67ff-4249-930b-c35d372ba001 音速 uint16 / 100 → m/s

風向・風速・温度のBLE通知は特性ごとに独立して届きます。通知を受けた特性だけを更新し、未受信の値は0で埋めず「未受信」として扱ってください。BLEの数値はリトルエンディアン(下位バイトが先)です。I2Cとの倍率差はI2Cレジスタ一覧を参照してください。

設定の保存や更新制御はI2Cレジスタ一覧と更新方法を選ぶを参照してください。通常の計測確認には公式アプリの手順を使用してください。