Innholdsfortegnelse:

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

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

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 trinn
Video: Télécommande Infra rouge 2/3 2024, November
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.

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

Trinn 1: Le Montage

Le Montage
Le Montage

Enkel, un Arduino Nano, une diode réceptrice infra-rouge et un récepteur 433 mhz.

Trinn 2: Le Code Arduino

// InfraRouge

#inkludere

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

IRrecv irrecv (recvPin);

// RX433

#inkludere

RCSwitch mySwitch = RCSwitch ();

resultater for dekoderesultater;

ugyldig oppsett ()

{

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) på pin 2 av Arduino Uno et Nano

}

// affichage des codes InfraRouge

ugyldig irkode (dekoderesultater *resultater)

{

// Panasonic

if (results-> decode_type == PANASONIC) {

Serial.print (resultat-> adresse, HEX);

Serial.print (":");

}

Serial.print (resultater-> verdi, HEX);

}//tomrom

// afficahge des codes encodés

ugyldig koding (dekoderesultater *resultater)

{

bytte (resultater-> dekode_type) {

misligholde:

sak UKjent: Serial.print ("Inconnu"); gå i stykker;

case NEC: Serial.print ("NEC"); gå i stykker;

case SONY: Serial.print ("SONY"); gå i stykker;

sak RC5: Serial.print ("RC5"); gå i stykker;

sak RC6: Serial.print ("RC6"); gå i stykker;

case DISH: Serial.print ("DISH"); gå i stykker;

sak SHARP: Serial.print ("SHARP"); gå i stykker;

sak JVC: Serial.print ("JVC"); gå i stykker;

sak SANYO: Serial.print ("SANYO"); gå i stykker;

sak MITSUBISHI: Serial.print ("MITSUBISHI"); gå i stykker;

sak SAMSUNG: Serial.print ("SAMSUNG"); gå i stykker;

etui LG: Serial.print ("LG"); gå i stykker;

case WHYNTER: Serial.print ("WHYNTER"); gå i stykker;

sak AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); gå i stykker;

sak PANASONIC: Serial.print ("PANASONIC"); gå i stykker;

sak DENON: Serial.print ("Denon"); gå i stykker;

}

}

// dump les résultats

void dumpInfo (dekoderesultater *resultater)

{

// Sjekk om bufferen overløp

if (resultater-> overløp) {

Serial.println ("IR -kode for lang. Rediger IRremoteInt.h og øk RAWBUF");

komme tilbake;

}

// Vis kodingsstandard

Serial.print ("Koding:");

koding (resultater);

Serial.println ("");

// Vis kode og lengde

Serial.print ("Kode:");

ircode (resultater);

Serial.print ("(");

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

Serial.println ("bits)");

}

//struktur

void dumpRaw (dekode_resultater *resultater)

{

// Skriv ut rådata

Serial.print ("Timing [");

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

Serial.println ("]:");

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

usignert lang x = resultater-> rawbuf * USECPERTICK;

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

Serial.print ("-");

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

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

Serial.print (x, DEC);

} annet {// merkelig

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

hvis (i rawlen-1) Serial.print (","); // ',' ikke nødvendig for den siste

}

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

}

Serial.println (""); // Ny linje

}

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

// Dump ut strukturen decode_results.

//

void dumpCode (decode_results *results)

{

// Start erklæringen

Serial.print ("unsigned int"); // variabel type

Serial.print ("rawData ["); // matrisenavn

Serial.print (resultater-> rawlen - 1, DEC); // matrisestørrelse

Serial.print ("] = {"); // Start erklæringen

// Dump data

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

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

hvis (i rawlen-1) Serial.print (","); // ',' ikke nødvendig på den siste

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

}

// Avslutt erklæringen

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

// Kommentar

Serial.print ("//");

koding (resultater);

Serial.print ("");

ircode (resultater);

// Ny linje

Serial.println ("");

// Dump nå "kjente" koder

if (results-> decode_type! = UKjent) {

// Noen protokoller har en adresse

if (results-> decode_type == PANASONIC) {

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

Serial.print (resultat-> adresse, HEX);

Serial.println (";");

}

// Alle protokoller har data

Serial.print ("usignerte int data = 0x");

Serial.print (resultater-> verdi, HEX);

Serial.println (";");

}

}

hulrom ()

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

{

resultater for dekoderesultater; // Et sted å lagre resultatene

if (irrecv.decode (& results)) {// Ta en IR -kode

dumpInfo (& resultater); // Legg ut resultatene

dumpRaw (& results); // Legg ut resultatene i RAW -format

dumpCode (& resultater); // Skriv ut resultatene som kildekode

Serial.println (""); // Tom linje mellom oppføringer

irrecv.resume (); // Forbered deg på neste verdi

}

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

hvis (mySwitch.available ())

{

int verdi = mySwitch.getReceivedValue ();

Serial.println ("RX433");

hvis (verdi == 0) {

Serial.print ("Codage inconnu");

} annet

{

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

}//Løkke

Trinn 3: Informasjon Sur Les Codes Infra-Rouge

Il y a plusieurs protokoller:

NEC: 32 bits (protokolldetaljer)

Sony: 12 ou 20 bits (protokolldetaljer) (Forstå Sony IR -fjernkoder.)

RC5: 12 bits (protokolldetaljer)

RC6: 20 ou 36 bits (protokolldetaljer)

Hell Sony et RC5/6, chaque transmission doit être répétés 3 fois!

OBS: 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

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

Trinn 4: Informasjon Sur Codes RX433

L’envoie se fera avec la librairie RCSwitch.h

Eksempel på mySwitch.send (1975778, 24);

På peut facilement piloter avec cela des prises commandés.

Anbefalt: