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