Obsah:

Récupérer Les Codes Infra-Rouge Et 433 MHz: 4 kroky
Récupérer Les Codes Infra-Rouge Et 433 MHz: 4 kroky

Video: Récupérer Les Codes Infra-Rouge Et 433 MHz: 4 kroky

Video: Récupérer Les Codes Infra-Rouge Et 433 MHz: 4 kroky
Video: Высокая плотность 2022 2024, Listopad
Anonim
Récupérer Les Codes Infra-Rouge Et 433 MHz
Récupérer Les Codes Infra-Rouge Et 433 MHz

Nejčastěji se však jedná o kódy příkazů k lampe, porte de garage a autre fonctionnant sous 433 MHz (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.

Naleznete vlastní encuite, grâce à une autre montage, envoyer ces codes et piloter n’importe quoi!

Krok 1: Le Montage

Le Montage
Le Montage

Jednoduché, Arduino Nano, bezdiodové přijímače infračerveného záření a přijímače 433 MHz.

Krok 2: Le Code Arduino

// InfraRouge

#zahrnout

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

IRrecv irccv (recvPin);

// RX433

#zahrnout

RCSwitch mySwitch = RCSwitch ();

decode_results výsledky;

neplatné nastavení ()

{

Serial.begin (9600);

unbcv.enableIRIn ();

unbcv.blink13 (true); // všechny LED diody interne lors de l'envoie InfraRouge

mySwitch.enableReceive (0); // Recepteur RX433 (XY-MK-5V) sur pin 2 de Arduino Uno et Nano

}

// přidělení kódů InfraRouge

neplatný ircode (decode_results *výsledky)

{

// Panasonic

if (results-> decode_type == PANASONIC) {

Serial.print (výsledky-> adresa, HEX);

Serial.print (":");

}

Serial.print (výsledky-> hodnota, HEX);

} // neplatné

// kódování kódů kódů

neplatné kódování (decode_results *výsledky)

{

switch (results-> decode_type) {

výchozí:

případ NEZNÁMÝ: Serial.print ("Inconnu"); přestávka;

případ NEC: Serial.print ("NEC"); přestávka;

pouzdro SONY: Serial.print („SONY“); přestávka;

případ RC5: Serial.print ("RC5"); přestávka;

případ RC6: Serial.print ("RC6"); přestávka;

případ DISH: Serial.print ("DISH"); přestávka;

případ SHARP: Serial.print ("SHARP"); přestávka;

případ JVC: Serial.print ("JVC"); přestávka;

případ SANYO: Serial.print ("SANYO"); přestávka;

případ MITSUBISHI: Serial.print ("MITSUBISHI"); přestávka;

pouzdro SAMSUNG: Serial.print („SAMSUNG“); přestávka;

pouzdro LG: Serial.print ("LG"); přestávka;

případ WHYNTER: Serial.print ("WHYNTER"); přestávka;

případ AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); přestávka;

případ PANASONIC: Serial.print ("PANASONIC"); přestávka;

případ DENON: Serial.print ("Denon"); přestávka;

}

}

// skládka les résultats

neplatné dumpInfo (decode_results *výsledky)

{

// Zkontrolujte, zda vyrovnávací paměť přeteče

if (results-> overflow) {

Serial.println ("IR kód příliš dlouhý. Upravit IRremoteInt.h a zvýšit RAWBUF");

vrátit se;

}

// Zobrazit kódovací standard

Serial.print ("Encodage:");

kódování (výsledky);

Serial.println ("");

// Zobrazit kód a délku

Serial.print ("Kód:");

ircode (výsledky);

Serial.print ("(");

Serial.print (výsledky-> bity, DEC);

Serial.println ("bity)");

}

//struktura

neplatné dumpRaw (decode_results *výsledky)

{

// Tisk nezpracovaných dat

Serial.print ("Časování [");

Serial.print (výsledky-> rawlen-1, DEC);

Serial.println ("]:");

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

nepodepsané dlouhé x = výsledky-> rawbuf * USECPERTICK;

if (! (i & 1)) {// sudý

Serial.print ("-");

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

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

Serial.print (x, DEC);

} else {// liché

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' u posledního není potřeba

}

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

}

Serial.println (""); // Nový řádek

}

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

// Vyhoďte strukturu decode_results.

//

neplatný dumpCode (decode_results *results)

{

// Zahájení deklarace

Serial.print ("unsigned int"); // typ proměnné

Serial.print ("rawData ["); // název pole

Serial.print (výsledky-> rawlen - 1, DEC); // velikost pole

Serial.print ("] = {"); // Zahájení deklarace

// Vyprázdnění dat

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

Serial.print (výsledky-> rawbuf * USECPERTICK, DEC);

if (i rawlen-1) Serial.print (","); // ',' u posledního není potřeba

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

}

// Konec deklarace

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

// Komentář

Serial.print ("//");

kódování (výsledky);

Serial.print ("");

ircode (výsledky);

// Nový řádek

Serial.println ("");

// Nyní vyhoďte „známé“kódy

if (results-> decode_type! = NEZNÁMÝ) {

// Některé protokoly mají adresu

if (results-> decode_type == PANASONIC) {

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

Serial.print (výsledky-> adresa, HEX);

Serial.println (";");

}

// Všechny protokoly mají data

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

Serial.print (výsledky-> hodnota, HEX);

Serial.println (";");

}

}

prázdná smyčka ()

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

{

decode_results výsledky; // Někde pro uložení výsledků

if (unbcv.decode (& results)) {// Popadněte IR kód

dumpInfo (& výsledky); // Výstup výsledků

dumpRaw (& výsledky); // Výstup výsledků ve formátu RAW

dumpCode (& výsledky); // Výstup výsledků jako zdrojový kód

Serial.println (""); // Prázdný řádek mezi položkami

unbcv.resume (); // Připravte se na další hodnotu

}

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

if (mySwitch.available ())

{

int hodnota = mySwitch.getReceivedValue ();

Serial.println ("RX433");

if (hodnota == 0) {

Serial.print ("Codage nonnu");

} jinak

{

Serial.print („Reçu“);

Serial.print (mySwitch.getReceivedValue ());

Serial.print (" /");

Serial.print (mySwitch.getReceivedBitlength ());

Serial.print ("bit");

Serial.print ("Protocole:");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

}//smyčka

Krok 3: Infos Sur Les Codes Infra-Rouge

Všechny protokoly plusieurs:

NEC: 32 bitů (podrobnosti o protokolu)

Sony: 12 nebo 20 bitů (podrobnosti o protokolu) (informace o IR dálkových kódech Sony.)

RC5: 12 bitů (podrobnosti o protokolu)

RC6: 20 nebo 36 bitů (podrobnosti o protokolu)

Pour Sony et RC5/6, chaque transmission doit opakují 3 fois!

POZOR: 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

Příklad: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7, 32);

Krok 4: Infos Sur Codes RX433

L'envoie se fera avec la librairie RCSwitch.h

Příklad mySwitch.send (1975778, 24);

Pilot na letišti usnadnil velení.

Doporučuje: