SKU:M122














Module13.2 4In8Out は、8チャンネルMOSドライバー出力 + 4チャンネル無電圧接点入力を備えたスタッカブルなIO拡張制御モジュールです。STM32F030をIO拡張チップとして採用し、I2Cプロトコルで通信します。独立ポートで9 ~ 24V DC電源入力をサポートし、MP1584 DC-DC回路を内蔵してメインコントローラーに5V/3Aの給電が可能です。8チャンネル出力はAO3400A MOSFETを使用し、共通電源アノード構成で負荷を直接駆動でき、各チャンネルの最大スイッチング電流は1Aです。4チャンネル入力は共通グラウンドの無電圧接点入力で、有電圧信号や5Vを超える信号の接続は禁止されています。モジュールはM5-Busインターフェースでメインコントローラーと接続し、スタッキング拡張をサポートします。多チャンネル負荷駆動やリミットスイッチ・ボタン検出などのアプリケーションに適しています。
| 仕様 | パラメータ |
|---|---|
| MCU | STM32F030F4P6 |
| 通信インターフェース | I2C @ 0x45(変更可能) |
| 供給電圧 | 9 ~ 24V |
| 出力チャンネル数 | 8 |
| 出力電流 | 各チャンネル ≤ 1A、総電流 ≤ 8A |
| 入力チャンネル数 | 4 |
| チャンネルインターフェース | KF2EDGR-2.54-2P |
| 製品サイズ | 54.0 x 54.0 x 19.7mm |
| 製品重量 | 21.9g |
| 梱包サイズ | 80.0 x 55.0 x 28.0mm |
| 総重量 | 52.5g |


| PIN | LEFT | RIGHT | PIN |
|---|---|---|---|
| GND | 1 | 2 | |
| GND | 3 | 4 | |
| GND | 5 | 6 | |
| 7 | 8 | ||
| 9 | 10 | ||
| 11 | 12 | 3V3 | |
| 13 | 14 | ||
| 15 | 16 | ||
| SDA | 17 | 18 | SCL |
| 19 | 20 | ||
| 21 | 22 | ||
| 23 | 24 | ||
| HPWR | 25 | 26 | |
| HPWR | 27 | 28 | 5V |
| HPWR | 29 | 30 |
#include <M5Unified.h>
#include "MODULE_4IN8OUT.h"
MODULE_4IN8OUT module;
void setup() {
M5.begin();
while (!module.begin(&M5.In_I2C, MODULE_4IN8OUT_ADDR)) {
Serial.println("4IN8OUT INIT ERROR");
M5.Lcd.println("4IN8OUT INIT ERROR");
delay(1000);
};
Serial.println("4IN8OUT INIT SUCCESS");
M5.Lcd.println("4IN8OUT INIT SUCCESS");
}
long interval = 0;
bool level = false;
void loop() {
for (uint8_t i = 0; i < 4; i++) {
if (module.getInput(i) == 1) {
M5.Lcd.fillRect(60 + 60 * i, 0, 25, 25, TFT_BLACK);
M5.Lcd.fillRect(60 + 60 * i, 0, 25, 25, TFT_BLUE);
} else {
M5.Lcd.fillRect(60 + 60 * i, 0, 25, 25, TFT_BLACK);
M5.Lcd.drawRect(60 + 60 * i, 0, 25, 25, TFT_BLUE);
}
M5.Lcd.drawString("IN" + String(i), 40 + 60 * i, 5);
}
M5.Lcd.drawString("4IN8OUT MODULE", 60, 80, 4);
M5.Lcd.drawString("FW VERSION:" + String(module.getVersion()), 70, 120, 4);
if (millis() - interval > 1000) {
interval = millis();
level = !level;
for (uint8_t i = 0; i < 8; i++) {
module.setOutput(i, level);
if (level) {
M5.Lcd.fillRect(20 + 35 * i, 200, 25, 25, TFT_BLACK);
M5.Lcd.fillRect(20 + 35 * i, 200, 25, 25, TFT_GREEN);
} else {
M5.Lcd.fillRect(20 + 35 * i, 200, 25, 25, TFT_BLACK);
M5.Lcd.drawRect(20 + 35 * i, 200, 25, 25, TFT_GREEN);
}
M5.Lcd.drawString("OUT" + String(i), 18 + 35 * i, 180);
delay(50);
}
}
// if (M5.BtnB.wasPressed() || M5.Touch.getDetail().wasClicked()) {
// if (module.setDeviceAddr(0x66)) {
// Serial.println("Update Addr: 0x66");
// }
// }
// M5.update();
}