Olá Garagistas! Neste tutorial mostraremos como utilizar a RelayBoard, uma placa muito útil que junta a praticidade com a economia, pois com apenas 3 pinos de controle você pode acionar diversos relés. E como demonstração disponibilizamos ao final deste tutorial um sketch exemplo, utilizando uma biblioteca desenvolvida para Arduino!

 

Material Utilizado:

RelayBoard

Arduino

Jumper Premium F/F

Jumper Premium F/M

Fonte 12V

Resistor 10KΩ

1. RelayBoard

 Imagem 1 - RelayBoard

Criada pelo garagista Gustavo Suim e incubada pelo Lab de Garagem, a RelayBoard é uma placa expansível que com apenas 3 pinos de controle, permite acionar até 8 relés por placa. Com mais de uma placa ligadas juntas é possível controlar 8, 16, 24, até 80 relés, com apenas um microcontrolador. Foi desenvolvida uma biblioteca para Arduino para facilitar o controle de todos os relés, podendo determinar qual a Placa a ser acionada, o Relé e seu Estado (ON/OFF) independentemente.

 

Pinos de Controle da RelayBoard:

Data: Pino responsável pelo envio dos dados responsáveis pelo controle das saídas.

Strobe: Pino responsável por disponibilizar nas saídas as entradas carregadas.

Clock: Pino responsável pelo clock das placas.

2. Biblioteca - RelayBoard.h

A biblioteca, e toda a documentação de como utilizá-la pode ser encontrada clicando aqui. A descrição das funções da biblioteca podem ser encontradas abaixo:

- #include <RelayBoard.h>

Declaração necessária para utilização da placa.

- RelayBoard::RelayBoard(int date, int str, int clk, int numberboard)

  • Date: Pino responsável pelo envio dos dados responsáveis pelo controle das saídas.
  • Str: Pino responsável por disponibilizar nas saídas as entradas carregadas.
  • Clk: Pino responsável pelo clock das placas.
  • Numberboard: variável que informa para todo o sistema a quantidade de placas acopladas.

Ex.: RelayBoard relay(2,4,6,2); // cria o objeto “relay” com as devidas propriedades

Observação:

  • TODOS os pinos desta função são configurados como OUT automaticamente.

 

 

- void RelayBoard::set(int shield, int out, boolean status)

  • Shield: Informa qual a placa que deverá ser utilizada
  • Out: informa qual a saída da placa informada acima deverá ser acionada (ON/OFF).
  • Status: Devemos informar “1” para LIGAR a saída ou “0” para DESLIGAR a saída.

Ex.: relay.set(0,3,1);

Observações:

  • A contagem de placas e saídas iniciam-se com o valor 0 (zero).
  • Esta função realiza o acionamento da saída sempre que for utilizada.

 

 

- void RelayBoard::load(int board, int out, boolean status)

  • Board: Informa qual a placa que deverá ser acionada
  • Out: informa qual a saída da placa informada acima deverá ser acionada.
  • Status: Devemos informar “1” para LIGAR a saída ou “0” para DESLIGAR a saída.

Ex.: relay.load(0,2,1);

Observação:

  • Esta função carrega o STATUS desejado das saídas, porém NÃO faz o acionamento das mesmas.

 

 

- void RelayBoard::go()

Após carregar as saídas solicitadas na função LOAD, à função GO faz o acionamento simultâneo das saídas solicitadas.

Ex.: relay.go();

3. Circuito da Demonstração

 

Utilizando uma fonte 12V para alimentar a(s) RelayBoard e o Arduino, faça as ligações do circuito abaixo.

 

Imagem 2 - Circuito da demonstração

 

 

4. Sketch da Demonstração

//====================================================================================

#include <RelayBoard.h> //Inclui a biblioteca RelayBoard.h

#define data    6 //Define a palavra data como 6 para o pino D6 ser utilizado como o pino do DATA
#define strobe  3 //Define a palavra strobe como 4 para o pino D4 ser utilizado como o pino do STROBE
#define clock   2 //Define a palavra clock como 2 para o pino D2 ser utilizado como o pino do CLOCK
#define numberboards 2 //Define a palavra numberboards como 2, onde é definido quantas RelayBoard há no circuito

RelayBoard relay(data, strobe, clock, numberboards); //Cria a instância, informando os pinos de controle e o número                                                                                 //de placas no circuito

int i; //Variável para contagem
int j; //Variável para contagem

void setup()
{
  delay(1000); //Aguarda 1 segundo antes de iniciar o programa
}

void loop()
{

//relay.set(int board, int out, boolean status)
            //Board: Informa qual a placa que deverá ser utilizada, começando de 0.
            //Out: informa qual a saída da placa informada acima deverá ser acionada (ON/OFF), de 0 a 7
            //Status: Devemos informar "1" para LIGAR a saída ou "0" para DESLIGAR a saída.

//relay.load(int board, int out, boolean status)
            //Board: Informa qual a placa que deverá ser utilizada, começando de 0.
            //Out: informa qual a saída da placa informada acima deverá ser acionada (ON/OFF), de 0 a 7
            //Status: Devemos informar "1" para LIGAR a saída ou "0" para DESLIGAR a saída.

//relay.go()
            //Após carregar as saídas solicitadas na função LOAD, à função GO faz o acionamento simultâneo das                       //saídas solicitadas.

for(i=0; i<=7; i++)
  {
    relay.set(0,i,1);
    delay(50);
    relay.set(0,i,0);
    delay(50);
  }

for(i=7; i>=0; i--)
  {
    relay.set(0,i,1);
    delay(50);
    relay.set(0,i,0);
    delay(50);
  }

for(i=0,j=7;i<=3;i++,j--)
  {
    relay.load(0,i,1);
    relay.load(0,j,1);
    relay.go();
    delay(50);
  }

for(i=3,j=4;i>=0;i--,j++)
  {
    relay.load(0,i,0);
    relay.load(0,j,0);
    relay.go();
    delay(50);
  }

for(i=0;i<=1;i++)
  {
    for(j=0;j<=1;j++)
    {
      relay.load(0,0,j);
      relay.load(0,1,j);
      relay.load(0,6,j);
      relay.load(0,7,j);
      relay.go();
      delay(500);
    }
  }

for(i=0;i<=1;i++)
  {
    for(j=0;j<=1;j++)
    {
      relay.load(0,2,j);
      relay.load(0,3,j);
      relay.load(0,4,j);
      relay.load(0,5,j);
      relay.go();
      delay(500);
    }
  }

for(i=0; i<=7; i++)
  {
    relay.load(0,i,0);
  }

relay.go();
  delay(500);

for(i=0; i<=7; i++)
  {
    relay.load(0,i,1);
  }

relay.go();
  delay(500);

for(i=0; i<=7; i++)
  {
    relay.set(1,i,1);
    delay(50);
    relay.set(1,i,0);
    delay(50);
  }

for(i=7; i>=0; i--)
  {
    relay.set(1,i,1);
    delay(50);
    relay.set(1,i,0);
    delay(50);
  }

for(i=0,j=7;i<=3;i++,j--)
  {
    relay.load(1,i,1);
    relay.load(1,j,1);
    relay.go();
    delay(50);
  }

for(i=3,j=4;i>=0;i--,j++)
  {
    relay.load(1,i,0);
    relay.load(1,j,0);
    relay.go();
    delay(50);
  }

for(i=0;i<=1;i++)
  {
    for(j=0;j<=1;j++)
    {
      relay.load(1,0,j);
      relay.load(1,1,j);
      relay.load(1,6,j);
      relay.load(1,7,j);
      relay.go();
      delay(500);
    }
  }

for(i=0;i<=1;i++)
  {
    for(j=0;j<=1;j++)
    {
      relay.load(1,2,j);
      relay.load(1,3,j);
      relay.load(1,4,j);
      relay.load(1,5,j);
      relay.go();
      delay(500);
    }
  }

for(i=0; i<=7; i++)
  {
    relay.load(1,i,0);
  }

relay.go();
  delay(500);

for(i=0; i<=7; i++)
  {
    relay.load(1,i,1);
  }

relay.go();
  delay(1000);

for(i=0; i<=7; i++)
  {
    relay.load(1,i,0);
    relay.load(0,i,0);
  }

relay.go();

}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

Então é isso Garagistas! Agora vocês podem começar a utilizar essa placa para fazer uma automação na sua residência, esperamos que tenham gostado deste tutorial, até a próxima!

=D

 

 

Exibições: 23884

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Marcio Almeida em 1 setembro 2016 às 21:22
Amigo, tem algum projeto desse usando uma Ethernet Shield com a página index no cartão SD?, Já tentei muito fazer mais sem sucesso.
Comentário de Flavio Sergio Batista em 24 abril 2016 às 21:20

Alguém Ainda tem uma Relay Board pra venda precisando muito no aguardo....

Comentário de Flavio Sergio Batista em 13 abril 2016 às 1:32

Bom dia Garagistas, Vocês ainda tem disponível a Relay Board pra venda não estou conseguindo encontrar no site se poder me passar um link pra compra agradeço Obrigado......

Comentário de Alessandro Costa Oliveira em 17 setembro 2015 às 21:38

posso usa um relayboard, 1 arduino uno e1 shield ethernet com apenas uma fonte 12V 1A?

Comentário de José Egidio Agostinho em 14 setembro 2015 às 22:29

Srs.,

Adquiri recentemente uma placa RelayBoard e, desculpem-me pela ousadia, o resistor de 10K já deveria vir montado na placa, nem que fosse uma "gambiarra".

A imunidade a ruídos, em ambiente industrial é muito baixa, mesmo instalando "snubbers" nos contatos dos relés, fica "mais ou menos" boa quando o cabeamento de interligação entre Arduino e a placa de relés é blindado com aterramento em um dos lados, com comprimento máximo de 15 cm.

Sugiro revisão do projeto, com enfase no dimensionamento e realocação de trilhas do lado digital que funcionam como antenas, captando quaisquer ruídos eletromagnéticos, principalmente próximo a equipamentos elétricos de média/baixa tensão, como motores e contatores.

Comentário de Rogério Pauli em 15 julho 2015 às 9:50

Bom dia Garagistas, tenho uma relay board para experimentos, quando recebi ela estava funcionando normalmene, como estou estudando ainda, não mexi nela por um bom tempo, ai ela começou com o seguinte problema, o relé 7 não obedece mais direito aos comandos, e para ele funcionar depende de como está o estado dos relés 1 e 2, alguém já enfrentou esse problema??? se sim, como faço para resolver, mas quanto a isso ta tranquilo, a placa eh para testes mesmo, vou adquirir mais placas pq vi que funciona muito bem.

Mais uma coisa, não estou conseguindo fazer ela funcionar pela internet, alguém tem um exemplo que possa me passar???  

Desde já agradeço.

se puderem enviar para meu e-mail o exemplo, agradeço

Comentário de Leonardo Ramos de Oliveira em 12 maio 2015 às 16:01

Olá, acabei de adquirir duas relayboard's. Alguém poderia me informar qual é o chip de controle da placa?

Eu tenho que acionar meu relayboard com um controlador nada convencional, porém muito robusto a sistemas de medidas ambientais. Ele é baseado em programação Basic. Eu tenho alguns pinos de controle pra utilizar na relay board mas só vou poder usar essa sketch de exemplo e as bibliotecas em C como inspiração. Se tiver a informação do chip talvez consiga ver melhor como fazer funcionar no meu controlador.

Comentário de linaldo silva em 23 abril 2015 às 21:00

queria controlar com botões cada reles da placa como faço??

alguem ajuda ai começando agora um um pouco atrapalhado ainda. :).

Comentário de joilson morais da cruz em 23 janeiro 2015 às 23:44

olá  boa  noite eu  comprei um relayboard  e desejo utilizar com acionamento ifran vermelho controle remoto alguem ai tem algum código que  possa me passar desde ja agradeço

Comentário de Samuel Rodrigues em 22 dezembro 2014 às 18:27

cara, tem algum macete na inicialização?

estou utilizando a relayboard com o arduino leonardo. quando inicializo o programa via pc, (compilando o sketch) a placa inicia normalmente, mas quando ligo utilizando fonte 5v a relayboard acende alguns reles aleatoriamente e trava. ja tentei utilizando a fonte apenas no arduino, alimentando a relayboard com junpers, a partir da relayboard tmb, e utilizando fonte nas duas placas, mas sem os jumpers de alimentação. montei o circuito como foi passado, com o resistor de 10k. por favor garagistas me ajudem :)

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2017   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço