Arduino 433 MHz Funksteckdosen

Den Testaufbau vom Beitrag „Arduino PCF8574 lesen und schreiben“ haben wir erweitert und den I2C-Funksender für 433 MHz Funksteckdosen (I2HFS) angeschlossen.

Das Beispiel soll zeigen wie leicht es ist mit dem I2HFS-Sendemodul Funksteckdosen zu schalten.

 

Hardware

das Funkmodul ist wie im Bild an einem Arduino-UNO angeschlossen.

  • ws = 5V-Versorgung  an Pin +5v
  • bn = Masse an Pin GND
  • gn = SDA an Pin A4
  • ge = SCL an Pin A5
Anschluss des Arduino-UNO an den 433 MHz Funksender

Anschluss des Arduino-UNO an den 433 MHz Funksender

Verwendet werden die Pollin Funksteckdosen mit folgenden DIP-Schalter Einstellungen

Steckdose A

I2HFS-SD-A

Steckdose B

I2HFS-SD-B

Steckdose C

I2HFS-SD-C

 

Protokoll

Auf dem I2HFS-Modul ist am DIP-Schalter das Protokoll “1” für die Pollin Steckdosen eingestellt.
An dieser Stelle muss im Programm nichts mehr gemacht werden.

 

Systemcode

Der Systemcode muss in der Startroutine void loop() zum Funkmodul geschickt werden.

  // Systemcode in Register 0 eintragen
  Wire.beginTransmission(I2C_FS_ADDR); // Start Übertragung zum Funksender 
  Wire.write(0);                       // Register 0
  Wire.write(0);                       // DIP1 = "ON" = 0
  Wire.write(0);                       // DIP2 = "ON" = 0
  Wire.write(0);                       // DIP3 = "ON" = 0
  Wire.write(15);                      // DIP4 = "OFF" = 15 = 0F
  Wire.write(15);                      // DIP5 = "OFF" = 15 = 0F
  Wire.endTransmission();              // Ende

 

Schaltbefehle

Die Steckdose A schaltet EIN wenn in das Register 1 eine 129 eingetragen wird

      Wire.beginTransmission(I2C_FS_ADDR);  // Start Übertragung zum Funksender 
      Wire.write(1);                        // Register 1
      Wire.write(129);                      // Steckdose A EIN
      Wire.endTransmission();               // Ende

 

 

Die Steckdose A schaltet AUS wenn in das Register 1 eine 129 eingetragen wird

      Wire.beginTransmission(I2C_FS_ADDR);  // Start Übertragung zum Funksender 
      Wire.write(1);                        // Register 1
      Wire.write(1);                        // Steckdose A EIN
      Wire.endTransmission();               // Ende

 

Demo-Program

Das Demo-Programm habe ich so aufgebaut, dass die Steckdose im Serial-Monitor-Fenster eingegeben werden kann.

Viel Spaß beim Testen 🙂

 

 

/* 
 ==============================================
         Test I2C-Funksender 433 MHz
 ==============================================
 
Welche Steckdose schalten soll wird über die serielle Schnittstelle vorgegeben
 
 1,1   schaltet Steckdose A EIN
 1,0   schaltet Steckdose A AUS
 
 2,1   schaltet Steckdose A EIN
 2,0   schaltet Steckdose A AUS

 4,1   schaltet Steckdose C EIN
 4,0   schaltet Steckdose C AUS
  
 */

#include <Wire.h>
#define I2C_FS_ADDR  48 >> 1  // I2C-Funksender Adresse als 7 Bit


int  SEL=32;       // serielle Datenlänge
char Empfang[32];  // Epfangsdaten der seriellen Schnittstelle

int WERT;
int KANAL;

void setup() {
  Serial.begin(9600);      // Serielle Schnittstelle konfigurieren
  Wire.begin();             // I2C-Pins definieren
  
  // Systemcode in Register 0 eintragen
  Wire.beginTransmission(I2C_FS_ADDR); // Start Übertragung zum Funksender 
  Wire.write(0);                       // Register 0
  Wire.write(0);                       //  DIP1 = "ON" = 0
  Wire.write(0);                       //  DIP2 = "ON" = 0
  Wire.write(0);                       //  DIP3 = "ON" = 0
  Wire.write(15);                      //  DIP4 = "OFF" = 15 = 0F
  Wire.write(15);                      //  DIP5 = "OFF" = 15 = 0F
  Wire.endTransmission();              // Ende
  
  Serial.println("Systemcode wurde eingestellt!"); 
}

void loop() { 
  int i=0;
  while (Serial.available() > 0) {
    KANAL =Serial.parseInt();  
    WERT = Serial.parseInt();  
    
    Serial.println(KANAL);  
    Serial.println(WERT); 
    
    if (WERT == 1) { 
      Wire.beginTransmission(I2C_FS_ADDR);  // Start Übertragung zum Funksender 
      Wire.write(1);                        // Register 1
      Wire.write(KANAL + 128);              // Steckdose A EIN
      Wire.endTransmission();               // Ende
      
      Serial.print(KANAL);
      Serial.println(" EIN"); 
    } 
  
    if (WERT == 0) { 
      Wire.beginTransmission(I2C_FS_ADDR);  // Start Übertragung zum Funksender 
      Wire.write(1);                        // Register 1
      Wire.write(KANAL);                    // Steckdose A AUS
      Wire.endTransmission();               // Ende
      
      Serial.print(KANAL);
      Serial.println(" AUS"); 
    } 
  }
}

 

Links

Der Bausatz kann im Onlineshop unter www.horter-shop im Bereich 433 MHz Funksender bestellt werden.

Hier noch Links zu den Datenblättern und zur Beschreibung

Datenblatt       Schaltplan       Beschreibung

 

Weitere Funksteckdosen-Typen

In diesem Blogbeitrag findet ihr Beschreibungen für andere Funksteckdosen-Typen

https://www.horter.de/blog/funksteckdosen-fuer-433-mhz-funkmodul/

 

 

 

Ein Kommentar

  1. Hallo,
    habe gerade erfolgreich den I2C-Funksender 433 MHz mit Funksteckdosen von Brennenstuhl (RCS 1000N) und ELRO (AB440) mit dem gleichen Protokoll wie die Pollin Steckdosen angesteuert.
    Funktioniert hervorragend. 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.