Arduino schéma - arduino.sk

Ovládanie relé IR ovládačom - Prijímač KY-022

Kompletné projekty s návodom a zdrojovým kódom
Príspevky: 84
Registrovaný: Uto 23. Dec 2014 2:15:50

Ovládanie relé IR ovládačom - Prijímač KY-022

Poslaťod martinius96 » Pia 10. Jan 2020 13:44:04

Dnes si predstavíme možnosť ovládania výstupov Arduina prostredníctvom infračerveného (IR) vysielača - napríklad diaľkového ovládača k televízoru či klimatizácii. Diaľkový ovládač, ktorý som odtestoval v tomto experimente je univerzálny od firmy SILVERCREST, model KH 2159. Ovládač je dostupný najčastejšie v reťazci LIDL, funguje na väčšinu televízorov, domácích kín, prehrávačov.
Obrázok
Na prijatie IR signálu môžeme využiť radu dostupných senzorov, napríklad modul KY-022.
Obrázok
Technické špecifikácie KY-022:
    Typ senzoru: IR prijímač
    Operačné napätie: 2.7 - 5.5V
    Spotreba: 0.4 - 1.5mA
    Prijímaci uhol: ± 45°
    Frekvencia: 38kHz
    Filter: 500lux
    Potencionálny dosah: 18m
    Typ prijímacej diódy: TL1838
    Podporované protokoly: NEC, RC5, RC6, JVC, SONY, Panasonic, AIWA RC-T501, WHYNTER a iné
Programová implementácia využíva najpoužívanejšiu knižnicu IRremote pre tento IR prijímač. Knižnica je navrhnutá iba pre AVR procesory, teda AtMega328P použitom v Arduine a pribuzných. Pre použitie s inými architektúrami, napríklad ESP32 / ESP8266 je nutné použiť IRremoteESP8266. Obe knižnice sú dostupné napríklad na Githube. Knižnice je možné využiť aj pre vysielanie IR signálu (s vhodným modulom). V kombinácii s prijímačom v jednom programe je nutné opätovne inicializovať stav načítavania - známy "bug". V programe pre Arduino som využil funkcie knižnice pre načítanie protokolu a následne aj vysielaného kódu z diaľkového ovládača.

Pri stlačení tlačidla hore na diaľkovom ovládači mi Arduino načítalo protokol NEC a hodnotu 820. Pri opakovanom stlačení hodnotu 20. Pri držaní tlačidla sa vysielala stále rovnaká hodnota. Pri samostatnom stlačení tlačidla zase opačná z týchto dvoch hodnôt. Programovo som následne jednoduchou podmienkou nastavil, že sa má na výstupný vývod zapísať logická 0, logická 1 - opačný stav ako aktuálny. Sériou podmienok, alebo prepínačom (switch) môžeme ku každému načítanému kódu priradiť akciu. V mojom prípade som ovládal relé, konkrétne 8 na doske 8-channel relay, ktorá je vybavená elektromagnetickými relé SRD-5VDC-SL-C, ktorými je možné spínať až 10A pri 230V, teda celkový výkon 2300W na relé.
Obrázok
Ovládanie môže byť využité na rôzne akcie, napríklad pre ovládanie vianočného osvetlenia na dome, ovládanie RGB farieb LED pásikov, režimov, relé, ovládanie motor DC/AC, otváranie dverí, brány. Doplnkové ovládanie meraní zo senzorov, ďalšej komunikácie s inými perifériami cez Ethernet, SPI, UART, RS232 a pod. Takéto vzdialené ovládanie môže nájsť miesto aj v automatizácii.
Programová implementácia:
Kód: Vybrať všetko
/*|----------------------------------------------------------|*/
/*|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                              |*/
/*|----------------------------------------------------------|*/
#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
}

Schéma zapojenia:
Obrázok

Späť na Hotové projekty