Inhaltsverzeichnis:
- Schritt 1: Le Montage
- Schritt 2: Le Code Arduino
- Schritt 3: Infos Sur Les Codes Infra-Rouge
- Schritt 4: Infos Sur Codes RX433
Video: Récupérer Les Codes Infra-Rouge Et 433 MHz - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
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
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.