Daftar Isi:

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
Recupérer Les Codes Infra-Rouge Et 433mhz
Recupé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.

Di pourra donc ensuite, grâce une autre montage, envoyer ces codes et piloter n'importe quoi !

Langkah 1: Le Montage

Le Montage
Le Montage

Sederhana, tanpa Arduino Nano, penerima dioda infra-rouge dan penerima 433 mhz.

Langkah 2: Le Kode Arduino

//InfraRouge

#termasuk

int recvPin = 11; //pin Arduino tuangkan penerima InfraRouge (TOSP4838)

IRrecv irecv(recvPin);

//RX433

#termasuk

RCSwitch mySwitch = RCSwitch();

hasil decode_results;

batalkan pengaturan ()

{

Serial.begin(9600);

irrecv.enableIRIn();

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

mySwitch.enableReceive(0); // Penerima RX433 (XY-MK-5V) dengan pin 2 dari Arduino Uno dan Nano

}

// affichage des kode InfraRouge

void ircode (decode_results *results)

{

//Panasonic

if (hasil->decode_type == PANASONIC) {

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

Serial.print(":");

}

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

}//ruang kosong

// afficahge des codes encodes

pengkodean batal (decode_results *results)

{

beralih (hasil->decode_type) {

bawaan:

kasus TIDAK DIKETAHUI: Serial.print("Inconnu"); merusak;

kasus NEC: Serial.print("NEC"); merusak;

kasus SONY: Serial.print("SONY"); merusak;

kasus RC5: Serial.print("RC5"); merusak;

kasus RC6: Serial.print("RC6"); merusak;

kasus DISH: Serial.print("DISH"); merusak;

kasus SHARP: Serial.print("SHARP"); merusak;

kasus JVC: Serial.print("JVC"); merusak;

kasus SANYO: Serial.print("SANYO"); merusak;

kasus MITSUBISHI: Serial.print("MITSUBISHI"); merusak;

kasus SAMSUNG: Serial.print("SAMSUNG"); merusak;

kasus LG: Serial.print("LG"); merusak;

kasus MENGAPA: Serial.print("MENGAPA"); merusak;

kasus AIWA_RC_T501: Serial.print("AIWA_RC_T501"); merusak;

kasus PANASONIC: Serial.print("PANASONIC"); merusak;

kasus DENON: Serial.print("Denon"); merusak;

}

}

// dump les hasil

void dumpInfo (decode_results *results)

{

// Periksa apakah buffer meluap

if (hasil->melimpah) {

Serial.println("Kode IR terlalu panjang. Edit IRremoteInt.h dan tingkatkan RAWBUF");

kembali;

}

// Tampilkan standar Pengkodean

Serial.print("Enkodasi: ");

pengkodean (hasil);

Serial.println("");

// Tampilkan Kode & panjang

Serial.print("Kode: ");

ircode(hasil);

Serial.print("(");

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

Serial.println("bit)");

}

//struktur

void dumpRaw (decode_results *results)

{

// Mencetak data mentah

Serial.print("Waktu[");

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

Serial.println("]: ");

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

unsigned long x = hasil->rawbuf * USECPERTICK;

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

Serial.print("-");

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

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

Serial.print(x, DEC);

} else { // ganjil

Serial.print("");

Serial.print("+");

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

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

Serial.print(x, DEC);

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

}

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

}

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

}

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

// Buang struktur decode_results.

//

void dumpCode (decode_results *results)

{

// Mulai deklarasi

Serial.print("int tidak bertanda"); // tipe variabel

Serial.print("Data mentah["); // nama larik

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

Serial.print("] = {"); // Mulai deklarasi

// Membuang data

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

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

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

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

}

// Akhiri deklarasi

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

// Komentar

Serial.print(" // ");

pengkodean (hasil);

Serial.print("");

ircode(hasil);

// Garis baru

Serial.println("");

// Sekarang buang kode "dikenal"

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

// Beberapa protokol memiliki alamat

if (hasil->decode_type == PANASONIC) {

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

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

Serial.println(";");

}

// Semua protokol memiliki data

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

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

Serial.println(";");

}

}

lingkaran kosong ()

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

{

hasil decode_results; // Tempat untuk menyimpan hasil

if (irrecv.decode(&results)) { // Ambil kode IR

dumpInfo(&hasil); // Keluarkan hasilnya

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

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

Serial.println(""); // Baris kosong di antara entri

irrecv.resume(); // Siapkan untuk nilai berikutnya

}

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

jika (mySwitch.available())

{

int nilai = mySwitch.getReceivedValue();

Serial.println("RX433");

jika (nilai == 0) {

Serial.print("Codage inconnu");

} lain

{

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

}//lingkaran

Langkah 3: Infos Sur Les Codes Infra-Rouge

I y a plusieurs protokol:

NEC: 32 bit (detail protokol)

Sony: 12 ou 20 bit (detail protokol)(Memahami kode remote IR Sony.)

RC5: 12 bit (detail protokol)

RC6: 20 ou 36 bit (detail protokol)

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

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

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

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

Direkomendasikan: