Talaan ng mga Nilalaman:

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

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

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 Mga Hakbang
Video: Electronique Test : Capteur Infrarouge FC-51 / IR sensor 2024, Nobyembre
Anonim
Récupérer Les Codes Infra-Rouge Et 433mhz
Récupérer Les Codes Infra-Rouge Et 433mhz

Ngunit ang mga code ng code sa 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.

Sa pourra donc ensuite, grâce à une autre montage, mga envoyer ces code at piloter n’importe quoi!

Hakbang 1: Le Montage

Le Montage
Le Montage

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

Hakbang 2: Le Code Arduino

// InfraRouge

# isama

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

IRrecv irrecv (recvPin);

// RX433

# isama

RCSwitch mySwitch = RCSwitch ();

mga resulta sa pag-decode_resulta;

walang bisa ang pag-setup ()

{

Serial.begin (9600);

irrecv.enableIRIn ();

irrecv.blink13 (totoo); // 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 code InfraRouge

walang bisa ang ircode (decode_results * mga resulta)

{

// Panasonic

kung (resulta-> decode_type == PANASONIC) {

Serial.print (mga resulta-> address, HEX);

Serial.print (":");

}

Serial.print (mga resulta-> halaga, HEX);

} // walang bisa

// afficahge des code encodés

walang bisa ang pag-encode (decode_results * mga resulta)

{

switch (resulta-> decode_type) {

default:

kaso HINDI KILALA: Serial.print ("Inconnu"); pahinga;

kaso NEC: Serial.print ("NEC"); pahinga;

kaso SONY: Serial.print ("SONY"); pahinga;

kaso RC5: Serial.print ("RC5"); pahinga;

kaso RC6: Serial.print ("RC6"); pahinga;

kaso DISH: Serial.print ("DISH"); pahinga;

kaso SHARP: Serial.print ("SHARP"); pahinga;

kaso JVC: Serial.print ("JVC"); pahinga;

kaso SANYO: Serial.print ("SANYO"); pahinga;

kaso MITSUBISHI: Serial.print ("MITSUBISHI"); pahinga;

kaso SAMSUNG: Serial.print ("SAMSUNG"); pahinga;

kaso LG: Serial.print ("LG"); pahinga;

kaso WHYNTER: Serial.print ("WHYNTER"); pahinga;

kaso AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); pahinga;

kaso PANASONIC: Serial.print ("PANASONIC"); pahinga;

kaso DENON: Serial.print ("Denon"); pahinga;

}

}

// dump les résultats

void dumpInfo (decode_results * mga resulta)

{

// Suriin kung umapaw ang buffer

kung (resulta-> overflow) {

Serial.println ("Masyadong mahaba ang IR code. I-edit ang IRremoteInt.h at dagdagan ang RAWBUF");

bumalik;

}

// Ipakita ang pamantayan ng Pag-encode

Serial.print ("Encodage:");

pag-encode (mga resulta);

Serial.println ("");

// Ipakita ang Code at haba

Serial.print ("Code:");

ircode (mga resulta);

Serial.print ("(");

Serial.print (mga resulta-> mga piraso, DEC);

Serial.println ("bit)");

}

// istraktura

void dumpRaw (decode_results * mga resulta)

{

// Print Raw data

Serial.print ("Oras [");

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

Serial.println ("]:");

para sa (int i = 1; i rawlen; i ++) {

unsigned mahabang x = mga resulta-> rawbuf * USECPERTICK;

kung (! (i & 1)) {// kahit

Serial.print ("-");

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

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

Serial.print (x, DEC);

} iba pa {// kakaiba

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

kung (i rawlen-1) Serial.print (","); // ',' hindi kinakailangan para sa huling isa

}

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

}

Serial.println (""); // Bagong linya

}

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

// Itapon ang istraktura ng decode_results.

//

void dumpCode (decode_results * mga resulta)

{

// Simulang deklarasyon

Serial.print ("unsigned int"); // variable type

Serial.print ("rawData ["); // pangalan ng array

Serial.print (mga resulta-> rawlen - 1, DEC); // laki ng array

Serial.print ("] = {"); // Simulang deklarasyon

// Data ng basura

para sa (int i = 1; i rawlen; i ++) {

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

kung (i rawlen-1) Serial.print (","); // ',' hindi kinakailangan sa huli

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

}

// Tapusin ang deklarasyon

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

// Komento

Serial.print ("//");

pag-encode (mga resulta);

Serial.print ("");

ircode (mga resulta);

// Bagong linya

Serial.println ("");

// Ngayon magtapon ng mga "kilalang" code

kung (resulta-> decode_type! = HINDI ALAM) {

// Ang ilang mga protokol ay may isang address

kung (resulta-> decode_type == PANASONIC) {

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

Serial.print (mga resulta-> address, HEX);

Serial.println (";");

}

// Lahat ng mga protocol ay may data

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

Serial.print (mga resulta-> halaga, HEX);

Serial.println (";");

}

}

walang bisa loop ()

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

{

mga resulta sa pag-decode_resulta; // Saanman upang maiimbak ang mga resulta

kung (irrecv.decode (& mga resulta)) {// Kumuha ng isang IR code

dumpInfo (& mga resulta); // Output ang mga resulta

dumpRaw (& mga resulta); // Output ang mga resulta sa format na RAW

dumpCode (& mga resulta); // Output ang mga resulta bilang source code

Serial.println (""); // Blangko linya sa pagitan ng mga entry

irrecv.resume (); // Maghanda para sa susunod na halaga

}

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

kung (mySwitch.available ())

{

int halaga = mySwitch.getReceivedValue ();

Serial.println ("RX433");

kung (halaga == 0) {

Serial.print ("Codage inconnu");

} iba pa

{

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

} // loop

Hakbang 3: Ang Infos Sur Les Codes Infra-Rouge

Ako ay isang mga plusieurs na protokol:

NEC: 32 bits (mga detalye ng protocol)

Sony: 12 o 20 bits (mga detalye ng protocol) (Pag-unawa sa mga malalayong code ng Sony IR.)

RC5: 12 bits (mga detalye ng protocol)

RC6: 20 o 36 bits (mga detalye ng protocol)

Ibuhos ang Sony et RC5 / 6, ang pagpapadala ng chaque ay dapat na gawin 3 beses!

ATTENTION: la librairie IRremote.h ne semble pas pouvoir envoyer des mga 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

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

Hakbang 4: Ang Infos Sur Codes RX433

L’envoie se fera avec la librairie RCSwitch.h

Exemple mySwitch.send (1975778, 24);

Sa peut facilement piloter avec cela des prises commandés.

Inirerekumendang: