Mundarija:

Rescupérer Les Codes Infra-Rouge va 433 MGts: 4 qadam
Rescupérer Les Codes Infra-Rouge va 433 MGts: 4 qadam

Video: Rescupérer Les Codes Infra-Rouge va 433 MGts: 4 qadam

Video: Rescupérer Les Codes Infra-Rouge va 433 MGts: 4 qadam
Video: wifi пульт для IR и RF кодов Broadlink RM4C Pro, работа в Home Assistant - управляем кондиционером 2024, Noyabr
Anonim
Rescupérer Les Codes Infra-Rouge va 433 MGts
Rescupérer Les Codes Infra-Rouge va 433 MGts

Bu erda 433 MGts chastotali (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.

Qachonki, montaj qilinsa, kodlarni yuborish va uchuvchisiz yuborish kerak!

1 -qadam: Le Montaj

Le Montaj
Le Montaj

Oddiy, Arduino Nano-da, infraqizil-diodli va 433 MGts chastotali chastotali.

2 -qadam: Le Code Arduino

// InfraRouge

#qo'shing

int recvPin = 11; // InfraRouge (TOSP4838) qabul qilgichini Arduino -ga ulang

IRrecv irrecv (recvPin);

// RX433

#qo'shing

RCSwitch mySwitch = RCSwitch ();

decode_results natijalari;

bo'sh o'rnatish ()

{

Serial.begin (9600);

irrecv.enableIRIn ();

irrecv.blink13 (rost); // LED yoritgichlari

mySwitch.enableReceive (0); // RX433 qabul qiluvchisi (XY-MK-5V) 2-pinli Arduino Uno va Nano

}

// InfraRouge kodlari

bekor kodi (kod hal qilish natijalari *natijalari)

{

// Panasonic

agar (natijalar-> dekod_tipi == PANASONIK) {

Serial.print (natijalar-> manzil, HEX);

Serial.print (":");

}

Serial.print (natijalar-> qiymat, HEX);

} // bo'sh

// afficahge des encodés kodlari

bekor kodlash (dekodlash_ natijalari *natijalari)

{

almashtirish (natijalar-> dekod_tipi) {

standart:

noma'lum holat: Serial.print ("Inconnu"); tanaffus;

ish NEC: Serial.print ("NEC"); tanaffus;

SONY holati: Serial.print ("SONY"); tanaffus;

ish RC5: Serial.print ("RC5"); tanaffus;

ish RC6: Serial.print ("RC6"); tanaffus;

ish DISH: Serial.print ("DISH"); tanaffus;

ish SHARP: Serial.print ("SHARP"); tanaffus;

ish JVC: Serial.print ("JVC"); tanaffus;

holat SANYO: Serial.print ("SANYO"); tanaffus;

MITSUBISHI holati: Serial.print ("MITSUBISHI"); tanaffus;

holat SAMSUNG: Serial.print ("SAMSUNG"); tanaffus;

LG korpusi: Serial.print ("LG"); tanaffus;

ish WHYNTER: Serial.print ("WHYNTER"); tanaffus;

ish AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); tanaffus;

ish PANASONIC: Serial.print ("PANASONIC"); tanaffus;

ish DENON: Serial.print ("Denon"); tanaffus;

}

}

// dump les résultats

void dumpInfo (decode_results *natijalari)

{

// Tampon to'lib ketganligini tekshiring

agar (natijalar-> to'lib ketish) {

Serial.println ("IR kodi juda uzun. IRremoteInt.h -ni tahrir qiling va RAWBUF -ni oshiring");

qaytish;

}

// Kodlash standartini ko'rsatish

Serial.print ("Kodlash:");

kodlash (natijalar);

Serial.println ("");

// Kod va uzunlikni ko'rsatish

Serial.print ("Kod:");

Ircode (natijalar);

Serial.print ("(");

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

Serial.println ("bit"));

}

// tuzilish

void dumpRaw (decode_results *natijalari)

{

// Raw ma'lumotlarini chop etish

Serial.print ("Vaqt [");

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

Serial.println ("]:");

uchun (int i = 1; i rawlen; i ++) {

imzosiz uzun x = natijalar-> rawbuf * USECPERTICK;

agar (! (i va 1)) {// hatto

Serial.print ("-");

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

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

Serial.print (x, DEC);

} boshqa {// g'alati

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' oxirgi uchun kerak emas

}

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

}

Serial.println (""); // Yangi qator

}

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

// decode_results tuzilishini olib tashlang.

//

bekor dumpCode (decode_results *natijalar)

{

// Deklaratsiyani boshlang

Serial.print ("imzosiz int"); // o'zgaruvchining turi

Serial.print ("rawData ["); // qator nomi

Serial.print (natijalar-> rawlen - 1, DEC); // massiv hajmi

Serial.print ("] = {"); // Deklaratsiyani boshlang

// Ma'lumotlarni o'chirish

uchun (int i = 1; i rawlen; i ++) {

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

if (i rawlen-1) Serial.print (","); // ',' oxirgi satrda kerak emas

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

}

// Deklaratsiyani tugatish

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

// Izoh

Serial.print ("//");

kodlash (natijalar);

Serial.print ("");

Ircode (natijalar);

// Yangi qator

Serial.println ("");

// Endi "ma'lum" kodlarni tashlab yuboring

agar (natijalar-> dekod_tipi = Bilmasangiz) {

// Ba'zi protokollarning manzili bor

agar (natijalar-> dekod_tipi == PANASONIK) {

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

Serial.print (natijalar-> manzil, HEX);

Serial.println (";");

}

// Barcha protokollarda ma'lumotlar mavjud

Serial.print ("imzosiz int ma'lumotlar = 0x");

Serial.print (natijalar-> qiymat, HEX);

Serial.println (";");

}

}

bo'sh halqa ()

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

{

decode_results natijalari; // Natijalarni saqlash uchun biror joy

if (irrecv.decode (& natijalar)) {// IR kodini oling

dumpInfo (va natijalar); // Natijalarni chiqarish

dumpRaw (va natijalar); // Natijalarni RAW formatida chiqarish

dumpCode (va natijalar); // Natijalarni manba kodi sifatida chiqaring

Serial.println (""); // Yozuvlar orasidagi bo'sh chiziq

irrecv.resume (); // Keyingi qiymatga tayyorlaning

}

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

agar (mySwitch.available ())

{

int qiymati = mySwitch.getReceivedValue ();

Serial.println ("RX433");

agar (qiymat == 0) {

Serial.print ("Codage inconnu");

} boshqa

{

Serial.print ("Reçu");

Serial.print (mySwitch.getReceivedValue ());

Serial.print (" /");

Serial.print (mySwitch.getReceivedBitlength ());

Serial.print ("bit");

Serial.print ("Protokol:");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

} // halqa

3-qadam: Infra-Rouge kodlari haqida ma'lumot

Il y a plusieurs protokollari:

NEC: 32 bit (protokol tafsilotlari)

Sony: 12 ou 20 bit (protokol tafsilotlari) (Sony IR masofaviy kodlarini tushunish.)

RC5: 12 bit (protokol tafsilotlari)

RC6: 20 yoki 36 bit (protokol tafsilotlari)

Sony va RC5/6 -ni to'kib tashlang, 3 ta ovoz o'tkazing!

DIQQAT: IRremote.h na semble pas pouvoir envoyer kodlar sur plus de 32bits. Les RC6, 36 -sonli vakolatli xodimlar, eng yaxshi va eng yuqori darajadagi elchi.

IRremote.h saytining kodlari

Misol: (0x devant le code) va boshqalar irsend.sendNEC (0xA55A38C7, 32);

4 -qadam: Sur kodlari haqida ma'lumot RX433

L'envoie se fera avec la librairie RCSwitch.h

Misol mySwitch.send (1975778, 24);

Peut facilement bo'yicha uchuvchi avec cela des prises commandés.

Tavsiya: