Sadržaj:

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

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

Video: Récupérer Les Codes Infra-Rouge Et 433 mhz: 4 koraka
Video: Télécommande universelle, pour portail ou garage automatique. 2024, Studeni
Anonim
Récupérer Les Codes Infra-Rouge Et 433 MHz
Récupérer Les Codes Infra-Rouge Et 433 MHz

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 montaža, izaslanik ces code et piloter n’importe quoi!

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

#uključi

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

IRrecv irecv (recvPin);

// RX433

#uključi

RCSwitch mySwitch = RCSwitch ();

decode_results rezultate;

void setup ()

{

Serial.begin (9600);

unrecv.enableIRIn ();

unrecv.blink13 (true); // allume la LED internet lors de l'envoie InfraRouge

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

}

// affichage des code InfraRouge

void ircode (decode_results *rezultati)

{

// Panasonic

if (rezultati-> decode_type == PANASONIC) {

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

Serial.print (":");

}

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

}//poništiti

// afficahge des code encodés

kodiranje void (decode_results *rezultati)

{

switch (rezultati-> decode_type) {

zadano:

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

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

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

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

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

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

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

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

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

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

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

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

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

kućište AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); pauza;

slučaj PANASONIC: Serial.print ("PANASONIC"); pauza;

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

}

}

// dump les résultats

void dumpInfo (decode_results *rezultati)

{

// Provjerite je li međuspremnik preplavljen

if (rezultati-> prelijevanje) {

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

povratak;

}

// Prikaži standard kodiranja

Serial.print ("Encodage:");

kodiranje (rezultati);

Serial.println ("");

// Prikaži kôd i duljinu

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

ircode (rezultati);

Serial.print ("(");

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

Serial.println ("bitovi")));

}

//struktura

void dumpRaw (decode_results *rezultati)

{

// Ispis sirovih podataka

Serial.print ("Vrijeme [");

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 ("");

Serijski.ispis (x, DEC);

} else {// neparno

Serial.print ("");

Serial.print ("+");

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

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

Serijski.ispis (x, DEC);

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

}

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

}

Serial.println (""); // Nova linija

}

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

// Isključite strukturu decode_results.

//

void dumpCode (decode_results *rezultati)

{

// Pokretanje deklaracije

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

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

Serial.print (rezultati-> sirovi - 1, DEC); // veličina polja

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 ("};"); //

// Komentiraj

Serial.print ("//");

kodiranje (rezultati);

Serial.print ("");

ircode (rezultati);

// Nova linija

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 ("nepotpisani int podaci = 0x");

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

Serial.println (";");

}

}

void loop ()

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

{

decode_results rezultate; // Negdje za spremanje rezultata

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

dumpInfo (& rezultati); // Ispisati rezultate

dumpRaw (& rezultati); // Ispis rezultata u RAW formatu

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

Serial.println (""); // Prazan redak 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 (pojedinosti o protokolu) (Razumijevanje Sonyjevih IR daljinskih kodova.)

RC5: 12 bita (detalji protokola)

RC6: 20 ou 36 bita (detalji protokola)

Sipajte Sony et RC5/6, prijenos Chaque doit être répétés 3 fois!

PAŽNJA: la librairie IRremote.h ne semble pas pouvoir envoyer des code 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 code se fera avec la librairie IRremote.h

Primjer: (0x devant le code) et le 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 piloter avec cela des prises commandés.

Preporučeni: