- Explicação de trabalho:
- Decodificando sinais de controle remoto IR usando Arduino:
- Descrição do circuito:
- Descrição do código:
Anteriormente, cobrimos muitos tipos de automação residencial usando diferentes tecnologias, como automação residencial baseada em DTMF, automação residencial controlada por PC usando Arduino, automação residencial controlada por Bluetooth. Neste projeto, estamos usando comunicação sem fio baseada em IR para controlar eletrodomésticos. Neste projeto, o Arduino é usado para controlar todo o processo. Enviamos alguns comandos para o sistema de controle usando o controle remoto IR TV / DVD / MP3 para controlar eletrodomésticos AC. Após receber o sinal do IR remoto, o Arduino envia o sinal relacionado aos relés que são responsáveis por LIGAR ou DESLIGAR os eletrodomésticos por meio de um driver de relé.
Explicação de trabalho:
Trabalhar neste projeto é facilmente compreensível. Quando pressionamos qualquer botão do IR Remote, o remoto envia um código em forma de trem de pulsos codificados usando a frequência de modulação de 38Khz. Esses pulsos são recebidos pelo sensor TSOP1738 e lidos pelo Arduino e, em seguida, o Arduino decodifica o trem de pulsos recebido em um valor hexadecimal e compara esse valor decodificado com o valor hexadecimal predefinido do botão pressionado. Se ocorrer alguma correspondência, o Arduino executará a operação relativa e o resultado correspondente também será exibido no LCD 16x2 usando os comandos apropriados. Aqui neste projeto utilizamos 3 lâmpadas de cores diferentes, para demonstração que indica Ventilador, Luz e TV.
Existem muitos tipos de Remotos IR disponíveis para diferentes dispositivos, mas a maioria deles funciona em cerca de 38KHz de sinal de frequência. Aqui neste projeto, controlamos eletrodomésticos usando o controle remoto IR TV. Para detectar o sinal remoto IR, usamos o receptor IR TSOP1738. Este sensor TSOP1738 pode detectar um sinal de frequência de 38Khz. O funcionamento do controle remoto IR e do TSOP1738 pode ser abordado em detalhes neste artigo: Transmissor e receptor IR
Componentes:
- Arduino UNO
- TSOP1738
- IR TV / DVD remoto
- ULN2003
- Relés 5 volts
- Lâmpada com suporte
- Fios de conexão
- Tábua de pão
- LCD 16x2
- Fonte de energia
- PVT
- IC 7805
Aqui neste projeto usamos o botão numérico de 7, 8 e 9 do controle remoto IR, para controlar o Ventilador, Luz e TV respectivamente e o botão ON / OFF (botão Power) é usado para ligar e desligar todos os aparelhos simultaneamente.
Aqui, usamos o método de alternância para ligar e desligar o único eletrodoméstico. Método de alternância nada mais é do que conseguir isso, quer o botão seja pressionado não vezes ímpar ou ímpar. Isso é encontrado obtendo o lembrete após dividi-lo por 2 (i% 2), se houver algum lembrete, o dispositivo será LIGADO e se o lembrete for 0, ele será DESLIGADO. Suponha que a tecla 7 seja pressionada no controle remoto e, em seguida, o controle remoto envie um sinal para o Arduino por meio do receptor IR TSOP. Em seguida, o Arduino o decodifica e armazena o valor decodificado na variável de resultados. Agora a variável de resultados tem um valor hexadecimal 0x1FE00FF, após combiná-lo com o valor hexadecimal predefinido da chave 7 (veja a imagem acima), o Arduino liga o ventilador. Agora, quando pressionamos a mesma tecla (tecla 7) novamente, o IR envia o mesmo código. O Arduino obtém o mesmo código e corresponde ao mesmo código de antes, mas desta vez o ventilador foi DESLIGADO por causa da alternância do bit (i% 2).
Decodificando sinais de controle remoto IR usando Arduino:
Aqui está uma lista de códigos de saída decodificados remotos do tipo DVD NEC:
Se você não souber a saída decodificada de seu controle remoto IR, ela pode ser facilmente encontrada, basta seguir estas etapas:
- Baixe a biblioteca remota IR aqui
- Descompacte-o e coloque-o na pasta 'Bibliotecas' do Arduino. Em seguida, renomeie a pasta extraída para IRremote.
- Execute o programa abaixo em seu Arduino e abra a janela Serial Monitor no Arduino IDE. Agora pressione qualquer botão do IR Remote e veja a saída hexadecimal decodificada correspondente na janela Serial Monitor.
* IRremote: IRrecvDemo - demonstra o recebimento de códigos IR com IRrecv * Um detector / demodulador IR deve ser conectado à entrada RECV_PIN. * Versão 0.1 julho de 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
O programa acima é retirado da pasta 'exemplos' da biblioteca IRremote, você pode verificar mais exemplos para aprender mais sobre como usar o controle remoto IR. Então foi assim que decodificamos a saída remota IR.
Descrição do circuito:
As conexões deste circuito são muito simples aqui, uma tela de cristal líquido é usada para exibir o status de eletrodomésticos que estão diretamente conectados ao arduino no modo de 4 bits. Os pinos de dados do LCD, a saber RS, EN, D4, D5, D6, D7, estão conectados ao pino digital arduino número 6, 7, 8, 9, 10, 11. E o pino de saída do TSOP1738 está diretamente conectado ao pino digital número 14 (A) do Arduino. E o pino Vcc está conectado a +5 volts e o pino GND conectado ao terminal terra do circuito. Um driver de relé, nomeadamente ULN2003, também é usado para conduzir os relés. Relés SPDT 3 de 5 volts são usados para controlar LIGHT, FAN e TV. E os relés são conectados ao pino número 3, 4 e 5 do arduino por meio do driver de relé ULN2003 para controlar LIGHT, FAN e TV, respectivamente.
Descrição do código:
Na programação parte deste projeto Em primeiro lugar na programação, incluímos a biblioteca para IR remoto que está facilmente disponível no Google. E definir as variáveis pin e declarar.
#incluir
Em seguida, inclua um cabeçalho para tela de cristal líquido e, em seguida, definimos os dados e pinos de controle para LCD e eletrodomésticos.
#incluir
Depois disso precisamos inicializar o LCD e dar a direção dos pinos que serão usados para ventilador, luz e TV.
void setup () {Serial.begin (9600); lcd.begin (16,2); pinMode (Fan, OUTPUT); pinMode (Light, OUTPUT); pinMode (TV, OUTPUT);
Conforme já explicado, a seguir parte do código é usada para comparar o valor hexadecimal recebido com o código hexadecimal já definido desse botão. Se houver correspondência, uma operação relativa será executada usando funções apropriadas fornecidas no código.
void loop () {if (irrecv.decode (& results)) {Serial.println (results.value, HEX); atraso (100); lcd.setCursor (0,0); lcd.print ("TV Fan Light"); if (results.value == 0x1FE00FF) {i ++; int x = i% 2; digitalWrite (Fan, x);