Indholdsfortegnelse:

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

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

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 trin
Video: Начало работы с электроникой № 10 — Использование инфракрасного пульта дистанционного управления и датчика 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!

Trin 1: Le Montage

Le Montage
Le Montage

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

Trin 2: Le Code Arduino

// InfraRouge

#omfatte

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

IRrecv irrecv (recvPin);

// RX433

#omfatte

RCSwitch mySwitch = RCSwitch ();

decode_results resultater;

ugyldig opsætning ()

{

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) til pin 2 fra Arduino Uno et Nano

}

// affichage des codes InfraRouge

void ircode (decode_results *results)

{

// Panasonic

hvis (results-> decode_type == PANASONIC) {

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

Serial.print (":");

}

Serial.print (resultater-> værdi, HEX);

}//ugyldig

// afficahge des codes encodés

tomrumskodning (dekoderesultater *resultater)

{

switch (resultater-> decode_type) {

Standard:

sag UKendt: Serial.print ("Inconnu"); pause;

sag NEC: Serial.print ("NEC"); pause;

sag SONY: Serial.print ("SONY"); pause;

sag RC5: Serial.print ("RC5"); pause;

sag RC6: Serial.print ("RC6"); pause;

kuffertopvask: Serial.print ("parabol"); pause;

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

sag JVC: Serial.print ("JVC"); pause;

sag SANYO: Serial.print ("SANYO"); pause;

sag MITSUBISHI: Serial.print ("MITSUBISHI"); pause;

sag SAMSUNG: Serial.print ("SAMSUNG"); pause;

sag LG: Serial.print ("LG"); pause;

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

sag AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); pause;

sag PANASONIC: Serial.print ("PANASONIC"); pause;

sag DENON: Serial.print ("Denon"); pause;

}

}

// dump les résultats

void dumpInfo (dekoderesultater *resultater)

{

// Kontroller, om bufferen overløb

hvis (resultater-> overløb) {

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

Vend tilbage;

}

// Vis kodningsstandard

Serial.print ("Kodning:");

kodning (resultater);

Serial.println ("");

// Vis kode og længde

Serial.print ("kode:");

ircode (resultater);

Serial.print ("(");

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

Serial.println ("bits)");

}

//struktur

void dumpRaw (decode_results *results)

{

// Udskriv rådata

Serial.print ("Timing [");

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

Serial.println ("]:");

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

usigneret lang x = resultater-> rawbuf * USECPERTICK;

hvis (! (i & 1)) {// selv

Serial.print ("-");

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

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

Serial.print (x, DEC);

} andet {// ulige

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 sidste

}

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

}

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

}

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

// Fjern decode_results -strukturen.

//

void dumpCode (decode_results *results)

{

// Start erklæring

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

Serial.print ("rawData ["); // array -navn

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

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

// 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 sidste

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

}

// Afslut erklæring

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

// Kommentar

Serial.print ("//");

kodning (resultater);

Serial.print ("");

ircode (resultater);

// Ny linje

Serial.println ("");

// Dump nu "kendte" koder

hvis (results-> decode_type! = UKendt) {

// Nogle protokoller har en adresse

hvis (results-> decode_type == PANASONIC) {

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

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

Serial.println (";");

}

// Alle protokoller har data

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

Serial.print (resultater-> værdi, HEX);

Serial.println (";");

}

}

void loop ()

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

{

decode_results resultater; // Et sted at gemme resultaterne

if (irrecv.decode (& resultater)) {// Tag en IR -kode

dumpInfo (& resultater); // Output resultaterne

dumpRaw (& resultater); // Output resultaterne i RAW -format

dumpCode (& resultater); // Output resultaterne som kildekode

Serial.println (""); // Tom linje mellem poster

irrecv.resume (); // Forbered dig på den næste værdi

}

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

hvis (mySwitch.available ())

{

int value = mySwitch.getReceivedValue ();

Serial.println ("RX433");

hvis (værdi == 0) {

Serial.print ("Codage inconnu");

} andet

{

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

} // loop

Trin 3: Infos Sur Les Codes Infra-Rouge

Il y a plusieurs protokoller:

NEC: 32 bit (protokoloplysninger)

Sony: 12 ou 20 bits (protokoloplysninger) (Forståelse af Sony IR -fjernkoder.)

RC5: 12 bits (protokoloplysninger)

RC6: 20 ou 36 bits (protokoloplysninger)

Hæld 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);

Trin 4: Information om Sur -koder 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.

Anbefalede: