
Entschuldigung, ich hatte lange Zeit keinen Spaß mehr mit der Benennung sowie mit Peripheriegeräten für die Heimautomation. Insbesondere dieses Ding - die Fernbedienung des Lichts - stellte sich heraus, weil ich etwas mit einer Push-Twist-Click-Oberfläche und nicht mit einer üblichen Streuung von Tasten wollte. Der Wow-Effekt wurde nicht erreicht: Zu Hause bemerke ich die Fernbedienung nicht aus nächster Nähe, aber zumindest habe ich die Gestalt geschlossen.
Kurze TOR:
1) Verwaltung von drei Beleuchtungsgruppen in der Küche
2) Verwaltung von drei Beleuchtungsgruppen im Raum
3) Verwaltung aller Lichtquellen gleichzeitig
4) Angemessene Akkulaufzeit (ab einer Woche)
5) Kompatibel mit Livolo-Codierung, SC2260, EV1527
Sie müssen also nicht weiter lesen, wenn Sie Arduino, Livolo-Schalter und chinesische Funkbuchsen nicht mögen. Denn die erste ist die Basis für die Fernbedienung und die zweite und dritte die Peripherie.
Konzept
Die Steuerlogik schien mir wie folgt:
- Durch Drücken des „Knopfes“ werden die Zonen der Beleuchtungsgruppe in einem Ring (Küche - Raum - alles) umgeschaltet.
- Durch Drehen des Knopfes wird je nach Drehrichtung die Beleuchtung der ausgewählten Gruppe ein- oder ausgeschaltet.
- Die Betriebsart (ausgewählte Gruppe) wird durch eine unauffällige LED-Anzeige angezeigt.
Da ich die Funksteuerung nach der am meisten verachteten Option ohne Schutz vor Störungen und Rückkopplungen verwende, wird gleichzeitig ein kleiner Trick für den Fall einer versäumten Operation bereitgestellt.
Wenn das Drehen des Knopfes nicht zum gewünschten Ergebnis führt, können Sie den Befehl überspringen, indem Sie in die entgegengesetzte Richtung drücken und drehen. Dann kann der Befehl wie gewohnt wiederholt werden.
Das heißt, wenn ich den Knopf im Uhrzeigersinn gedreht habe und das Hauptlicht nicht aufleuchtete, kann ich den Knopf drücken, gegen den Uhrzeigersinn drehen und dann loslassen und erneut im Uhrzeigersinn drehen, um das Einschalten zu wiederholen.
Warum so schwer? Dann habe ich neben den umständlichen Protokollen auch umständliche Peripheriegeräte. Zum Beispiel funkgesteuerte Lichtschalter Livolo und Funkrelais, die denselben Befehl zum Ein- und Ausschalten haben, zusammen mit normalen Funkbuchsen, in denen die Befehle zum Ein- und Ausschalten getrennt sind.
Mit dem Team-Skipping-Trick können Sie das Nichteinschließen (Nichtausschließen) kreativ überwinden, ohne das allgemeine Beleuchtungsschema zu verletzen. Wenn Sie einen Befehl überspringen, können Sie außerdem über Lichtquellen springen, die Sie nicht ein- oder ausschalten müssen.
Um zu verstehen, was mit der Fernbedienung passiert, verfügt sie natürlich über eine separate Anzeige, die beim Senden eines Befehls aufleuchtet.
Wenn die Konsole einige Zeit nicht berührt wird (im Code konfiguriert), geht der Controller in den Ruhezustand. Er rettet jedoch nicht den letzten Zustand, und wenn er durch Drücken des Stifts aufwacht, beginnt er sein Leben von Grund auf neu.
Dies ist kein Fehler. Ich wiederhole, ich habe Schalter ohne Rückmeldung und die Konsole kann physisch keine Informationen über den aktuellen Status jedes gesteuerten Peripheriegeräts erhalten.
Daher schaltet das Drehen des Knopfes unmittelbar nach dem Aufwachen das Licht von Grund auf ein oder aus.
Erster Ansatz
Das visuelle Konzept des Typs „Box mit einem Twist“ erforderte, wie Sie sich vorstellen können, zwei Dinge: Boxen und Twists. In der ersten Version wurde die Rolle der Box von einer dünnen Powerbank gespielt, deren Verwendung zwei Probleme gleichzeitig löste: Ich hatte sowohl ein Gehäuse als auch ein Batterieladeschema, außerdem mit einem Stecker. Die Batterie selbst musste natürlich durch eine kompaktere ersetzt werden, sonst konnte die Füllung nicht mehr passen.

Es stellte sich heraus, dass die Wendung komplizierter war. Bei der Suche stellte ich fest, dass die Kosten für das Gramm umso näher an den Kosten für ein Gramm Gold liegen, je schöner der Potentiometerknopf ist und je größer er ist. Deshalb habe ich mir einen Stift gekauft, der mir für ästhetische Eigenschaften nur minimal geeignet war.

Der Steuerungsteil war das Ergebnis eines Experiments mit ATmega328P und einer logischen Fortsetzung der Handlung, die durch die vorhandene Hausautomation (auf denselben Arduino- und primitiven Funkprotokollen) festgelegt wurde.
Ich habe nicht sehr teuer eine Streuung der genannten Controller und bedingten Prototyp-Leiterplatten (in der Tat einen Adapter von einem kleinen Gehäuse zu einem großen Schritt) gekauft, um daraus eine Low-Budget-Version von Arduino mit einer minimalen (aber vernünftigen) Anzahl von Elementen zu erstellen.



Das Experiment erwies sich als erfolgreich, und der für die Arduino-Umgebung konfigurierte Controller blinkte die LED nach dem Verschlucken des klassischen Blink ziemlich erfolgreich. Nun, dann habe ich nach dem Prinzip „Beende die Eule“ der resultierenden Karte einen Encoder (mit einem Knopf), drei LEDs und einen normalen Sender mit Amplitudenmodulation auf einem Träger von 433,92 MHz hinzugefügt.
Um alle Elemente in einem kleinen Koffer unterzubringen, musste ich ein wenig leiden, aber die Fernbedienung funktionierte immer noch. Und obwohl das Problem anscheinend gelöst ist, wollte ich mehr - den ursprünglichen Fall.


Zweiter Ansatz
Tatsächlich war die erste Version (Beschwerde) einer Gruppe von Kameraden zerbrochen, so dass ich sie auf unbestimmte Zeit verschoben habe. Aber er hat es nicht auseinander genommen: Es ist schade.
Aber als der 3D-Drucker erschien, versprach er sich eines Tages, den gleichen Originalfall herzustellen und so die Frage mit der Fernbedienung zu schließen.
Ich weiß nicht, ob es gut oder schlecht geworden ist - ich weiß nicht wirklich, wie ich meine Sachen bewerten soll. Aber bei 3DToday ist das Team einladender als bei MySKU (worüber ich mich nicht beschwere - es ist selbst kein Geschenk), und sie bewerteten den Fall höher als ich.

Da ich jedoch völlige Handlungsfreiheit hatte, gab ich die zerbrechlichen und verschwommenen chinesischen Batterien auf und nahm einen guten alten 18650 als Stromquelle. Und wie Sie leicht sehen können, bestimmen genau seine Abmessungen maßgeblich die Abmessungen des gesamten Gehäuses.
Ich fing an, das Gehäuse selbst modular zu gestalten, bestehend aus vielen Teilen, wodurch ich nur einzelne (fehlerhafte oder nicht sehr optimale) Elemente und nicht das gesamte Produkt nachdrucken konnte.
Ein weiterer Punkt ist, dass ich wirklich keine Ausschnitte für Steckverbinder machen möchte, was ich wirklich nicht kann. Daher gibt es in der Lieferkette einen weiteren Trick, der
Evelyn, dem Igel, bekannt ist : das drahtlose Laden.

In meinem zashashnik lag einfach ein weiterer Empfänger, den ich sofort in Aktion setzte.
Schließlich ist der letzte Trick ziemlich offensichtlich, aber dennoch: Damit die Fernbedienung nicht um den Tisch kriecht, habe ich ein Stück einer rutschfesten Automatte auf den Boden geklebt. Und am Ende ist dieses Ding ein absoluter Monolith, obwohl es auch kein Problem ist, es an einen anderen Ort zu bringen.
Was es braucht, um zu wiederholen
Stück Eisen
1) ATmega328P-Controller - 1 Stck. (in meinem TQFP-Paket, aber jeder kann)
2) 10 kOhm Widerstand - 5 Stk. (4 zur Unterdrückung des Gebersprungs, 1 zur Steuerung)
3) 100 Ohm Widerstand - 3 Stck.
4) Keramikkondensatoren 0,1 Mikrofarad - 4 Stk. (zur Steuerung und Unterdrückung des Encoder-Bounce)
5) Encoder (Valcoder) drücken - 1 Stck. (Ich habe
PEC12-4220F-S0024 )
6) LEDs - 3 Stck. (Durchmesser 3 mm)
7) Lithium-Batterie-Ladekarte - 1 Stck. (Von der Powerbank, die theoretisch zur Hand war, reicht theoretisch jeder mit automatischem Einschalten unter Last)
8) Qi Wireless Charging Receiver - 1 Stck.
9) Ein Sender mit Amplitudenmodulation bei 433 MHz - 1 Stck. (
so )
10) Etwas Glasfaser für Encoderplatine
11) 3D-Drucker
12) Geeigneter Kunststoff (ich habe PLA gedruckt)
13) M4x30 Schrauben - 4 Stck.
Im Allgemeinen kann die Anzahl der Komponenten reduziert werden. Zum Beispiel erfordert der Controller in einer sehr minimalen Version überhaupt keine Umreifung, obwohl ich mich entschlossen habe,
den Ratschlägen von Nick Gammon zu folgen und nicht ein paar Kondensatoren und einen Widerstand verschont habe.
Auf die gleiche Weise können Sie sich nicht mit der Hardware-Unterdrückung von Kontaktsprüngen beschäftigen und versuchen, mit Software auszukommen. Dann können Sie vier weitere Widerstände und ein Paar Kondensatoren abkreuzen.
Alternativ können Sie ein fertiges Arduino-Board wie das Pro Mini verwenden, aber in diesem Fall kann ich keinen niedrigen Energieverbrauch garantieren, und Sie müssen es selbst zaubern. Gleichzeitig muss der Fall korrigiert werden.
Schema:

Als Referenz die Pinbelegung ATmega328p im TQFP-32-Paket von
Hobby Electronics :

Für meinen Encoder habe ich eine kleine Tafel gezeichnet:



Wenn es gut ist, müsste es für die Montage des Encoders gebohrt oder mit seinem „Bauch auf die Platine gedrückt werden (wobei auf Isolation geachtet wird, damit kein Kurzschluss auftritt), damit der Encoder a) mehr oder weniger gleichmäßig montiert wird und b) nicht wackelt. Historisch gesehen habe ich eine zweite Option.
Für den Fall ist es wichtig, dass die Höhe der Platine mit Teilen ohne den Encoder nicht mehr (oder nicht viel mehr) 5 mm beträgt.
Wenn das Arduino-Board nicht zur Hand ist, müssen Sie zuerst den Arduino-Bootloader auf den ATmega328P-Controller schreiben, damit alles funktioniert.Fügen Sie dazu zunächst der Arduino-Umgebung eine Controller-Beschreibung hinzu. Gehen Sie dazu
auf die offizielle Arduino-Website und laden Sie das für Ihre Umgebungsversion geeignete Beschreibungsarchiv herunter (
für 1.6 ,
für 1.5 ,
für 1.0 ).
Der Inhalt des Archivs sollte in den Hardwareordner des Arduino-Umgebungsordners extrahiert werden. In Zukunft beschreibe ich am Beispiel der 1.0.3-Umgebung, die ich noch verwende, was passiert.
Wenn die Beschreibungen kopiert werden, sollten Sie Arduino starten und die Programmiererskizze in Arduino laden, das als dieser Programmierer selbst verwendet wird. Die Skizze befindet sich im Menü Datei - Beispiele - ArduinoISP.

Natürlich sollten Sie Ihr Board und Ihren Port auswählen. Ich wähle Mega, weil ich es habe:

Nach dem Laden der Programmierskizze müssen Sie zur Zielplatine wechseln. Das heißt, in unserem Fall - ATmega328 mit einer Frequenz von 8 MHz und einem internen Master-Oszillator. Es wird in die Liste der Boards aufgenommen, wenn die oben genannten Beschreibungen korrekt kopiert wurden:

Jetzt müssen Sie die MISO-, MOSI- und SCK-Leitungen der Programmierkarte und der Karte mit dem zukünftigen Arduino verbinden und auch RESET, GND und VCC verbinden. Plus Power ist am besten an letzter Stelle.
Basierend auf der obigen Infografik und Beschreibung von Arduino Mega ergibt sich folgendes Bild:
SPI - Arduino Mega - ATmega328p
MISO - 50 - 16
MOSI - 51 - 15
SCK - 52 - 17
SS (RESET) - 53 - 29
Physische Verbindung nach Ihrem Geschmack, ich habe eine ausschließlich barbarische Methode angewendet - gewöhnliche Steckbrettdrähte direkt in die Plattenlöcher, ohne Löten und Isolieren:

Wenn alles fertig ist, schreiben Sie den Bootloader auf. Stellen Sie zunächst sicher, dass der richtige Programmierer ausgewählt ist (Service - Programmierer - Arduino als ISP):

Dann machen wir den Service - Record Bootloader:

Danach ist die Ausgabe eine minimalistische Arduino-Karte, um Skizzen zu laden, in die Sie den USB-Serial-Adapter oder eine vollständige Arduino-Karte mit einem solchen Adapter an Bord verwenden können. Im ersten Fall müssen Sie RX und TX über Kreuz verbinden und vergessen Sie nicht, eine gemeinsame Masse anzuschließen. Im zweiten Fall ist es zusätzlich erforderlich, das als Adapter verwendete RESET Arduino gegen Masse kurzzuschließen.
Wenn Sie wie ich keine Schaltung haben, um den Controller vor dem Herunterladen der Skizze automatisch zurückzusetzen, gibt es zwei Möglichkeiten: entweder ziehen Sie den Reset oder schalten Sie ihn einfach ein, wenn die Arduino-Umgebung angibt, dass der Download gestartet wurde.
Gehäuse
Der Fall ist, wie gesagt, modular. Dies bedeutet, dass Sie an dem vor den Augen verborgenen Innenteil den abgestandenen und nicht mehr geeigneten Kunststoff einlassen können. Sie können Elektronik darauf setzen:

Ich mache darauf aufmerksam, dass der Fall spezifisch ist und in meine Version der Füllung passt.
Ich schlage vor, den Rotor transparent zu machen, damit das Licht der Anzeigen gestreut wird. Für ein höheres Gewicht kann eine M16-Mutter in den Rotor eingesetzt werden:

Ich brauche noch ein Rotorhemd und einen Bezug dazu. Der Deckel wird einfach nach innen eingeführt und ruht auf Reibung. Und natürlich können Sie nicht auf den oberen und unteren Teil des Außengehäuses verzichten.
Ich habe einen Rotor mit einer Füllung von 10% gedruckt, die restlichen Elemente mit einer Füllung von 5%. Kunststoff - PLA. Die eingestellte Temperatur der Düse meines Druckers beträgt in den ersten drei Schichten 200 ° C, in den nächsten 185 ° C. Leider kann ich nicht sagen, wie hoch die wahre Temperatur der Düse ist. Der Tisch ist kalt.
Die Montage ist einfach.

Die Platinen befinden sich in den Rillen des robusten Gehäuses, die LEDs - Beine in den Rillen des unteren Teils des haltbaren Gehäuses. Die Antenne des Senders wird heruntergefahren, der drahtlose Ladeempfänger wird auf die gleiche Weise heruntergefahren - so dass er näher an derselben Ladung liegt.

Die Füllung wird durch eine Zwischenplatte fixiert, in deren Nut der Geberkabelbaum verläuft.
Der Encoder wird mit der oberen Platte befestigt, alle zusammen werden mit M4x30-Schrauben angezogen, die selbst die Gewinde in Kunststoff schneiden.
Jetzt kann das haltbare Gehäuse in Hälften des Außengehäuses eingeschlossen werden. Ein Rotor wird auf die Encoderwelle und ein Hemd auf den Rotor gelegt. Optional wird eine rutschfeste Matte auf die Unterseite des Körpers geklebt. Eine weitere Option ist ein dekorativer Einsatz, der die Naht zwischen den Körperhälften verbirgt.
CodeIm Code müssen Sie Befehle zum Ein- und Ausschalten Ihrer Peripheriegeräte angeben. Optional - Ändern Sie das Zeitlimit für das automatische Herunterfahren.
Dies alles befindet sich im variablen Bereich.
Fallmodell als
Referenz .
Das ist alles.
PS: Ich habe versucht, nichts zu vergessen, aber ich konnte. Wenn ja, entschuldige ich mich und werde mein Bestes tun, um Leitfragen richtig zu beantworten und Fehler zu korrigieren.