Unit EXT.IO2 / Stamp IO ESPHomeコンポーネント

Unit EXT.IO2 / Stamp IOは、I2C 経由でGPIO、ADC、PWMなどの入出力機能を拡張します。

1. コンポーネント概要

項目 情報
製品名 Unit EXT.IO2 / Stamp IO
SKU U011-B / S002
主な機能 GPIO、ADC、PWMの拡張
通信インターフェース I2C
デフォルトI2Cアドレス 0x45
ESPHomeコンポーネント extio2(外部コンポーネント)
必要な ESPHome バージョン /

2. コンポーネント詳細

外部コンポーネントの導入

External ComponentsをYAMLファイルに追加し、EXT.IO2 / Stamp IOコンポーネントを読み込みます。

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

Hubコンポーネント

機能を使用する前に、Hubコンポーネントを追加します。

extio2:
  id: extio2_hub

設定可能なオプション

  • id(オプション、ID):HubコンポーネントのIDを指定します。
  • address(オプション、int):I2Cアドレス。デフォルトは 0x45。
  • reset(オプション、boolean):ソフトウェアリセットを実行し、すべてのピンを出力・Lowに設定します。デフォルトは true。
  • pwm_freq(オプション、enum):全チャンネル共通のPWM 周波数。デフォルトは 1kHz。オプション:
    • 2kHz
    • 1kHz
    • 500Hz
    • 250Hz
    • 125Hz
  • その他、I2Cデバイスがサポートするオプション。

GPIOピン

EXT.IO2のピンは、switchやbinary_sensorなど、ESPHomeが標準のGPIOピン参照を受け付けるコンポーネントで使用できます。

# Digital output - switch
switch:
  - platform: gpio
    name: "EXT.IO2 GPIO 0"
    pin:
      extio2_id: extio2_hub
      number: 0
      mode:
        output: true

# Digital input - binary sensor
binary_sensor:
  - platform: gpio
    name: "EXT.IO2 GPIO 1"
    pin:
      extio2_id: extio2_hub
      number: 1

ピン設定項目

  • extio2_id(必須、ID):EXT.IO2バスコントローラのID。
  • number(必須、int):ピン番号。範囲は 0~7。
  • inverted(オプション、boolean):ピン論理を反転します。デフォルトは false。
  • mode(必須):input または output を選択し、モードに応じて pullup、pulldown、open_drain フラグを使用できます。

センサー(ADC)

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

sensor:
  - platform: extio2
    extio2_id: extio2_hub
    name: "ADC Sensors 0"
    channel: ADC_0
    resolution: 12BIT
    update_interval: 5s

設定項目

  • extio2_id(オプション、ID):EXT.IO2バスコントローラのID。
  • channel(必須、enum):読み取るADCチャンネル。ADC_0~ADC_7。
  • resolution(オプション、enum):ADC 分解能。デフォルトは 8BIT。
    • 8BIT:8ビット分解能。範囲は 0~255。
    • 12BIT:12ビット分解能。範囲は 0~4095。
  • update_interval(オプション、time):ポーリング間隔。デフォルトは 60s。
  • その他のオプションについては Sensors を参照してください。

出力(PWM)

出力プラットフォームは、任意のピンをPWM 出力として駆動します。デューティ比は 0.0~1.0 の浮動小数点値で表され、内部的に 0~100% にマッピングされます。

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

light:
  - platform: monochromatic
    name: "PWM Light 0"
    output: pwm_ch0
    effects:
      - pulse:

設定項目

  • extio2_id(オプション、ID):EXT.IO2バスコントローラのID。
  • id(必須、ID):この出力のID。
  • channel(必須、enum):使用するPWMチャンネル。PWM_0~PWM_7。
  • その他のオプションについては Float Output を参照してください。
PWM 周波数
PWM 周波数はバスコントローラの pwm_freq によってグローバルに設定され、すべてのPWMチャンネルが同じ周波数を共有します。

数値(サーボ)

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

角度モード

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

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

パルスモード

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

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

設定項目

  • extio2_id(オプション、ID):EXT.IO2バスコントローラのID。
  • type(必須、enum):サーボの制御モード。
    • angle:角度で制御します。
    • pulse:パルス幅で制御します。
  • channel(必須、enum):使用するサーボチャンネル。SERVO_0~SERVO_7。
  • min_value(オプション、float):最小値。角度モードのデフォルトは 0.0、パルスモードのデフォルトは 500.0。
  • max_value(オプション、float):最大値。角度モードのデフォルトは 180.0、パルスモードのデフォルトは 2500.0。
  • step(オプション、float):ステップ値。角度モードのデフォルトは 3.0、パルスモードのデフォルトは 100.0。
  • その他のオプションについては Number を参照してください。
モード 単位 最小値 最大値 ステップ
angle ° 0 180 3
pulse us 500 2500 100

ライト

ライトプラットフォームは2つのモードに対応します。指定したピンの単一 RGB LED、またはピン0から連続する複数のピンを使用するアドレサブルLEDストリップです。

単一 RGB LED

指定したピンのRGB LEDを制御します。

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

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

ピン0から連続する複数のRGB LEDを制御し、ESPHomeのアドレサブルライト効果に対応します。

light:
  - platform: extio2
    extio2_id: extio2_hub
    name: "LED Strip"
    type: addressable_light
    num_leds: 8

設定項目

  • extio2_id(オプション、ID):EXT.IO2バスコントローラのID。
  • type(必須、enum):ライトモード。
    • light:単一 RGB LED。
    • addressable_light:アドレサブルLEDストリップ。
  • channel(light タイプでは必須、enum):使用するピン。LIGHT_0~LIGHT_7。
  • num_leds(addressable_light タイプでは必須、int):LEDの数。範囲は 1~8 で、ピン0から順に割り当てられます。
  • その他のオプションについては Light を参照してください。
LEDストリップのピン
アドレサブルLEDストリップのピンは、ピン0から連続して割り当てる必要があります。例:num_leds: 3 の場合はピン0、1、2を使用します。ハードウェアには輝度レジスタがないため、輝度はソフトウェアでRGB 値をスケーリングして実現します。

3. 使用例

この例では、GPIO 入出力、ADC、PWM、サーボ、RGBライトの各プラットフォームを示します。コントローラのI2Cピンは実際の配線に合わせて変更してください。

i2c:
  sda: GPIO2
  scl: GPIO1

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

# GPIO - digital output
switch:
  - platform: gpio
    name: "EXT.IO2 GPIO 0"
    pin:
      extio2_id: extio2_hub
      number: 0
      mode:
        output: true

# GPIO - digital input
binary_sensor:
  - platform: gpio
    name: "EXT.IO2 GPIO 1"
    pin:
      extio2_id: extio2_hub
      number: 1
      mode:
        input: true
        pullup: true

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

# PWM output used as a monochromatic light
output:
  - platform: extio2
    extio2_id: extio2_hub
    id: pwm_ch3
    channel: PWM_3

light:
  - platform: monochromatic
    name: "PWM Light 3"
    output: pwm_ch3
    effects:
      - pulse:

  # Single RGB LED
  - platform: extio2
    extio2_id: extio2_hub
    name: "RGB Light 6"
    type: light
    channel: LIGHT_6

  # Addressable LED strip (all 8 pins)
  - platform: extio2
    extio2_id: extio2_hub
    name: "LED Strip"
    type: addressable_light
    num_leds: 8

number:
  # Servo - angle control
  - platform: extio2
    extio2_id: extio2_hub
    name: "Servo 4"
    type: angle
    channel: SERVO_4

  # Servo - pulse-width control
  - platform: extio2
    extio2_id: extio2_hub
    name: "Servo 5"
    type: pulse
    channel: SERVO_5

4. 関連リンク

Page Tools
PDF
On This Page