Cuprins:

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

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

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 Steps
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Noiembrie
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.

On pourra donc ensuite, grâce à une autre montage, envoyer ces codes et piloter n’importe quoi!

Pasul 1: Le Montage

Le Montage
Le Montage

Simple, un Arduino Nano, une diode réceptrice infra-rouge și un récepteur 433 mhz.

Pasul 2: Le Code Arduino

// InfraRouge

#include

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

IRrecv irrecv (recvPin);

// RX433

#include

RCSwitch mySwitch = RCSwitch ();

rezultate decode_results;

configurare nulă ()

{

Serial.begin (9600);

irrecv.enableIRIn ();

irrecv.blink13 (true); // 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

cod nul irid (rezultate decode_results *)

{

// Panasonic

if (results-> decode_type == PANASONIC) {

Serial.print (rezultate-> adresă, HEX);

Serial.print (":");

}

Serial.print (rezultate-> valoare, HEX);

} // nul

// afficahge des codes encodés

codificare nulă (decode_results * rezultate)

{

comutare (rezultate-> decodare_tip) {

Mod implicit:

caz NECUNOSCUT: Serial.print ("Inconnu"); pauză;

caz NEC: Serial.print ("NEC"); pauză;

carcasa SONY: Serial.print ("SONY"); pauză;

caz RC5: Serial.print ("RC5"); pauză;

caz RC6: Serial.print ("RC6"); pauză;

caz DISH: Serial.print ("DISH"); pauză;

carcasa SHARP: Serial.print ("SHARP"); pauză;

caz JVC: Serial.print ("JVC"); pauză;

caz SANYO: Serial.print ("SANYO"); pauză;

carcasa MITSUBISHI: Serial.print ("MITSUBISHI"); pauză;

caz SAMSUNG: Serial.print ("SAMSUNG"); pauză;

carcasa LG: Serial.print ("LG"); pauză;

caz WHYNTER: Serial.print ("WHYNTER"); pauză;

caz AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); pauză;

caz PANASONIC: Serial.print ("PANASONIC"); pauză;

caz DENON: Serial.print ("Denon"); pauză;

}

}

// aruncați rezultatele

void dumpInfo (decode_results * rezultate)

{

// Verificați dacă bufferul s-a revărsat

if (rezultate-> depășire) {

Serial.println ("Codul IR prea lung. Editați IRremoteInt.h și măriți RAWBUF");

întoarcere;

}

// Afișare standard de codare

Serial.print ("Codare:");

codificare (rezultate);

Serial.println ("");

// Afișați codul și lungimea

Serial.print ("Cod:");

ircode (rezultate);

Serial.print ("(");

Serial.print (rezultate-> biți, DEC);

Serial.println ("biți)");

}

//structura

void dumpRaw (decode_results * rezultate)

{

// Imprimați date brute

Serial.print ("Timing [");

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

Serial.println ("]:");

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

unsigned long x = results-> rawbuf * USECPERTICK;

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

Serial.print ("-");

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

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

Serial.print (x, DEC);

} else {// ciudat

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' nu este necesar pentru ultima

}

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

}

Serial.println (""); // Linie nouă

}

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

// Renunțați la structura decode_results.

//

void dumpCode (decode_results * rezultate)

{

// Începeți declarația

Serial.print ("unsigned int"); // tip variabil

Serial.print ("rawData ["); // numele matricei

Serial.print (rezultate-> rawlen - 1, DEC); // dimensiunea matricei

Serial.print ("] = {"); // Începeți declarația

// Renunțați la date

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

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

if (i rawlen-1) Serial.print (","); // ',' nu este necesar pe ultimul

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

}

// Declarație de încheiere

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

// Cometariu

Serial.print ("//");

codificare (rezultate);

Serial.print ("");

ircode (rezultate);

// Linie nouă

Serial.println ("");

// Acum aruncați codurile „cunoscute”

if (results-> decode_type! = UNKNOWN) {

// Unele protocoale au o adresă

if (results-> decode_type == PANASONIC) {

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

Serial.print (rezultate-> adresă, HEX);

Serial.println (";");

}

// Toate protocoalele au date

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

Serial.print (rezultate-> valoare, HEX);

Serial.println (";");

}

}

bucla nulă ()

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

{

rezultate decode_results; // Undeva pentru a stoca rezultatele

if (irrecv.decode (& results)) {// Prindeți un cod IR

dumpInfo (& rezultate); // Afișați rezultatele

dumpRaw (& rezultate); // Afișați rezultatele în format RAW

dumpCode (& rezultate); // Afișați rezultatele ca cod sursă

Serial.println (""); // Linie goală între intrări

irrecv.resume (); // Pregătește-te pentru următoarea valoare

}

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

if (mySwitch.available ())

{

valoare int = mySwitch.getReceivedValue ();

Serial.println ("RX433");

if (valoare == 0) {

Serial.print ("Codage inconnu");

} altfel

{

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

}//buclă

Pasul 3: Infos Sur Les Codes Infra-Rouge

Il și mai multe protocoale:

NEC: 32 biți (detalii protocol)

Sony: 12 sau 20 de biți (detalii protocol) (Înțelegerea codurilor de la distanță IR Sony.)

RC5: 12 biți (detalii protocol)

RC6: 20 sau 36 biți (detalii protocol)

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

ATENȚIE: 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 cu la librairie IRremote.h

Exemplu: (0x în fața codului) și numărul de biți irsend.sendNEC (0xA55A38C7, 32);

Pasul 4: Informații privind codurile RX433

L’envoie se fera cu la librairie RCSwitch.h

Exemple mySwitch.send (1975778, 24);

On peut facilement piloter with cela des prises commandés.

Recomandat: