LOJA FÍSICA
Praça Mauá, 4541 - Sala 22
09580-050 - São Caetano do Sul / SP
CENTRAL DE ATENDIMENTO
(11) 3522-7626
info@robocore.net
HORÁRIO DE FUNCIONAMENTO
De segunda à sexta das 9:00 às 19:00
Sábado das 9:00 às 13:00
^ Retornar ao
topo

Módulo Relé Serial


Quantidade:
Formas de pagamento:
  • Pague em até 12x no cartão
  • Pague através do PayPal
  • Pague por Boleto Bancário

Precisando controlar diversos relés com seu Arduino, mas está sem muitos pinos para isso? Seus problemas acabaram! Este é o Módulo Relé Serial, um módulo pensado para quem precisa acionar diversas cargas, mas não dispõe de muitas portas. Com este módulo você consegue controlar os quatro relés da placa independentemente utilizando apenas dois pinos do microcontrolador. Através de uma comunicação serial você informa exatamente qual relé quer acionar.

Mas isso não é tudo: você ainda tem a possibilidade de adicionar mais módulos do mesmo modelo, um atrás do outro, a fim de acionar ainda mais relés usando as mesmas duas portas!

Atenção: Para usar este módulo com Arduino, este módulo deve obrigatoriamente estar alimentada com uma Fonte de 12V, pois os relés da mesma possuem bobina de 12V. Dessa forma, ao alimentar o Arduino com uma fonte de 12V, utilize o pino Vin da placa para sair com 12V para o módulo.


  • Dimensões da placa: 78mm x 52mm x 20mm
  • Tensão de alimentação: 12V
  • Tensão de Clock/Data: 5V
  • Sinal de controle: Nível TTL
  • Bobina: 12VDC 30mA
  • Carga nominal do relê: 7A 30VDC, 10A 125VAC , 7A 220VAC
  • Carga nominal do módulo: 10A
  • Tempo de acionamento de contato: 10ms


Para fazer comentários é necessário estar logado. Efetuar login.

Você ainda nao é cadastrado? Cadastre-se agora!



donadoni2007
date Enviado: 2017-05-27 01:15:35


boa noite fiz essa mudança no código  de 40 reles  ,1 rele pulso e o outro continuo, mais  quando aperto qualquer botão aciona os reles 1 e 2 ,como resolver isso  amigo , me de uma ajuda ai por favor .....

void SetBotao(int botao, EthernetClient client) {

  int modulo = (botao - 1) / 4 + 1;
  int rele = botao % 4;
  if (rele == 0) {
    rele = 4;
  }

  Serial.print("modulo:");
  Serial.print(modulo);
  Serial.print(" rele:");
  Serial.print(rele);
  Serial.print(" - ");

  if (estado_botao[botao] == 0) {
    relays.SetRelay(1, SERIAL_RELAY_ON, 1);
    estado_botao[botao] = 1;
     //client.print("1");
    Serial.println("1");
    
    relays.SetRelay(1, SERIAL_RELAY_OFF, 1);
     estado_botao[botao] = 0;
      //client.print("0");
    Serial.println("0");
   
  }
  else {
    
  }
     if (estado_botao[botao] == 0) {
    relays.SetRelay(2, SERIAL_RELAY_ON, 1);
    delay(500);
    estado_botao[botao] = 1;
     //client.print("1");
    Serial.println("1");
    relays.SetRelay(2, SERIAL_RELAY_OFF, 1);
    delay(500);
     estado_botao[botao] = 0;
      //client.print("0");
    Serial.println("0");
   
   
  }
  client.print("0|");
  for (int i = 1 ; i <= 40 ; i++) {
    client.print(estado_botao[i]);
    client.print("|");
  }

}

hallszombie
date Enviado: 2017-05-27 09:58:49

Olá donadi,

Sugiro que de uma olhada no exemplo do Francois, veja que além da verificação do estado do botão, o exemplo verifica no segundo "se" (Se(botão == 1){ ) qual botão esta sendo acionado, outro ponto importante é que o "else" que você usou no código esta vazio, por isso que o acionamento dos rele ocorre em simultâneo.


donadoni2007
date Enviado: 2017-05-26 16:35:36


sim amigo sobre o exemplo blink eu conheço ,estou falando sobre os code dos 40 reles, fazer umexemplo sobre isso que o francois me informou   if((botao == 3) ou (botao == 4) ou ...)
     // pulsa o botão
else
     // acionamento simples do botão

Francois
date Enviado: 2017-05-26 19:03:30

Algo do gênero, para o botão 1:



donadoni2007
date Enviado: 2017-05-26 13:39:09


boa tarde Francois , faça um exemplo pra mim em um rele para mim entender  ,pq fiz aqui e nada de acionar um um rele , esta acionando todos ainda ...por favor agradeço deis de ja  obrigado..

hallszombie
date Enviado: 2017-05-26 14:42:09

Olá donani,

Você pode usar os exemplos da biblioteca, neste caso para acionar um rele você pode usar o exemplo blink.


donadoni2007
date Enviado: 2017-05-26 01:56:45


boa noite preciso de ajuda amigo comprei um modulo rele estou tentado mudar 2 rele para pulsa e dois continuo tentei dessa forma mais aperto qualquer botão e aciona os 4 reles ao mesmo tempo , oque tem de errado nesse código me ajuda por favor..


     if (estado_botao[1] == 0) {
    relays.SetRelay(1, SERIAL_RELAY_ON, 1);
    estado_botao[1] = 1;
    //client.print("1");
    Serial.println("1");
  }
  else {
    relays.SetRelay(1, SERIAL_RELAY_OFF, 1);
    estado_botao[1] = 0;
    //client.print("0");
    Serial.println("0");
  }
  if (estado_botao[2] == 0) {
    relays.SetRelay(2, SERIAL_RELAY_ON, 1);
    estado_botao[2] = 1;
    //client.print("1");
    Serial.println("1");
  }
  else {
    relays.SetRelay(2, SERIAL_RELAY_OFF, 1);
    estado_botao[2] = 0;
    //client.print("0");
    Serial.println("0");
  }
  if (estado_botao[3] == 0) {
    relays.SetRelay(3, SERIAL_RELAY_ON, 1);
    estado_botao[3] = 1;
    //client.print("1");
    Serial.println("1");
    delay(500);
    relays.SetRelay(3, SERIAL_RELAY_OFF, 1);
    estado_botao[3] = 0;
  }else{
    //client.print("0");
    Serial.println("0");
  }
  if (estado_botao[4] == 0) {
    relays.SetRelay(4, SERIAL_RELAY_ON, 1);
    estado_botao[4] = 1;
    //client.print("1");
    Serial.println("1");
    delay(500);
    relays.SetRelay(4, SERIAL_RELAY_OFF, 1);
    estado_botao[4] = 0;
  }else{
    //client.print("0");
    Serial.println("0");
  }

Francois
date Enviado: 2017-05-26 11:24:46

O código dos 40 relés chama a função SetBotao() para acionar o botão selecionado. Note que o primeiro parâmetro dessa função é o número do botão, justamente para acionar somente o botão selecionado. Isso significa que se você usar qualquer índice (ex:, 1,2 e assim por diante) nessa função, o botão correspondente será acionado ou desligado cada vez que você pressionar qualquer botão da tela. Por isso você deve fazer uma verificação diferente, do número do botão atual com if..else if.. else:

Sendo que essa verificação deve ser feita quando é para ligar e outra quando é para desligar, mas diferem um pouco uma da outra.


marcelojr21
date Enviado: 2017-05-14 16:16:15


Esse possuem optoacopladores ?

MarceloFarias
date Enviado: 2017-05-15 14:47:32

Não, esses relés utilizam transistores para o acionamento das bobinas. 


Elivando
date Enviado: 2017-05-08 20:09:54


boa noite,Vinìcios o códio que enviei não era o certo mandei o errado o certo e esse 

 if(estadodobotao1 == 1){
    relays.SetRelay(1, SERIAL_RELAY_ON, 1);
    delay(2000); 
    
    relays.SetRelay(1, SERIAL_RELAY_OFF, 1);
    delay(2000); 

   
    relays.SetRelay(2, SERIAL_RELAY_ON, 1);
    delay(2000); 
    
    relays.SetRelay(2, SERIAL_RELAY_OFF, 1);
    delay(2000);

    
    relays.SetRelay(3, SERIAL_RELAY_ON, 1);
    delay(10000); 
    
    relays.SetRelay(3, SERIAL_RELAY_OFF, 1);
    delay(10000); }
   
  }

  porém não da certo. quando ligo os 3 reles com mesmo tempo de 2000ms funciona bem ambos ligando e deligando um apos o outro e assim sucessivamente,  mas, quando mudo o tempo do rele 3 para por ex: 10000ms ai não tenho mas a sequencia dos reles, o rele 1 liga e desliga depois o rele2 liga e desliga ai para, ai com poucos segundos liga o rele3 e fica ligado durante o tempo de 10000ms ai desliga e fica os 10000ms desligado nesse tempo mas não é assim que eu quero o que tô querendo é da esquinte forma é que os reles 1,2 fiquem ligando e desligando conforme tempo de 2000ms até dar o tempo de 10000ms e ai sim ligar durante 10000ms e desligar 10000ms ai voltar a sequencia dos reles 1,2 e assim sucessivamente,mas não tô consequindo por isso peço sua ajuda nesse codigo

MarceloFarias
date Enviado: 2017-05-09 09:56:49

Para esse caso não é interessante utilizar delay. Você precisará utilizar uma função que não trave seu código, como a millis(). Dá uma olhada nesses links: 
https://www.arduino.cc/en/reference/millis
https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay


marcosbueno
date Enviado: 2017-05-03 05:06:05


Ei amigos, poderiam desenvolver a biblioteca para Raspberry. Abraço

Francois
date Enviado: 2017-05-03 12:50:16

Pretendemos fazer uma biblioteca para a Raspberry Pi, porém não temos previsão de conclusão.

marcosbueno
date Enviado: 2017-05-07 02:24:27

Certo, trabalho com automação residencial, assim q concluírem se possível avisar, para eu encomendar alguns módulos, abraço!


JacksonBeckers
date Enviado: 2017-04-26 20:53:18


Posso ligar essa placa de reles serial no raspberry 

ViniDj
date Enviado: 2017-04-27 08:25:14

Você pode, porém terá que desenvolver a biblioteca / código adequado pra ela funcionar com a Raspberry já que, conforme a documentação, a biblioteca desenvolvida foi feita apenas para uso com Arduino.


CirosKauer
date Enviado: 2017-04-19 20:55:59


Olá, boa noite!

Alguém poderia me ajudar na lógica desse if?

"if (i < 10) {
 botao[5] = &#39;0&#39;;
 botao[6] = &#39;0&#39; + i;
 } else {
 botao[5] = &#39;0&#39; + (i / 10);
 botao[6] = &#39;0&#39; + (i % 10);
 }

Ele se encontra no if do StrContains.

ViniDj
date Enviado: 2017-04-20 08:04:51

Qual seria sua dúvida em relação a esse if? 

CirosKauer
date Enviado: 2017-04-22 04:47:51

a sua existência kkk e se é necessário quando colocá-se apenas um módulo?

CirosKauer
date Enviado: 2017-04-22 05:39:31

Exatamente aos 23:03 você iniciou a comentar sobre o if, mas não detalhou ele por partes e que abordasse esse if que fiquei em dúvida, prometendo que voltaria a comentar, porém não comentou. :/
https://youtu.be/t8HoOn2v_7o?t=23m3s

ViniDj
date Enviado: 2017-04-24 08:28:13

Na verdade este if não está dentro do StrContais. O StrContains é apenas uma função que compara uma sequência de caracteres com outra. Neste caso, caso o request seja igual a palavra ajax_botao, entramos dentro do if que possui um for seguido desse if. 

Esse if cria as variáveis de cada um dos botões. Esses números 5 e 6 dentro dos colchetes não estão relacionados aos botões 5 e 6. Neste if nós criamos variáveis como botao01, botao02, botao03, etc. O número entre colchetes representa a posição do caracter que queremos inserir o zero e depois o um, por exemplo no caso do botao01. 

Quando criamos uma variável do tipo char como fazemos nesse caso: char botao[] = "botaoxx", e quando acessamos por exemplo botao[0] isso retornaria a letra b. Se acessássemos botao[2], por exemplo, isso retornaria a letra t, e assim por diante. Quando falamos botao[5] estamos tirando o primeiro x de botaoxx e colocando um número. Como a contagem vai do botao01 até o botao40, tratamos primeiro os 10 primeiros botões, que seria essa parte do if:

if (i < 10) {
botao[5] = &#39;0&#39;;
botao[6] = &#39;0&#39; + i;
}

Esse if vai gerar os botões: botao01, botao02, botao03, botao04, botao05, botao06, botao07, botao08 e botao09. A partir do momento que a variável i é superior a 10, passa para o else desse if:

else {
botao[5] = &#39;0&#39; + (i / 10);
botao[6] = &#39;0&#39; + (i % 10);
}

Aqui são usadas duas operações com o i, uma para pegar sua parte decimal e a outra pra pegar a parte da unidade. Quando clocamos i / 10, supondo por exemplo que i = 20, botao[5] passará a receber 2, já que 20/10 = 2. E mesmo se der um número quebrado, ele pega apenas a parte inteira, então se for o botão 32, ele pegaria apenas o 3. Já a operação %, ele pega o resto da divisão. Por exemplo, se fizermos a conta 32 / 10, o resto da divisão é 2, que é justamente o algarismo que queremos como unidade. 


Carloscgs
date Enviado: 2017-04-09 01:12:38


Olá boa noite. 
Alguém poderia me ajudar, no código de 40 reles, como faço para colocar o botão 1 para enviar apenas 1 pulso para ligar e desligar a campainha pois ficar ligado o tempo todo. Eu fiz alguma modificação no código mais ainda não esta legal, fica variando outros relés. O código foi esse:
if (estado_botao[botao] == 0) {
    relays.SetRelay(rele, SERIAL_RELAY_ON, modulo);
    estado_botao[botao] = 1;
    //client.print("1");
    Serial.println("1");

Depois eu inseri esse código

delay(500);
relays.SetRelay(1, SERIAL_RELAY_OFF, 1);
estado_botao[1] = 0;
//client.print("0");
Serial.println("0"); 

Francois
date Enviado: 2017-04-10 13:27:49

A lógica é mais ou menos isso, mas note que no código que você inseriu você está desligando sempre o mesmo relé do mesmo módulo.

Carloscgs
date Enviado: 2017-04-10 14:06:08

Mas é isso que eu quero, só que quando ligo o botão fica variando outro releis ou seja liga e desliga outros releis

Francois
date Enviado: 2017-04-10 15:22:44

A página deve estar entendendo que você está desligando o relé, pois para todo acionamento ele envia o comando Serial.println("0") no término da função. O mais indicado é você fazer essa lógica somente para o relé 1, por exemplo com uma lógica if..else.

profhel
date Enviado: 2017-04-11 01:54:04

Amigo, conseguiu resolver o problema? Estou querendo fazer a mesma coisa e estou tendo exatamente a mesma dificuldade.


Mateus66
date Enviado: 2017-04-07 11:14:04


Olá bom dia.
Gostaria de saber como devo proceder para modificar o código com o objetivo de utilizar um shield ethernet W5100 para comandar apenas um módulo com 4 reles.
Obrigado!

Francois
date Enviado: 2017-04-07 12:56:17

As funções da biblioteca Ethernet e Ethernet 2 são as mesmas, geralmente basta indicar a biblioteca usada com o comando #include.


alexandress
date Enviado: 2017-04-03 18:24:46


boa noite, tenho que controlar  três motores de 12V e quero usar este modulo de rele serial. Só que tenho que manter a amperagem de dois deles a 3A e o outro a 5A. Minha fonte sera uma bateria de 12V. Qual outros intens preciso comprar para manter este sistema com estas correntes ? Se um potenciômetro de quantos ohms cada ?

Francois
date Enviado: 2017-04-03 18:41:46

O relé não é uma opção muito boa para fazer esse tipo de função, pois ele é um acionamento lento e com poucas repetições se comparado com um transistor. Para o seu caso talvez seja melhor usar um controlador de corrente, por exemplo um circuito de acionamento com sensor de corrente e controle PID para limitá-la.


Cizoto
date Enviado: 2017-03-28 22:04:06


É possível agregar 03 módulos relé a um albatross, mantendo uma unica fonte de alimentação ? Alterando o código fonte do albatross seria possível também controlar esses reles para acionar lâmpadas por exemplo ?

MarceloFarias
date Enviado: 2017-03-29 09:29:43

Sim, é possível. Mas você precisaria realizar alterações no código fonte do Albatross. Você poderia por exemplo, colocar um arduino + xbee para receber os comandos do Albatross Master, simulando um Albatross slave. Assim manteria as características do sistema e talvez não fossem necessárias grandes alterações de código. 

Cizoto
date Enviado: 2017-03-29 14:20:01

Poderia por exemplo usar um uno com reles conectados em série e xbee slave recebendo o comando do xbee máster do albatross, é essa sua ideia ? Realmente não teria que mudar nada no código do albatross apenas editar o numero do rele na instrução de comando... tanto os reles quanto o uno poderiam usar a mesma fonte 12v ?

Francois
date Enviado: 2017-03-29 15:28:23

Sim, você pode usar um Arduino Uno/BlackBoard com um XBee para receber os comandos do Albatross Master e atuar os três módulos Relé Serial, inclusive com a mesma fonte. A fonte terá que ser de 12V, mas verifique a corrente que ela consegue fornecer, pois esse valor deve ser superior à soma de consumo de cada placa (considere ainda uma margem).
Na configuração acima, leve em consideração que o XBee atua diretamente um pino digital (veja o esquema elétrico do módulo Slave), portanto você deverá ler um pino digital ao invés de fazer a comunicação serial. Você também pode fazer por comunicação serial, mas terá que alterar o código-fonte e mudar o modo de transmissão entre os XBees. Mas, se você pretende usar apenas um módulo de automação com os Relés Seria, talvez seja melhor usar sem XBee, veja esse exemplo: www.youtube.com/watch?v=t8HoOn2v_7o


Carloscgs
date Enviado: 2017-03-28 17:25:12


Observei que o circuito integrado 74HC595N expande para 8 portas mas nos seus módulos só funciona 4 portas para cada módulo 
A pergunta é como modificar o código para acessar as 8 portas do circuito integrado
        

Francois
date Enviado: 2017-03-28 17:43:32

A biblioteca já está preparada para isso, basta selecionar os relés 5 a 8 ao invés de 1 a 4.


drikosv8
date Enviado: 2017-03-28 10:52:11


ViniDj, mais como especifico que quero que seja o botão 5 e 6?

Obrigado por ajudar

ViniDj
date Enviado: 2017-03-28 11:02:15

Neste caso você teria que desmembrar todo o código, para que ele trate cada botão de uma forma. Da forma que fazemos é feito o mesmo tipo de tratamento pra todos. Se você quer que este tratamento seja diferente para cada botão ou você faz uma condicional a mais no código original que verifica se um determinado botão foi pressionado para então tomar uma ação diferente de ligar ou desligar, ou você usa um código diferente como referência, que trata um botão por vez de forma individual (neste caso você pode pegar o código de 1 relé individual que temos na página do Shield Ethernet e replicar para mais relés, mas nele não é usado o módulo relé serial então isso também terá que ser mudado). De toda forma, a ideia que fica é: você precisa estudar muito a lógica de programação desses códigos, pois só depois de entender de verdade como isso funciona você conseguirá fazer as alterações que precisa. Nada vem sem o estudo. 

drikosv8
date Enviado: 2017-03-28 11:55:37

Poderia, colocar o exemplo de uma condicional de um botão, para que eu tenha um ponto de partida? Obrigado mais uma vez

Francois
date Enviado: 2017-03-28 12:05:28

Você pode se basear no tutorial de leitura de botão: www.arduino.cc/en/tutorial/button
A partir daí você deve seguir a lógica:
  se(botao_pressionado){
    LigaLED();
    delay(duracao_do_pulso);
    DesligaLED();
  }

Tendo essa lógica implementada com o tutorial do botão, você pode adaptá-la facilmente seguindo a recomendação do ViniDj no comentário abaixo.


drikosv8
date Enviado: 2017-03-27 19:01:44


Boa tarde,

Comprei mais 2 modulos serial rele e gostaria de uma ajuda, no código de 40 reles, como faço para colocar o botão 5 e 6 para enviar apenas 1 pulso para destravar o portão, ao invés de ficar ligado o tempo todo.  Obrigado

Francois
date Enviado: 2017-03-27 19:20:51

Você pode, por exemplo, adicionar no código do Arduino um delay após a ativação do relé e desativá-lo em seguida, lembrando de não alterar a variável de estado do relé para que o botão não apareça acionado na página web.

drikosv8
date Enviado: 2017-03-27 19:28:02

Francois,

Sou um pouco leigo, poderia postar aqui por favor, como ficaria a parte da alteração para eu fazer? Obrigado

drikosv8
date Enviado: 2017-03-27 19:51:03

Poste por favor como ficaria a parte da alteração para eu fazer aqui, pois ainda estou aprendendo. Mais uma vez obrigado

ViniDj
date Enviado: 2017-03-28 09:57:27

No código do controle de 40 relés existe uma função chamada SetBotao. Para que os botões pulsem ao invés de se manterem ligados, abaixo de:

relays.SetRelay(rele, SERIAL_RELAY_ON, modulo);
estado_botao[botao] = 1;
//client.print("1");
Serial.println("1");

Você pode incluir:

delay(300);
relays.SetRelay(rele, SERIAL_RELAY_OFF, modulo);
estado_botao[botao] = 0;
//client.print("0");
Serial.println("0");

Assim o relé se manterá 300ms ligado e depois desliga.

MaikJonatan
date Enviado: 2017-05-05 11:07:25

Bom dia ViniDj, ainda sou novato lidando com arduino, sobre o codigo acima, todos os reles  ficariam mandando apenas um pulso? se sim, como fazer para deixar apenas um rele mandando o pulso? desde ja agradeço.

Francois
date Enviado: 2017-05-05 18:30:41

Sim, nesse exemplo todos os relés operariam pulsados. Para fazer somente um relé ser pulsado, você precisará usar um laço condicional (if..else) para pulsar caso seja o <relé> do <módulo> desejado, ou acionar da maneira normal em caso contrário.


wagnerxavier
date Enviado: 2017-03-26 00:09:30


Olá! Como utilizar este módulo com ESP8266 e IDE Arduino? Tem como programar?  O arquivo "#include <SerialRelay.h>" não funciona para ESP8266. Tem algum tutorial de como fazer?

ViniDj
date Enviado: 2017-03-27 06:30:44

A biblioteca funciona no ESP8266 desde que sejam alterados parâmetros internos da mesma, que seriam os seguintes:

BIBLIOTECA ORIGINAL
#define SERIAL_RELAY_DELAY_DATA           5 // [µs]
#define SERIAL_RELAY_DELAY_CLOCK_HIGH     5 // [µs]
#define SERIAL_RELAY_DELAY_CLOCK_LOW     20 // [µs]
#define SERIAL_RELAY_DELAY_LATCH       1100 // [µs]
 
           BIBLIOTECA AJUSTADA
#define SERIAL_RELAY_DELAY_DATA           5 // [µs]
#define SERIAL_RELAY_DELAY_CLOCK_HIGH   200 // [µs]
#define SERIAL_RELAY_DELAY_CLOCK_LOW    200 // [µs]
#define SERIAL_RELAY_DELAY_LATCH       2000 // [µs]

O modo de uso é o mesmo.

wagnerxavier
date Enviado: 2017-03-27 21:23:51

Funcionou perfeitamente! Obrigado ViniDj!! 


zykww
date Enviado: 2017-03-04 22:47:01


Olá, Marcelo Farias, chequei as velocidades e em 9600 ou 19200 continuo enviando via monitor serial e vai certo.  A letra que digito funciona.
Porem eu queria usar o prompt de comandos assim  "echo a > COM4 ".  Noto pelos leds de comunicacao que algo foi transmitido   . Mas nada ocorre.  Não consegui por em pratica sua dica. Se a tela `Monitor serial` estiver aberta o comando echo a > COM4 retorna acesso negado. Ou seja nao posso usar a tela Monitor Serial para verificar o que esta chegado;  Falta só este comando funcionar que meu projeto finaliza.

Francois
date Enviado: 2017-03-06 11:12:05

Somente um processo pode usar uma porta COM por vez, ou seja, o prompt não funcionará enquanto o Monitor Serial estiver aberto e vice-versa. Nesse caso você pode usar um outro Arduino ou FTDI com uma comunicação serial de software (SoftwareSerial) para enviar uma cópia da mensagem que você recebeu, ou usar um buffer na memória EEPROM para armazenar a mensagem recebida e enviá-la quando for solicitado, por exemplo no início do código.
Além disso o comando "echo a > COM4" deve estar enviando um caractere de término de mensagem e isso pode estar interferindo no seu código. Dê uma olhada no seguinte tutorial: batchloaf.wordpress.com/2013/02/12/simple-trick-for-sending-characters-to-a-serial-port-in-windows/


zykww
date Enviado: 2017-03-02 23:16:40


Marcelo Farias, o GetState funcionou perfeitamente.  Criei uma variavel, atribui o getstate a ela e em seguida faço o comando com exclamação que "inverte"o valor.  Digito "a" e o rele arma,digito novamente "a" e ele desarma e o sistema guarda o estado de todos os reles. Show de bola , muito obrigado.
Agora envio do computador  um ECHO a > COM4 e ele não faz nada. O led de comunicação pisca indicando que foi o comando mas o ARDUINO nao processa o comando. Já mandei em ASCII e nada. Alguma Idéia do que pode impedir essa comunicação ?
um abraço

MarceloFarias
date Enviado: 2017-03-03 10:43:19

Você já verificou se o Baud Rate está definido corretamente? Você adicionar uma linha de código para enviar de volta pela serial a informação que receber pela serial, daí poderia saber se está realmente recebendo.


Davysson2
date Enviado: 2017-02-28 22:55:16


Boa noite! Fiz um pequeno projeto de automação com leds pra ligar e desligar por comando de voz utilizando um assistente virtual no meu pc pra executar os comandos e agora quero acionar lâmpadas ou equipamentos eletrônicos . Então gostaria de saber se mesmo o arduino ligado no meu pc pra executar os comandos por voz é preciso alimenta-lo com a fonte de 12v?

MarceloFarias
date Enviado: 2017-03-01 09:30:30

Dependendo da placa Arduíno que você possuir você pode conectá-lo a sua USB e alimentá-lo por uma fonte 12V externa, pois ele deve ter um circuito que evita um conflito entre as duas alimentações. Placas com essa funcionalidade são Arduino UNO ou BlackBoard, Mega, etc.