Projekt steht zum kostenlosen Download zur Verfügung!
Arduino KY-022 IRremote SONY Panasonic NEC RC5 RC6 JVC AIWA RC-T501 WHYNTER

Relaissteuerung per Fernbedienung


Funktionsbeschreibung:

  • Relais- und Leistungssteuerung über Fernbedienung.
  • Das Übertragungsmedium ist eine Infrarotdiode an der Fernbedienung (Sender) und am Empfänger - Modul KY-022.
  • Das empfangene Signal kann decodiert und einer bestimmten Aktion zugewiesen werden, die von Arduino gesteuert wird. Messen Sie die Menge, senden Sie es an den Server. Schalten Sie Ausgang, Beleuchtung, Kessel, Fach auf Anfrage ein, führen Sie Zeitaktion, Reihenfolge durch.
  • Die Verwendung ist einfach und vielseitig. Die Empfangsreichweite beträgt bis zu 10 Meter. Kann für verschiedene Protokolle verwendet werden: NEC, RC5, RC6, SONY, JVC.
  • Verwendete Hardware:

  • Arduino Nano Arduino Nano
  • KY-022 EmpfängerKY-022
  • Fernbedienung SILVERCREST KH 2159 SILVERCREST KH 2159
  • 8-Kanalrelais 8-Kanalrelais
  • Verwendung:

  • Lichtfernsteuerung
  • Garagen- / Einfahrtstor bei Bedarf öffnen
  • On-Demand-Messung
  • Drahtlose Spielzeugsteuerung (RC-Technik, benutzerdefinierte Projekte ...)
  • Quellcode mit Header-Datei IRremote.h zum Laden des Signals und 1x Relaissteuerung:

  • Die Rückkehrcodes stammen von einer Schaltfläche. Gibt bei wiederholtem Drücken abwechselnd 820, 20 zurück. Derselbe Code, der unter RC5 wiederholt wird, wird wiederholt, wenn Sie die Taste gedrückt halten.
  • /*|----------------------------------------------------------|*/
    /*|SKETCH PRE NACITANIE KODOV Z DIALKOVYCH OVLADACOV         |*/
    /*|VYHOTOVIL: MARTIN CHLEBOVEC                               |*/
    /*|EMAIL: martinius96@gmail.com                              |*/
    /*|DOSKA:  Arduino Uno, Mega, Nano, NEFUNGUJE NA ESP8266     |*/
    /*|WEB: https://arduino.php5.sk                              |*/
    /*|LICENCIA: MIT                                             |*/
    /*|----------------------------------------------------------|*/
    #include <IRremote.h> //kniznica pre senzor KY-022
    int led = 13;
    int ledstate = LOW;
    int RECV_PIN = 8;
    IRrecv irrecv(RECV_PIN); //KY-022 na RECV VYVODE
    decode_results results;
    void setup() {
      pinMode(led, OUTPUT);
      Serial.begin(115200);
      irrecv.enableIRIn(); //prijimaj signaly
    }
    
    void loop() {
      if (irrecv.decode(&results)) {
        Serial.println("Zaznamenany kod: ");
        Serial.println(results.value, HEX);
        String abc = String(results.value, HEX);
        if ((abc == "820") || (abc == "20")) { //hodnoty tlacidla hore na ovladaci
          ledstate = !ledstate;
          digitalWrite(led, ledstate);
        }
        irrecv.resume(); // Povol nacitavanie dalsich hodnot
      }
      delay (100); // kratky delay, odrusenie citania chyb
    }
    
          
    IR ovládanie relé - schéma zapojenia

    Ein Programm zum Erhalten eines Fernsteuerungsprotokolls

    /*
     * IRremote: IRrecvDump - dump details of IR codes with IRrecv
     * An IR detector/demodulator must be connected to the input RECV_PIN.
     * Version 0.1 July, 2009
     * Copyright 2009 Ken Shirriff
     * http://arcfn.com
     * JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
     * LG added by Darryl Smith (based on the JVC protocol)
     */
    
    #include <IRremote.h>
    
    int RECV_PIN = 8;
    
    IRrecv irrecv(RECV_PIN);
    
    decode_results results;
    
    void setup()
    {
      Serial.begin(115200);
      irrecv.enableIRIn(); // Start the receiver
    }
    
    
    void dump(decode_results *results) {
      // Dumps out the decode_results structure.
      // Call this after IRrecv::decode()
      int count = results->rawlen;
      if (results->decode_type == UNKNOWN) {
        Serial.print("Unknown encoding: ");
      }
      else if (results->decode_type == NEC) {
        Serial.print("Decoded NEC: ");
    
      }
      else if (results->decode_type == SONY) {
        Serial.print("Decoded SONY: ");
      }
      else if (results->decode_type == RC5) {
        Serial.print("Decoded RC5: ");
      }
      else if (results->decode_type == RC6) {
        Serial.print("Decoded RC6: ");
      }
      else if (results->decode_type == PANASONIC) {
        Serial.print("Decoded PANASONIC - Address: ");
        Serial.print(results->address, HEX);
        Serial.print(" Value: ");
      }
      else if (results->decode_type == LG) {
        Serial.print("Decoded LG: ");
      }
      else if (results->decode_type == JVC) {
        Serial.print("Decoded JVC: ");
      }
      else if (results->decode_type == AIWA_RC_T501) {
        Serial.print("Decoded AIWA RC T501: ");
      }
      else if (results->decode_type == WHYNTER) {
        Serial.print("Decoded Whynter: ");
      }
      Serial.print(results->value, HEX);
      Serial.print(" (");
      Serial.print(results->bits, DEC);
      Serial.println(" bits)");
      Serial.print("Raw (");
      Serial.print(count, DEC);
      Serial.print("): ");
    
      for (int i = 1; i < count; i++) {
        if (i & 1) {
          Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
        }
        else {
          Serial.write('-');
          Serial.print((unsigned long) results->rawbuf[i]*USECPERTICK, DEC);
        }
        Serial.print(" ");
      }
      Serial.println();
    }
    
    void loop() {
      if (irrecv.decode(&results)) {
        Serial.println(results.value, HEX);
        dump(&results);
        irrecv.resume(); // Receive the next value
      }
    }