Arduino 控制 65,280 路继电器:可扩展 IO 与继电器扩展方案
元器件与物料
| 元器件 | 数量 | 备注 |
|---|---|---|
| Arduino Nano R3 | 1 | 主控制器 |
| IO 扩展板 (IO Expander) | 1 | 核心扩展模块 |
| 继电器扩展板 (Relay Expander) | 1 | 每块 16 路继电器 |
| IO 延长板 (IO Extender) | 1 | 长距离串联用 |
| Arduino 16 路继电器板 | 1 | 廉价现成模块 |
软件与在线服务
- Arduino IDE
项目简介
使用 IO 扩展板与继电器扩展板,可控制高达 65,280 路继电器。单个 IO 扩展板可串联 16 块继电器扩展板 (共 256 路),再将 255 个 IO 扩展板组网,即可实现 65,280 路选择性控制。
单个 IO 扩展板控制继电器
核心特性
- 兼容廉价 <$15 的 Arduino 16 路继电器板
- 简单的串口指令控制单个继电器或整组
- 无需驱动库,节省代码空间
- 无需额外内存维护继电器状态
- 无需额外电源,从继电器板取电
搭建继电器组所需部件
- IO 扩展板
- IO 延长板
- 继电器扩展板
- Arduino 16 路继电器板
接线图
注意: 上图中 IO 扩展板与 Arduino Nano 由第一块继电器板供电。所有继电器扩展板由其连接的继电器板供电。
示例代码:控制 64 路继电器 (单扩展板)
/* IO Expander - Control 64 Relays */
#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);
sprintf(cmd, "eb%d", MAX_RELAYS / 16); // 配置 4 块继电器板
SerialCmdDone(cmd);
}
void loop() {
static int i = 1;
sprintf(cmd, "e%df", i); // 关闭第 i 路
SerialCmdDone(cmd);
if (i++ >= MAX_RELAYS) i = 1;
sprintf(cmd, "e%do", i); // 打开第 i 路
SerialCmdDone(cmd);
delay(100);
wdt_reset();
}
多 IO 扩展板协同控制 (星型/总线拓扑)
若需将 IO 扩展板分离至 4000 英尺 (约 1.2 km),使用 IO 延长板 + 标准 Cat5 网线。
多扩展板接线图
注意: 所有 IO 扩展板与 Arduino Nano 通过串口总线由第一块继电器板供电。继电器扩展板各自由对应继电器板供电。
示例代码:4 块扩展板控制 64 路继电器
/* 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); // 设置 9-bit 模式
wdt_enable(WDTO_8S);
for (int board = 1; board <= 4; board++)
SerialCmdDone(board, "eb1"); // 每板配置 1 个继电器扩展板
}
void loop() {
static int board = 1, relay = 1;
sprintf(cmd, "e%df", relay); // 关闭
SerialCmdDone(board, cmd);
if (++relay > 16) { relay = 1; if (++board > MAX_BOARDS) board = 1; }
sprintf(cmd, "e%do", relay); // 打开
SerialCmdDone(board, cmd);
delay(100);
wdt_reset();
}
为什么需要控制这么多继电器?
典型应用:水培/鱼菜共生系统。每个种植床甚至单株植物都需要独立的传感器与执行器自动化控制,极度依赖大规模 IO 扩展能力。
立即获取 IO 扩展板,构建您的大规模控制系统!
代码
- Control 64 Relays with a Single Expander (见上文)
- Control 64 Relays with Multiple Expanders (见上文)
原理图
制造工艺
- 用 Alexa 控制吊扇:分步指南
- 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
- Arduino 电源控制中心:N-FET/P-FET/继电器/RTC 多功能扩展板
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- DIY Arduino 加湿器控制器:继电器安全控制高压电路
- Arduino Nano + 摇杆控制双步进电机:Visuino 图形化教程
- Windows 10 Cortana 蓝牙控制 Arduino LED:UWP 应用开发全流程
- ThimbleKrox:基于 Arduino Micro 与 MPU-6050 的指戴式鼠标控制器
- 1Sheeld + Arduino 手机无线控制家庭灯光系统
- DIY Arduino 蟑螂控制系统 —— 30 美元以内自制指南
- 使用 Arduino Uno 和蓝牙实现遥控小车:分步指南
- Arduino Uno 控制 25kHz 4 针 PWM 风扇 - 硬件、代码与测试