Taula de continguts:

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

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

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

Pas 1: Le Montage

Le Montage
Le Montage

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

Pas 2: Le Code Arduino

// InfraRouge

#incloure

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

IRrecv irrecv (recvPin);

// RX433

#incloure

RCSwitch mySwitch = RCSwitch ();

resultats decode_results;

configuració nul·la ()

{

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

ircode nul (resultats decode_results *)

{

// Panasonic

if (resultats-> decode_type == PANASONIC) {

Serial.print (resultats-> adreça, HEX);

Serial.print (":");

}

Serial.print (resultats-> valor, HEX);

}//buit

// afficahge des codes encodés

codificació nul·la (decode_results * resultats)

{

commutador (resultats-> decode_type) {

per defecte:

cas desconegut: Serial.print ("Inconnu"); trencar;

cas NEC: Serial.print ("NEC"); trencar;

cas SONY: Serial.print ("SONY"); trencar;

cas RC5: Serial.print ("RC5"); trencar;

cas RC6: Serial.print ("RC6"); trencar;

cas DISH: Serial.print ("DISH"); trencar;

cas SHARP: Serial.print ("SHARP"); trencar;

cas JVC: Serial.print ("JVC"); trencar;

cas SANYO: Serial.print ("SANYO"); trencar;

cas MITSUBISHI: Serial.print ("MITSUBISHI"); trencar;

cas SAMSUNG: Serial.print ("SAMSUNG"); trencar;

cas LG: Serial.print ("LG"); trencar;

cas WHYNTER: Serial.print ("WHYNTER"); trencar;

cas AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); trencar;

cas PANASONIC: Serial.print ("PANASONIC"); trencar;

cas DENON: Serial.print ("Denon"); trencar;

}

}

// bolca els resultats

void dumpInfo (resultats decode_results *)

{

// Comproveu si la memòria intermèdia ha desbordat

if (resultats-> desbordament) {

Serial.println ("El codi IR és massa llarg. Editeu IRremoteInt.h i augmenteu RAWBUF");

tornar;

}

// Mostra l'estàndard de codificació

Serial.print ("Codificació:");

codificació (resultats);

Serial.println ("");

// Mostra el codi i la longitud

Serial.print ("Codi:");

ircode (resultats);

Serial.print ("(");

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

Serial.println ("bits)");

}

// estructura

void dumpRaw (decode_results * resultats)

{

// Imprimeix dades en brut

Serial.print ("Temporització [");

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

Serial.println ("]:");

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

unsigned long x = results-> rawbuf * USECPERTICK;

if (! (i & 1)) {// fins i tot

Serial.print ("-");

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

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

Serial.print (x, DEC);

} else {// imparell

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' no és necessari per a l'últim

}

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

}

Serial.println (""); // Nova línia

}

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

// Voleu l’estructura decode_results.

//

void dumpCode (resultats decode_results *)

{

// Iniciar declaració

Serial.print ("int signat"); // tipus variable

Serial.print ("rawData ["); // nom de la matriu

Serial.print (resultats-> rawlen - 1, DEC); // mida de la matriu

Serial.print ("] = {"); // Iniciar declaració

// Bolqueu les dades

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

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

if (i rawlen-1) Serial.print (","); // ',' no és necessari a l'últim

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

}

// Declaració final

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

// Comenta

Serial.print ("//");

codificació (resultats);

Serial.print ("");

ircode (resultats);

// Nova línia

Serial.println ("");

// Ara bolqueu els codis "coneguts"

if (resultats-> decode_type! = INCONEGUT) {

// Alguns protocols tenen una adreça

if (resultats-> decode_type == PANASONIC) {

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

Serial.print (resultats-> adreça, HEX);

Serial.println (";");

}

// Tots els protocols tenen dades

Serial.print ("dades sense signar int = 0x");

Serial.print (resultats-> valor, HEX);

Serial.println (";");

}

}

bucle buit ()

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

{

resultats decode_results; // En algun lloc on emmagatzemar els resultats

if (irrecv.decode (& results)) {// Agafa un codi IR

dumpInfo (& resultats); // Sortiu els resultats

dumpRaw (& resultats); // Emet els resultats en format RAW

dumpCode (& resultats); // Sortiu els resultats com a codi font

Serial.println (""); // Línia en blanc entre les entrades

irrecv.resume (); // Prepareu-vos per al següent valor

}

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

if (mySwitch.available ())

{

valor int = mySwitch.getReceivedValue ();

Serial.println ("RX433");

if (valor == 0) {

Serial.print ("Codage inconnu");

} més

{

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

} // bucle

Pas 3: Informació sobre els codis Infra-Rouge

Hi ha diversos protocols:

NEC: 32 bits (detalls del protocol)

Sony: 12 o 20 bits (detalls del protocol) (Descripció dels codis remots de Sony IR).

RC5: 12 bits (detalls del protocol)

RC6: 20 o 36 bits (detalls del protocol)

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

ATENCIÓ: la llibertat IRremote.h no 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 amb la librairie IRremote.h

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

Pas 4: Informació sobre els codis RX433

L’envoie se fera avec la librairie RCSwitch.h

Exemple mySwitch.send (1975778, 24);

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

Recomanat: