Replicador infravermelho conectado à Internet
Componentes e suprimentos
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Aplicativos e serviços online
|
Sobre este projeto
Algum tempo atrás, comecei a decodificar um controle remoto infravermelho AC com a finalidade de controlar um ar condicionado via WIFI.
Aprendi muitas coisas ao longo do caminho e gostaria de compartilhar esse conhecimento com todos vocês, caso possa ajudá-los em projetos futuros (eu do futuro:estou olhando para vocês também). Eu usei um Particle Photon, mas você pode escolher usar um MCU diferente, uma vez que a IRremote Arduino Library (de Ken Shirriff) usada neste projeto suporta muitos outros. Aqui também está sua página oficial.
Há muito de informações nessa página, certifique-se de ler algumas delas para um entendimento profundo de como os sinais de infravermelho funcionam, mas reproduzirei alguns pontos importantes na próxima seção.
Algumas informações básicas sobre códigos IR
O que se segue é uma transcrição da postagem original do autor:
Um controle remoto IR funciona ligando e desligando o LED em um padrão específico. No entanto, para evitar a interferência de fontes de infravermelho, como luz do sol ou luzes, o LED não fica aceso continuamente, mas é ligado e desligado em uma frequência de modulação (normalmente 36, 38 ou 40KHz). O tempo em que um sinal modulado está sendo enviado será chamado de marca e quando o LED estiver desligado será chamado de espaço.
Cada tecla do controle remoto possui um código específico (normalmente de 12 a 32 bits) associado a ela e transmite esse código quando a tecla é pressionada. Se a tecla for mantida pressionada, o controle remoto geralmente transmite repetidamente o código da tecla. Para um controle remoto NEC, um código de repetição especial é enviado enquanto a tecla é mantida pressionada, em vez de enviar o código repetidamente. Para controles remotos Philips RC5 ou RC6, um bit no código é alternado cada vez que uma tecla é pressionada; o receptor usa este bit de alternância para determinar quando uma tecla é pressionada pela segunda vez.
Na extremidade de recepção, o detector IR demodula este sinal e emite um sinal de nível lógico indicando se está recebendo um sinal ou não. O detector de infravermelho funcionará melhor quando sua frequência corresponder à frequência do remetente, mas na prática isso não importa muito.
Agora você está pronto para a próxima etapa ...
Construir o circuito receptor IR
Para decodificar os sinais infravermelhos, você precisa de um diodo receptor infravermelho:

E você constrói o circuito receptor conforme indicado na biblioteca:

Aqui está a pinagem:
Minha placa de ensaio ficou assim:

Por enquanto, concentre-se em conectar o diodo receptor (o preto) e esqueça o transmissor (o transparente) - cuidaremos disso mais tarde.
Decodifique alguns sinais IR
Como o projeto irá despejar os códigos recebidos por meio da linha serial, precisamos conectá-lo a um computador. Ligue o Photon com um cabo USB e conecte-o a uma porta USB do seu computador. Agora será um bom momento para atualizar o firmware anexado.
Abra um console ou terminal e use o Particle CLI para monitorar a porta USB.
NOTA: Se você não tiver o Particle CLI instalado, faça-o seguindo os documentos aqui.
No Ubuntu Linux, isso é o que eu tinha que digitar para monitorar a porta serial do Photon:
$ sudo chmod 666 / dev / ttyACM0 $ monitor serial de partículas
Dependendo do seu computador e sistema operacional, a porta pode ter um nome diferente e / ou o chmod pode não precisar ser executado.
NOTA: você pode usar qualquer outro software para receber dados na porta serial USB do seu computador.
Feito isso, você pode apontar o controle remoto que deseja decodificar para o diodo receptor IR (o componente semelhante a LED preto) Comece a apertar os botões e verifique o que está impresso no console.
Se tudo correr bem, você receberá algo assim:
1FEA05F29168950,8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,500,550,500,1500,550,1500,550,450,550,1500,550,500,500,1500,550,500,550,450,550,500,500,500,550, END 3,3,2,0 , 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 , 0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0 , 0,0,0,0,0,0, END
- Primeira linha (1FEA05F) e terceira linha:esqueça-os por enquanto
- Segunda linha:esta linha imprime o comando IV enviado pelo remoto
Nosso primeiro comando IR decodificado
Vamos falar sobre o comando IR recebido:
29168950,8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,500,550,500,1500,550,1500,550,450,550,1500,550,500,500,1500,550,500,550,450,550,500,500,500,550, END
Podemos descartar o primeiro valor, 29168950 neste caso, uma vez que a biblioteca IR afirma o seguinte:" o buffer de recebimento começa com a duração do espaço de lacuna antes da primeira marca ". Não nos importamos com essa duração, pois é o tempo que passou entre nossos testes, ou o tempo que você levou para apertar um botão no controle remoto.
Portanto, a partir da saída recebida, isso é o que é realmente interessante e o que molda o comando IR:
8500,4050,500,1500,550,500,550,450,550,500,500,1550,500,500,550,500,500,500,550,500,500,500,550,450,550,500,550,1500,500,500,550,500,500,500,550,500,500,550,500,1500,550,1500,550,450,550,1500,550,500,500,1500,550,500,550,450,550,500,500,500,550, END
Esses números representam a duração dos pulsos infravermelhos em microssegundos. Se quiséssemos, poderíamos enviar este comando com o seguinte código:
function sendIt () {unsigned int ircommand [59] ={8550.4000.550,1500.550.450.550.500.500.550.500.1550.500.500.500.500.500.550.500.500.500.550.500.500.500.550.500.500.1500.550.500.500.500.500.500.500.500.500.550.500.500.500.550.500.500.500.550.500.500.1500.550.500.500.500.550.500.500.500.500.500.500.500.500.500.500.500.500.500.500.500.500.500.550.1500.550.550.550.550.550.550.5 , 500.500.550.500.500.500.550.450.550}; irsend.sendRaw (ircommand, 59,38); }
Mas, para isso, precisaremos construir o circuito do transmissor. Vamos fazer isso a seguir.
Construir o circuito do transmissor IR
O circuito mais simples se parece com este:
No entanto, este circuito fornecerá apenas menos de um metro de alcance.
Se possível, conecte um circuito como este abaixo para um alcance melhorado (cerca de 10 metros):

Este é o lado do transmissor do meu circuito:

Testando o circuito do transmissor IR
Eu adicionei algumas funções no firmware para controlar o volume em uma TV Samsung. Isso é para que você possa testar se o circuito do transmissor está funcionando caso você tenha uma TV Samsung por perto.
Basta apontar o LED do transmissor para a TV e clicar nas funções sendSamsungVolumeUp () e sendSamsungVolumeDown ().
NOTA: Lembre-se de que você pode usar a câmera do seu celular para verificar se o LED IR está transmitindo, já que o IR aparece lá:

Tornando os comandos IR mais legíveis
Se identificarmos valores em torno de 500 com 0 e 1500 com 1, sendo esta seleção arbitrária, atribuindo também 3 para valores acima de 5000 e 2 para valores em torno de 4000, chegamos à seguinte representação:
3,3,2,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1, 0,0,0,1,0,0,0,0,0,0,0,0,0,0, END
Agora, lembre-se disso nesta codificação totalmente arbitrária:
- 3 significa um pulso de 8.500 microssegundos
- 2 significa um pulso de 4000 microssegundos
- 1 significa um pulso de 1.500 microssegundos
- 0 significa um pulso de 500 microssegundos
Por que codificar em números, você pode perguntar?
Isso ajuda a visualizar e comparar comandos, espero. Dessa forma, fica mais fácil comparar pulsos que mudam ou permanecem iguais entre os diferentes comandos.
Exemplo:você quer comparar o que muda entre um comando para definir a temperatura para 18 e 19 graus no caso de um controle remoto AC? Mais fácil quando você tem 1 e 0.
Também gosto desse formato para armazenar os comandos de infravermelho no código do firmware. Lembre-se de convertê-los em pulsos antes de transmitir (chamando a função convertToPulseDuration () no firmware).
Recursos de leitura
Eu li um monte de sites para conseguir entender o assunto. Aqui está uma lista de alguns deles:
- Engenharia reversa de um protocolo de controle remoto IR de ar condicionado
- Usando controles remotos arbitrários com a biblioteca arduino IRremote
- este tópico na comunidade Particle
- Compreendendo o protocolo IR de controles remotos de ar condicionado
- este blog sobre adafruit
Conclusão
Com algum trabalho, um MCU e alguns componentes, você será capaz de decodificar e replicar muitos dos controles remotos que você tem em sua casa. Com algumas limitações, isso pode permitir que você controle todos esses dispositivos de seu telefone, tablet, laptop, computador e até mesmo crie algumas automações simples para eles. Legal né?

Agora você pode pensar em adicionar Blynk, criar um aplicativo no Ionic Framework, falar com ele com o Google Now ou Alexa, ou controlá-lo com Porter.
Estou planejando aplicar esse conhecimento para controlar alguns dispositivos pela casa e espero criar mais relatórios no futuro. Fique ligado!
Atualização em 5 de fevereiro de 2018:
Aqui está uma implementação desse projeto:uma lareira infravermelha controlada pela Internet.
Precisa de ajuda?
Se você precisar de ajuda profissional com seus projetos, não hesite em escrever-me uma linha sobre suas necessidades em [email protected]. Obrigada!
Código
infravermelhoReplicador
o código-fontehttps://github.com/gusgonnet/infraredReplicatorEsquemas

Processo de manufatura
- Como vagões de carga são conectados à internet
- Internet das coisas e a função do 5G em veículos conectados
- Cibersegurança e a Internet das coisas:hora da biometria?
- Internet das coisas:Uma teia do mundo conectado
- Como podemos facilitar a educação com a Internet das coisas?
- Tanques a laser Leap Motion!
- UnifiedWater v1
- Rádio da Internet Pi-Arduino
- Compressores de ar conectados, indústria 4.0 e a Internet das coisas
- Ar comprimido e gás A-Z Vlog:IOT, Internet 4.0 e compressores conectados