módulo relé 4 canais e controle remoto ir

5
Módulo relé 4 canais e controle remoto IR Dias 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 :

Upload: rsleal

Post on 04-Dec-2015

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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á

Page 2: Módulo Relé 4 Canais e Controle Remoto IR

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}

Page 3: Módulo Relé 4 Canais e Controle Remoto 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;

Page 4: Módulo Relé 4 Canais e Controle Remoto IR

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.