Innehållsförteckning:

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

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

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 steg
Video: Tuto 10/2 : Interprétation du Code Infrarouge 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 et autre fonctionnant sous 433 mhz (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.

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

Steg 1: Le Montage

Le Montage
Le Montage

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

Steg 2: Le Code Arduino

// InfraRouge

#omfatta

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

IRrecv irrecv (recvPin);

// RX433

#omfatta

RCSwitch mySwitch = RCSwitch ();

resultat avkodningsresultat;

void setup ()

{

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

void ircode (decode_results *results)

{

// Panasonic

if (results-> decode_type == PANASONIC) {

Serial.print (resultat-> adress, HEX);

Serial.print (":");

}

Serial.print (resultat-> värde, HEX);

}//tomhet

// afficahge des codes encodés

ogiltig kodning (avkodningsresultat *resultat)

{

switch (resultat-> avkodningstyp) {

standard:

fall okänt: Serial.print ("Inconnu"); ha sönder;

fall NEC: Serial.print ("NEC"); ha sönder;

case SONY: Serial.print ("SONY"); ha sönder;

fall RC5: Serial.print ("RC5"); ha sönder;

fall RC6: Serial.print ("RC6"); ha sönder;

fodral DISH: Serial.print ("DISH"); ha sönder;

fall SHARP: Serial.print ("SHARP"); ha sönder;

fall JVC: Serial.print ("JVC"); ha sönder;

fall SANYO: Serial.print ("SANYO"); ha sönder;

fodral MITSUBISHI: Serial.print ("MITSUBISHI"); ha sönder;

fall SAMSUNG: Serial.print ("SAMSUNG"); ha sönder;

fodral LG: Serial.print ("LG"); ha sönder;

fall WHYNTER: Serial.print ("WHYNTER"); ha sönder;

fall AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); ha sönder;

fodral PANASONIC: Serial.print ("PANASONIC"); ha sönder;

fall DENON: Serial.print ("Denon"); ha sönder;

}

}

// dump les résultats

void dumpInfo (avkodningsresultat *resultat)

{

// Kontrollera om bufferten flödade över

if (resultat-> överflöde) {

Serial.println ("IR -kod för lång. Redigera IRremoteInt.h och öka RAWBUF");

lämna tillbaka;

}

// Visa kodningsstandard

Serial.print ("Kodning:");

kodning (resultat);

Serial.println ("");

// Visa kod och längd

Serial.print ("Kod:");

ircode (resultat);

Serial.print ("(");

Serial.print (resultat-> bitar, DEC);

Serial.println ("bitar"));

}

//strukturera

void dumpRaw (avkodningsresultat *resultat)

{

// Skriv ut rådata

Serial.print ("Timing [");

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

Serial.println ("]:");

för (int i = 1; i rawlen; i ++) {

osignerad lång x = resultat-> rawbuf * USECPERTICK;

om (! (i & 1)) {// även

Serial.print ("-");

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

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

Serial.print (x, DEC);

} annat {// udda

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' behövs inte för den sista

}

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

}

Serial.println (""); // Ny linje

}

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

// Dumpa ut decode_results -strukturen.

//

void dumpCode (decode_results *results)

{

// Starta deklaration

Serial.print ("unsigned int"); // variabel typ

Serial.print ("rawData ["); // matrisnamn

Serial.print (resultat-> rawlen - 1, DEC); // matrisstorlek

Serial.print ("] = {"); // Starta deklaration

// Dumpdata

för (int i = 1; i rawlen; i ++) {

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

if (i rawlen-1) Serial.print (","); // ',' behövs inte på den sista

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

}

// Avsluta deklaration

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

// Kommentar

Serial.print ("//");

kodning (resultat);

Serial.print ("");

ircode (resultat);

// Ny linje

Serial.println ("");

// Släpp nu "kända" koder

if (results-> decode_type! = UNKNOWN) {

// Vissa protokoll har en adress

if (results-> decode_type == PANASONIC) {

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

Serial.print (resultat-> adress, HEX);

Serial.println (";");

}

// Alla protokoll har data

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

Serial.print (resultat-> värde, HEX);

Serial.println (";");

}

}

void loop ()

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

{

resultat avkodningsresultat; // Någonstans att lagra resultaten

if (irrecv.decode (& resultat)) {// Ta en IR -kod

dumpInfo (& resultat); // Mata ut resultaten

dumpRaw (& resultat); // Mata ut resultaten i RAW -format

dumpCode (& resultat); // Mata ut resultaten som källkod

Serial.println (""); // Tom rad mellan poster

irrecv.resume (); // Förbered dig på nästa värde

}

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

om (mySwitch.available ())

{

int värde = mySwitch.getReceivedValue ();

Serial.println ("RX433");

if (värde == 0) {

Serial.print ("Codage inconnu");

} annat

{

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

}//slinga

Steg 3: Information Sur Les Codes Infra-Rouge

Il y a plusieurs -protokoll:

NEC: 32 bitar (protokolldetaljer)

Sony: 12 eller 20 bitar (protokolldetaljer) (Förstå Sony IR -fjärrkoder.)

RC5: 12 bitar (protokolldetaljer)

RC6: 20 ou 36 bits (protokolldetaljer)

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

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

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

Steg 4: Information om surkoder RX433

L’envoie se fera avec la librairie RCSwitch.h

Exempel på mySwitch.send (1975778, 24);

På peut facilement piloter avec cela des prises commandés.

Rekommenderad: