Académique Documents
Professionnel Documents
Culture Documents
Arduino
Nota para Arduino 1.0
Uma verso atualizada com 1,0 suporte est disponvel no github . As instrues de instalao
esto na parte inferior da pgina. Deixe-me saber se voc encontrar quaisquer problemas.
Voc quer controlar o seu Arduino com um controle remoto IR? Voc quer usar o seu Arduino
para controlar seu aparelho de som ou outros dispositivos? Esta biblioteca IR remoto permitelhe enviar e receber cdigos remotos IR em vrios protocolos. Ele suporta NEC, Sony SIRC,
Philips RC5, Philips RC6, e protocolos de matrias. Se voc quiser protocolos adicionais, eles
so simples de adicionar. A biblioteca pode at mesmo ser usado para gravar os cdigos de
seu controle remoto e re-transmitir-lhes, como um controle remoto universal mnima.
Como enviar
Esta biblioteca remoto infravermelho consiste em duas partes: IRsend transmite IR pacotes
remotos, enquanto IRrecv recebe e decodifica uma mensagem de IR. IRsend usa um LED
infravermelho ligado ao pino de sada 3. Para enviar uma mensagem, chamar o mtodo de
envio para o protocolo desejado com os dados para enviar e o nmero de bits a serem
enviadas. O examples/IRsendDemo esboo fornece um exemplo simples de como
enviar os cdigos:
#include <IRremote.h>
IRsend irsend;
void setup ()
{
Serial.begin (9600);
}
void loop () {
se (Serial.read ()! = -1) {
for (int i = 0; i <3; i ++) {
irsend.sendSony (0xa90, 12);
atraso (100);
}
}
}
Este esboo envia um poder TV Sony on / off cdigo sempre que um personagem enviado
para a porta serial, permitindo que o Arduino para ligar a TV ligada ou desligada. (Note-se que
os cdigos da Sony deve ser enviado 3 vezes de acordo com o protocolo.)
Como receber
IRrecv usa um detector infravermelho conectado a qualquer pino de entrada digital.
O examples/IRrecvDemo esboo fornece um exemplo simples de como receber os
cdigos:
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv (RECV_PIN);
decode_results resultados;
void setup ()
{
Serial.begin (9600);
irrecv.enableIRIn ();
}
// Iniciar o receptor
void loop () {
if (irrecv.decode (e resultados)) {
Serial.println (results.value, HEX);
irrecv.resume (); // Receba o prximo valor
}
}
Configurao de hardware
A biblioteca pode usar qualquer um dos sinais de entrada digitais para receber a entrada a
partir de um mdulo receptor de 38KHz. Ele foi testado com a Radio Shack 276-640 receptor
infravermelho eo PanasonicPNA4602 . Simplesmente poder fio ao pino 1, terra no pino 2, ea
sada pino 3 para um pino de entrada digital Arduino, por exemplo 11. Estes receptores
fornecer uma sada invertida nvel lgico filtrada e demodulado;voc no pode apenas usar um
fotodiodo ou fototransistor. Eu encontrei esses detectores tem bom alcance e trabalhar
facilmente em uma sala.
Para sada, ligar um LED IR e resistor apropriado para PWM sada pino 3. Certifique-se a
polaridade do LED correto, ou no vai iluminar - os longos positivo. Eu usei um LED NTE
3027 (porque isso o que foi muito til) e 100 ohm resistor; o intervalo de cerca de 15
metros. Por faixa adicional, voc pode ampliar a sada com um transistor.
Manuseio cdigos matriasA biblioteca oferece suporte para envio e recebimento de matrias-duraes. Este destina-se
principalmente para a depurao, mas tambm pode ser usado para os protocolos a biblioteca
no executar ou para fornecer funcionalidade de controle remoto universal.
Os dados brutos para as medidas de IR recebidas a durao de vagas sucessivas e marcas
em 50us carrapatos. A primeira medida a lacuna, o espao antes de iniciada a
transmisso. A ltima medida a nota final.
Os dados brutos para o envio de IR detm a durao de marcas sucessivas e espaos em
microsegundos. O primeiro valor a primeira marca, e o ltimo valor a ltima marca.
Existem duas diferenas entre os tampes de matrias para o envio e para a recepo. Os
valores de buffer de envio so em microssegundos, enquanto a receber valores tampo esto
em 50 microssegundos carrapatos. O buffer de envio comea com a durao do primeiro sinal,
enquanto que a memria intermdia de recepo iniciada com a durao do intervalo de
espao antes da primeira marca. Os formatos so diferentes, porque eu considerava-o til para
a biblioteca para medir as lacunas entre as transmisses, mas no til para a biblioteca para
fornecer essas lacunas durante a transmisso. Para receber, 50us granularidade suficiente
para a decodificao e evita transbordamento das lacunas, enquanto para transmitir, 50us
granularidade mais de 10% de erro to granularidade 1us parecia melhor.
Tenha em ateno que outras fontes podem ser inconsistentes em como eles lidam com estes
protocolos, por exemplo, a inverso da ordem, lanando 1 e 0 bits, fazendo start bits explcita,
caindo esquerda ou direita bits, etc. Em outras palavras, se os rendimentos irRemote
biblioteca de cdigos diferentes do que voc encontrar listados em outros lugares, essas
inconsistncias so provavelmente o porqu.
O STATE_STOP usado aa bandeira para indicar para a rotina de decodificao que uma
transmisso completa est disponvel. Quando o processamento feito, o mtodo resume ()
define o estado de STATE_IDLE assim a rotina de interrupo pode comear a gravar a
prxima transmisso. H algumas coisas a serem observadas aqui. Gap tempo continua
durante STATE_STOP e STATE_IDLE assim uma medio precisa do tempo entre as
transmisses podem ser obtidas. Se resume () no chamado antes do incio da prxima
transmisso, a transmisso parcial ser descartado. A motivao por trs do stop / currculo
para garantir o buffer de recepo no substitudo, enquanto ele ainda est sendo
processado;depurao torna-se muito difcil, se o buffer est mudando constantemente.
Soluo De Problemas
Para torn-lo mais fcil de depurar problemas com a comunicao IR, tenho cdigo de
depurao opcional na biblioteca. Adicionar #define DEBUG para o incio do seu cdigo
para permitir a depurao de sada no console serial. Voc ter de apagar os .o arquivos e /
ou reiniciar o IDE para forar recompilao.
Problemas com a transmisso
tempos esperados. Voc pode imprimir os valores mnimo e mximo esperado e comparar com
os valores medidos matrias.
O examples/IRrecvDump esboo vai despejar detalhes dos dados recebidos. O
mtodo de despejo despeja estas duraes mas converte-os em microssegundos, e usa a
conveno de prefixar uma medio de espao com um sinal de menos. Isso torna mais fcil
para manter a marca e medidas de espao em linha reta.
Sensores IR normalmente causam a marca a ser medido como mais que o esperado e o
espao para ser mais curto do que o esperado. O cdigo se estende marcas pela 100us para
explicar essa (o valor MARK_EXCESS). Voc pode precisar de ajustar os valores ou
tolerncias esperadas neste caso.
A biblioteca no suporta simultnea envio e recebimento de cdigos; transmissora ir desativar
o recebimento.
Aplicaes
Eu usei esta biblioteca para diversas aplicaes:
Eu usei esta biblioteca para implementar um "remoto universal" para gravar e cdigos
IR de reproduo.
Eu demonstro virando algo ligado e desligado via remota no meu fabricante de bolha
infravermelho projeto.
Utilizando a biblioteca para detectar rupturas IR feixe