Isi kandungan:

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

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

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 Langkah
Video: Начало работы с электроникой № 10 — Использование инфракрасного пульта дистанционного управления и датчика 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 code 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.

Pada perkhidmatan pourra donc, grâce à une autre montage, envoyer ces code et piloter n'importe quoi!

Langkah 1: Le Montage

Le Montage
Le Montage

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

Langkah 2: Le Code Arduino

// InfraRouge

#sertakan

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

IRrecv irrecv (recvPin);

// RX433

#sertakan

RCSwitch mySwitch = RCSwitch ();

keputusan decode_results;

persediaan tidak sah ()

{

Serial.begin (9600);

irrecv.enableIRIn ();

irrecv.blink13 (benar); // 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

batal ircode (keputusan decode_results *)

{

// Panasonic

jika (hasil-> decode_type == PANASONIC) {

Serial.print (hasil-> alamat, HEX);

Cetakan bersiri (":");

}

Serial.print (hasil-> nilai, HEX);

} // tidak sah

// afficahge des code encodés

pengekodan tidak sah (keputusan decode_results *)

{

tukar (hasil-> jenis decode_) {

lalai:

kes TIDAK DIKETAHUI: Serial.print ("Inconnu"); rehat;

kes NEC: Serial.print ("NEC"); rehat;

kes SONY: Serial.print ("SONY"); rehat;

kes RC5: Serial.print ("RC5"); rehat;

kes RC6: Serial.print ("RC6"); rehat;

kes DISH: Serial.print ("DISH"); rehat;

kes SHARP: Serial.print ("SHARP"); rehat;

kes JVC: Serial.print ("JVC"); rehat;

kes SANYO: Serial.print ("SANYO"); rehat;

kes MITSUBISHI: Serial.print ("MITSUBISHI"); rehat;

kes SAMSUNG: Serial.print ("SAMSUNG"); rehat;

kes LG: Serial.print ("LG"); rehat;

kes WHYNTER: Serial.print ("WHYNTER"); rehat;

kes AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); rehat;

kes PANASONIC: Serial.print ("PANASONIC"); rehat;

kes DENON: Serial.print ("Denon"); rehat;

}

}

// buang les résultats

batal dumpInfo (keputusan decode_results *)

{

// Periksa sama ada buffer meluap

jika (hasil-> limpahan) {

Serial.println ("Kod IR terlalu lama. Edit IRremoteInt.h dan tingkatkan RAWBUF");

kembali;

}

// Tunjukkan standard Pengekodan

Serial.print ("Encodage:");

pengekodan (hasil);

Serial.println ("");

// Tunjukkan Kod & panjang

Serial.print ("Kod:");

ircode (hasil);

Cetakan bersiri ("(");

Serial.print (hasil-> bit, DEC);

Serial.println ("bit)");

}

// struktur

void dumpRaw (keputusan decode_results *)

{

// Cetak data mentah

Serial.print ("Masa ["];

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

Serial.println ("]:");

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

panjang tidak ditandatangani x = hasil-> rawbuf * USECPERTICK;

jika (! (i & 1)) {// genap

Cetakan bersiri ("-");

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

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

Cetakan bersiri (x, DEC);

} lain {// ganjil

Cetakan bersiri ("");

Serial.print ("+");

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

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

Cetakan bersiri (x, DEC);

jika (i rawlen-1) Serial.print (","); // ',' tidak diperlukan untuk yang terakhir

}

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

}

Serial.println (""); // Baris baru

}

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

// Buangkan struktur decode_results.

//

kekosongan dumpCode (keputusan decode_results *)

{

// Mulakan pengisytiharan

Serial.print ("int tidak bertanda"); // jenis pemboleh ubah

Serial.print ("rawData ["); // nama array

Serial.print (hasil-> rawlen - 1, DEC); // saiz tatasusunan

Serial.print ("] = {"); // Mulakan pengisytiharan

// Buangkan data

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

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

jika (i rawlen-1) Serial.print (","); // ',' tidak diperlukan pada yang terakhir

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

}

// Pengisytiharan akhir

Cetakan bersiri ("};"); //

// Komen

Cetakan bersiri ("//");

pengekodan (hasil);

Cetakan bersiri ("");

ircode (hasil);

// Baris baru

Serial.println ("");

// Sekarang buang kod "dikenali"

jika (hasil-> decode_type! = TIDAK DIKETAHUI) {

// Beberapa protokol mempunyai alamat

jika (hasil-> decode_type == PANASONIC) {

Serial.print ("int signr = 0x");

Serial.print (hasil-> alamat, HEX);

Serial.println (";");

}

// Semua protokol mempunyai data

Serial.print ("data int yang tidak ditandatangani = 0x");

Serial.print (hasil-> nilai, HEX);

Serial.println (";");

}

}

gelung kosong ()

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

{

keputusan decode_results; // Di suatu tempat untuk menyimpan hasilnya

if (irrecv.decode (& results)) {// Dapatkan kod IR

dumpInfo (& hasil); // Keluarkan hasilnya

dumpRaw (& hasil); // Keluarkan hasilnya dalam format RAW

dumpCode (& hasil); // Keluarkan hasilnya sebagai kod sumber

Serial.println (""); // Garis kosong antara entri

irrecv.resume (); // Bersedia untuk nilai seterusnya

}

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

jika (mySwitch.available ())

{

nilai int = mySwitch.getReceivedValue ();

Serial.println ("RX433");

jika (nilai == 0) {

Serial.print ("Codage inconnu");

} lain

{

Serial.print ("Reçu");

Serial.print (mySwitch.getReceivedValue ());

Cetakan bersiri ("/");

Serial.print (mySwitch.getReceivedBitlength ());

Serial.print ("bit");

Serial.print ("Protocole:");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

} // gelung

Langkah 3: Infos Sur Les Codes Infra-Rouge

Protokol yang lebih baik:

NEC: 32 bit (perincian protokol)

Sony: 12 ou 20 bit (perincian protokol) (Memahami kod jauh Sony IR.)

RC5: 12 bit (perincian protokol)

RC6: 20 ou 36 bit (perincian protokol)

Tuangkan Sony et RC5 / 6, transmisi chaque être répétés 3 fois!

PERHATIAN: la librairie IRremote.h ne semble pas pouvoir envoyer des code codés sur plus de 32bits. Les RC6, 36 orang tidak mempunyai envoyer en raw, qui prennent plus de taille mémoire.

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

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

Langkah 4: Infos Sur Codes RX433

L'envoie se fera avec la librairie RCSwitch.h

Contoh mySwitch.send (1975778, 24);

Mengenai perintis peut piloter avec cela des prises komando.

Disyorkan: