Ovládanie relé diaľkovým ovládačom


Popis funkčnosti:

  • Ovládanie relé a výkonových prvkov prostredníctvom diaľkového ovládača.
  • Prenosovým médiom je infračervená dióda na diaľkovom ovládači (vysielači) a na prijímači - module KY-022.
  • Prijatý signál je možné dekódovať a priradiť mu špecifickú akciu, ktorú riadi Arduino. Odmeraj veličinu, odošli ju na server. Zapni výstup, osvetlenie, kotol, zásuvku na vyžiadanie, vykonaj časovú akciu, sekvenciu.
  • Použitie je jednoduché a univerzálne. Dosah prijímača je až 10 metrov. Možné použiť pre rôzne protokoly: NEC, RC5, RC6, SONY, JVC.
  • Použitý hardvér:

  • Arduino Nano Arduino Nano
  • KY-022 prijímačKY-022
  • 8-kanálové relé 8-kanálové relé
  • Využitie:

  • Vzdialené ovládanie svetiel
  • Otvorenie garážovej/vstupnej brány na vyžiadanie
  • Odmeranie veličiny na vyžiadanie
  • Bezdrôtové ovládanie hračiek (RC technika, vlastné projekty...)
  • Zdrojový kód s hlavičkovým súborom IRremote.h pre načítanie signálu a ovládanie 1x relé:

  • Návratové kódy sú z jedného tlačidla. Striedavo pri opakovaných stlačeniach vracia 820, 20. Pri držaní tlačidla sa opakuje rovnaký kód, testované pod RC5.
  • /*|----------------------------------------------------------|*/
    /*|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
    }