Modulo Sensor/Atuador Infravermelho YS-IRTM
O módulo infravermelho possui um sensor e um emissor infravermelho para comunicação com aparelhos eletrônicos que usem a codificação NEC.
O protocolo NEC está descrito em detalhes no artigo:
http://www.sbprojects.com/knowledge/ir/nec.php
Um comando é transmitido apenas uma vez, mesmo quando a tecla no controle remoto permanece pressionada. A cada 110 ms um código de repetição é transmitido enquanto a tecla permanece pressionada. Este código de repetição é simplesmente um pulso AGC de 9ms seguido por um espaço de 2,25ms e uma rajada de 560μs.
Mas tudo isso é detalhe, pois o módulo realiza esta (de)codificação automaticamente e a comunicação é feita através de duas linhas seriais, TX e RX, que podem ser ligadas, respectivamente, nas linhas RX e TX do Arduino Galileo/Uno. A pinagem está definida claramente na serigrafia da placa do módulo, cuja alimentação é de 5 Volts.
Use preferencialmente no Arduino as portas 2 (RX) e 3 (TX), que e podem ser acessadas com a biblioteca Serial2. Caso você utilize uma versão diferente de Arduino, pode usar as portas 0 (RX) e 1 (TX) para esta função e a biblioteca Serial.
Para transmissão, por exemplo, de um sinal codificado 1C 2F 33, enviar a seguinte sequência para a saída TX: {A1, F1,1C, 2F, 33}.
A velocidade padrão de comunicação da porta serial do módulo é de 9600 bauds, mas é possível alterar essa velocidade por exemplo, para 57600 bauds, com o comando {A1, F3,04,00,00}, onde o terceiro byte é codificado com a seguinte tabela:
01 - 4800 bps
02 - 9600 bps
03 - 19200bps
04 - 57600bps
Veja maiores detalhes:
https://forum.arduino.cc/index.php?topic=359707.0
Para a programaçãoem Javascript, com uso do Johnny-five, não há API disponĩvel para este módulo. É necessário então o uso da rotina de comunicação serial da biblioteca StandardFimataPlus, já que na biblioteca StandardFirmata, as interfaces serias não estão habilitadas.
Veja o exemplo de teste a seguir:
});
  
O módulo infravermelho possui um sensor e um emissor infravermelho para comunicação com aparelhos eletrônicos que usem a codificação NEC.
O protocolo NEC está descrito em detalhes no artigo:
http://www.sbprojects.com/knowledge/ir/nec.php
Um comando é transmitido apenas uma vez, mesmo quando a tecla no controle remoto permanece pressionada. A cada 110 ms um código de repetição é transmitido enquanto a tecla permanece pressionada. Este código de repetição é simplesmente um pulso AGC de 9ms seguido por um espaço de 2,25ms e uma rajada de 560μs.
Mas tudo isso é detalhe, pois o módulo realiza esta (de)codificação automaticamente e a comunicação é feita através de duas linhas seriais, TX e RX, que podem ser ligadas, respectivamente, nas linhas RX e TX do Arduino Galileo/Uno. A pinagem está definida claramente na serigrafia da placa do módulo, cuja alimentação é de 5 Volts.
Use preferencialmente no Arduino as portas 2 (RX) e 3 (TX), que e podem ser acessadas com a biblioteca Serial2. Caso você utilize uma versão diferente de Arduino, pode usar as portas 0 (RX) e 1 (TX) para esta função e a biblioteca Serial.
Para transmissão, por exemplo, de um sinal codificado 1C 2F 33, enviar a seguinte sequência para a saída TX: {A1, F1,1C, 2F, 33}.
A velocidade padrão de comunicação da porta serial do módulo é de 9600 bauds, mas é possível alterar essa velocidade por exemplo, para 57600 bauds, com o comando {A1, F3,04,00,00}, onde o terceiro byte é codificado com a seguinte tabela:
01 - 4800 bps
02 - 9600 bps
03 - 19200bps
04 - 57600bps
 Para
 receber um código, basta apenas receber os dados pela porta serial. 
Quando fazemos a operação de decodificação, só precisa apontar o
controle remoto para o receptor infravermelho, pressionar o botão
para ser decodificado, para ver o resultado de decodificação pelo
assistente de depuração de serial, o resultado é uma saída como
“Código do usuário 1 + Código de Usuário 2 + código de
comando”. 
Então, se você receber o código 04 FB
 12, para enviar o mesmo código usando o módulo 
YS-IRTM, você tem que enviar os  "start" bytes A1, F1 primeiro. Então, o
 código para ser enviado deve parecer como  A1 F1 04 FB 12. 
https://forum.arduino.cc/index.php?topic=359707.0
Para a programaçãoem Javascript, com uso do Johnny-five, não há API disponĩvel para este módulo. É necessário então o uso da rotina de comunicação serial da biblioteca StandardFimataPlus, já que na biblioteca StandardFirmata, as interfaces serias não estão habilitadas.
Veja o exemplo de teste a seguir:
| var Board = require("firmata"); | 
| Board.requestPort(function(error, port) { | 
| if (error) { | 
| console.log(error); | 
| return; | 
| } | 
| var board = new Board(port.comName); | 
| board.on("ready", function() { | 
| console.log("READY"); | 
| var HW_SERIAL1 = board.SERIAL_PORT_IDs.HW_SERIAL1; | 
| var maxBytesToRead = 4; | 
| board.serialConfig({ | 
| portId: HW_SERIAL1, | 
| baud: 9600 | 
| }); | 
| // leave 2nd parameter (maxBytesToRead) to read all available bytes in buffer | 
| // board.serialRead(HW_SERIAL1, maxBytesToRead, function(data) { | 
| board.serialRead(HW_SERIAL1, function(data) { | 
| console.log(new Buffer(data).toString("hex")); | 
| }); | 
| board.on("string", function (message) { | 
| console.log(message); | 
| }); | 
| // log serial pin numbers | 
| for (var pin in board.pins) { | 
| var modes = board.pins[pin].supportedModes; | 
| for (var mode in modes) { | 
| if (modes[mode] === board.MODES.SERIAL) { | 
| console.log("serial pin: " + pin); | 
| } | 
| } | 
| } | 
| }); | 

eu sei que tem 3 anos mas obrigado cara, me ajudou muito, vou ficar te devendo essa kkk
ResponderExcluir