Ovládanie relé na dialku

bauer224
Příspěvky: 12
Registrován: 05 úno 2018, 22:47
Reputation: 0

Ovládanie relé na dialku

Příspěvek od bauer224 » 10 pro 2019, 21:25

Dobrý deň potreboval by som ovládať relé pomocou NFR24L01 a YL-105... ďakujem

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Ovládanie relé na dialku

Příspěvek od KamilV » 11 pro 2019, 07:12

A v čem je problém? Jaké je schema zapojení, kde je kód, který chybuje?

Jak to má fungovat? YL-105 je IR ovladač, chceš mít 1 arduino s IR přijímačem, které data přepošle přes 2.4 Ghz do druhého arduina, které ovládá relé? Proč jsou dvě?

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Ovládanie relé na dialku

Příspěvek od pavel1tu » 11 pro 2019, 10:47

YL-105 - tím myslíte kompletní alarm YL-105 ?
NFR24L01 - to je 2,4GHz vysílač/přijímač který se neumí připojit k žádnému AP, prakticky se používá pro komunikaci mezi sebou, na větší vzdálenosti (100m) dost nespolehlivě i při nižžších rychlostech.

1) rozmyslet si co chci aby to umělo, ne co za HW použiji.
2) podle toho co chci pohledat podobný projekt na internetu

10) zde pomůžeme až s problémy s realizací, nikdo to za Vás nevyrobí, když ani nevíte co chcete
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

ArduXPP
Příspěvky: 361
Registrován: 14 pro 2017, 19:31
Reputation: 0
Kontaktovat uživatele:

Re: Ovládanie relé na dialku

Příspěvek od ArduXPP » 11 pro 2019, 14:09

NFR24L01 je možné použít pro posílání dat do bluetooth :)

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Ovládanie relé na dialku

Příspěvek od martinius96 » 11 pro 2019, 22:42

Tu máš príklad pre vysielač a prijímač, komunikujú obojsmerne (dá sa využiť aj len jednosmerný prenos), t.j. v tomto prípade: Prijímač ti odpovie, čo od teba obdržal - od vysielača. Vysielač vysiela "vždy", prijímač až po prijatí dát raz.
Vysielač posiela hodnoty 0 až 10 dookola. Každých 50ms jednu hodnotu. Verím, že je zrejmé, ako program funguje, pomôže ti aj dokumentácia a upravíš si program pre svoj účel s ovládaním relé: https://maniacbug.github.io/RF24/

V programoch môžeš modifikovať aj vysielací výkon vo funkcii nRF.setPALevel, momentálne je LOW, môžeš použiť MIN, HIGH. MAX používaj iba ak napájaš modul cez 5V pin skrz YL-105!
Knižnica RF24: https://github.com/nRF24/RF24, importuj do Arduino IDE, respektíve do libraries.
Program pre vysielač:

Kód: Vybrat vše

// nRF24L01 vysielac
#include <SPI.h>
#include "RF24.h"
#define CE 4
#define CS 3
RF24 nRF(CE, CS);
int odozva = 0;
int prijem = 0;
byte adresaPrijimac[] = "prijimac00";
byte adresaVysielac[] = "vysielac00";

void setup() {
  Serial.begin(9600);
  nRF.begin();
  nRF.setDataRate( RF24_250KBPS );
  nRF.setPALevel(RF24_PA_LOW);
  nRF.openWritingPipe(adresaVysielac);
  nRF.openReadingPipe(1, adresaPrijimac);
  nRF.startListening();
}

void loop() {
  if (odozva >= 10) {
    odozva = 0;
  }
  nRF.stopListening();
  nRF.write( &odozva, sizeof(odozva) );
  nRF.startListening();
  while (nRF.available()) {
    nRF.read( &prijem, sizeof(prijem) );
  }
  Serial.println("Prijate data: ");
  Serial.println(prijem);
  Serial.println("Odozva: ");
  Serial.println(odozva);
  delay(50);
  odozva++;
}
Program pre prijímač:

Kód: Vybrat vše

// nRF24L01 prijimac
#include <SPI.h>
#include "RF24.h"
#define CE 4
#define CS 3
RF24 nRF(CE, CS);
int odozva = 0;
int prijem = 0;
byte adresaPrijimac[] = "prijimac00"; //adresa prijimac
byte adresaVysielac[] = "vysielac00"; //adresa vysielac

void setup() {
  Serial.begin(9600);
  nRF.begin();
  nRF.setDataRate( RF24_250KBPS );
  nRF.setPALevel(RF24_PA_LOW);
  nRF.openWritingPipe(adresaPrijimac);
  nRF.openReadingPipe(1, adresaVysielac);
  nRF.startListening();
}

void loop() {
  if ( nRF.available()) {
    while (nRF.available()) {
      nRF.read( &prijem, sizeof(prijem) );
    }
    Serial.println("Prijata volba: ");
    Serial.println(prijem);
    Serial.println("Odozva: ");
    Serial.println(odozva);
    nRF.stopListening();
    nRF.write( &odozva, sizeof(odozva) );
    switch (prijem) {
      case 0:
        //PRE HODNOTU STATE 0
        Serial.println("ZAPNEM RELE");
        break;
      case 1:
        //PRE HODNOTU STATE 1
        Serial.println("VYPINAM RELE");
        break;
      default:
        //PRE HODNOTU STATE 2 alebo inu
        Serial.print("HODNOTA Z ROZSAHU 2-10 --> nepridelena akcia");
        break;
    }
    nRF.startListening();
  }
}
Schéma zapojenia (použi zapojenie pre nRF24L01, je to schéma k inému projektu, pinout sedí):
Obrázek

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Ovládanie relé na dialku

Příspěvek od pavel1tu » 13 pro 2019, 06:43

ArduXPP píše:
11 pro 2019, 14:09
NFR24L01 je možné použít pro posílání dat do bluetooth :)
SUPER, proti mobilu ověřeno ?
To jsem netušil, objednal jsem jich 20 a přišlo mi jich 50, tak zásoby jsou ;)
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

bauer224
Příspěvky: 12
Registrován: 05 úno 2018, 22:47
Reputation: 0

Re: Ovládanie relé na dialku

Příspěvek od bauer224 » 15 pro 2019, 11:28

Ďakujem všetkým za odpovede :)
Takže potrebujem to spraviť tak že:

- pozostaval z Arduino nano + YL-105 a v tom NRF24L01+PA+LNA
- ďalej potrebujem ovládať tri tlačítka tlačítka a na primači aby tieto tri tlačítka spínali relé každé osobitne
- a potrebujem prepínač jeden a to keď prepnem do jednej polohy tak spinaci kontakt aby zopol rele na druhej strane, a druhu polohu mam rozpínaciu a aby zase rozpinaci zopol rele na druhej strane.
- a ešte ak sa dá pri strate signálu aby zoplo dalšie samostatné rele.

Ďakujem za pomoc :)

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Ovládanie relé na dialku

Příspěvek od martinius96 » 15 pro 2019, 13:24

Čo si už vyskúšal? Čo ti funguje, nefunguje?
Môžeš použiť daný program vyššie,ktorý som ti vypracoval. Obsahuje 3/4 z toho, čo potrebuješ.
Ďalej použiješ ešte debounce pre správne načítanie tlačidla po jeho stlačení bez zákmitov: https://www.arduino.cc/en/tutorial/debounce
Ak sa nemýlim, prijímač nemá ako určiť, či stratil spojenie, nakoľko nevysiela vždy, ale iba ako odpoveď vysielaču po prijatej informácii.

Môžeš tak odmerať čas od poslednej prijatej informácie funkciou millis(). Do premennej typu unsigned long načítaš čas posledného prijatia informácie. Ak do niekoľkých sekúnd (milisekúnd) nedostaneš odpoveď, urobíš danú akciu. Ak je rozdiel millis - tvoj_odmerany_millis viac ako xy milisekúnd. https://www.arduino.cc/reference/en/lan ... me/millis/
Všetko máš vopred pripravené, už len logicky použiť.

bauer224
Příspěvky: 12
Registrován: 05 úno 2018, 22:47
Reputation: 0

Re: Ovládanie relé na dialku

Příspěvek od bauer224 » 15 pro 2019, 20:53

Zdravím, ale ja som začiatočník a hladám niekoho kto by mi to spravil.

Uživatelský avatar
gilhad
Příspěvky: 774
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Ovládanie relé na dialku

Příspěvek od gilhad » 15 pro 2019, 21:53

bauer224 píše:
15 pro 2019, 20:53
Zdravím, ale ja som začiatočník a hladám niekoho kto by mi to spravil.
No to mas v podstate dve moznosti
1) zacit se ucit a zkouset a experimentovat, jit po jednotlivych malych krocich, kazdy dotahnout do funkcniho stavu a pak je pospojovat dohromady
2) mame tady subforum Nabidka prace https://www.arduino-forum.cz/viewforum.php?f=30 kde ti to nejspis nekdo za rozumnou cenu udela a nebudes potrebovat vedet skoro nic, staci si zaplatit

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host