সুচিপত্র:

Récupérer Les Codes Infra-Rouge Et 433mhz: 4 ধাপ
Récupérer Les Codes Infra-Rouge Et 433mhz: 4 ধাপ

ভিডিও: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 ধাপ

ভিডিও: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 ধাপ
ভিডিও: Télécommande Infra rouge 2/3 2024, নভেম্বর
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 code 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।

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

ধাপ 1: Le Montage

লে মন্টেজ
লে মন্টেজ

সহজ, একটি Arduino Nano, une diode réceptrice infra-rouge et un récepteur 433 mhz।

ধাপ 2: Le Code Arduino

// ইনফ্রা রুজ

#অন্তর্ভুক্ত

int recvPin = 11; // পিন Arduino éালা récepteur InfraRouge (TOSP4838)

IRrecv irrecv (recvPin);

// RX433

#অন্তর্ভুক্ত

RCSwitch mySwitch = RCSwitch ();

decode_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 কোড InfraRouge

অকার্যকর ircode (decode_results *ফলাফল)

{

// প্যানাসনিক

যদি (ফলাফল-> ডিকোড_টাইপ == প্যানাসনিক) {

Serial.print (ফলাফল-> ঠিকানা, HEX);

সিরিয়াল.প্রিন্ট (":");

}

Serial.print (ফলাফল-> মান, HEX);

} // অকার্যকর

// afficahge des কোড encodés

অকার্যকর এনকোডিং (decode_results *ফলাফল)

{

সুইচ (ফলাফল-> ডিকোড_ টাইপ) {

ডিফল্ট:

কেস অজ্ঞাত: সিরিয়াল.প্রিন্ট ("ইনকনু"); বিরতি;

case NEC: Serial.print ("NEC"); বিরতি;

কেস সনি: সিরিয়াল.প্রিন্ট ("সনি"); বিরতি;

কেস RC5: Serial.print ("RC5"); বিরতি;

কেস RC6: Serial.print ("RC6"); বিরতি;

কেস ডিশ: সিরিয়াল.প্রিন্ট ("ডিশ"); বিরতি;

কেস শার্প: Serial.print ("SHARP"); বিরতি;

কেস JVC: Serial.print ("JVC"); বিরতি;

কেস SANYO: Serial.print ("SANYO"); বিরতি;

কেস মিত্সুবিশি: সিরিয়াল.প্রিন্ট ("মিতসুবিশি"); বিরতি;

কেস স্যামসাং: সিরিয়াল.প্রিন্ট ("স্যামসাং"); বিরতি;

কেস এলজি: সিরিয়াল.প্রিন্ট ("এলজি"); বিরতি;

কেস হোয়াইটার: Serial.print ("WHYNTER"); বিরতি;

কেস AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); বিরতি;

ক্ষেত্রে প্যানাসনিক: সিরিয়াল.প্রিন্ট ("প্যানাসনিক"); বিরতি;

কেস ডেনন: সিরিয়াল.প্রিন্ট ("ডেনন"); বিরতি;

}

}

// ডাম্প les résultats

অকার্যকর dumpInfo (decode_results *ফলাফল)

{

// বাফার উপচে পড়েছে কিনা তা পরীক্ষা করুন

যদি (ফলাফল-> ওভারফ্লো) {

Serial.println ("IR কোডটি অনেক দীর্ঘ। IRremoteInt.h সম্পাদনা করুন এবং RAWBUF বৃদ্ধি করুন");

প্রত্যাবর্তন;

}

// এনকোডিং মান দেখান

Serial.print ("Encodage:");

এনকোডিং (ফলাফল);

Serial.println ("");

// কোড এবং দৈর্ঘ্য দেখান

সিরিয়াল.প্রিন্ট ("কোড:");

ircode (ফলাফল);

সিরিয়াল.প্রিন্ট ("(");

সিরিয়াল.প্রিন্ট (ফলাফল-> বিট, ডিসি);

Serial.println ("bits)");

}

// গঠন

অকার্যকর dumpRaw (decode_results *ফলাফল)

{

// কাঁচা তথ্য মুদ্রণ করুন

সিরিয়াল.প্রিন্ট ("সময় [");

সিরিয়াল.প্রিন্ট (ফলাফল-> কাঁচা -১, ডিসি);

Serial.println ("]:");

জন্য (int i = 1; i rawlen; i ++) {

স্বাক্ষরবিহীন দীর্ঘ x = ফলাফল-> কাঁচা বুফ * ব্যবহার

যদি (! (i & 1)) {// এমনকি

সিরিয়াল.প্রিন্ট ("-");

যদি (x <1000) Serial.print ("");

যদি (x <100) Serial.print ("");

সিরিয়াল.প্রিন্ট (x, DEC);

} অন্যথায় {// বিজোড়

সিরিয়াল.প্রিন্ট ("");

সিরিয়াল.প্রিন্ট ("+");

যদি (x <1000) Serial.print ("");

যদি (x <100) Serial.print ("");

সিরিয়াল.প্রিন্ট (x, DEC);

যদি (i rawlen-1) Serial.print (","); // ',' শেষের জন্য প্রয়োজন নেই

}

যদি (! (i % 8)) Serial.println ("");

}

Serial.println (""); // নতুন লাইন

}

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

// decode_results কাঠামোটি ফেলে দিন।

//

void dumpCode (decode_results *ফলাফল)

{

// ঘোষণা শুরু করুন

Serial.print ("স্বাক্ষরবিহীন int"); // ভেরিয়েবল টাইপ

Serial.print ("rawData ["); // অ্যারে নাম

সিরিয়াল.প্রিন্ট (ফলাফল-> কাঁচা - ১, ডিসি); // অ্যারের আকার

সিরিয়াল.প্রিন্ট ("] = {"); // ঘোষণা শুরু করুন

// ডাম্প ডেটা

জন্য (int i = 1; i rawlen; i ++) {

Serial.print (ফলাফল-> rawbuf * USECPERTICK, DEC);

যদি (i rawlen-1) Serial.print (","); // ',' শেষের প্রয়োজন নেই

যদি (! (i & 1)) Serial.print ("");

}

// শেষ ঘোষণা

সিরিয়াল.প্রিন্ট ("};"); //

// মন্তব্য

সিরিয়াল.প্রিন্ট ("//");

এনকোডিং (ফলাফল);

সিরিয়াল.প্রিন্ট ("");

ircode (ফলাফল);

// নতুন লাইন

Serial.println ("");

// এখন "পরিচিত" কোডগুলি ডাম্প করুন

যদি (ফলাফল-> ডিকোড_ টাইপ! = অজানা) {

// কিছু প্রোটোকলের একটি ঠিকানা থাকে

যদি (ফলাফল-> ডিকোড_টাইপ == প্যানাসনিক) {

Serial.print ("স্বাক্ষরবিহীন int addr = 0x");

Serial.print (ফলাফল-> ঠিকানা, HEX);

Serial.println (";");

}

// সকল প্রোটোকলের ডেটা আছে

Serial.print ("স্বাক্ষরবিহীন int ডেটা = 0x");

Serial.print (ফলাফল-> মান, HEX);

Serial.println (";");

}

}

অকার্যকর লুপ ()

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

{

decode_results ফলাফল; // ফলাফল সংরক্ষণ করার জন্য কোথাও

if (irrecv.decode (& results)) {// একটি আইআর কোড ধরুন

ডাম্প ইনফো (এবং ফলাফল); // ফলাফল আউটপুট

ডাম্পরো (এবং ফলাফল); // RAW ফরম্যাটে ফলাফল আউটপুট করুন

ডাম্পকোড (এবং ফলাফল); // উত্স কোড হিসাবে ফলাফল আউটপুট

Serial.println (""); // এন্ট্রিগুলির মধ্যে ফাঁকা লাইন

irrecv.resume (); // পরবর্তী মান জন্য প্রস্তুত

}

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

যদি (mySwitch.available ())

{

int মান = mySwitch.getReceivedValue ();

Serial.println ("RX433");

যদি (মান == 0) {

Serial.print ("Codage inconnu");

} অন্যথায়

{

Serial.print ("Reçu");

সিরিয়াল.প্রিন্ট (mySwitch.getReceivedValue ());

সিরিয়াল.প্রিন্ট (" /");

সিরিয়াল.প্রিন্ট (mySwitch.getReceivedBitlength ());

সিরিয়াল.প্রিন্ট ("বিট");

Serial.print ("Protocole:");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

}//লুপ

ধাপ 3: ইনফোস সুর লেস কোড ইনফ্রা-রাউজ

I a y plusieurs protocoles:

NEC: 32 বিট (প্রটোকল বিবরণ)

সনি: 12 বা 20 বিট (প্রোটোকল বিবরণ) (সনি আইআর রিমোট কোডগুলি বোঝা।)

RC5: 12 বিট (প্রোটোকল বিবরণ)

RC6: 20 বা 36 বিট (প্রোটোকল বিবরণ)

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

মনোযোগ: la librairie IRremote.h ne semble pas pouvoir envoyer des কোড 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 code se fera avec la librairie IRremote.h

উদাহরণ: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7, 32);

ধাপ 4: ইনফোস সুর কোড RX433

L'envoie se fera avec la librairie RCSwitch.h

উদাহরণ mySwitch.send (1975778, 24);

পুট ফ্যাসিলমেন্ট পাইলটারে এভেক সেলা ডেস প্রাইজ কমান্ড।

প্রস্তাবিত: