Mục lục:

Récupérer Les Codes Infra-Rouge Et 433mhz: 4 bước
Récupérer Les Codes Infra-Rouge Et 433mhz: 4 bước

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 bước

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 bước
Video: Télécommande Infra rouge 2/3 2024, Tháng mười một
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 gara et autre fonctionnant sous 433 mhz (RX433) mais aussi ceux des télécommandes Infra-rouge de télévision au autre.

Trên pourra donc ensuite, bản dựng phim grâce à une autre, envoyer ces Code et piloter n’importe quoi!

Bước 1: Le Montage

Le Montage
Le Montage

Đơn giản, không Arduino Nano, diode réceptrice Infra-rouge et un récepteur 433 mhz.

Bước 2: Le Code Arduino

// InfraRouge

#bao gồm

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

IRrecv không thể thay đổi (recvPin);

// RX433

#bao gồm

RCSwitch mySwitch = RCSwitch ();

giải mã kết quả;

void setup ()

{

Serial.begin (9600);

không thể thay đổi.enableIRIn ();

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

mySwitch.enableReceive (0); // Chân cắm Récepteur RX433 (XY-MK-5V) 2 de Arduino Uno et Nano

}

// mã affichage des InfraRouge

void ircode (decode_results * results)

{

// Panasonic

if (results-> decode_type == PANASONIC) {

Serial.print (kết quả-> địa chỉ, HEX);

Serial.print (":");

}

Serial.print (results-> value, HEX);

} // vô hiệu

// afficahge des mã encodés

mã hóa void (decode_results * kết quả)

{

switch (results-> decode_type) {

vỡ nợ:

case UNKNOWN: Serial.print ("Inconnu"); nghỉ;

case NEC: Serial.print ("NEC"); nghỉ;

case SONY: Serial.print ("SONY"); nghỉ;

case RC5: Serial.print ("RC5"); nghỉ;

case RC6: Serial.print ("RC6"); nghỉ;

case DISH: Serial.print ("DISH"); nghỉ;

case SHARP: Serial.print ("SHARP"); nghỉ;

case JVC: Serial.print ("JVC"); nghỉ;

case SANYO: Serial.print ("SANYO"); nghỉ;

case MITSUBISHI: Serial.print ("MITSUBISHI"); nghỉ;

case SAMSUNG: Serial.print ("SAMSUNG"); nghỉ;

case LG: Serial.print ("LG"); nghỉ;

case WHYNTER: Serial.print ("WHYNTER"); nghỉ;

case AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); nghỉ;

case PANASONIC: Serial.print ("PANASONIC"); nghỉ;

case DENON: Serial.print ("Denon"); nghỉ;

}

}

// kết xuất les résultats

void dumpInfo (decode_results * results)

{

// Kiểm tra xem bộ đệm có bị tràn không

if (kết quả-> tràn) {

Serial.println ("Mã IR quá dài. Chỉnh sửa IRremoteInt.h và tăng RAWBUF");

trở lại;

}

// Hiển thị tiêu chuẩn mã hóa

Serial.print ("Mã hóa:");

mã hóa (kết quả);

Serial.println ("");

// Hiển thị mã & độ dài

Serial.print ("Mã:");

ircode (kết quả);

Serial.print ("(");

Serial.print (kết quả-> bit, DEC);

Serial.println ("bit)");

}

//kết cấu

void dumpRaw (decode_results * results)

{

// In dữ liệu thô

Serial.print ("Timing [");

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

Serial.println ("]:");

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

unsigned long x = results-> rawbuf * USECPERTICK;

if (! (i & 1)) {// chẵn

Serial.print ("-");

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

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

Serial.print (x, DEC);

} else {// lẻ

Serial.print ("");

Serial.print ("+");

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

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

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' không cần thiết cho cái cuối cùng

}

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

}

Serial.println (""); // Dòng mới

}

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

// Kết xuất cấu trúc decode_results.

//

void dumpCode (decode_results * results)

{

// Bắt đầu khai báo

Serial.print ("int không dấu"); // kiểu biến

Serial.print ("rawData ["); // tên mảng

Serial.print (results-> rawlen - 1, DEC); // kích thước mảng

Serial.print ("] = {"); // Bắt đầu khai báo

// Kết xuất dữ liệu

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

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

if (i rawlen-1) Serial.print (","); // ',' không cần thiết trên cái cuối cùng

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

}

// Kết thúc khai báo

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

// Bình luận

Serial.print ("//");

mã hóa (kết quả);

Serial.print ("");

ircode (kết quả);

// Dòng mới

Serial.println ("");

// Bây giờ kết xuất các mã "đã biết"

if (results-> decode_type! = UNKNOWN) {

// Một số giao thức có địa chỉ

if (results-> decode_type == PANASONIC) {

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

Serial.print (kết quả-> địa chỉ, HEX);

Serial.println (";");

}

// Tất cả các giao thức đều có dữ liệu

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

Serial.print (results-> value, HEX);

Serial.println (";");

}

}

void loop ()

/ ************************************************* * Hồng ngoại ********************************************** /

{

giải mã kết quả; // Nơi nào đó để lưu trữ kết quả

if (Uncv.decode (& results))) {// Lấy mã IR

dumpInfo (& kết quả); // Xuất kết quả

dumpRaw (& kết quả); // Xuất kết quả ở định dạng RAW

dumpCode (& kết quả); // Xuất kết quả dưới dạng mã nguồn

Serial.println (""); // Dòng trống giữa các mục nhập

không thể tìm thấy (); // Chuẩn bị cho giá trị tiếp theo

}

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

if (mySwitch.available ())

{

int value = mySwitch.getReceiveValue ();

Serial.println ("RX433");

if (giá trị == 0) {

Serial.print ("Mã hóa giải mã");

} khác

{

Serial.print ("Reçu");

Serial.print (mySwitch.getReceiveValue ());

Serial.print ("/");

Serial.print (mySwitch.getReceiveBitlength ());

Serial.print ("bit");

Serial.print ("Protocole:");

Serial.println (mySwitch.getReceiveProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

}//vòng

Bước 3: Infos Sur Les Codes Infra-Rouge

Là giao thức plusieurs:

NEC: 32 bit (chi tiết giao thức)

Sony: 12 ou 20 bit (chi tiết giao thức) (Hiểu mã điều khiển từ xa IR của Sony.)

RC5: 12 bit (chi tiết giao thức)

RC6: 20 ou 36 bit (chi tiết giao thức)

Đổ Sony et RC5 / 6, hộp truyền động chaque doit être répétés 3 fois!

CHÚ Ý: la libraryirie IRremote.h ne semble pas pouvoir envoyer des mã 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 laosystemirie IRremote.h

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

Bước 4: Infos Sur Codes RX433

L’envoie se fera avec laosystemirie RCSwitch.h

Exemple mySwitch.send (1975778, 24);

Trên peut facilement piloter avec cela des prises commandés.

Đề xuất: