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 で接続した外部ホストコントローラーが必要です。
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 各プラットフォームを使用する前に、extio2 外部コンポーネントを追加し、Hub を宣言してください。
external_components:
- source: github://m5stack/esphome-yaml/components@main
components: [extio2]
refresh: 0s
extio2:
id: extio2_hub 0x45。true。1kHz。選択肢:2kHz1kHz500Hz250Hz125HzEXT.IO2 のピンは、switch・binary_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 0〜7。false。pullup・pulldown・open_drain などのオプションは使用できません。センサープラットフォームは、ADC 対応の 8 ピンからアナログ値を読み取ります。
sensor:
- platform: extio2
extio2_id: extio2_hub
name: "ADC センサー 0"
channel: ADC_0
resolution: 12BIT
update_interval: 5s ADC_0〜ADC_7。8BIT。8BIT: 8 ビット分解能、範囲 0〜255。12BIT: 12 ビット分解能、範囲 0〜4095。60s。出力プラットフォームは任意のピンを 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 ライト 0"
output: pwm_ch0
effects:
- pulse: PWM_0〜PWM_7。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 angle: 角度で制御。pulse: パルス幅で制御。SERVO_0〜SERVO_7。0.0、パルスモードのデフォルト 500.0。180.0、パルスモードのデフォルト 2500.0。3.0、パルスモードのデフォルト 100.0。| モード | 単位 | 最小値 | 最大値 | ステップ |
|---|---|---|---|---|
angle | ° | 0 | 180 | 3 |
pulse | µs | 500 | 2500 | 100 |
ライトプラットフォームは 2 つのモードをサポートします。指定ピン上の単一 RGB LED、またはピン 0 から始まる連続した可変長 LED ストリップです。
指定ピン上の 1 つの RGB LED を制御します。
light:
- platform: extio2
extio2_id: extio2_hub
name: "EXT.IO2 ライト 2"
type: light
channel: LIGHT_2 ピン 0 から始まる連続した複数の RGB LED を制御します。ESPHome のすべてのアドレッサブルライトエフェクトに対応しています。
light:
- platform: extio2
extio2_id: extio2_hub
name: "LED ストリップ"
type: addressable_light
num_leds: 8 light: 単一 RGB LED。addressable_light: アドレッサブル LED ストリップ。light タイプで必須, 列挙型): 使用するピン。LIGHT_0〜LIGHT_7。addressable_light タイプで必須, int): LED 数。1〜8。ピン 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