Tabla de contenido:

Récupérer Les Codes Infra-Rouge Et 433mhz: 4 pasos
Récupérer Les Codes Infra-Rouge Et 433mhz: 4 pasos

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 pasos

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 pasos
Video: Начало работы с электроникой № 10 — Использование инфракрасного пульта дистанционного управления и датчика 2024, Noviembre
Anonim
Récupérer Les Codes Infra-Rouge Et 433mhz
Récupérer Les Codes Infra-Rouge Et 433mhz

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.

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

Paso 1: Le Montage

Le Montage
Le Montage

Simple, un Arduino Nano, un diodo réceptrice infra-rouge y un récepteur 433 mhz.

Paso 2: Le Code Arduino

// InfraRouge

#incluir

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

IRrecv irrecv (recvPin);

// RX433

#incluir

RCSwitch mySwitch = RCSwitch ();

decode_results resultados;

configuración vacía ()

{

Serial.begin (9600);

irrecv.enableIRIn ();

irrecv.blink13 (true); // allume la LED interne lors de l'envoie InfraRouge

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

}

// affichage des codes InfraRouge

void ircode (decode_results * resultados)

{

// Panasonic

if (resultados-> decode_type == PANASONIC) {

Serial.print (resultados-> dirección, HEX);

Serial.print (":");

}

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

}//vacío

// afficahge des codes encodés

codificación vacía (decode_results * resultados)

{

switch (resultados-> decode_type) {

defecto:

caso DESCONOCIDO: Serial.print ("Inconnu"); rotura;

caso NEC: Serial.print ("NEC"); rotura;

caso SONY: Serial.print ("SONY"); rotura;

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

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

caso DISH: Serial.print ("PLATO"); rotura;

caso SHARP: Serial.print ("SHARP"); rotura;

caso JVC: Serial.print ("JVC"); rotura;

caso SANYO: Serial.print ("SANYO"); rotura;

caso MITSUBISHI: Serial.print ("MITSUBISHI"); rotura;

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

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

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

caso AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); rotura;

caso PANASONIC: Serial.print ("PANASONIC"); rotura;

caso DENON: Serial.print ("Denon"); rotura;

}

}

// dump les résultats

void dumpInfo (decode_results * resultados)

{

// Verifica si el búfer se desbordó

if (resultados-> desbordamiento) {

Serial.println ("Código IR demasiado largo. Edite IRremoteInt.hy aumente RAWBUF");

regreso;

}

// Mostrar estándar de codificación

Serial.print ("Codificación:");

codificación (resultados);

Serial.println ("");

// Mostrar código y longitud

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

ircode (resultados);

Serial.print ("(");

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

Serial.println ("bits)");

}

//estructura

void dumpRaw (decode_results * resultados)

{

// Imprimir datos brutos

Serial.print ("Tiempo [");

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

Serial.println ("]:");

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

unsigned long x = resultados-> rawbuf * USECPERTICK;

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

Serial.print ("-");

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

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

Serial.print (x, DEC);

} más {// impar

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' no es necesario para el último

}

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

}

Serial.println (""); // Nueva línea

}

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

// Elimina la estructura decode_results.

//

void dumpCode (decode_results * resultados)

{

// Iniciar declaración

Serial.print ("unsigned int"); // tipo de variable

Serial.print ("rawData ["); // nombre de la matriz

Serial.print (resultados-> rawlen - 1, DEC); // tamaño de la matriz

Serial.print ("] = {"); // Iniciar declaración

// Volcar datos

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

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

if (i rawlen-1) Serial.print (","); // ',' no es necesario en el último

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

}

// Fin de la declaración

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

// Comentario

Serial.print ("//");

codificación (resultados);

Serial.print ("");

ircode (resultados);

// Nueva línea

Serial.println ("");

// Ahora vuelca los códigos "conocidos"

if (results-> decode_type! = UNKNOWN) {

// Algunos protocolos tienen una dirección

if (resultados-> decode_type == PANASONIC) {

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

Serial.print (resultados-> dirección, HEX);

Serial.println (";");

}

// Todos los protocolos tienen datos

Serial.print ("datos int sin firmar = 0x");

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

Serial.println (";");

}

}

bucle vacío ()

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

{

decode_results resultados; // En algún lugar para almacenar los resultados

if (irrecv.decode (& results)) {// Coge un código IR

dumpInfo (& resultados); // Salida de los resultados

dumpRaw (& resultados); // Salida de los resultados en formato RAW

dumpCode (& resultados); // Muestra los resultados como código fuente

Serial.println (""); // Línea en blanco entre entradas

irrecv.resume (); // Prepárate para el próximo valor

}

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

si (mySwitch.available ())

{

valor int = mySwitch.getReceivedValue ();

Serial.println ("RX433");

si (valor == 0) {

Serial.print ("Codage inconnu");

} demás

{

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

}//círculo

Paso 3: Infos Sur Les Codes Infra-Rouge

Il y a plusieurs protocoles:

NEC: 32 bits (detalles del protocolo)

Sony: 12 o 20 bits (detalles del protocolo) (Comprensión de los códigos remotos de infrarrojos de Sony).

RC5: 12 bits (detalles del protocolo)

RC6: 20 ou 36 bits (detalles del protocolo)

Vierta Sony et RC5 / 6, chaque transmisión doit être répétés 3 fois!

ATENCIÓN: 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

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

Paso 4: Códigos Infos Sur RX433

L'envoie se fera avec la librairie RCSwitch.h

Ejemplo mySwitch.send (1975778, 24);

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

Recomendado: