תוכן עניינים:

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 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.

ב- pourra donc ensuite, grâce à une autre montage, שליחות קודים וחלוץ לא חשוב!

שלב 1: לה מונטאז '

לה מונטאז '
לה מונטאז '

פשוט, 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;

הגדרת חלל ()

{

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) על סיכה 2 של Arduino Uno et Nano

}

// affichage des codes InfraRouge

ircode void (decode_results *results)

{

// פנסוניק

if (results-> decode_type == PANASONIC) {

Serial.print (תוצאות-> כתובת, HEX);

Serial.print (":");

}

Serial.print (תוצאות-> ערך, HEX);

}//בָּטֵל

// afficahge des codes encodés

קידוד חלל (decode_results *תוצאות)

{

switch (results-> 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 ("דנון"); לשבור;

}

}

// dump les résultats

void dumpInfo (decode_results *results)

{

// בדוק אם המאגר עלה על גדותיו

if (תוצאות-> הצפה) {

Serial.println ("קוד IR ארוך מדי. ערוך IRremoteInt.h והגדיל את RAWBUF");

לַחֲזוֹר;

}

// הצג תקן קידוד

Serial.print ("קידוד:");

קידוד (תוצאות);

Serial.println ("");

// הצג קוד ואורך

Serial.print ("קוד:");

ircode (תוצאות);

Serial.print ("(");

Serial.print (תוצאות-> סיביות, DEC);

Serial.println ("סיביות" ");

}

//מִבְנֶה

void dumpRaw (decode_results *results)

{

// הדפס נתוני גלם

Serial.print ("תזמון [");

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 (","); // ',' אין צורך באחרון

}

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

}

Serial.println (""); // שורה חדשה

}

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

// זרוק את מבנה decode_results.

//

void dumpCode (decode_results *results)

{

// התחל בהצהרה

Serial.print ("int unsigned"); // סוג משתנה

Serial.print ("rawData ["); // שם מערך

Serial.print (תוצאות-> rawlen - 1, DEC); // גודל מערך

Serial.print ("] = {"); // התחל בהצהרה

// נתוני dump

עבור (int i = 1; i rawlen; i ++) {

Serial.print (תוצאות-> rawbuf * USECPERTICK, DEC);

if (i rawlen-1) Serial.print (","); // ',' אין צורך באחרון

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

}

// סיום הכרזה

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

// תגובה

Serial.print ("//");

קידוד (תוצאות);

Serial.print ("");

ircode (תוצאות);

// שורה חדשה

Serial.println ("");

// עכשיו זרוק קודים "ידועים"

אם (results-> decode_type! = לא ידוע) {

// לפרוטוקולים מסוימים יש כתובת

if (results-> decode_type == PANASONIC) {

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

Serial.print (תוצאות-> כתובת, HEX);

Serial.println (";");

}

// לכל הפרוטוקולים יש נתונים

Serial.print ("נתוני int לא חתומים = 0x");

Serial.print (תוצאות-> ערך, HEX);

Serial.println (";");

}

}

לולאת חלל ()

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

{

תוצאות decode_results; // איפשהו לאחסן את התוצאות

if (irrecv.decode (& תוצאות)) {// קח קוד IR

dumpInfo (& תוצאות); // פלט את התוצאות

dumpRaw (& תוצאות); // פלט את התוצאות בפורמט RAW

dumpCode (& תוצאות); // פלט את התוצאות כקוד מקור

Serial.println (""); // קו ריק בין הערכים

irrecv.resume (); // היכונו לערך הבא

}

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

אם (mySwitch.available ())

{

int value = 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 ("פרוטוקול:");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

}//לוּלָאָה

שלב 3: מידע על Les Codes אינפרא-רוז '

פרוטוקולי Il plus Plusurs:

NEC: 32 סיביות (פרטי פרוטוקול)

סוני: 12 או 20 סיביות (פרטי פרוטוקול) (הבנת קודי IR מרחוק של Sony.)

RC5: 12 סיביות (פרטי פרוטוקול)

RC6: 20 או 36 סיביות (פרטי פרוטוקול)

שפכו את Sony et RC5/6, שידור צ'אקה עושה 3 רפים!

שימו לב: la librairie IRremote.h ne semble pas pouvoir שליח des codes codés sur plus de 32bits. Les RC6, 36 doivent donc êtres שליח ב- raw, qui prennent plus de taille mémoire.

L’envoie des codes 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);

על הטיסות המתקדמות piloter avec cela des prises commandés.

מוּמלָץ: