Hintergrund
Ich baue eine einfache Webanwendung mit Himbeere als Server. Ich benutze diese Himbeere auch, um ein Arduino zu steuern. Ein Benutzer kann Befehle über den Browser an die Himbeere senden und einige Arduino-Funktionen steuern!
Was ich möchte
Ich möchte ein Arduino verwenden, um eine Lampe ein- und auszuschalten, parallel zu einem normalen manuellen Schalter, mit dem ich die Lampe ein- und ausschalten kann, wie folgt:
1: Wenn die Lampe aus ist und der Schalter auch auf OFF steht (offener Schalter), kann ich die Lampe einschalten, indem ich den Schalter benutze, indem ich ihn in die ON-Position bringe (Schließen des Schalters). Dann teilt das Überwachungssystem Arduino (und dem Webserver) mit, dass der Schalter eingeschaltet / geschlossen ist und das Licht eingeschaltet ist.
2: Ich kann Arduino verwenden, um das Licht auszuschalten, ohne den Schalter unbedingt auf die Position AUS zu stellen. Wenn das Licht AUS ist (weil ich es mit einem Arduino ausgeschaltet habe) und der Schalter in der EIN-Position (geschlossen) ist, sollte ich es auf eine Weise, die ich wahrnehmen kann, in die AUS-Position und dann wieder in die EIN-Position schalten müssen diese Änderungen und senden Sie sie an Arduino (und folglich an den Webserver).
3 (Mögliche Verbesserung?): Immer wenn ich den Zustand des Schalters ändere, würde das Licht seinen Zustand in das Gegenteil des aktuellen ändern: Wenn das Licht an ist, geht es aus und umgekehrt, unabhängig vom Schalter Zustand.
Das Problem
Wie kann ich eigentlich wissen, ob der Schalter ein- und ausgeschaltet ist? Gibt es trotzdem einen Sensor, eine elektronische Schaltung oder Komponente, die erkennen kann, ob der Schalter ein- oder ausgeschaltet ist? Ich habe darüber nachgedacht, ein Relais zur Steuerung des Lichts zu verwenden, abhängig vom Zustand des Lichts, das auf dem Arduino / Webserver gespeichert ist. Ist dies ein zuverlässiger Weg (ich meine, mit einem Relais), dies zu tun?
Ich freue mich über jede mögliche Hilfe, ich interessiere mich für IoT und möchte einige einfache Anwendungen für die Heimautomatisierung machen; das ist mein erster! Vielen Dank im Voraus für jede Hilfe, wieder.
Um die von Ihnen beschriebene Funktionalität zu erhalten, benötigen Sie "3-Wege" (SPDT)-Schalter - einen manuellen und ein Relais, das der Arduino steuert. Das ist so, als hätten Sie zwei Schalter, die die Lichter von beiden Enden eines Flurs aus steuern, außer dass einer von ihnen von Ihrer MCU gesteuert wird.
Das Erfassen des Lichtzustands ist eine separate Angelegenheit. Es gibt viele Schaltungen auf dieser Seite und anderen, um das Vorhandensein von Netzspannung an der Lichtsteckdose sicher zu erkennen.
Da Sie sowieso das Netz steuern müssten, können Sie nur Relais und Lichter in Reihe schalten. Vorhandener Schalter, den Sie mit GPIO von Arduino verbinden. Auf diese Weise kennt Arduino den Zustand des Schalters und kann Lichter ohne zusätzliche Verbindungen und Sensoren steuern. Es gibt ein Problem, dass Ihr Arduino korrekt funktionieren muss, um Lichter zu steuern, selbst wenn Sie nur eine physische Taste verwenden möchten. Diese Lösung ist also nur geeignet, wenn Sie mit der Unfähigkeit leben können, den Zustand der Lichter zu ändern, bis Sie Arduino reparieren.
Apropos Zuverlässigkeit. Ich habe genau die gleiche Lösung wie in dieser Antwort und habe einige kleinere Probleme mit dem Relais, das sich nicht trennt (Kontakte verschweißt). Daher würde ich raten, ein Qualitätsrelais und kein unbekanntes Teil von ebay zu kaufen, selbst wenn seine "Parameter" in Ordnung aussehen.
Wenn Sie nicht gerne mit 120 VAC arbeiten (könnte katastrophal sein, wenn Sie nicht wissen, was Sie tun), ist eine mechanische Lösung viel sicherer. Sie werden das hassen, aber für den Machbarkeitsnachweis könnten Sie einen Endschalter wie im Bild unten auf die Frontplatte unter Ihrem Lichtschalter kleben (weiß zu malen könnte es erträglicher machen). Ich würde einen Pulldown-Widerstand verwenden, um Ihnen ein aktives HIGH-Signal zu geben, das normalerweise intuitiver ist. Sehen Sie sich dieses Switch-Tutorial an , um eine Anleitung zu erhalten.
Für eine fortschrittlichere Lösung würde ich die Spannung über dem Schalter reduzieren und gleichrichten, um zu sehen, ob auf beiden Seiten des Schalters dasselbe (CLOSED) oder verschiedene Dinge (OPEN) vorhanden sind. Idealerweise haben Sie einen kleinen Isolations-Abwärtstransformator zwischen jeder Netzspannung und Ihrem empfindlichen Mikrocontroller. Im Interesse einer billigen Lösung können Sie jedoch "X-bewertete" Kondensatoren zur Isolierung verwenden. Beide Lösungen müssen auf Gleichstrom gleichgerichtet werden, um von Ihrem Mikrocontroller gelesen werden zu können, der zwischen 0 und 5 Volt arbeitet.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Schöne Ausgabe, würde ich sagen, und sie verbraucht laut Simulator nur etwa 25 mW (Blau ist die isolierte, gleichgerichtete Spannung und Orange ist die Zener-geregelte Spannung). Lesen Sie diesen Ausgang mit einem Ihrer Mikrocontroller-Eingänge und Sie haben eine Anzeige! (FYI 0V bedeutet kein Unterschied über Schalter = GESCHLOSSEN)
Eine weitere kuriose Idee trage ich hier bei. Gibt es eine einfache optoelektronische Sensorlösung, die das lösen kann? Zwei Vorteile bringen uns, Isolierung zum Schutz, Spannungspegelverschiebung zu Ihren MCU-Teilen. Stellen Sie sich vor, dass im Netzschalter eine physische Verbindung besteht. Wenn er eingeschaltet ist, um ein Licht zum Auslösen des Optosensors auszusenden, erhalten wir ein logisches Signal als 1. Wenn er ausgeschaltet ist, erhalten wir keine Signale als 0.
Roger Peixoto
Goswin von Brederlow