فهرست مطالب:

Récupérer Les Codes Infra-Rouge Et 433 مگاهرتز: 4 مرحله
Récupérer Les Codes Infra-Rouge Et 433 مگاهرتز: 4 مرحله

تصویری: Récupérer Les Codes Infra-Rouge Et 433 مگاهرتز: 4 مرحله

تصویری: Récupérer Les Codes Infra-Rouge Et 433 مگاهرتز: 4 مرحله
تصویری: 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 and 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 ، نماینده ces codes و piloter n’importe quoi!

مرحله 1: لو مونتاژ

لو مونتاژ
لو مونتاژ

ساده ، بدون Arduino Nano ، une diode réceptrice infra-rouge et un récepteur 433 مگاهرتز.

مرحله 2: Le Code Arduino

// InfraRouge

#عبارتند از

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

IRrecv irrecv (recvPin) ؛

// RX433

#عبارتند از

RCSwitch mySwitch = RCSwitch ()؛

decode_results results؛

void setup ()

{

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

void ircode (decode_results *results)

{

// پاناسونیک

if (results-> decode_type == PANASONIC) {

Serial.print (نتایج-> آدرس ، HEX) ؛

Serial.print (":")؛

}

Serial.print (results-> value، HEX)؛

}//خالی

// afficahge des codes encodés

کدگذاری خالی (decode_results *نتایج)

{

تغییر (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 ("Denon")؛ زنگ تفريح ؛

}

}

// 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 = results-> rawbuf * USECPERTICK؛

if (! (i & 1)) {// even

Serial.print ("-") ؛

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

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

Serial.print (x، DEC)؛

} else {// فرد

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 ("unsigned int")؛ // نوع متغیر

Serial.print ("rawData [") ؛ // نام آرایه

Serial.print (نتایج-> rawlen - 1 ، DEC) ؛ // اندازه آرایه

Serial.print ("] = {")؛ // شروع اعلامیه

// تخلیه داده ها

برای (int i = 1 ؛ i rawlen ؛ i ++) {

Serial.print (results-> rawbuf * USECPERTICK، DEC)؛

if (i rawlen-1) Serial.print ("،") ؛ // '،' در آخرین مورد نیاز نیست

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

}

// پایان اظهارنامه

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

// اظهار نظر

Serial.print ("//") ؛

رمزگذاری (نتایج) ؛

Serial.print ("")؛

ircode (نتایج) ؛

// خط جدید

Serial.println ("")؛

// اکنون کدهای "شناخته شده" را تخلیه کنید

if (results-> decode_type! = UNKNOWN) {

// برخی از پروتکل ها آدرس دارند

if (results-> decode_type == PANASONIC) {

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

Serial.print (نتایج-> آدرس ، HEX) ؛

Serial.println ("؛")؛

}

// همه پروتکل ها دارای داده هستند

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

Serial.print (results-> value، HEX)؛

Serial.println ("؛")؛

}

}

حلقه خالی ()

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

{

decode_results results؛ // جایی برای ذخیره نتایج

if (irrecv.decode (& results)) {// یک کد IR بگیرید

dumpInfo (& نتایج)؛ // خروجی نتایج

dumpRaw (& نتایج) ؛ // خروجی نتایج با فرمت RAW

dumpCode (& نتایج) ؛ // خروجی نتایج به عنوان کد منبع

Serial.println ("")؛ // خط خالی بین مدخل ها

irrecv.resume ()؛ // برای مقدار بعدی آماده شوید

}

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

if (mySwitch.available ())

{

int value = mySwitch.getReceivedValue ()؛

Serial.println ("RX433") ؛

if (value == 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 بیت (جزئیات پروتکل)

سونی: 12 یا 20 بیت (جزئیات پروتکل) (درک کدهای راه دور IR IR سونی.)

RC5: 12 بیت (جزئیات پروتکل)

RC6: 20 یا 36 بیت (جزئیات پروتکل)

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

توجه: 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) et 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 piloter avec cela des prises commandés.

توصیه شده: