leistungsverstärker für Proportionalventil


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Lichteffekte via Funk

(Funkfernbedienung, Funkempfänger, Arduino, 433 MHz)

Die Schaltung „Lichteffekte via Funk“ besteht aus neun Komponenten. Neben einer Funkfernbedienung wirken hier ein Funkempfänger, Arduino Nano und drei Leuchtdioden mit drei Vorwiderständen mit. Das Experiment ist schnell definiert. Mit einer Funkfernbedienung sollen mithilfe eines Funkempfängers und Arduino Nano drei Leuchtdioden zum Leuchten gebracht werden. Damit die Übung als „Lichteffekte“ bezeichnet werden kann, sollen die Leuchtdioden, je nach gedrückter Taste an der Fernbedienung, einzeln oder gruppenweise nach verschiedenen Mustern zum Leuchten gebracht werden.

Funkfernbedienung

Bei der Funkfernbedienung handelt es sich um ein deleyCON Gerät (Typ MK2402), das problemlos im Baumarkt oder online (Amazon, Ebay etc.) erworben werden kann. Grundsätzlich werden mit der Fernbedienung Funksteckdosen geschaltet. Das Gerät stellt vier Schaltkanäle mit je zwei Drucktasten (ON, OFF) zur Verfügung.
Das Gerät benötigt eine 12 V Batterie (A23), die normalerweise im Lieferumfang enthalten ist. Seine Abmessungen betragen ca. 100 x 35 x 20 (LxBxH) mm. Die Funkfrequenz liegt im Bereich 433,05 - 434,79 MHz.

Funkfernbedienung

Funkfernbedienung delayCON

Verpackungsschild

Verpackungsschild

Arduino Nano

Arduino Nano

Arduino Nano empfängt mithilfe des Empfänger-Moduls die Funksignale von der Fernbedienung und schaltet entsprechend die Leuchtdioden ein bzw. aus.

Arduino

Funkempfänger

Bei dem Funkempfänger handelt es sich um ein fertiges elektronisches Modul, das Funksignale im Sendebereich von 433 MHz empfangen kann. Das Modul kann zusammen mit einem Sender kostengünstig online erworben werden. Die Module sind für einen Sendeempfangsbereich von einigen Metern ausgelegt. Durch Anlöten von einer Antenne kann die Reichweite erhöht werden. Der Empfänger arbeitet mit 5 VDC. Die Empfangsempfindlichkeit liegt bei -10 dB. Die Abmessungen betragen 30 x 14 mm.

Funkempfänger

Funkempfänger mit angelöteter Antenne

Funkempfänger

Funkempfänger Rückseite

Signale der Fernbedienung auslesen

Bevor die Fernbedienung für unsere Zwecke eingesetzt werden kann, muss festgestellt werden, was sie sendet. Zu diesem Zweck wird der Funkempfänger mit Arduino verbunden und Arduino mit passendem Programm ausgestattet. In dieser Phase des Experimentes kommt der serielle Monitor zum Einsatz.
In dem Beispiel verwenden wir die Arduino Bibliothek RCSwitch.h. Sie findet man im Internet unter dieser Adresse:
https://github.com/sui77/rc-switch

Der Schaltplan

Der Schaltplan

Die Testschaltung

Die Testschaltung

Die Bibliothek RCSwitch.h enthält unter anderem das Beispielprogramm ReceiveDemo_Simple, das wir hier verwenden.

// ***********************************************************
// Testprogramm Funk-Empfang
// ReceiveDemo_Simple
// ***********************************************************
#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0); 
}

void loop() {
  if (mySwitch.available()) {
    Serial.print("Received ");
    Serial.print( mySwitch.getReceivedValue() );
    Serial.print(" / ");
    Serial.print( mySwitch.getReceivedBitlength() );
    Serial.print("bit ");
    Serial.print("Protocol: ");
    Serial.println( mySwitch.getReceivedProtocol() );

    mySwitch.resetAvailable();
  }
}    
  

Nachdem das Programm hochgeladen wurde, kann man die Resultate auf dem seriellen Monitor betrachten. Damit die Ergebnisse auf dem Monitor erscheinen können, muss natürlich eine Taste auf der Funkfernbedienung betätigt werden. Jeder Taste ist eine andere Code-Zahl zugeordnet. Diese Zahlen werden zu späterem Zeitpunkt in dem Hauptprogramm verwendet.

Ergebnisse

Ergebnisse auf dem seriellen Monitor

Leuchtdioden via Funk schalten

Sobald der Funkcode der Funksignale bekannt ist, kann man sich dem eigentlichen Programm (Sketch) widmen und die Leuchtdioden zum Leuchten bringen. Das Programm wird in vier Teile, die als Unterprogramme aufgefasst werden, unterteilt. In jedem Unterprogramm werden die drei Leuchtdioden nach anderem Muster zum Blinken gebracht. Die Rolle des Auslösers übernimmt die Funkfernbedienung, die bei jedem Tastendruck ein Funk-Signal versendet.

// ***********************************************************************************************
// Lichteffekte via Funk
// Funksignale empfangen und auswerten
// Sketch Arduino Nano
// Arduino IDE 1.8.19
// ***********************************************************************************************

#include <RCSwitch.h>                                  // Bibliothek einbinden

RCSwitch mySwitch = RCSwitch();
int LED_Rot = 3;                                       // Digitaler Ausgang 3 / Rote LED
int LED_Gruen = 4;                                     // Digitaler Ausgang 4 / Grüne LED
int LED_Blau = 5;                                      // Digitaler Ausgang 5 / Blaue LED
int LED_NR;

// ***********************************************************************************************

void setup() {

    mySwitch.enableReceive(0); 
    pinMode (LED_Rot, OUTPUT);                         // Pins 3, 4 und 5 als Ausgänge
    pinMode (LED_Gruen, OUTPUT);
    pinMode (LED_Blau, OUTPUT);
}
// ***********************************************************************************************

void loop() {
  if (mySwitch.available()) {                          // Funksingnal liegt an?
    
      long FCode = mySwitch.getReceivedValue();        // Funkcode lesen

      if (FCode == 83029) { LED_Muster_1(); }          // Taste 1 - ON
      if (FCode == 86101) { LED_Muster_2(); }          // Taste 2 - ON
      if (FCode == 70741) { LED_Muster_3(); }          // Taste 3 - ON
      if (FCode == 21589) { LED_Muster_4(); }          // Taste 4 - ON
    
      if (FCode == 83028) { LEDs_AUS (); }             // Taste 1 - OFF
      if (FCode == 86100) { LEDs_AUS (); }             // Taste 2 - OFF
      if (FCode == 70740) { LEDs_AUS (); }             // Taste 3 - OFF
      if (FCode == 21588) { LEDs_AUS (); }             // Taste 4 - OFF
      delay (1000);
      mySwitch.resetAvailable();                       // Auslesen abgeschlossen (Reset)
  }
}
// ***********************************************************************************************

void LED_Muster_1 () {                                 // LED-Muster 1 (Unterprogramm)
    LED_NR++;                                          // Mit jedem Tastendruck wird die nächste
    LEDs_AUS ();                                       // LED eingechaltet
    if (LED_NR == 1) { digitalWrite (LED_Rot, HIGH);  }
    if (LED_NR == 2) { digitalWrite (LED_Gruen, HIGH);  }
    if (LED_NR == 3) { 
        digitalWrite (LED_Blau, HIGH);
        LED_NR = 0; }
}

// ***********************************************************************************************
void LED_Muster_2 () {                                 // LED-Muster 2 (Unterprogramm)
    for (int i=0; i<20; i++) {                         // Alle drei LEDs blinken gleichzeitig
        digitalWrite (LED_Rot, HIGH);
        digitalWrite (LED_Gruen, HIGH);
        digitalWrite (LED_Blau, HIGH);
        delay (200);
        LEDs_AUS (); 
        delay (200);
    }
}

// ***********************************************************************************************
void LED_Muster_3 () {                                 // LED-Muster 3 (Unterprogramm)
    for (int i=0; i<10; i++) {                         // Die LEDs blinkeln mehrmals nacheinander
        for (int j=0; j<5; j++) {
            digitalWrite (LED_Rot, HIGH);
            delay (100);
            digitalWrite (LED_Rot, LOW);
            delay (100);
        }
        for (int j=0; j<5; j++) {
            digitalWrite (LED_Gruen, HIGH);
            delay (100);
            digitalWrite (LED_Gruen, LOW);
            delay (100);
        }        
        for (int j=0; j<5; j++) {
            digitalWrite (LED_Blau, HIGH);
            delay (100);
            digitalWrite (LED_Blau, LOW);
            delay (100);
        }        
    }
}

// ***********************************************************************************************
void LED_Muster_4 () {                                 // LED-Muster 4 (Unterprogramm)
    for (int i=0; i<20; i++) {                         // Die LEDs blinken nacheinander nur einmal
        digitalWrite (LED_Rot, HIGH);
        delay (100);
        digitalWrite (LED_Rot, LOW);

        digitalWrite (LED_Gruen, HIGH);
        delay (100);
        digitalWrite (LED_Gruen, LOW);

        digitalWrite (LED_Blau, HIGH);
        delay (100);
        digitalWrite (LED_Blau, LOW);       
    }
}

// ***********************************************************************************************
void LEDs_AUS () {                                     // Alle LEDs abschalten
    digitalWrite (LED_Rot, LOW);
    digitalWrite (LED_Gruen, LOW);
    digitalWrite (LED_Blau, LOW);
}
// ***********************************************************************************************    
  


Kurzvideo

Kurzvideo


Weitere Themen:



Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz