Elektronik-Labor
Projekte
Mikrocontroller
Raspberry
Für ein Projekt möchte ich eine 230V-Steckdose mit 3,3V-Signalen aus dem PiPico schalten können. Leider gibt es keine Steckdosen zu kaufen, die einen potentialfreien (2-Draht) Eingang haben. Ich habe mich gegen WLAN-Steckdosen entschieden, denn diese erfordern einen größeren Overhead an Programmen/Protokollen und einen PiPico W. Daher wurden Funksteckdosen verwendet, die von einem (normalerweise) batteriebetriebenen Handsender mit einem Funksignal mit 433 Mhz angesteuert werden. Diese haben gegenüber den WLAN-Steckdosen auch den Vorteil, dass man sie ggf. im Sekundentakt ein- und ausschalten kann.
3 Funksteckdosen mit einem Handsender Typ DAYHOME BMS98
Zwei Optokoppler (Hier Typ PC123, recht beliebig)
3 mm breite Kupferfolie
5-adriges Verbindungskabel
PiPico
Der Handsender wird mit einer 3V CR2032 Batterie betrieben, die im vollen Zustand ca 3,3 V liefert. Eine Versorgung mit den 3,3V von Pin 36 des PiPico ist also kein Problem.
Der geöffnete Sender zeigt auf der Platine eine Matrixschaltung. In den Tasten sind Grafit-Flächen, die die meanderförmigen Bereiche kurzschließen. Immer zwei der Kontakte führen gemeinsam zu einem Pin des Auswerte-IC. Die „langen“ Kontake sind relativ hochohmig mit der positiven Betriebsspannung verbunden. Die „kurzen“ Kontake sind relativ niederohmig mit der negativen Betriebsspannung verbunden.
Mir reicht es aus, die Tasten anzusteuern, die alle Steckdosen auf einmal schalten. Damit bleiben auch die Einzeltaster erhalten, die für das „Pairing“ verwendet werden. Drei Signalleitungen reichen, weil die „plus“-Seite der Tastaturmatrix für beide Taster gleich ist. Für die Kontaktierung habe ich ein Stück Karton zugeschnitten und mit Kupferfolie beklebt (Siehe Foto)
Daran kommen die 3 Drähte:
Das Ganze kommt – mit den Versorgungsleitungen - dann wieder in das Gehäuse:
Der Optokoppler könnte mit der Begrenzung des Ausgangsstroms im Code auch ohne Vorwiderstand betrieben werden. Da ich zur Anzeige noch eine LED parallel schalten wollte - und der Optokoppler eine niedrigere Durchlassspannung hat - ist der Widerstand dann doch drin geblieben.
Für den Schaltimpuls reichen 200ms aus und nach 800ms Pause kann auch gleich in die Gegenrichtung geschaltet werden.
---
// Demoprogramm Ansteuerung Funksteckdose
const int pin_on = 6, pin_off = 22;
void setup() {
pinMode(pin_on, OUTPUT);
pinMode(pin_off, OUTPUT);
gpio_set_drive_strength(pin_on, GPIO_DRIVE_STRENGTH_2MA); // anstelle Vorwiderstand für die LED
gpio_set_drive_strength(pin_off, GPIO_DRIVE_STRENGTH_2MA);
gpio_put(pin_on, 0);
gpio_put(pin_off, 0);
sleep_ms(1000);
}
void loop() {
for (int i=0; i<3; i++) { // 3x ein/aus
gpio_put(pin_on, 1);
sleep_ms(200);
gpio_put(pin_on, 0);
sleep_ms(800);
gpio_put(pin_off, 1);
sleep_ms(200);
gpio_put(pin_off, 0);
sleep_ms(800);
}
sleep_ms(5000); // 5 Sekunden Pause
}
---------------