65.280 Relais mit Arduino steuern: Erweiterbare IO- & Relais-Lösungen
Komponenten und Zubehör
| Komponente | Menge | Hinweis |
|---|---|---|
| Arduino Nano R3 | 1 | |
| IO Expander | 1 | IO Expander |
| Relay Expander | 1 | |
| IO Extender | 1 | |
| Arduino 16 Relais Board | 1 |
Apps und Online-Dienste
- Arduino IDE
Über dieses Projekt
Verwenden Sie den IO Expander und Relay Expander, um bis zu 65.280 Relais zu steuern.
Müssen Sie viele Relais zu Ihrem Projekt hinzufügen? Dann brauchen Sie den IO Expander mit Relay Expandern. Jeder IO Expander kann bis zu 16 in Reihe geschaltete Relay Expander steuern – insgesamt 256 Relais. Durch Verbinden von 255 IO Expandern können Sie selektiv bis zu 65.280 Relais steuern.
Relais mit einem einzelnen IO Expander steuern
Funktionsumfang
- Günstige Arduino 16-Relais-Boards (< 15 $) verwenden
- Einfache Relais-Steuerbefehle
- Einzelnes Relais oder ganze Bank gleichzeitig steuern
- Kein Treiber erforderlich – spart Codespeicher
- Kein Datenspeicher für Relaiszustände nötig
- Keine zusätzliche Stromversorgung erforderlich
Benötigte Teile für eine Relaisbank
- IO Expander
- IO Extender
- Relay Expander
- Arduino 16 Relais Board
Verdrahtungsdiagramm
Hinweis: Im obigen Verdrahtungsdiagramm werden der IO Expander und Arduino Nano vom ersten Relaisboard gespeist. Alle Relay Expander werden vom Relaisboard gespeist, an das sie angeschlossen sind.
Code: 64 Relais mit einem Expander
/* IO Expander
* Control 64 Relays
*/
#include <SoftwareSerial.h>
#include "IOExpander.h"
#include <avr/wdt.h>
//#define SERIAL_DEBUG
#define MAX_RELAYS 64
#ifdef SERIAL_DEBUG
SoftwareSerial swSerial(8, 7);
#endif
char cmd[10];
void setup() {
Serial.begin(115200);
#ifdef SERIAL_DEBUG
swSerial.begin(115200);
swSerialEcho = &swSerial;
#endif
wdt_enable(WDTO_8S);
sprintf(cmd, "eb%d", MAX_RELAYS / 16);
SerialCmdDone(cmd);
}
void loop() {
static int i = 1;
sprintf(cmd, "e%df", i);
SerialCmdDone(cmd);
if (i++ >= MAX_RELAYS) i = 1;
sprintf(cmd, "e%do", i);
SerialCmdDone(cmd);
delay(100);
wdt_reset();
}
Mehrere IO Expander zur Relaissteuerung
Eine weitere Möglichkeit, Relais zu steuern, ist die Verwendung mehrerer IO Expander. Dies ermöglicht die Verteilung von Sensoren und Relais auf einen zentralen Sternverbund, aber alle IO Expander bleiben auf einem einzigen seriellen Bus miteinander verbunden. Wenn Sie IO Expander bis zu 4000 ft (ca. 1200 m) trennen müssen, verwenden Sie IO Extender mit standardmäßigen blauen Cat5-Netzkabeln.
Verdrahtungsdiagramm
Hinweis: Im obigen Diagramm werden alle IO Expander und der Arduino Nano vom ersten Relaisboard über den seriellen Bus gespeist. Alle Relay Expander werden vom Relaisboard gespeist, an das sie angeschlossen sind.
Code: 64 Relais mit mehreren Expandern
/* IO Expander
* Relay Bonnaza with IO 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 auf 9-Bit setzen
wdt_enable(WDTO_8S);
for (int board = 1; board <= 4; board++)
SerialCmdDone(board, "eb1");
}
void loop() {
static int board = 1;
static int 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();
}
Warum so viele Relais steuern?
Eine solche Anwendung ist Aquaponik oder Hydroponik. Viele Sensoren und Geräte müssen bis hin zu jedem Beet oder jeder einzelnen Pflanze automatisiert werden. Dies erfordert extreme IO-Kapazität, die der IO Expander liefert.
Holen Sie sich Ihren IO Expander noch heute und bauen Sie Ihr System!
Code
Control 64 Relays with a Single Expander (C/C++)
/* IO Expander * Control 64 Relays * */
#include <SoftwareSerial.h>
#include "IOExpander.h"
#include <avr/wdt.h>
//#define SERIAL_DEBUG
#define MAX_RELAYS 64
#ifdef SERIAL_DEBUG
SoftwareSerial swSerial(8,7);
#endif
char cmd[10];
void setup() {
Serial.begin(115200);
#ifdef SERIAL_DEBUG
swSerial.begin(115200);
swSerialEcho = &swSerial;
#endif
wdt_enable(WDTO_8S);
sprintf(cmd, "eb%d", MAX_RELAYS / 16);
SerialCmdDone(cmd);
}
void loop() {
static int i = 1;
sprintf(cmd, "e%df", i);
SerialCmdDone(cmd);
if (i++ >= MAX_RELAYS) i = 1;
sprintf(cmd, "e%do", i);
SerialCmdDone(cmd);
delay(100);
wdt_reset();
}
Control 64 Relays with Multiple Expanders (C/C++)
/* IO Expander * Relay Bonnaza with IO 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); // Set IO Expanders to 9-bit
wdt_enable(WDTO_8S);
for (int board = 1; board <= 4; board++)
SerialCmdDone(board, "eb1");
}
void loop() {
static int board = 1;
static int 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();
}
Schaltpläne
Herstellungsprozess
- Deckenventilator per Alexa steuern – Schritt-für-Schritt-Anleitung
- Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
- Arduino Power Control Center: N-FET, P-FET, Relais & RTC Kit
- LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Zwei Schrittmotoren mit Arduino Nano & Joystick steuern – Einfaches Tutorial
- Arduino-LED per Cortana und Bluetooth unter Windows 10 steuern
- ThimbleKrox: Fingermontierte Maussteuerung mit Arduino Micro & MPU-6050
- Smartphone-Steuerung der Hausbeleuchtung mit Arduino & 1Sheeld
- 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno – Bau, Code & Test