Derzeit werden Smart-Home-Steuerungssysteme immer beliebter. Eine zentralisierte Schnittstelle, die Geräte im ganzen Haus steuert, spart Zeit und ermöglicht Ihnen eine effektivere Steuerung Ihres Hauses. Die Verwirklichung ihrer Vision solcher Systeme wird von namhaften Marken durchgeführt: Apple, Amazon und Google, die sie in ihre Infrastruktur einbauen, sowie von Handwerkern, die solche Systeme auf der Basis der Arduino-Plattform zusammenbauen.
Unser Ziel war es, ein System zu schaffen, das auf einer großen Anzahl von Geräten verfügbar und an keinen Ort gebunden ist. Eine ausgezeichnete Option für die Implementierung der Steuerung erwies sich als Bot für den Telegramm-Messenger. Telegramm hat Anwendungen auf allen wichtigen Plattformen sowie eine Webversion. Der Zugriff darauf ist von überall aus möglich. Sie benötigen lediglich ein Konto.
Aus den Modulen haben wir folgendes ausgewählt:
• RGB-gesteuerter LED-Streifen
• Verwaltete Steckdose
• Temperatursensor
• Lichtsensor (dient zum automatischen Einschalten des Lichts)
Was brauchen wir?
1. Raspberry Pi 3
Ein kleiner, aber entfernter Computer, der nicht eingeführt werden muss. Seine Leistung reicht aus, um diese Aufgaben zu erledigen. Die dritte Version ist gut mit einem integrierten Wi-Fi-Modul ausgestattet, sodass wir nicht an einen Adapter eines Drittanbieters denken müssen.
2. ESP8266-Module
Wir werden 4 von ihnen brauchen. Wir haben ESP-12F verwendet, aber im Allgemeinen gibt es keinen Unterschied: ESP-1 wird völlig ausreichen. Mit vorgefertigten NodeMCU-Karten können Sie außerdem Zeit und Mühe sparen.
3. LED-Streifen
Wir haben ein verwaltetes RGB-Band auf WS2812b-Controllern verwendet, obwohl hier übrigens jedes Band geeignet ist, das mit 5 V arbeitet und von der Arduino-Plattform unterstützt wird.
4. Temperatur- und Lichtsensoren
Wir haben das BH1750-Modul verwendet, um die Beleuchtung im Raum zu bestimmen, und das DS18B20 für die Temperatur. Die Hauptkriterien waren Verfügbarkeit, Unterstützung durch die Arduino-Plattform und die Fähigkeit, mit 3,3 V ESP8266-Logik zu arbeiten.
5. Relais
Das MOD-1CH-Submodul für Arduino kann bis zu 10 A Strom durchlassen und wird von 5 V gesteuert. Wir haben keine Analoga für 3,3 V gefunden, daher haben wir einen Transistor im Schlüsselmodus zur Steuerung verwendet.
6. Telegrammbot
Die direkte Steuerung des gesamten Systems erfolgt über den auf Raspberry gestarteten Telegramm-Bot. Auf diese Weise kann das System von überall auf der Welt auf jeder Plattform problemlos aufgerufen werden. Das Erstellen eines Bots für Telegramm ist dank einer entwickelten Plattform und der Unterstützung einer großen Anzahl von Sprachen recht einfach.
So wird unser gesamtes System ungefähr so aussehen:

Implementierung
Zuerst testen wir die Module.

Vorgefertigte Leiterplatten passen den Abstand zwischen den Stiften an, was das Löten erheblich erleichtert, und enthalten auch die erforderlichen Widerstände, die die Stifte CH_PD und GPIO2 mit Vcc verbinden.
Leider werden die ESP8266-Module mit 3,3 V und nicht mit 5 V betrieben, nicht wie das Arduino. Sie können die Spannung mit einem vorgefertigten Wandlermodul umwandeln, aber Sie können die Schaltung auch auf der Basis des linearen Stabilisators AMS1117 löten, wie wir es getan haben.

Der nächste Schritt ist die Programmierung.
Glücklicherweise wird die ESP8266-Plattform von der Arduino IDE unterstützt, was uns viele Möglichkeiten eröffnet. Um die Firmware direkt auf das Modul herunterzuladen, verwenden wir den Arduino Nano. Dies kann jedoch auch über den üblichen USB-UART-Konverter erfolgen. Vergessen Sie nicht die Spannungsdifferenz zwischen Arduino und ESP.
Das Schema ist wie folgt:

Die Taste wird benötigt, um den GPIO1-Pin auf GND zu schließen, wenn das Modul mit Strom versorgt wird, und es dadurch in den Programmiermodus zu übertragen.
Als nächstes konfigurieren wir die Arduino IDE so, dass sie ESP versteht ( detaillierte Anweisungen mit allen Links ) und versuchen, eine Testskizze für das Blinken der LED aufzuzeichnen.

Nach einem erfolgreichen Blinken haben wir begonnen, alle Module zu löten. Mit einem Temperatur- und Lichtsensor ist alles ziemlich normal.
Temperatur:


Beleuchtung:


Aber das Band und die intelligente Buchse verursachten einige Schwierigkeiten.
Eine einfache Verbindung des Steuereingangs des Bandes mit dem ESP ist fehlgeschlagen. Dies ist nicht überraschend, da WS2812b mindestens 70% des VCC-Eingangs (5x0,7 = 3,5) für den Steuereingang benötigt und eine 3,3-V-Karte eindeutig nicht ausreicht. Wir haben jedoch gefunden Krücke Eine interessante Möglichkeit, sie ohne Verwendung eines Aufwärtswandlers zu starten. Wenn die Diode mindestens 0,7 x Vcc benötigt, um auf das Signal zu reagieren, und wir den Pegel dieses Signals nicht erhöhen können, muss Vcc reduziert werden! Ja, die LEDs leuchten nicht so hell, wir müssen jedoch nicht das gesamte Band auf diese Weise mit Strom versorgen. Eine Diode reicht aus. Durch Weiterleiten des Signals entlang der Kette verwendet die LED bereits den Vcc-Pegel, um das Signal zu bilden, was für eine „normale“ LED ausreicht. Durch Anschließen der ersten Diode im Band an die Stromversorgung über die Diode, die etwa 0,6 V „frisst“, erhalten wir ein perfekt funktionierendes Band, das direkt von unserem ESP8266-Modul gesteuert wird. Und wir haben die etwas gedämpfte erste LED für Debugging-Anforderungen belassen: Zeigen Sie den Status der Netzwerkverbindung an.
Folgendes ist passiert:


Wir wollten unseren Smart Socket komplett in den Koffer aus dem alten Sockel mit einem Timer stecken. Sie mussten dort einsteigen: das ESP-12F selbst, ein Netzteil dafür und ein Relais, das die Steckdose steuert. Nachdem wir das Relais und die Stromversorgung dort platziert hatten, konnten wir das ESP-Modul dort immer noch nicht aufnehmen. Deshalb musste ich unten eine kleine Box anbringen.

Das Ergebnis war nicht so elegant, wie wir es ursprünglich wollten, aber es war ein solides Gerät, das nur an eine Steckdose angeschlossen werden musste.


Der nächste Schritt war die Konfiguration von Raspberry. Der Plan war folgender: Unsere Module verbinden sich mit dem Wi-Fi-Zugangspunkt Raspberry und genauer mit dem eingebauten Wi-Fi-Modul. Raspberry führt Telegram-Bot aus, der sich mit allen Modulen im lokalen Netzwerk befindet und problemlos http-Anfragen mit ihnen austauschen kann. Es ist alles über Ethernet mit dem Internet verbunden.
Um diesen Plan umzusetzen, haben wir zwei Pakete verwendet:
- hostapd - Ermöglicht die Verwendung des integrierten Wi-Fi-Moduls als Zugangspunkt
- dnsmasq - kombiniert DHCP- und DNS-Server.
Wir haben versucht, eine relative Unabhängigkeit von Code und Geräten zu erreichen. Daher wurden alle Anforderungen nicht an IP-Adressen, sondern an Namen aus der erfundenen .sh-Zone (light.sh, socket.sh usw.) ausgeführt. Zu diesem Zweck haben wir für jedes Modul statische IP-Adressen konfiguriert und diesen DNS-Adressen Datensätze hinzugefügt, die den Modulen entsprechen. Glücklicherweise ist dnsmasq sehr einfach zu konfigurieren ( detaillierte Anweisungen zum Einrichten dieses Systems ).
Und schließlich der Bot selbst.
Wir haben einen Bot in Python mit der Python-Telegramm-Bot-Bibliothek geschrieben. Wir haben eine Tastenoberfläche entwickelt, die die Verwaltung vereinfacht und das Gerät in eine Art Fernbedienung verwandelt:


Den Quell-Bot-Code finden Sie hier .
Und damit niemand es benutzen kann, haben wir den Passwortschutz eingestellt.
Fazit
Natürlich haben wir kein revolutionäres System geschaffen, es gibt eine Vielzahl ganzheitlicherer und durchdachterer Implementierungen. Die Temperatur- und Beleuchtungsmodule könnten autonom gemacht werden, da der ESP8266 über einen speziellen Standby-Modus verfügt, in dem er nur sehr wenig Strom verbraucht. Man könnte eine einfache Benutzererweiterbarkeit hinzufügen, bei der der Quellcode nicht geändert und die Netzwerkverbindungen neu konfiguriert werden müssen, und vieles mehr. Das Ziel dieses gesamten Projekts war jedoch überhaupt nicht das. Zunächst wollten wir ein einfaches System schaffen, das von jedem in unserem Haus erstellt werden kann und keine ernsthaften Vorbereitungen und Kosten erfordert. Und vor allem: Wir wollten während dieses Projekts viele Dinge lernen. Und wenn die Praktikabilität und Funktionalität unserer Lösung für lange Zeit weiterentwickelt werden kann, hat sich das Wissen, das wir bei der Planung und Implementierung dieses Systems gewonnen haben, definitiv gelohnt.