Sommario:

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

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

Video: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 Steps
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Novembre
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, port de garage et autre fonctionnant sous 433 mhz (RX433) più aussi ceux des télécommandes infra-rouge de télévision au autre.

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

Passaggio 1: il montaggio

Le Montage
Le Montage

Semplice, un Arduino Nano, un ricevitore a diodi infrarossi e un ricevitore 433 mhz.

Passaggio 2: Le Code Arduino

//InfraRouge

#includere

int recvPin = 11; //pin Arduino per ricevitore InfraRouge (TOSP4838)

IRrecv irrecv(recvPin);

//RX433

#includere

RCSwitch mioSwitch = RCSwitch();

decode_results risultati;

configurazione nulla ()

{

Serial.begin(9600);

irrecv.enableIRIn();

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

mySwitch.enableReceive(0); // Ricevitore RX433 (XY-MK-5V) sul pin 2 di Arduino Uno e Nano

}

// affichage des codes InfraRouge

void ircode (decode_results *results)

{

// Panasonic

if (risultati->decode_type == PANASONIC) {

Serial.print(risultati->indirizzo, HEX);

Serial.print(":");

}

Serial.print(risultati->valore, HEX);

}//vuoto

// apposizione dei codici codificati

codifica void (decode_results *results)

{

switch (risultati->decode_type) {

predefinito:

case SCONOSCIUTO: Serial.print("Inconnu"); rottura;

caso NEC: Serial.print("NEC"); rottura;

case SONY: Serial.print("SONY"); rottura;

caso RC5: Serial.print("RC5"); rottura;

caso RC6: Serial.print("RC6"); rottura;

case DISH: Serial.print("DISH"); rottura;

case SHARP: Serial.print("SHARP"); rottura;

case JVC: Serial.print("JVC"); rottura;

case SANYO: Serial.print("SANYO"); rottura;

case MITSUBISHI: Serial.print("MITSUBISHI"); rottura;

case SAMSUNG: Serial.print("SAMSUNG"); rottura;

caso LG: Serial.print("LG"); rottura;

case WHYNTER: Serial.print("WHYNTER"); rottura;

caso AIWA_RC_T501: Serial.print("AIWA_RC_T501"); rottura;

case PANASONIC: Serial.print("PANASONIC"); rottura;

case DENON: Serial.print("Denon"); rottura;

}

}

// scarica i risultati

void dumpInfo (decode_results *results)

{

// Controlla se il buffer è andato in overflow

if (risultati->overflow) {

Serial.println("Codice IR troppo lungo. Modifica IRremoteInt.he aumenta RAWBUF");

Restituzione;

}

// Mostra standard di codifica

Serial.print("Codifica: ");

codifica(risultati);

Serial.println("");

// Mostra codice e lunghezza

Serial.print("Codice: ");

ircode(risultati);

Serial.print(" (");

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

Serial.println("bit)");

}

//struttura

void dumpRaw (decode_results *results)

{

// Stampa dati grezzi

Serial.print("Tempi[");

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

Serial.println("]: ");

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

unsigned long x = results->rawbuf * USECPERTICK;

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

Serial.print("-");

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

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

Serial.print(x, DEC);

} else { // dispari

Serial.print(" ");

Serial.print("+");

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

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

Serial.print(x, DEC);

if (i rawlen-1) Serial.print(", "); //', 'non necessario per l'ultimo

}

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

}

Serial.println(""); // Nuova linea

}

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

// Scarica la struttura decode_results.

//

void dumpCode (decode_results *results)

{

// Inizio dichiarazione

Serial.print("unsigned int"); // tipo variabile

Serial.print("rawData["); // nome dell'array

Serial.print(risultati->rawlen - 1, DEC); // dimensione dell'array

Serial.print("] = {"); // Inizia la dichiarazione

// Scarica i dati

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

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

if (i rawlen-1) Serial.print(", "); // ', ' non necessario sull'ultimo

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

}

// Fine dichiarazione

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

// Commento

Serial.print(" // ");

codifica(risultati);

Serial.print(" ");

ircode(risultati);

// Nuova linea

Serial.println("");

// Ora scarica i codici "conosciuti"

if (risultati->decode_type != SCONOSCIUTO) {

// Alcuni protocolli hanno un indirizzo

if (risultati->decode_type == PANASONIC) {

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

Serial.print(risultati->indirizzo, HEX);

Serial.println(";");

}

// Tutti i protocolli hanno dati

Serial.print("dati int senza segno = 0x");

Serial.print(risultati->valore, HEX);

Serial.println(";");

}

}

ciclo vuoto ()

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

{

decode_results risultati; // Da qualche parte per memorizzare i risultati

if (irrecv.decode(&results)) { // Prendi un codice IR

dumpInfo(&risultati); // Visualizza i risultati

dumpRaw(&risultati); // Emette i risultati in formato RAW

dumpCode(&risultati); // Visualizza i risultati come codice sorgente

Serial.println(""); // Riga vuota tra le voci

irrecv.resume(); // Preparati per il prossimo valore

}

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

if (mySwitch.available())

{

int valore = mySwitch.getReceivedValue();

Serial.println("RX433");

if (valore == 0) {

Serial.print("Codage inconnu");

} altro

{

Serial.print("Registrazione");

Serial.print(mySwitch.getReceivedValue());

Serial.print(" / ");

Serial.print(mySwitch.getReceivedBitlength());

Serial.print("bit");

Serial.print("Protocollo: ");

Serial.println(mySwitch.getReceivedProtocol());

}

mySwitch.resetAvailable();

}//RX433

}//ciclo continuo

Fase 3: Infos Sur Les Codes Infra-Rouge

Il y a plusieurs protocoles:

NEC: 32 bit (dettagli protocollo)

Sony: 12 o 20 bit (dettagli del protocollo) (Comprensione dei codici del telecomando IR Sony.)

RC5: 12 bit (dettagli protocollo)

RC6: 20 o 36 bit (dettagli protocollo)

Per Sony e RC5/6, trasmissione chaque doit être répétés 3 fois !

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

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

Passaggio 4: informazioni sui codici RX433

L'envoie se fera avec la librairie RCSwitch.h

Esempio mySwitch.send(1975778, 24);

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

Consigliato: