Përmbajtje:

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

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

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 Hapa
Video: Electronique Test : Capteur Infrarouge FC-51 / IR sensor 2024, Nëntor
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 garazh dhe auton fonctionnant sous 433 mhz (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.

Për më tepër, siguroni një montazh të madh, dërgoni kodet e kodit dhe pilotit që nuk ju interesojnë!

Hapi 1: Le Montage

Le Montage
Le Montage

Thjeshtë, pa Arduino Nano, pa diodë réceptrice infra-rouge dhe un récepteur 433 mhz.

Hapi 2: Le Code Arduino

// InfraRouge

#përfshi

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

IRrecv irrecv (recvPin);

// RX433

#përfshi

RCSwitch mySwitch = RCSwitch ();

rezultatet e deshifrimit_rezultateve;

void setup ()

{

Serial.filloj (9600);

irrecv.enableIRIn ();

irrecv.blink13 (e vërtetë); // allume la LED interne lors de l'envoie InfraRouge

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

}

// affichage des codes InfraRouge

ircode e pavlefshme (dekodoni_rezultatet *rezultatet)

{

// Panasonic

nëse (rezultatet-> lloji i dekodimit == PANASONIK) {

Serial.print (rezultatet-> adresa, HEX);

Serial.print (":");

}

Serial.print (rezultatet-> vlera, HEX);

} // e pavlefshme

// afficahge des kodet e koduara

kodim i pavlefshëm (dekodoni_rezultatet *rezultatet)

{

kaloni (rezultatet-> lloji i dekodimit) {

parazgjedhje:

rast I PANJOHUR: Serial.print ("Inconnu"); pushim;

rasti NEC: Serial.print ("NEC"); pushim;

rasti SONY: Serial.print ("SONY"); pushim;

rasti RC5: Serial.print ("RC5"); pushim;

rasti RC6: Serial.print ("RC6"); pushim;

rasti DISH: Serial.print ("DISH"); pushim;

rast SHARP: Serial.print ("SHARP"); pushim;

rasti JVC: Serial.print ("JVC"); pushim;

rasti SANYO: Serial.print ("SANYO"); pushim;

rasti MITSUBISHI: Serial.print ("MITSUBISHI"); pushim;

rasti SAMSUNG: Serial.print ("SAMSUNG"); pushim;

rast LG: Serial.print ("LG"); pushim;

rasti WHYNTER: Serial.print ("WHYNTER"); pushim;

rasti AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); pushim;

rast PANASONIC: Serial.print ("PANASONIC"); pushim;

rasti DENON: Serial.print ("Denon"); pushim;

}

}

// dump les résultats

void dumpInfo (deshifro_rezultatet *rezultatet)

{

// Kontrolloni nëse tamponi është tejmbushur

nëse (rezultatet-> tejmbushje) {

Serial.println ("Kodi IR shumë i gjatë. Redakto IRremoteInt.h dhe rrit RAWBUF");

kthim;

}

// Shfaq standardin e kodimit

Serial.print ("Kodimi:");

kodimi (rezultatet);

Serial.println ("");

// Shfaq kodin & gjatësinë

Serial.print ("Kodi:");

ircode (rezultatet);

Serial.print ("(");

Serial.print (rezultatet-> bit, DEC);

Serial.println ("bit"));

}

// struktura

void dumpRaw (deshifro_rezultatet *rezultatet)

{

// Shtypni të dhëna të papërpunuara

Serial.print ("Koha [");

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

Serial.println ("]:");

për (int i = 1; i rawlen; i ++) {

i panënshkruar i gjatë x = rezultate-> rawbuf * USECPERTICK;

nëse (! (i & 1)) {// madje

Serial.print ("-");

nëse (x <1000) Serial.print ("");

nëse (x <100) Serial.print ("");

Serial.print (x, DEC);

} tjetër {// i rastësishëm

Serial.print ("");

Serial.print ("+");

nëse (x <1000) Serial.print ("");

nëse (x <100) Serial.print ("");

Serial.print (x, DEC);

nëse (i rawlen-1) Serial.print (","); // ',' nuk nevojitet për të fundit

}

nëse (! (i % 8)) Serial.println ("");

}

Serial.println (""); // Linja e re

}

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

// Hidheni strukturën e deshifrimit_rezultatet.

//

void dumpCode (deshifro_rezultatet *rezultatet)

{

// Filloni deklaratën

Serial.print ("int pa shenjë"); // lloji i ndryshueshëm

Serial.print ("rawData ["); // emri i grupit

Serial.print (rezultatet-> rawlen - 1, DEC); // madhësia e grupit

Serial.print ("] = {"); // Filloni deklaratën

// Hedh të dhënat

për (int i = 1; i rawlen; i ++) {

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

nëse (i rawlen-1) Serial.print (","); // ',' nuk nevojitet në të fundit

nëse (! (i & 1)) Serial.print ("");

}

// Përfundoni deklaratën

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

// Koment

Serial.print ("//");

kodimi (rezultatet);

Serial.print ("");

ircode (rezultatet);

// Linja e re

Serial.println ("");

// Tani hidhni kodet "e njohura"

nëse (rezultatet-> lloji i dekodimit! = I PANJOHUR) {

// Disa protokolle kanë një adresë

nëse (rezultatet-> lloji i dekodimit == PANASONIK) {

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

Serial.print (rezultatet-> adresa, HEX);

Serial.println (";");

}

// Të gjithë protokollet kanë të dhëna

Serial.print ("të dhënat e panënshkruara int = 0x");

Serial.print (rezultatet-> vlera, HEX);

Serial.println (";");

}

}

lak void ()

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

{

rezultatet e deshifrimit_rezultateve; // Diku për të ruajtur rezultatet

if (irrecv.decode (& results)) {// Merrni një kod IR

dumpInfo (& rezultatet); // Nxjerr rezultatet

dumpRaw (& rezultatet); // Nxjerr rezultatet në formatin RAW

dumpCode (& rezultatet); // Nxjerr rezultatet si kod burimi

Serial.println (""); // Linja bosh midis shënimeve

irrecv.resume (); // Përgatituni për vlerën tjetër

}

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

nëse (mySwitch.available ())

{

int vlera = mySwitch.getReceivedValue ();

Serial.println ("RX433");

nëse (vlera == 0) {

Serial.print ("Codage inconnu");

} tjetër

{

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

} // lak

Hapi 3: Infos Sur Les Codes Infra-Rouge

Protokole Il y a plusieurs:

NEC: 32 bit (detajet e protokollit)

Sony: 12 ose 20 bit (detaje të protokollit) (Kuptimi i kodeve të largëta të IR IR të Sony.)

RC5: 12 bit (detajet e protokollit)

RC6: 20 ose 36 bit (detajet e protokollit)

Derdhni Sony et RC5/6, transmetimi chaque do të bëjë të njëjtën gjë 3!

KUJDES: la librari IRremote.h ne semble pas pouvoir i dërguari i kodeve kodet mbi plus 32bit. Les RC6, 36 nuk do të donte të dërgonte një informacion të papërpunuar, si dhe më shumë se një mesazh tjetër.

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

Shembull: (0x devant le code) dhe nombre de bit irsend.sendNEC (0xA55A38C7, 32);

Hapi 4: Infos Sur Codes RX433

L’envoie se fera avec la librairie RCSwitch.h

Shembull mySwitch.send (1975778, 24);

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

Recommended: