Inhaltsverzeichnis:

Récupérer Les Codes Infra-Rouge Et 433 MHz - Gunook
Récupérer Les Codes Infra-Rouge Et 433 MHz - Gunook

Video: Récupérer Les Codes Infra-Rouge Et 433 MHz - Gunook

Video: Récupérer Les Codes Infra-Rouge Et 433 MHz - Gunook
Video: Télécommande universelle, pour portail ou garage automatique. 2024, November
Anonim
Récupérer Les Codes Infra-Rouge Et 433 MHz
Récupérer Les Codes Infra-Rouge Et 433 MHz

Le but est d’afficher les code des telecommandes du style commande de lampe, porte de garage and autre fonctionnant sous 433 mhz (RX433) mais aussi ceux des telecommandes infra-rouge de télévision au autre.

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

Schritt 1: Le Montage

Le Montage
Le Montage

Einfach, ein Arduino Nano, ein Infrarot-Diodenrezeptor und ein 433 MHz-Empfänger.

Schritt 2: Le Code Arduino

//InfraRouge

#enthalten

int recvPin = 11; // Pin Arduino für InfraRouge (TOSP4838)

IRrecv irrecv(recvPin);

//RX433

#enthalten

RCSwitch mySwitch = RCSwitch();

decode_results-Ergebnisse;

Leere Einrichtung ()

{

Serial.begin (9600);

irrecv.enableIRIn();

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

mySwitch.enableReceive(0); // Empfänger RX433 (XY-MK-5V) auf Pin 2 von Arduino Uno und Nano

}

// Affichage des Codes InfraRouge

void ircode (decode_results *results)

{

// Panasonic

if (results->decode_type == PANASONIC) {

Serial.print (Ergebnisse-> Adresse, HEX);

Serial.print (":");

}

Serial.print (Ergebnisse->Wert, HEX);

}//Leere

// Afficahge des Codes encodes

void-Codierung (decode_results *results)

{

switch (results->decode_type) {

Ursprünglich:

Fall UNBEKANNT: Serial.print ("Inconnu"); brechen;

Fall NEC: Serial.print ("NEC"); brechen;

Fall SONY: Serial.print ("SONY"); brechen;

Fall RC5: Serial.print ("RC5"); brechen;

Fall RC6: Serial.print ("RC6"); brechen;

Fall DISH: Serial.print ("DISH"); brechen;

Fall SHARP: Serial.print ("SHARP"); brechen;

Fall JVC: Serial.print ("JVC"); brechen;

Fall SANYO: Serial.print ("SANYO"); brechen;

Fall MITSUBISHI: Serial.print ("MITSUBISHI"); brechen;

Fall SAMSUNG: Serial.print ("SAMSUNG"); brechen;

Fall LG: Serial.print ("LG"); brechen;

Fall WARUM: Serial.print ("WHYNTER"); brechen;

Fall AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); brechen;

Fall PANASONIC: Serial.print ("PANASONIC"); brechen;

Fall DENON: Serial.print ("Denon"); brechen;

}

}

// Dump les résultats

void dumpInfo (decode_results *results)

{

// Prüfen, ob der Puffer übergelaufen ist

if (Ergebnisse->Überlauf) {

Serial.println ("IR-Code zu lang. IRremoteInt.h bearbeiten und RAWBUF erhöhen");

Rückkehr;

}

// Kodierungsstandard anzeigen

Serial.print ("Kodierung: ");

Kodierung (Ergebnisse);

Serial.println("");

// Code & Länge anzeigen

Serial.print("Code:");

ircode (Ergebnisse);

Serial.print (" (");

Serial.print (Ergebnisse-> Bits, DEC);

Serial.println ("Bits)");

}

//Struktur

void dumpRaw (decode_results *results)

{

// Rohdaten drucken

Serial.print("Timing[");

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

Serial.println("]: ");

für (int i = 1; ich rawlen; i++) {

unsigned long x = results->rawbuf * USECPERTICK;

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

Serial.print("-");

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

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

Serial.print (x, DEZ);

} sonst { // ungerade

Serial.print (" ");

Serial.print("+");

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

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

Serial.print (x, DEZ);

wenn (ich rawlen-1) Serial.print (", "); //', ' wird für den letzten nicht benötigt

}

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

}

Serial.println(""); // Neue Zeile

}

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

// Die decode_results-Struktur ausgeben.

//

void dumpCode (decode_results *results)

{

// Deklaration starten

Serial.print ("unsigned int"); // Variablentyp

Serial.print("rawData["); // Array-Name

Serial.print (Ergebnisse->rawlen - 1, DEC); // Array-Größe

Serial.print("] = {"); // Deklaration starten

// Daten ausgeben

für (int i = 1; ich rawlen; i++) {

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

wenn (ich rawlen-1) Serial.print (", "); // ', ' wird beim letzten nicht benötigt

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

}

// Deklaration beenden

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

// Kommentar

Serial.print("//");

Kodierung (Ergebnisse);

Serial.print (" ");

ircode (Ergebnisse);

// Neue Zeile

Serial.println("");

// Jetzt "bekannte" Codes entsorgen

if (results->decode_type != UNKNOWN) {

// Einige Protokolle haben eine Adresse

if (results->decode_type == PANASONIC) {

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

Serial.print (Ergebnisse-> Adresse, HEX);

Serial.println(";");

}

// Alle Protokolle haben Daten

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

Serial.print (Ergebnisse->Wert, HEX);

Serial.println(";");

}

}

Leere Schleife ()

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

{

decode_results-Ergebnisse; // Irgendwo zum Speichern der Ergebnisse

if (irrecv.decode(&results)) {// Holen Sie sich einen IR-Code

dumpInfo(&Ergebnisse); // Ergebnisse ausgeben

dumpRaw(&Ergebnisse); // Ausgabe der Ergebnisse im RAW-Format

dumpCode(&Ergebnisse); // Ergebnis als Quellcode ausgeben

Serial.println(""); // Leerzeile zwischen den Einträgen

irrecv.resume(); // Bereite dich auf den nächsten Wert vor

}

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

if (meinSwitch.verfügbar())

{

int-Wert = mySwitch.getReceivedValue();

Serial.println("RX433");

wenn (Wert == 0) {

Serial.print ("Codage inconnu");

} anders

{

Serial.print ("Reçu");

Serial.print (mySwitch.getReceivedValue ());

Serial.print (" / ");

Serial.print (mySwitch.getReceivedBitlength ());

Serial.print ("Bit");

Serial.print ("Protokoll: ");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable();

}//RX433

}//Schleife

Schritt 3: Infos Sur Les Codes Infra-Rouge

Il y a plusieurs-Protokolle:

NEC: 32 Bit (Protokolldetails)

Sony: 12 oder 20 Bit (Protokolldetails) (Verstehen von Sony IR-Fernbedienungscodes.)

RC5: 12 Bit (Protokolldetails)

RC6: 20 oder 36 Bit (Protokolldetails)

Pour Sony und RC5/6, chaque Transmission doit être répétés 3 fois !

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

Beispiel: (0x abweichender Code) und die Anzahl der Bits irsend.sendNEC(0xA55A38C7, 32);

Schritt 4: Infos Sur Codes RX433

L'envoie se fera avec la librairie RCSwitch.h

Beispiel mySwitch.send(1975778, 24);

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