Sadržaj:

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

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

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 koraka
Video: Electronique Test : Capteur Infrarouge FC-51 / IR sensor 2024, Novembar
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 code des télécommandes du style commandnde de lampe, porte de garage et autre fonctionnant s 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 montaža, izaslanik ces kodove i piloter nije uvezio!

Korak 1: Le Montage

Le Montage
Le Montage

Jednostavno, bez Arduino Nano-a, bez dioda za infracrvenu vezu i prijemnik od 433 mhz.

Korak 2: Le Code Arduino

// InfraRouge

#include

int recvPin = 11; // pin Arduino za prijemnik InfraRouge (TOSP4838)

IRrecv irecv (recvPin);

// RX433

#include

RCSwitch mySwitch = RCSwitch ();

decode_results rezultati;

void setup ()

{

Serial.begin (9600);

unrecv.enableIRIn ();

unrecv.blink13 (true); // allume la LED internetske veze za slanje InfraRouge

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

}

// afiksacija kodova InfraRouge

void ircode (decode_results *rezultati)

{

// Panasonic

if (rezultati-> decode_type == PANASONIC) {

Serial.print (rezultati-> adresa, HEX);

Serial.print (":");

}

Serial.print (rezultati-> vrijednost, HEX);

} // void

// afficahge des code encodés

kodiranje praznine (decode_results *rezultati)

{

switch (rezultati-> decode_type) {

zadano:

case UNKNOWN: Serial.print ("Inconnu"); break;

kućište NEC: Serial.print ("NEC"); break;

kućište SONY: Serial.print ("SONY"); break;

kućište RC5: Serial.print ("RC5"); break;

kućište RC6: Serial.print ("RC6"); break;

kućište DISH: Serial.print ("DISH"); break;

kućište SHARP: Serial.print ("SHARP"); break;

kućište JVC: Serial.print ("JVC"); break;

kućište SANYO: Serial.print ("SANYO"); break;

kućište MITSUBISHI: Serial.print ("MITSUBISHI"); break;

kućište SAMSUNG: Serial.print ("SAMSUNG"); break;

kućište LG: Serial.print ("LG"); break;

slučaj WHYNTER: Serial.print ("WHYNTER"); break;

slučaj AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); break;

kućište PANASONIC: Serial.print ("PANASONIC"); break;

kućište DENON: Serial.print ("Denon"); break;

}

}

// dump les résultats

void dumpInfo (decode_results *rezultati)

{

// Provjerite je li bafer preplavljen

if (rezultati-> prelijevanje) {

Serial.println ("IR kod predug. Uredite IRremoteInt.h i povećajte RAWBUF");

return;

}

// Prikaži standard kodiranja

Serial.print ("Encodage:");

kodiranje (rezultati);

Serial.println ("");

// Prikaži kôd i dužinu

Serial.print ("Kod:");

ircode (rezultati);

Serial.print ("(");

Serial.print (rezultati-> bitovi, DEC);

Serial.println ("bitovi")));

}

//struktura

void dumpRaw (decode_results *rezultati)

{

// Ispis sirovih podataka

Serial.print ("Timing [");

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

Serial.println ("]:");

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

unsigned long x = results-> rawbuf * USECPERTICK;

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

Serial.print ("-");

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

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

Serial.print (x, DEC);

} else {// neparno

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' nije potrebno za zadnji

}

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

}

Serial.println (""); // Novi red

}

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

// Izbacivanje strukture decode_results.

//

void dumpCode (decode_results *rezultati)

{

// Pokretanje deklaracije

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

Serial.print ("rawData ["); // ime niza

Serial.print (rezultati-> neobrađeno - 1, DEC); // veličina niza

Serial.print ("] = {"); // Pokretanje deklaracije

// Izbaci podatke

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

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

if (i rawlen-1) Serial.print (","); // ',' nije potrebno na zadnjoj

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

}

// Kraj deklaracije

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

// Komentar

Serial.print ("//");

kodiranje (rezultati);

Serial.print ("");

ircode (rezultati);

// Novi red

Serial.println ("");

// Sada izbacite "poznate" kodove

if (rezultati-> decode_type! = NEPOZNATO) {

// Neki protokoli imaju adresu

if (rezultati-> decode_type == PANASONIC) {

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

Serial.print (rezultati-> adresa, HEX);

Serial.println (";");

}

// Svi protokoli imaju podatke

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

Serial.print (rezultati-> vrijednost, HEX);

Serial.println (";");

}

}

void loop ()

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

{

decode_results rezultati; // Negdje za spremanje rezultata

if (unrecv.decode (& results)) {// Uhvatite IR kod

dumpInfo (& rezultati); // Ispisati rezultate

dumpRaw (& rezultati); // Rezultate ispišite u RAW formatu

dumpCode (& rezultati); // Rezultate ispišite kao izvorni kod

Serial.println (""); // Prazna linija između unosa

unrecv.resume (); // Pripremite se za sljedeću vrijednost

}

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

if (mySwitch.available ())

{

int vrijednost = mySwitch.getReceivedValue ();

Serial.println ("RX433");

if (vrijednost == 0) {

Serial.print ("Codage inconnu");

} else

{

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

}//petlja

Korak 3: Infos Sur Les Codes Infra-Rouge

Il y a plusieurs protokoli:

NEC: 32 bita (detalji protokola)

Sony: 12 ili 20 bita (detalji protokola) (Razumevanje Sonyjevih IR daljinskih kodova.)

RC5: 12 bita (detalji protokola)

RC6: 20 ili 36 bita (detalji protokola)

Sipajte Sony i RC5/6, prijenos u obliku ručke do 3 étre repétés!

PAŽNJA: Laborairie IRremote.h nije poslao pošiljaoca kodova za šifre nad 32 bita. Les RC6, 36 doivent donc êtres envoyer en raw, qui prennent plus de taille mémoire.

L’envoie des code se fera avec la librairie IRremote.h

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

Korak 4: Infos Sur kodovi RX433

L’envoie se fera avec la librairie RCSwitch.h

Primjer mySwitch.send (1975778, 24);

On peut facilement pilote avec cela des prises commandes.

Preporučuje se: