pdf-icon

Unit EXT.IO2 / Stamp IO — Home Assistant 統合

Unit EXT.IO2 は STM32F030 マイコンをベースとした IO 拡張ユニットです。I²C 通信インターフェースを採用し、8 チャンネルの IO を独立して設定できます。各ピンはデジタル入出力・ADC・サーボ制御・RGB LED 制御モードに対応しています。I²C デバイスアドレスを変更できるため、同一バス上に複数の EXT.IO2 を接続して IO リソースをさらに拡張することも可能です。多チャンネルのデジタル/アナログ信号収集、照明制御、サーボ駆動などの用途に適しています。

Stamp IO は STM32F030 ベースの IO 拡張ボードで、Unit EXT.IO2 と同一の通信プロトコルを使用します。同様に 8 チャンネルの IO 拡張を提供し、各ピンで同じモードをサポートします。

どちらのデバイスも、I²C で接続した外部ホストコントローラーが必要です。

準備

  • ホストコントローラーデバイス(Atom シリーズ、Stamp シリーズ、Stick シリーズ、Core/Basic シリーズなど)
  • 稼働中の Home Assistant ホスト
  • Home Assistant に ESPHome Builder をインストール・有効化済みであること
注意:
Unit EXT.IO2 および Stamp IO は IO 拡張プラットフォームです。Home Assistant と連携するには別途ホストコントローラーが必要です。

はじめに

I²C バス

extio2 コンポーネントは I²C バス コンポーネントに依存します。使用するホストコントローラーに合わせて SDA/SCL ピンを設定してください。

# ESP32 向け設定例
i2c:
  sda: GPIOXX
  scl: GPIOXX
  scan: true

たとえば Atom Lite をホストコントローラーとして使用する場合:

# Grove ポート(HY2.0-4P)の I2C バス
i2c:
  sda: GPIO26
  scl: GPIO32

Hub コンポーネント

各プラットフォームを使用する前に、extio2 外部コンポーネントを追加し、Hub を宣言してください。

external_components:
  - source: github://m5stack/esphome-yaml/components@main
    components: [extio2]
    refresh: 0s

extio2:
  id: extio2_hub

設定項目

  • id (省略可, ID): この Hub インスタンスに ID を割り当てます。
  • address (省略可, int): I²C デバイスアドレス。デフォルト 0x45
  • reset (省略可, boolean): 起動時にソフトウェアリセットを実行します。全ピンが出力モードに設定され、ローレベルを出力します。デフォルト true
  • pwm_freq (省略可, 列挙型): 全チャンネル共通のグローバル PWM 周波数。デフォルト 1kHz。選択肢:
    • 2kHz
    • 1kHz
    • 500Hz
    • 250Hz
    • 125Hz
  • I²C Device でサポートされているその他のオプションも使用できます。

GPIO ピン

EXT.IO2 のピンは、switchbinary_sensor など ESPHome が標準 GPIO ピン参照を受け付けるあらゆる場所で使用できます。

# デジタル出力 — スイッチ
switch:
  - platform: gpio
    name: "EXT.IO2 GPIO 0"
    pin:
      extio2_id: extio2_hub
      number: 0
      mode:
        output: true

# デジタル入力 — バイナリセンサー
binary_sensor:
  - platform: gpio
    name: "EXT.IO2 GPIO 1"
    pin:
      extio2_id: extio2_hub
      number: 1

ピン設定項目

  • extio2_id (必須, ID): EXT.IO2 Hub の ID。
  • number (必須, int): ピン番号。07
  • inverted (省略可, boolean): ピンのロジックを反転します。デフォルト false
注意:
デバイスファームウェアは入力モードと出力モードのみをサポートします。pulluppulldownopen_drain などのオプションは使用できません。

センサー(ADC)

センサープラットフォームは、ADC 対応の 8 ピンからアナログ値を読み取ります。

sensor:
  - platform: extio2
    extio2_id: extio2_hub
    name: "ADC センサー 0"
    channel: ADC_0
    resolution: 12BIT
    update_interval: 5s

設定項目

  • extio2_id (省略可, ID): EXT.IO2 Hub の ID。
  • channel (必須, 列挙型): 読み取る ADC チャンネル。ADC_0ADC_7
  • resolution (省略可, 列挙型): ADC 分解能。デフォルト 8BIT
    • 8BIT: 8 ビット分解能、範囲 0〜255。
    • 12BIT: 12 ビット分解能、範囲 0〜4095。
  • update_interval (省略可, 時間): ポーリング間隔。デフォルト 60s
  • センサー でサポートされているその他のオプションも使用できます。

出力(PWM)

出力プラットフォームは任意のピンを PWM 出力として駆動します。デューティサイクルは 0.01.0 の浮動小数点数で指定し、内部で 0〜100% にマッピングされます。

output:
  - platform: extio2
    extio2_id: extio2_hub
    id: pwm_ch0
    channel: PWM_0

light:
  - platform: monochromatic
    name: "PWM ライト 0"
    output: pwm_ch0
    effects:
      - pulse:

設定項目

  • extio2_id (省略可, ID): EXT.IO2 Hub の ID。
  • id (必須, ID): この出力の ID。
  • channel (必須, 列挙型): 使用する PWM チャンネル。PWM_0PWM_7
  • 浮動小数点出力 でサポートされているその他のオプションも使用できます。
注意:
PWM 周波数は Hub の pwm_freq でグローバルに設定されます。全 PWM チャンネルが同一の周波数を共有します。

数値(サーボ)

数値プラットフォームはサーボを制御します。角度(度)とパルス幅(マイクロ秒)の 2 つの制御モードを提供します。

角度モード

角度(0〜180°)でサーボ位置を制御します。

number:
  - platform: extio2
    extio2_id: extio2_hub
    name: "サーボ 0"
    type: angle
    channel: SERVO_0
    min_value: 0
    max_value: 180
    step: 3

パルスモード

生のパルス幅(マイクロ秒)でサーボ位置を制御します。

number:
  - platform: extio2
    extio2_id: extio2_hub
    name: "サーボ 1"
    type: pulse
    channel: SERVO_1
    min_value: 500
    max_value: 2500
    step: 100

設定項目

  • extio2_id (省略可, ID): EXT.IO2 Hub の ID。
  • type (必須, 列挙型): サーボ制御モード。
    • angle: 角度で制御。
    • pulse: パルス幅で制御。
  • channel (必須, 列挙型): 使用するサーボチャンネル。SERVO_0SERVO_7
  • min_value (省略可, float): 最小値。角度モードのデフォルト 0.0、パルスモードのデフォルト 500.0
  • max_value (省略可, float): 最大値。角度モードのデフォルト 180.0、パルスモードのデフォルト 2500.0
  • step (省略可, float): ステップ幅。角度モードのデフォルト 3.0、パルスモードのデフォルト 100.0
  • 数値 でサポートされているその他のオプションも使用できます。
モード 単位 最小値 最大値 ステップ
angle ° 0 180 3
pulse µs 500 2500 100

ライト

ライトプラットフォームは 2 つのモードをサポートします。指定ピン上の単一 RGB LED、またはピン 0 から始まる連続した可変長 LED ストリップです。

単一 RGB LED

指定ピン上の 1 つの RGB LED を制御します。

light:
  - platform: extio2
    extio2_id: extio2_hub
    name: "EXT.IO2 ライト 2"
    type: light
    channel: LIGHT_2

アドレッサブル LED ストリップ

ピン 0 から始まる連続した複数の RGB LED を制御します。ESPHome のすべてのアドレッサブルライトエフェクトに対応しています。

light:
  - platform: extio2
    extio2_id: extio2_hub
    name: "LED ストリップ"
    type: addressable_light
    num_leds: 8

設定項目

  • extio2_id (省略可, ID): EXT.IO2 Hub の ID。
  • type (必須, 列挙型): ライトモード。
    • light: 単一 RGB LED。
    • addressable_light: アドレッサブル LED ストリップ。
  • channel (light タイプで必須, 列挙型): 使用するピン。LIGHT_0LIGHT_7
  • num_leds (addressable_light タイプで必須, int): LED 数。18。ピン 0 から順に割り当てられます。
  • ライト でサポートされているその他のオプションも使用できます。
注意:
アドレッサブルストリップのピンはピン 0 から連続して割り当てる必要があります。たとえば num_leds: 3 はピン 0・1・2 を使用します。ハードウェアには輝度制御レジスタがありません。輝度は RGB 値のソフトウェアスケーリングで実現されます。

完全な設定例

i2c:
  sda: GPIO2
  scl: GPIO1

extio2:
  id: extio2_hub
  address: 0x45
  reset: true
  pwm_freq: 1kHz

# GPIO — デジタル出力
switch:
  - platform: gpio
    name: "EXT.IO2 GPIO 0"
    pin:
      extio2_id: extio2_hub
      number: 0
      mode:
        output: true

# GPIO — デジタル入力
binary_sensor:
  - platform: gpio
    name: "EXT.IO2 GPIO 1"
    pin:
      extio2_id: extio2_hub
      number: 1
      mode:
        input: true
        pullup: true

# ADC センサー
sensor:
  - platform: extio2
    extio2_id: extio2_hub
    name: "ADC センサー 2"
    channel: ADC_2
    resolution: 12BIT
    update_interval: 5s

# PWM 出力(単色ライトとして使用)
output:
  - platform: extio2
    extio2_id: extio2_hub
    id: pwm_ch3
    channel: PWM_3

light:
  - platform: monochromatic
    name: "PWM ライト 3"
    output: pwm_ch3
    effects:
      - pulse:

  # 単一 RGB LED
  - platform: extio2
    extio2_id: extio2_hub
    name: "RGB ライト 6"
    type: light
    channel: LIGHT_6

  # アドレッサブル LED ストリップ(全 8 ピン)
  - platform: extio2
    extio2_id: extio2_hub
    name: "LED ストリップ"
    type: addressable_light
    num_leds: 8

number:
  # サーボ — 角度制御
  - platform: extio2
    extio2_id: extio2_hub
    name: "サーボ 4"
    type: angle
    channel: SERVO_4

  # サーボ — パルス幅制御
  - platform: extio2
    extio2_id: extio2_hub
    name: "サーボ 5"
    type: pulse
    channel: SERVO_5
On This Page