pdf-icon

Module13.2 4In8Out

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インターフェースでメインコントローラーと接続し、スタッキング拡張をサポートします。多チャンネル負荷駆動やリミットスイッチ・ボタン検出などのアプリケーションに適しています。

特徴

  • STM32F030F4P6 メインコントロールチップ
  • 8チャンネル共通電源アノード MOSドライバー出力ポート(AO3400A)、負荷を直接駆動可能、各チャンネル最大スイッチング電流 1A
  • 4チャンネル共通グラウンド無電圧入力ポート、有電圧信号5V超の信号の接続は禁止
  • MP1584 DC-DC回路を内蔵、メインコントローラーに5V/3Aの給電が可能
  • I2C通信インターフェース

含まれるもの

  • 1 x Module13.2 4In8Out
  • 13 x KF2EDGK-2.54-2P 端子台

アプリケーション

  • 多チャンネル負荷駆動(リレー、空気弁、単方向モーター、信号インジケーターランプなど)
  • リミットスイッチ
  • ボタン検出

仕様

仕様 パラメータ
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

操作説明

基板上のトグルスイッチについて
下図の赤枠内はboot0を制御するトグルスイッチです。1側に切り替えてHighにするとファームウェア書き込みモードになります。0側に切り替えてLowにするとフラッシュからユーザープログラムを読み込む通常使用モードになります。

回路図

ピンマップ

M5-Bus

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

製品サイズ

ソフトウェア

Arduino

#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();
}

UiFlow1

UiFlow2

通信プロトコル

動画