Arduinoで65,280個のリレーを制御: 拡張可能IO & リレーソリューション
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino Nano R3 | 1 | マスターコントローラー |
| IO Expander | 1+ | リレー拡張用中継ボード |
| Relay Expander | 1+ | 16リレー制御用拡張ボード |
| IO Extender | 1+ | 長距離通信用 (CAT5ケーブルで最大4000ft) |
| Arduino 16リレーボード | 1+ | 安価な市販リレーボード使用可能 |
使用ソフトウェア
- Arduino IDE
プロジェクト概要
IO ExpanderとRelay Expanderを組み合わせ、最大65,280個のリレーを単一のArduinoで制御できる拡張システムです。大量のリレー制御が必要なプロジェクト(水耕栽培、プラント制御、大規模照明等)に最適です。
仕組みと拡張性
- 1つのIO Expanderで最大16台のRelay Expanderをデイジーチェーン接続可能 → 256リレー制御
- さらに255台のIO Expanderをシリアルバスで接続可能 → 255 × 256 = 65,280リレー
- 安価な市販のArduino 16リレーボード(15ドル以下)をそのまま活用可能
- ドライバ不要、コードサイズ節約、リレー状態保持用RAM不要
- 追加電源不要 (リレーボードから給電)
単一IO Expanderで64リレー制御
動画: 64リレー制御デモ
配線図
サンプルコード (単一Expander)
/* IO Expander - 64 Relays Control */
#include <SoftwareSerial.h>
#include "IOExpander.h"
#include <avr/wdt.h>
#define MAX_RELAYS 64
char cmd[10];
void setup() {
Serial.begin(115200);
wdt_enable(WDTO_8S); // 8秒ウォッチドッグ
// Relay Expander 4台分 (64/16) を初期化
sprintf(cmd, "eb%d", MAX_RELAYS / 16);
SerialCmdDone(cmd);
}
void loop() {
static int i = 1;
// リレーiをOFF
sprintf(cmd, "e%df", i);
SerialCmdDone(cmd);
if (i++ >= MAX_RELAYS) i = 1;
// リレーiをON
sprintf(cmd, "e%do", i);
SerialCmdDone(cmd);
delay(100);
wdt_reset();
}
複数IO Expanderによるリレー制御 (星型/分散配置)
動画: 複数Expanderデモ
配線図
サンプルコード (複数Expander・9bitシリアル)
/* IO Expander - Relay Bonanza with Multiple Expanders! */
#include <HardwareSerial9Bit.h>
#include "IOExpander9Bit.h"
#include <avr/wdt.h>
#define MAX_BOARDS 4
char cmd[10];
void setup() {
Serial9Bit.begin(115200, SERIAL_9N1);
Serial9Bit.write(0); // IO Expanderを9bitモードに設定
wdt_enable(WDTO_8S);
for (int board = 1; board <= 4; board++)
SerialCmdDone(board, "eb1"); // 各ボードで1バンク(16リレー)初期化
}
void loop() {
static int board = 1;
static int relay = 1;
sprintf(cmd, "e%df", relay);
SerialCmdDone(board, cmd); // 指定ボードのリレーOFF
if (++relay > 16) {
relay = 1;
if (++board > MAX_BOARDS) board = 1;
}
sprintf(cmd, "e%do", relay);
SerialCmdDone(board, cmd); // 指定ボードのリレーON
delay(100);
wdt_reset();
}
なぜこれほど多くのリレーが必要なのか?
アクアポニクスや水耕栽培では、多数のセンサーとデバイス(ポンプ、バルブ、照明、ファン等)を栽培ベッド単位、さらには個々の植物単位で自動制御する必要があります。これには極めて大量のI/Oが必要で、IO Expanderシステムがその要求に応えます。
特徴まとめ
- 安価な市販16リレーボードをそのまま使用可能
- シンプルなシリアルコマンドで個別/バンク単位制御
- ドライバ不要でコードサイズ最小限
- リレー状態をハードウェア側で保持 (Arduino側のRAM不要)
- リレーボードからの給電のみで追加電源不要
- IO ExtenderでCAT5ケーブルによる最大4000ft (約1.2km) の長距離配線対応
- ウォッチドッグタイマー対応で信頼性向上
回路図
入手先・詳細情報
IO Expander、Relay Expander、IO Extenderの詳細仕様、購入、技術サポートについては開発元(Zeven Development)のウェブサイトを参照してください。オープンソースハードウェアとして設計情報も公開されています。
製造プロセス
- Alexaでシーリングファンを音声制御:ステップバイステップガイド
- スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
- Arduino電源制御センター:N-FET/P-FET/リレー/RTC搭載キット
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
- Arduino Nanoとジョイスティックで2軸ステッピングモーターを制御:Visuinoで簡単プログラミング
- Windows 10 CortanaでBluetooth経由でArduinoのLEDを制御
- ThimbleKrox: Arduino MicroとMPU-6050を用いた指装着型マウス制御
- スマホで家庭照明をシームレス制御 - 1Sheeld活用
- Arduinoでゴキブリ制御システムを自作 - 30ドル以下で構築
- Arduino Unoで25kHz 4ピンPWMファンを制御 – 製作・コード・テスト