Relay control by remote control


Functional Description:

  • Relay and power control via remote control.
  • The transmission medium is an infrared diode on the remote control (transmitter) and on the receiver - module KY-022.
  • The received signal can be decoded and assigned a specific action that is controlled by Arduino. Measure the quantity, send it to the server. Turn on output, lighting, boiler, drawer on demand, perform time action, sequence.
  • Use is simple and versatile. The receiver range is up to 10 meters. Can be used for various protocols: NEC, RC5, RC6, SONY, JVC.
  • Used hardware:

  • Arduino Nano Arduino Nano
  • KY-022 receiverKY-022
  • 8-channel relay 8-channel relay
  • Exploitation:

  • Remote light control
  • Open Garage / Entrance Gate on Demand
  • On Demand Measurement
  • Wireless toy controls (RC technique, custom projects ...)
  •       

    Source code with header file IRremote.h for signal loading and 1x relay control:

          
  • Return codes are from one button. Returns 820, 20 alternately for repeated presses. The same code repeated under RC5 is repeated when you hold down the button.
  • /*|----------------------------------------------------------|*/
    /*|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
    }