Sada vysílač/přijímač 433Mhz – Praktické použití

V tomto článku si ukážeme jednoduchý příklad, jak se dá použít sada pro dálkové ovládání vysílač/přijímač 433Mhz.
434-7_sada-vysilac-prijimac-433mhz

V tomto článku si ukážeme jednoduchý příklad, jak se dá tato sada použít.

Cílem bude vytvořit jednoduché jednokanálové dálkové ovládání. Na straně vysílače použijeme generování PWM signálu o střídě 50%. Tento signál se bude generovat po dobu stisku tlačítka. Na straně přijímače tento signál zdekódujeme a pokud zdekódovaná střída odpovídá střídě 50%, rozsvítíme LED diodu. Dioda bude svítit, dokud se bude PWM signál vysílat (dokud bude tlačítko stisknuto). Napájení vysílače i přijímače se uskuteční pomocí USB kabelů, kterými se bude do desek s Attiny85 nahrávat program.

Kromě této sady (Sada vysílač-přijímač 433Mhz) budeme v této konstrukci používat:
2ks vývojové desky s mikrokontrolerem Attiny85
1ks senzorové tlačítko
2ks nepájivé kontaktní pole
Propojovací Dupont vodiče samec-samice
Arduino IDE + podpora pro Digispark Attiny85
MikroUSB kabel

Vysílač

Komponenty:
Vysílač ze sady
1ks nepájivé pole
1ks vývojová deska Attiny85
1ks senzorové tlačítko
propojovací vodiče

Schéma zapojení:

Arduino kód:

#define LED_BUILTIN B1 // Integrovana LED dioda na pinu B1
#define BUTTON B0 // Tlacitko na pinu B0
#define PWM_OUT B2 // Vystup PWM pro vysilac na pinu B2

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);  // Pin LED jako vystup
  pinMode(BUTTON, INPUT);  // Pin tlacitka jako vstup
  pinMode(PWM_OUT, OUTPUT);  // Pin pro PWM vystup jako vystup
}

void loop() {
  if (digitalRead(BUTTON)){ // Pokud je tlacitko sepnuto
    digitalWrite(LED_BUILTIN, HIGH); // rozsviti se integrovana LED
    analogWrite(PWM_OUT, 127); // vygeneruje se PWM 50%
  }else{ // Pokud tlacitko sepnuto neni
    digitalWrite(LED_BUILTIN, LOW); // zhasne LED
    analogWrite(PWM_OUT, 0);  // PWM 0%
  }
  
  delay(100);
}

Přijímač:

Komponenty:
Přijímač ze sady
1ks nepájivé pole
1ks vývojová deska Attiny85
propojovací vodiče

Schéma zapojení:

Arduino kód:

#define LED_BUILTIN B1 // integrovana LED dioda na pinu B1
#define PWM_IN_PIN B0  // PWM signal od prijimace na pinu B0

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);  // Pin LED jako vystup
  pinMode(PWM_IN_PIN, INPUT);  // pin PWM jako vstup
}

void loop() {
  unsigned long highTime = pulseIn(PWM_IN_PIN, HIGH); // Zmerime delku impulzu v log H
  unsigned long lowTime = pulseIn(PWM_IN_PIN, LOW);  // Zmerime delku impulzu v log L
  unsigned long cycleTime = highTime + lowTime;  // Vypocitame celkovou delku PWM cyklu
  float dutyCycle = ((float)highTime / (float)cycleTime) * 100; // Vypocitame stridu PWM v %

  if ((dutyCycle >= 45.0) && (dutyCycle <= 50.0)){  // Pokud je strida v rozsahu 45 - 50%
    digitalWrite(LED_BUILTIN, HIGH);  // rozsviti se integrovana LED 
  }else{
    digitalWrite(LED_BUILTIN, LOW);  // zhasne LED
  }

  delay(100);
}

Tím je základ jednokanálového dálkového ovládání hotov. Pokud budeme chtít vytvořit ovládání s více kanály, na straně vysílače jednoduše na volné piny desky s Attiny85 připojíme další tlačítka a jednotlivým tlačítkům přiřadíme jinou střídu PWM. Na straně přijímače pak přidáme podmínky IF pro rozsahy použitých stříd a přiřadíme k volným pinům na desce Attiny85. Pokud by se nedostával potřebný počet volných pinů, je potřeba zvolit některou z větších Arduino desek, kde bude volných pinů dostatek.

Je potřeba mít na paměti, že tyto rádiové moduly jsou jedny z nejjednodušších a tudíž při přenosu dochází k určitému zkreslení přenášené informace. V našem případě jsme posílali PWM o střídě 49,8% a na výstupu přijímače byla detekována střída cca 46%. Proto je v ukázkovém kódu nastavena podmínka, která rozsvítí LED, pokud je detekovaná střída v rozsahu 45 – 50%.

Pro zjištění skutečné hodnoty dekódované střídy lze na straně přijímače nechat posílat hodnotu proměnné dutyCycle na sériovou konzoli a podle zjištěných hodnot poté upravit rozsah v podmínce IF.

Pokud by bylo zkreslení pro konkrétní použití příliš velké, lze zaměnit modul přijímače za některý z typů s pokročilejší konstrukcí přijímače, např. tento: RXB6. S tímto přijímačem a původním vysílačem ze sady jsme naměřili zkreslení v desetinách %.

Share on facebook
Facebook
Share on google
Google+
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on pinterest
Pinterest

Napsat komentář

Nejčtenější články

Akční nabídka

Arduino UNO R3

ATmega328P, Klon

160 Kč

RobotDyn 4×3

Maticová analogová klávesnice

91,10 Kč

Arduino Gamepad

Joystick Shield

146,90 Kč