Controle 65.280 Relés com Arduino: Soluções Expansíveis de IO e Relés
Componentes e Materiais
| Componente | Quantidade | Observações |
|---|---|---|
| Arduino Nano R3 | 1 | |
| Expansor de IO | 1 | IO Expander |
| Expansor de Relés | 1 | Relay Expander |
| Extensor de IO | 1 | IO Extender |
| Placa Arduino 16 Relés | 1 |
Software e Serviços Online
- Arduino IDE
Sobre o Projeto
Use o Expansor de IO e Expansor de Relés para controlar até 65.280 relés.
Precisa adicionar muitos relés ao seu projeto? Então você precisa do Expansor de IO com Expansores de Relés. Cada Expansor de IO pode controlar até 16 Expansores de Relés em cascata (daisy-chained) para um total de 256 relés. Conectando 255 Expansores de IO juntos, você pode controlar seletivamente até 65.280 relés.
Controlar Relés com um Único Expansor de IO
Lista de Recursos
- Use placas Arduino de 16 relés baratas (< $15).
- Comandos de controle de relé fáceis de usar.
- Controle um relé individual ou um banco por vez.
- Nenhum driver necessário. Economiza espaço de código.
- Nenhum espaço de dados para manter estado do relé.
- Nenhuma fonte de alimentação extra necessária.
Peças Necessárias para Construir um Banco de Relés
- Expansor de IO
- Extensor de IO
- Expansor de Relés
- Placa Arduino 16 Relés
Diagrama de Fiação
Nota: No diagrama acima, o Expansor de IO e Arduino Nano estão sendo alimentados pela primeira placa de relés. Todos os Expansores de Relés são alimentados pela placa de relés à qual estão conectados.
/* Expansor de IO
* Controle 64 Relés
*/
#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();
}
Múltiplos Expansores de IO Controlando Relés
Outra forma de controlar relés é usar múltiplos Expansores de IO. Isso nos dá a capacidade de distribuir sensores e relés para uma rede central ou em estrela, mas ainda interconectar todos os Expansores de IO em um único barramento serial. Se você precisa separar os Expansores de IO até 1200m (4000ft), use os Extensores de IO como mostrado abaixo com cabo de rede Cat5 padrão azul.
Diagrama de Fiação
Nota: No diagrama acima, todos os Expansores de IO e Arduino Nano estão sendo alimentados pela primeira placa de relés através do barramento serial. Todos os Expansores de Relés são alimentados pela placa de relés à qual estão conectados.
/* Expansor de IO
* Bonança de Relés com Expansores de IO!
*/
#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); // Define Expansores de IO para 9-bit
wdt_enable(WDTO_8S);
for (int board = 1; board <= 4; board++)
SerialCmdDone(board, "eb1");
}
void loop() {
static int board = 1;
static int rele = 1;
sprintf(cmd, "e%df", rele);
SerialCmdDone(board, cmd);
if (++rele > 16) {
rele = 1;
if (++board > MAX_BOARDS) board = 1;
}
sprintf(cmd, "e%do", rele);
SerialCmdDone(board, cmd);
delay(100);
wdt_reset();
}
Então, Por Que Preciso Controlar Tantos Relés?
Uma aplicação é em aquaponia ou hidroponia. Muitos sensores e dispositivos precisam ser automatizados até cada cama de cultivo ou planta individual. Isso requer IO extremo e o Expansor de IO entrega.
Então pegue seu Expansor de IO hoje e construa seu sistema!
Código
Controlar 64 Relés com um Único Expansor (C/C++)
/* Expansor de IO * * Controle 64 Relés * */
#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();
}
Controlar 64 Relés com Múltiplos Expansores (C/C++)
/* Expansor de IO * * Bonança de Relés com Expansores de IO! * */
#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); // Define Expansores de IO para 9-bit
wdt_enable(WDTO_8S);
for (int board = 1; board <= 4; board++)
SerialCmdDone(board, "eb1");
}
void loop() {
static int board = 1;
static int rele = 1;
sprintf(cmd, "e%df", rele);
SerialCmdDone(board, cmd);
if (++rele > 16) {
rele = 1;
if (++board > MAX_BOARDS) board = 1;
}
sprintf(cmd, "e%do", rele);
SerialCmdDone(board, cmd);
delay(100);
wdt_reset();
}
Esquemáticos
Processo de manufatura
- Controle seu Ventilador de Teto com Alexa: Guia Passo a Passo
- Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
- Central de Controle de Potência Arduino: N-FET, P-FET, Relé e Kit RTC
- Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
- Controlador de Umidificador DIY com Arduino e Relé – Configuração Segura de Alta Tensão
- Controle Dois Motores de Passo com Arduino Nano e Joystick – Tutorial Simples
- Controle de LED Arduino com Cortana via Bluetooth no Windows 10
- ThimbleKrox: Controle de Mouse Dedo-Montado com Arduino Micro e MPU-6050
- Controle Residencial de Iluminação via Smartphone com 1Sheeld e Arduino
- Controle de Ventoinha PWM 4 Pinos 25 kHz com Arduino Uno – Montagem, Código e Teste