INHOUDSOPGAWE:

Récupérer Les Codes Infra-Rouge Et 433mhz: 4 stappe
Récupérer Les Codes Infra-Rouge Et 433mhz: 4 stappe

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 stappe

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 stappe
Video: Télécommande Infra rouge 2/3 2024, November
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 en autre fonctionnant sous 433 mhz (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.

Op pourra donc ensuite, grâce à une autre montage, gesant ces codes en piloter n’importe quoi!

Stap 1: Le Montage

Le Montage
Le Montage

Eenvoudig, Arduino Nano, une diode réceptrice infra-rouge en un récepteur 433 mhz.

Stap 2: Le Code Arduino

// InfraRouge

#insluit

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

IRrecv irrecv (recvPin);

// RX433

#insluit

RCSwitch mySwitch = RCSwitch ();

resultate van dekode_resultate;

leemte opstelling ()

{

Serial.begin (9600);

irrecv.enableIRIn ();

irrecv.blink13 (waar); // allume la LED interne lors de l'envoie InfraRouge

mySwitch.enableReceive (0); // Récepteur RX433 (XY-MK-5V) op pen 2 van Arduino Uno et Nano

}

// affichage des codes InfraRouge

ongeldig ircode (dekodeeresultate *resultate)

{

// Panasonic

as (resultate-> decode_type == PANASONIC) {

Serial.print (resultate-> adres, HEX);

Serial.print (":");

}

Serial.print (resultate-> waarde, HEX);

} // leeg

// afficahge des codes encodés

leemte -kodering (dekode_resultate *resultate)

{

skakelaar (resultate-> dekodeertipe) {

verstek:

saak onbekend: Serial.print ("Inconnu"); breek;

saak NEC: Serial.print ("NEC"); breek;

saak SONY: Serial.print ("SONY"); breek;

geval RC5: Serial.print ("RC5"); breek;

saak RC6: Serial.print ("RC6"); breek;

saak GEREG: Serial.print ("GEREG"); breek;

geval SHARP: Serial.print ("SHARP"); breek;

saak JVC: Serial.print ("JVC"); breek;

saak SANYO: Serial.print ("SANYO"); breek;

saak MITSUBISHI: Serial.print ("MITSUBISHI"); breek;

saak SAMSUNG: Serial.print ("SAMSUNG"); breek;

geval LG: Serial.print ("LG"); breek;

geval WHYNTER: Serial.print ("WHYNTER"); breek;

saak AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); breek;

saak PANASONIC: Serial.print ("PANASONIC"); breek;

saak DENON: Serial.print ("Denon"); breek;

}

}

// dump les résultats

leegte dumpInfo (dekodeeresultate *resultate)

{

// Kyk of die buffer oorloop

as (resultate-> oorloop) {

Serial.println ("IR -kode te lank. Wysig IRremoteInt.h en verhoog RAWBUF");

terugkeer;

}

// Toon koderingstandaard

Serial.print ("Encodage:");

kodering (resultate);

Serial.println ("");

// Wys kode en lengte

Serial.print ("Kode:");

ircode (resultate);

Serial.print ("(");

Serial.print (resultate-> bits, DEC);

Serial.println ("bits)");

}

// struktuur

void dumpRaw (decode_results *resultate)

{

// Druk rou data af

Serial.print ("Tydsberekening [");

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

Serial.println ("]:");

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

ongetekende lang x = resultate-> rawbuf * USECPERTICK;

as (! (i & 1)) {// selfs

Serial.print ("-");

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

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

Serial.print (x, DEC);

} anders {// vreemd

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

as (i rawlen-1) Serial.print (","); // ',' nie nodig vir die laaste een nie

}

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

}

Serial.println (""); // Nuwe lyn

}

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

// Verwyder die decode_results -struktuur.

//

void dumpCode (decode_results *resultate)

{

// Begin verklaring

Serial.print ("unsigned int"); // veranderlike tipe

Serial.print ("rawData ["); // skikking naam

Serial.print (resultate-> rawlen - 1, DES); // skikking grootte

Serial.print ("] = {"); // Begin verklaring

// stort data

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

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

as (i rawlen-1) Serial.print (","); // ',' nie nodig op die laaste een nie

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

}

// Beëindig verklaring

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

// Lewer kommentaar

Serial.print ("//");

kodering (resultate);

Serial.print ("");

ircode (resultate);

// Nuwe lyn

Serial.println ("");

// Gooi nou "bekende" kodes weg

if (results-> decode_type! = UNKNOWN) {

// Sommige protokolle het 'n adres

as (resultate-> decode_type == PANASONIC) {

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

Serial.print (resultate-> adres, HEX);

Serial.println (";");

}

// Alle protokolle het data

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

Serial.print (resultate-> waarde, HEX);

Serial.println (";");

}

}

leemte lus ()

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

{

resultate van dekode_resultate; // Iewers om die resultate te stoor

if (irrecv.decode (& resultate)) {// Gryp 'n IR -kode

dumpInfo (& resultate); // Gee die resultate

dumpRaw (& resultate); // Stel die resultate in RAW -formaat af

dumpCode (& resultate); // Stel die resultate as bronkode in

Serial.println (""); // Leë lyn tussen inskrywings

irrecv.resume (); // Berei voor vir die volgende waarde

}

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

as (mySwitch.available ())

{

int waarde = mySwitch.getReceivedValue ();

Serial.println ("RX433");

as (waarde == 0) {

Serial.print ("Codage inconnu");

} anders

{

Serial.print ("Reçu");

Serial.print (mySwitch.getReceivedValue ());

Serial.print (" /");

Serial.print (mySwitch.getReceivedBitlength ());

Serial.print ("bietjie");

Serial.print ("Protocole:");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

} // lus

Stap 3: Infos Sur Les Codes Infra-Rouge

Die plusprotokolle:

NEC: 32 bis (protokolbesonderhede)

Sony: 12 of 20 bisse (protokolbesonderhede) (Sony IR -afstandskodes verstaan.)

RC5: 12 bisse (protokolbesonderhede)

RC6: 20 ou 36 bisse (protokolbesonderhede)

Giet Sony et RC5/6, chaque transmissie kan drie répétés gee!

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

Voorbeeld: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7, 32);

Stap 4: Inligting oor kodes RX433

L'envoie se fera avec la librairie RCSwitch.h

Voorbeeld mySwitch.send (1975778, 24);

Op peiling facilement piloter avec cela des prises commandés.

Aanbeveel: