| ESP32 schaltet FunksteckdoseZwei Taster, der Mikrocontroller ESP32, ein Funksender und eine Funksteckdose sind die Hauptwirkenden in der
folgenden Schaltung. Mit einem Taster, der für EIN steht, soll via Funk eine Funksteckdose eingeschaltet werden. Mit dem
zweiten Taster, der für AUS steht, soll sie wieder ausgeschaltet werden können.
FunkfernbedienungMit der Fernbedienung von deleyCON, Typ MK2402, können vier Funksteckdosen geschaltet werden. Die zu der Funkfernbedienung passende Funksteckdose von deleyCON (MK2401). Die Steckdose ist für 230V ausgelegt und
kann Abnehmer bis 1100 W schalten. Funkfrequenz beträgt 433 (433,05 – 434,79) MHz. Verpackungsinfoschild Am Gehäuse der Steckdose befindet sich ein Wahlschalter mit vier Positionen. Mit ihm kann bestimmt werden, mit welchem Kanal der Funkfernbedienung die Steckdose geschaltet werden soll.
|
Der Funksender FS1000A wird meist mit dem oben abgebildeten Empfänger als Set angeboten. Der Sender arbeitet mit einer Betriebsspannung von 3,5 bis 12 V DC. Seine Reichweite ist von der Betriebsspannung abhängig. Sie kann weiterhin durch Anlöten einer Antenne erweitert werden. Pinbelegung von links nach rechts: Data, VCC, Masse.
Mit dem Level Converter werden die Signale des Funksenders, die 5V betragen, an den Mikrocontroller ESP32 angepasst. ESP32 arbeitet mit 3,3V. Höhere Spannungen können den Mikrocontroller beschädigen.
Der Mikrocontroller ESP32
Bei dem Versuch greifen wir auf die Hilfe der Bibliothek RCSwitch.h, die wir in beiden Fällen einsetzen, zurück.
Sie ist unter der Adresse
https://github.com/sui77/rc-switch
zu finden. Es werden hier auch Hilfsprogramme, die man bei Experimenten mit Funkgeräten nutzen kann,
zur Verfügung gestellt.
Schaltplan zum Auslesen des Funkcodes mit ESP32.
Testschaltung mit Funkempfänger zum Auslesen des Funkcodes.
#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( mySwitch.getReceivedDelay() ); Serial.print(" microseconds / "); Serial.print("Protocol: "); Serial.println( mySwitch.getReceivedProtocol() ); mySwitch.resetAvailable(); } } // ***********************************************************
Nachdem die Schaltung aufgebaut und das Programm hochgeladen wurde, kann der Funkcode der Fernbedienung ermittelt
werden. Man startet den seriellen Monitor und betätigt mehrmals die Fernbedienung. Beim Betätigen jeder Taste an der Fernbedienung
erhalten wir andere Ergebnisse. Sie könnten auf dem seriellen Monitor wie folgt aussehen:
Ergebnisse auf dem seriellen Monitor
Da die Funk-Codes für die einzelnen Tasten der Funkfernbedienung ermittelt wurden, kann man sich jetzt der
eigentlichen Schaltung widmen. In dem Beispiel verwenden wir Code-Schlüssel für die zwei ersten Tasten (ON und OFF) der
Fernbedienung. Den Kanalschalter auf der Steckdose stellen wir in dem Fall entsprechend auf den ersten Kanal. Die Schaltung ist
äußerst simpel. Sie besteht lediglich aus vier Komponenten: ESP32, den Funksender und zwei Tastern. In dem Beispiel wird die
Steckdose mit den zwei Tastern einfach nur ein- und ausgeschaltet. Man kann jedoch die Aufgabe erweitern und mit einem neuen
Sketch das Schalten der Steckdose (oder Steckdosen) automatisieren und sie in Abhängigkeit von Zeit, Helligkeit oder anderen
Größen automatisch ein- bzw. ausschalten.
Der Schaltplan
Die Testschaltung
#include <RCSwitch.h> // Bibliothek einbinden RCSwitch mySwitch = RCSwitch(); int Sende_GPIO = 23; // GPIO 23 = Pin 23 int Taster_EIN = 32; // GPIO 32 = Pin 32 int Taster_AUS = 33; // GPIO 33 = Pin 33 void setup() { mySwitch.enableTransmit(Sende_GPIO); // Senden initieren pinMode (Taster_EIN, INPUT_PULLUP); // Eingang Taster EIN pinMode (Taster_AUS, INPUT_PULLUP); // Eingang Taster AUS } void loop() { if (digitalRead(Taster_EIN) == LOW) { // Taster EIN betätigt? mySwitch.send (83029, 24); // Funksteckdose EIN } if (digitalRead(Taster_AUS) == LOW) { // Taster AUS betätigt? mySwitch.send (83028, 24); // Funksteckdose AUS } }
Es synchron gedimmt.
Kurzvideo
Google-Suche auf MEINE-SCHALTUNG.de : |