Índice:

Récupérer Les Codes Infra-Rouge Et 433 MHz: 4 etapas
Récupérer Les Codes Infra-Rouge Et 433 MHz: 4 etapas

Vídeo: Récupérer Les Codes Infra-Rouge Et 433 MHz: 4 etapas

Vídeo: Récupérer Les Codes Infra-Rouge Et 433 MHz: 4 etapas
Vídeo: Высокая плотность 2022 2024, Novembro
Anonim
Récupérer Les Codes Infra-Rouge Et 433 MHz
Récupérer Les Codes Infra-Rouge Et 433 MHz

Le but est d'afficher les codes des télécommandes du style commande de lampe, porte de garage et autre fonctionnant sous 433 mhz (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.

Em pourra donc ensuite, grâce à une autre montage, envoyer ces codes et piloter n’importe quoi!

Etapa 1: Le Montage

Le Montage
Le Montage

Simples, um Arduino Nano, um réceptrice de diodo infravermelho e um récepteur 433 mhz.

Etapa 2: Le Code Arduino

// InfraRouge

#incluir

int recvPin = 11; // pin Arduino pour récepteur InfraRouge (TOSP4838)

IRrecv irrecv (recvPin);

// RX433

#incluir

RCSwitch mySwitch = RCSwitch ();

resultados de decode_results;

void setup ()

{

Serial.begin (9600);

irrecv.enableIRIn ();

irrecv.blink13 (true); // alocar o LED interno lors de l'envoie InfraRouge

mySwitch.enableReceive (0); // Récepteur RX433 (XY-MK-5V) no pino 2 de Arduino Uno et Nano

}

// affichage des codes InfraRouge

void ircode (decode_results * results)

{

// Panasonic

if (resultados-> decode_type == PANASONIC) {

Serial.print (resultados-> endereço, HEX);

Serial.print (":");

}

Serial.print (resultados-> valor, HEX);

}//vazio

// afficahge des codes encodés

codificação vazia (decode_results * resultados)

{

switch (resultados-> decode_type) {

predefinição:

case UNKNOWN: Serial.print ("Inconnu"); pausa;

case NEC: Serial.print ("NEC"); pausa;

case SONY: Serial.print ("SONY"); pausa;

caso RC5: Serial.print ("RC5"); pausa;

caso RC6: Serial.print ("RC6"); pausa;

case DISH: Serial.print ("DISH"); pausa;

case SHARP: Serial.print ("SHARP"); pausa;

case JVC: Serial.print ("JVC"); pausa;

case SANYO: Serial.print ("SANYO"); pausa;

case MITSUBISHI: Serial.print ("MITSUBISHI"); pausa;

caso SAMSUNG: Serial.print ("SAMSUNG"); pausa;

caso LG: Serial.print ("LG"); pausa;

case WHYNTER: Serial.print ("WHYNTER"); pausa;

case AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); pausa;

case PANASONIC: Serial.print ("PANASONIC"); pausa;

case DENON: Serial.print ("Denon"); pausa;

}

}

// dump les résultats

void dumpInfo (decode_results * resultados)

{

// Verifique se o buffer estourou

if (resultados-> estouro) {

Serial.println ("Código IR muito longo. Edite IRremoteInt.h e aumente RAWBUF");

Retorna;

}

// Mostrar padrão de codificação

Serial.print ("Codificação:");

codificação (resultados);

Serial.println ("");

// Mostrar código e comprimento

Serial.print ("Código:");

ircode (resultados);

Serial.print ("(");

Serial.print (resultados-> bits, DEC);

Serial.println ("bits)");

}

//estrutura

void dumpRaw (decode_results * results)

{

// Imprimir dados brutos

Serial.print ("Tempo [");

Serial.print (resultados-> rawlen-1, DEC);

Serial.println ("]:");

para (int i = 1; i rawlen; i ++) {

longo sem sinal x = resultados-> rawbuf * USECPERTICK;

if (! (i & 1)) {// par

Serial.print ("-");

if (x <1000) Serial.print ("");

if (x <100) Serial.print ("");

Serial.print (x, DEC);

} else {// ímpar

Serial.print ("");

Serial.print ("+");

if (x <1000) Serial.print ("");

if (x <100) Serial.print ("");

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' não é necessário para o último

}

if (! (i% 8)) Serial.println ("");

}

Serial.println (""); // Nova linha

}

//+=============================================================================

// Remova a estrutura decode_results.

//

void dumpCode (decode_results * results)

{

// Iniciar declaração

Serial.print ("unsigned int"); // tipo de variável

Serial.print ("rawData ["); // nome da matriz

Serial.print (resultados-> rawlen - 1, DEC); // tamanho da matriz

Serial.print ("] = {"); // Iniciar declaração

// Dump data

para (int i = 1; i rawlen; i ++) {

Serial.print (resultados-> rawbuf * USECPERTICK, DEC);

if (i rawlen-1) Serial.print (","); // ',' não é necessário no último

if (! (i & 1)) Serial.print ("");

}

// Fim da declaração

Serial.print ("};"); //

// Comente

Serial.print ("//");

codificação (resultados);

Serial.print ("");

ircode (resultados);

// Nova linha

Serial.println ("");

// Agora descarte os códigos "conhecidos"

if (resultados-> decode_type! = UNKNOWN) {

// Alguns protocolos têm um endereço

if (resultados-> decode_type == PANASONIC) {

Serial.print ("unsigned int addr = 0x");

Serial.print (resultados-> endereço, HEX);

Serial.println (";");

}

// Todos os protocolos possuem dados

Serial.print ("dados int não assinados = 0x");

Serial.print (resultados-> valor, HEX);

Serial.println (";");

}

}

void loop ()

/ ************************************************** * InfraRouge ******************************************* /

{

resultados de decode_results; // Algum lugar para armazenar os resultados

if (irrecv.decode (& results)) {// Obtenha um código IR

dumpInfo (& resultados); // Envie os resultados

dumpRaw (& resultados); // Produz os resultados em formato RAW

dumpCode (& resultados); // Envie os resultados como código-fonte

Serial.println (""); // Linha em branco entre as entradas

irrecv.resume (); // Prepare-se para o próximo valor

}

/ *************************************************** *** RX433 ******************************************** /

if (mySwitch.available ())

{

valor int = mySwitch.getReceivedValue ();

Serial.println ("RX433");

if (valor == 0) {

Serial.print ("Codage inconnu");

} outro

{

Serial.print ("Reçu");

Serial.print (mySwitch.getReceivedValue ());

Serial.print ("/");

Serial.print (mySwitch.getReceivedBitlength ());

Serial.print ("bit");

Serial.print ("Protocole:");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

}//ciclo

Etapa 3: Infos Sur Les Codes Infra-Rouge

Il y a plusieurs protocoles:

NEC: 32 bits (detalhes do protocolo)

Sony: 12 ou 20 bits (detalhes do protocolo) (Compreendendo os códigos remotos IR da Sony.)

RC5: 12 bits (detalhes do protocolo)

RC6: 20 ou 36 bits (detalhes do protocolo)

Despeje Sony e RC5 / 6, chaque transmissão doit être répétés 3 fois!

ATENÇÃO: la librairie IRremote.h ne semble pas pouvoir envoyer des codes codés sur plus de 32bits. Les RC6, 36 doivent donc êtres envoyer en raw, qui prennent plus de taille mémoire.

L'envoie des codes se fera avec la librairie IRremote.h

Exemplo: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7, 32);

Etapa 4: Infos Sur Codes RX433

L'envoie se fera avec la librairie RCSwitch.h

Exemple mySwitch.send (1975778, 24);

On peut facilement piloter avec cela des prises commandés.

Recomendado: