Բովանդակություն:

Récupérer Les Codes Infra-Rouge Et 433 մՀց ՝ 4 քայլ
Récupérer Les Codes Infra-Rouge Et 433 մՀց ՝ 4 քայլ

Video: Récupérer Les Codes Infra-Rouge Et 433 մՀց ՝ 4 քայլ

Video: Récupérer Les Codes Infra-Rouge Et 433 մՀց ՝ 4 քայլ
Video: Télécommande universelle, pour portail ou garage automatique. 2024, Հուլիսի
Anonim
Récupérer Les Codes Infra-Rouge Et 433 մՀց
Récupérer Les Codes Infra-Rouge Et 433 մՀց

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, դեսպանորդի ծածկագրերի կոդերը և օդաչուի կարևորությունը:

Քայլ 1: Լե Մոնտաժ

Լե Մոնտաժ
Լե Մոնտաժ

Պարզ, un Arduino Nano, une diode réceptrice infra-rouge et un récepteur 433 mhz:

Քայլ 2: Le Code Arduino

// InfraRouge

#ներառում

int recvPin = 11; // կապել Arduino pour récepteur InfraRouge (TOSP4838)

IRrecv irrecv (recvPin);

// RX433

#ներառում

RCSwitch mySwitch = RCSwitch ();

decode_results results;

դատարկ կարգավորում ()

{

Serial.begin (9600);

irrecv.enableIRIn ();

irrecv.blink13 (ճշմարիտ); // 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

դատարկ ircode (decode_results *արդյունքները)

{

// Panasonic

եթե (արդյունքներ-> decode_type == PANASONIC) {

Serial.print (արդյունքներ-> հասցե, HEX);

Serial.print (":");

}

Serial.print (արդյունքներ-> արժեք, HEX);

} // անվավեր

// afficahge des codes encodés

դատարկ կոդավորում (արդյունքների ապակոդավորում *արդյունքներ)

{

անջատիչ (արդյունքներ-> decode_type) {

կանխադրված:

գործ ԱՆՀԱՅՏ. Serial.print ("Inconnu"); ընդմիջում;

գործ NEC: Serial.print ("NEC"); ընդմիջում;

պատյան SONY: Serial.print ("SONY"); ընդմիջում;

գործ RC5: Serial.print ("RC5"); ընդմիջում;

գործ RC6: Serial.print ("RC6"); ընդմիջում;

գործ DISH: Serial.print ("DISH"); ընդմիջում;

գործ SHARP: Serial.print ("SHARP"); ընդմիջում;

գործ JVC: Serial.print ("JVC"); ընդմիջում;

գործ SANYO: Serial.print ("SANYO"); ընդմիջում;

գործ MITSUBISHI: Serial.print ("MITSUBISHI"); ընդմիջում;

գործ SAMSUNG: Serial.print ("SAMSUNG"); ընդմիջում;

գործ LG: Serial.print ("LG"); ընդմիջում;

գործ WHYNTER: Serial.print ("WHYNTER"); ընդմիջում;

գործ AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); ընդմիջում;

գործ PANASONIC: Serial.print ("PANASONIC"); ընդմիջում;

գործ DENON: Serial.print ("Denon"); ընդմիջում;

}

}

// dump les résultats

void dumpInfo (decode_results *results)

{

// Ստուգեք, արդյոք բուֆերը լցվել է

եթե (արդյունքներ-> վարարում) {

Serial.println («IR կոդը չափազանց երկար է. Խմբագրել IRremoteInt.h- ը և ավելացնել RAWBUF»);

վերադարձ;

}

// Showույց տալ կոդավորման ստանդարտը

Serial.print ("Encodage:");

կոդավորում (արդյունքներ);

Serial.println ("");

// Showույց տալ կոդը և երկարությունը

Serial.print («Կոդ.»);

ծածկագիր (արդյունքներ);

Serial.print ("(");

Serial.print (արդյունքներ-> բիթեր, DEC);

Serial.println («բիթեր»);

}

// կառուցվածքը

void dumpRaw (decode_results *results)

{

// Տպել հումքի տվյալները

Serial.print ("ingամկետները [");

Serial.print (արդյունքներ-> rawlen-1, DEC);

Serial.println ("]:");

համար (int i = 1; i rawlen; i ++) {

անստորագիր երկար x = արդյունքներ-> rawbuf * USECPERTICK;

եթե (! (i & 1)) {// նույնիսկ

Serial.print ("-");

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

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

Serial.print (x, DEC);

} այլ {// կենտ

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' վերջինի համար անհրաժեշտ չէ

}

եթե (! (i % 8)) Serial.println ("");

}

Serial.println (""); // Նոր տող

}

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

// Թափել decode_results կառուցվածքը:

//

void dumpCode (decode_results *results)

{

// Սկսեք հայտարարագիրը

Serial.print ("unsigned int"); // փոփոխական տեսակը

Serial.print ("rawData ["); // զանգվածի անուն

Serial.print (արդյունքներ-> rawlen - 1, DEC); // զանգվածի չափը

Serial.print ("] = {"); // Սկսեք հայտարարագիրը

// Թափել տվյալները

համար (int i = 1; i rawlen; i ++) {

Serial.print (արդյունքներ-> rawbuf * USECPERTICK, DEC);

if (i rawlen-1) Serial.print (","); // ',' վերջինի վրա անհրաժեշտ չէ

եթե (! (i & 1)) Serial.print ("");

}

// Ավարտել հայտարարագիրը

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

// Մեկնաբանություն

Serial.print ("//");

կոդավորում (արդյունքներ);

Serial.print ("");

ծածկագիր (արդյունքներ);

// Նոր տող

Serial.println ("");

// Այժմ թափեք «հայտնի» կոդերը

եթե (արդյունքներ-> decode_type! = ԱՆՀԱՅՏ) {

// Որոշ արձանագրություններ ունեն հասցե

եթե (արդյունքներ-> decode_type == PANASONIC) {

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

Serial.print (արդյունքներ-> հասցե, HEX);

Serial.println (";");

}

// Բոլոր արձանագրություններն ունեն տվյալներ

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

Serial.print (արդյունքներ-> արժեք, HEX);

Serial.println (";");

}

}

դատարկ շրջան ()

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

{

decode_results results; // Արդյունքները պահելու տեղ

if (irrecv.decode (& results))) {// Գրավեք IR կոդը

dumpInfo (և արդյունքներ); // Ելք արդյունքները

dumpRaw (& արդյունքներ); // Արդյունքները թողնել RAW ձևաչափով

dumpCode (& արդյունքներ); // Արդյունքները թողնել որպես սկզբնական կոդ

Serial.println (""); // Գրառումների միջև դատարկ գիծ

irrecv.resume (); // Պատրաստվեք հաջորդ արժեքին

}

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

եթե (mySwitch.available ())

{

int արժեքը = mySwitch.getReceivedValue ();

Serial.println ("RX433");

եթե (արժեքը == 0) {

Serial.print («Codage inconnu»);

} այլ

{

Serial.print («Reçu»);

Serial.print (mySwitch.getReceivedValue ());

Serial.print (" /");

Serial.print (mySwitch.getReceivedBitlength ());

Serial.print («բիթ»);

Serial.print ("Protocole:");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

} // հանգույց

Քայլ 3. Infos Sur Les Codes Infra-Rouge

Il y a plusieurs նախադասություններ.

NEC: 32 բիթ (արձանագրության մանրամասները)

Sony: 12 կամ 20 բիթ (արձանագրության մանրամասներ) (Հասկանալով Sony IR հեռակառավարման կոդերը):

RC5: 12 բիթ (արձանագրության մանրամասները)

RC6: 20 կամ 36 բիթ (արձանագրության մանրամասները)

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

ՈTՇԱԴՐՈԹՅՈՆ. 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

Օրինակ ՝ (0x devant le code) և nombre de bits irsend.sendNEC (0xA55A38C7, 32);

Քայլ 4. Տեղեկատվություն Sur Codes RX433

L’envoie se fera avec la librairie RCSwitch.h

Օրինակ mySwitch.send (1975778, 24);

On peut facilement օդաչու avec cela des prises commandés.

Խորհուրդ ենք տալիս: