Módulo Relé 4 Canais e Controle Remoto IR

Post on 04-Dec-2015

4 views 0 download

Transcript of Módulo Relé 4 Canais e Controle Remoto IR

Módulo relé 4 canais e controle remoto IRDias atrás um colega leitor do blog escreveu, com dúvidas sobre como programar o Arduino para utilizar um controle remoto IR e acionar relés.

O projeto dele consiste em utilizar o Arduino Uno, uma placa com 4 relés e um controle remoto IR da marca/fornecedor Open Jumper, para o controle de 4 lâmpadas. São lâmpadas de cores diferentes : vermelha, amarela, verde e azul, que devem ser acionadas ao apertar o botão correspondente no controle remoto. Por fim, a tecla ON acende todas as lâmpadas de uma vez, e a tecla OFF apaga todas, como mostrado nesse vídeo, utilizando leds no lugar das lâmpadas :

Na foto abaixo, a placa de relés utilizada :

Eu já havia escrito um artigo sobre Controle Remoto IR aqui no site, e apesar do controle IR da Open Jumper ser um pouco diferente, podemos usar a mesma biblioteca IRremote que usamos no outro artigo. O que muda são apenas alguns códigos hexadecimais das teclas. Montei uma tabela mostrando o controle remoto utilizado, e seus respectivos códigos :

Para testar o programa, montei um circuito com leds no lugar das lâmpadas. O comum de cada relé (pino central) eu liguei em 5 Volts, e o contato NO (Normal Open/Normal Aberto) de cada relê, eu liguei no anodo do led correspondente. Note que na placa há um jumper entre o pino JD-Vcc e Vcc. O JD-Vcc é utilizado quando há

necessidade de uma fonte externa para ativar os relés. Como vamos utilizar os 5 volts do próprio Arduino, mantenha o jumper na placa.

Por fim, o programa, que eu tentei manter o mais simples possível, não só para facilitar o entendimento, mas também tornar qualquer modificação mais tranquila. Se necessário, troque algumas definições e acionamento de portas por rotinas utilizando FOR, por exemplo, ou use o comando IF no lugar de SWITCH. São várias as opções.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

// Programa : Relé 4 Canais com controle IR// Autor : Arduino e Cia

#include <IRremote.h>

int RECV_PIN = 11; //Ligado ao pino do receptor IR (pino S)int armazenavalor = 0;int pinorele1 = 2; //Pino do Arduino ligado ao IN1 da placa de relésint pinorele2 = 3; //Pino do Arduino ligado ao IN2 da placa de relésint pinorele3 = 4; //Pino do Arduino ligado ao IN3 da placa de relésint pinorele4 = 5; //Pino do Arduino ligado ao IN4 da placa de relésint estadorele1 = HIGH; //Armazena o estado do relé 1int estadorele2 = HIGH; //Armazena o estado do relé 2int estadorele3 = HIGH; //Armazena o estado do relé 3int estadorele4 = HIGH; //Armazena o estado do relé 4

IRrecv irrecv(RECV_PIN);decode_results results;

void setup(){ pinMode(pinorele1, OUTPUT); //Define os pino dos reles como saída pinMode(pinorele2, OUTPUT); pinMode(pinorele3, OUTPUT); pinMode(pinorele4, OUTPUT); digitalWrite(pinorele1, estadorele1); //Coloca os pinos dos reles em digitalWrite(pinorele2, estadorele2); //estado alto (rele desligado) digitalWrite(pinorele3, estadorele3); digitalWrite(pinorele4, estadorele4);

Serial.begin(9600); //Inicializa a serial irrecv.enableIRIn(); // Inicializa o receptor IR}

35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

void loop(){ //Verifica se o sensor IR recebeu algum sinal if (irrecv.decode(&results)) { //Mostra na serial o valor lido pelo sensor IR Serial.print("Valor lido : "); Serial.println(results.value, HEX); //Armazena o sinal recebido pelo sensor IR armazenavalor = (results.value); switch (armazenavalor) { case 0xFF22DD: //Verifica se a tecla vermelha foi acionada estadorele1 = !estadorele1; //Aciona rele 1 e liga led vermelho digitalWrite(pinorele1, estadorele1); break;

case 0xFFE01F: //Verifica se a tecla amarela foi acionada estadorele2 = !estadorele2; //Aciona rele 2 e liga led amarelo digitalWrite(pinorele2, estadorele2); break;

case 0xFF02FD: //Verifica se a tecla verde foi acionada estadorele3 = !estadorele3; //Aciona rele 3 e liga led Verde digitalWrite(pinorele3, estadorele3); break;

case 0xFF906F: //Verifica se a tecla azul foi acionada estadorele4 = !estadorele4; //Aciona rele 4 e liga led azul digitalWrite(pinorele4, estadorele4); break;

case 0xFFE21D: //Verifica se a tecla OFF foi acionada //Desliga todos os reles, colocando as portas em nivel alto digitalWrite(pinorele1, HIGH); digitalWrite(pinorele2, HIGH); digitalWrite(pinorele3, HIGH); digitalWrite(pinorele4, HIGH); //Seta o estado de todos os reles para alto (desligados) estadorele1 = HIGH; estadorele2 = HIGH; estadorele3 = HIGH; estadorele4 = HIGH; break;

case 0xFFA25D: //Verifica se a tecla ON foi acionada //Liga todos os reles, colocando as portas em nivel baixo digitalWrite(pinorele1, LOW); digitalWrite(pinorele2, LOW); digitalWrite(pinorele3, LOW); digitalWrite(pinorele4, LOW); //Seta o estado de todos os reles para baixo (ligados) estadorele1 = LOW; estadorele2 = LOW; estadorele3 = LOW; estadorele4 = LOW; break;

96 97 98 99100101102103104105106107108109110111112113114115116117118119120121122123124125126

case 0xFF42BD: //Verifica se a tecla 7 foi acionada //Desliga todos os reles, colocando as portas em nivel alto digitalWrite(pinorele1, HIGH); digitalWrite(pinorele2, HIGH); digitalWrite(pinorele3, HIGH); digitalWrite(pinorele4, HIGH); delay(1000); //Aguarda 1 segundo digitalWrite(pinorele1, LOW); //Aciona o rele 1 delay(500); //Aguarda 500 ms digitalWrite(pinorele2, LOW); //Aciona o rele 2 delay(500); //Aguarda 500 ms digitalWrite(pinorele3, LOW); //Aciona o rele 3 delay(500); //Aguarda 500 ms digitalWrite(pinorele4, LOW); //Aciona o rele 4 delay(2000); //Aguarda 2 segundos //Desliga todos os reles, colocando as portas em nivel alto digitalWrite(pinorele1, HIGH); digitalWrite(pinorele2, HIGH); digitalWrite(pinorele3, HIGH); digitalWrite(pinorele4, HIGH); //Seta o estado de todos os reles para alto (desligados) estadorele1 = HIGH; estadorele2 = HIGH; estadorele3 = HIGH; estadorele4 = HIGH; break; } irrecv.resume(); //Le o próximo valor }}

Como mostrado no vídeo no início deste artigo, teste o programa acionando o botão vermelho do controle remoto para acender o led vermelho, amarelo para o amarelo e assim por diante. Para acender todos os leds de uma vez utilize a tecla ON, e para desligar, a tecla OFF.  A tecla com o número 7 do controle remoto apaga todos os leds, depois os acende em sequencia.

O programa ainda exibe no Serial Monitor o valor em hexadecimal das teclas que foram acionadas. Desta forma, você consegue adaptar o programa ao seu controle remoto (dependendo do modelo), apenas alterando esses valores.