| | |
| Stránka: 1 z 1
| [ Príspevok: 1 ] | |
Autor | Správa |
---|
Registrovaný: 17.02.14 Prihlásený: 31.03.24 Príspevky: 450 Témy: 198 Bydlisko: Poprad-okolie |
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. Na prijatie IR signálu môžeme využiť radu dostupných senzorov, napríklad modul KY-022. Technické špecifikácie KY-022:Operačné napätie: 2.7 - 5.5V 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é. 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: /*|----------------------------------------------------------|*/ /*|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:
|
|
| Stránka: 1 z 1
| [ Príspevok: 1 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|