Hier haben wir einen Schaltschrank für das Haus gebaut,
hier eine Steuerung entwickelt.
Das Licht kann über das Telefon ein- / ausgeschaltet werden, Benachrichtigungen über Wasserleckagen, das Einbeziehen von Bewässerung kommen zu Telegrammen und Gott weiß noch was.
Aber dieses ganze System ist alles andere als ein schickes Haus, es ist nur eine Verlängerung Ihrer Arme und Beine, und die einzige Hilfe ist, dass Sie nicht aus dem Bett müssen, um das Licht auszuschalten.
In diesem Artikel geht es darum, was Ihr Zuhause dem Smart näher bringen kann, und Sie haben es richtig erraten - dies ist die Entwicklung von Sensoren. Das sind Augen, Ohren und ein bisschen mehr für Ihr Zuhause. Basierend auf den Informationen der Sensoren ist es bereits möglich, automatische Skripte zu schreiben, die das Haus neu beleben, Ihnen leise helfen und Ihr Leben komfortabler gestalten.
Auf dem Markt gibt es mittlerweile eine Vielzahl solcher Geräte, sowohl von namhaften Herstellern als auch unbekannter Herkunft. Und wenn Sie sich nicht viel Mühe geben, können Sie sie verwenden, aber es gibt nur eine oder sogar mehrere. Erstens verwenden die meisten von ihnen ihre proprietären Protokolle und arbeiten nur mit ihren Hubs. Die API dieser Hubs kann jederzeit geschlossen werden, und die Steuerung ist nur über die Anwendung des Herstellers möglich (denken Sie an die Story von Google Nest), sodass Ihre gesamte Automatisierung an einem Punkt abstürzt.
Zweitens versuchen alle Hersteller ausnahmslos, einen Gewinn daraus zu ziehen, und da dies kein massives Phänomen ist, müssen Sie aussteigen, und jeder Sensor wird in einem eigenen Gehäuse mit einer eigenen Batterie hergestellt. Und jetzt zählen wir, Sie haben jeweils 5 Räume, ich hätte gerne einen Temperatur-, Bewegungs-, Licht- und CO-Sensor. Keine komplizierte Matte. Berechnungen führen zu 20 Kisten an der Decke. Erstens ist es nicht schön und zweitens wird es in ein oder zwei Jahren notwendig sein, die Batterien in diesen Sensoren innerhalb eines halben Tages mit einer Leiter und einem Schraubendreher zu wechseln, wobei höchstwahrscheinlich ein paar Befestigungselemente zerbrochen und der Schraubendreher ein paar Mal auf das Laminat fallen gelassen werden. Ja, und drittens, wenn einer der Sensoren in ein paar Jahren ausfällt, können Sie ihn nicht mehr kaufen, und wahrscheinlich unterstützen die alten Hubs die neuen Sensoren nicht (Gewinn ist wichtig), und Sie müssen alle Sensoren austauschen und wieder in Ihren Sensor integrieren das System. Der Ausweg ist, sich etwas aus der Open Source anzuschauen oder es selbst zu tun. Zumindest der Code wird immer bei dir sein. Daher ist die Entwicklung der Box mit Sensoren angesichts des beschriebenen Sachverhalts keine übermäßige Aufgabe.
Deshalb habe ich bei der Entwicklung meines Sensors versucht, das oben beschriebene "aber" zu vermeiden:
- Wir fassen alle Sensoren in einem Gehäuse zusammen
- Wir verdrahten Strom (bauen von Grund auf neu)
- Wir fertigen Schnittstellen nach Standardprotokollen
Lassen Sie uns nun überlegen, wie ein solches Gerät funktionieren soll.
Es gibt zwei mögliche Optionen, die davon abhängen, in welcher Umgebung das Gerät verwendet wird, in einem System mit zentraler Steuerung, in einem verteilten System oder im Allgemeinen als unabhängiges Gerät.
Die erste Option ist einfacher, weil Es werden nur Rohdaten von den Sensoren benötigt, und dann entscheidet die zentrale Steuerung, die das Gerät abfragt, was mit ihnen zu tun ist. Ein Beispiel für ein solches Gerät ist ein Büro-Rauchsensor. Beispielsweise haben die Daten vom Sensor einen bestimmten Schwellenwert überschritten, während die zentrale Steuerung weiß, dass der Sicherheitsmodus jetzt aktiviert ist und einen Alarm auslösen muss.
Die zweite Option setzt voraus, dass das Gerät selbst weiß, in welchem Modus es sich befindet, Rohdaten von Sensoren konvertieren kann und eine Entscheidung über die Information des Benutzers trifft. Die Entwicklung eines solchen Gerätes erfordert natürlich mehr Aufwand sowohl beim Schreiben eines Programms als auch beim Ausarbeiten der Bedienbarkeit.
Ich hatte ursprünglich geplant, das Gerät gemäß der zweiten Option herzustellen und zwei Kommunikationskanäle zu verlegen - mqtt und modbus. Mqtt über WIFI also zum Herumspielen und Modbus über RS-485 zur Verbindung mit der Haussteuerung.
Mqtt via WIFI ist dank der ESP8266-Lua-Bibliotheken nicht schwer zu erledigen und der Algorithmus ist ziemlich standardisiert:
- Beim ersten Start oder wenn Sie keine Verbindung zu WIFI herstellen können, müssen Sie einen Zugangspunkt vom ESP8266 einrichten
- Bereitstellen eines kleinen Webservers mit WIFI-Parametern und mqtt-Serverparametern (dies kann zum Beispiel bei Amazon kostenlos erfolgen)
- Speichern Sie alle eingegebenen Daten im Speicher des ESP8266
- Versuchen Sie nach dem Neustart, über WIFI eine Verbindung zu mqtt herzustellen
Als jedoch die Frage aufkam, ob das Gerät über Modbus in das Heimsystem integriert werden sollte, fing ich an, die Rohdaten der Sensoren zu vermissen und schließlich alle Rohdaten auch in die Modbus-Tabelle aufzunehmen. Beispielsweise scheint es ein unnötiges Ereignis eines Bewegungssensors zu sein, der im deaktivierten Modus sogar für alle Arten von Smart-Home-Funktionen verwendet werden kann.
Die Modbus-Tabelle sieht wie folgt aus:
N Typenbezeichnung
0. -r - Status des Sensortags (1 - Leerlaufmodus / 2 - Leerlauf zum Schutz / 3 - Schutzmodus)
1. -r - Bitfeld Grund des Alarms (Bit 1 - Gas / 2 - Temperatur / 3 - Bewegung)
2. -r - Bewegungserkennung im Ruhe- und Schutzzustand (0/1 - keine Bewegung / Bewegung)
3. -r - Gaskonzentration (Rohwert aus ADC)
4. -r - Temperatur in ° C
5. -r - vorverarbeiteter Lichtwert (Nachtraum <17 / Dunkelraum <50 / Dämmerung <150 sonnig <250)
6. -r - Lichtwert (Rohwert aus ADC)
7. -r - Anzahl der Alarmereignisse in diesem Lebenszyklus
8. -r - Anzahl der Sensortag-Neustarts
9. -r - nicht verwendet
10 -wr- Alarmaktivierung (0 - auf Leerlauf schalten / 1 - auf Alarm schalten)
11. -wr- Bewegungsempfindlichkeit (0 - 100%, bedeutet 0 - am empfindlichsten)
12. -wr- Gaskonzentrationsgrenze
Weiterhin kommt es wie immer auf die Entwicklung des Boards und der Software an. Und in diesem Fall war die Entwicklung des Boards für mich schwieriger, weil Es gibt einen analogen Teil (Leistung, Bindung von Bewegungssensoren und CO), mit dem ich nicht sehr freundlich bin, und es gibt nicht viel über Software zu schreiben, da dort alles wirklich einfach ist. Das heißt nicht nur, sondern gewöhnlich, ich las den Messwert aus dem ADC, konvertierte sie, verarbeitete sie (unter Verwendung der Schiebefenstermethode für alle Kanäle) und legte sie in eine Tabelle. Es wäre nicht schlecht, eine Temperaturkompensation des Signals vom PIR-Sensor vorzunehmen. Im Sommer, wenn die Raumtemperatur über +30 Grad liegt, reagiert der Sensor viel schwächer. In diesem Artikel möchte ich die Entwicklung des Boards selbst beschreiben und ein wenig auf die Benutzerfreundlichkeit achten.
Beginnen wir mit dem Board. Hier ist, was Sie tun müssen, um dies zu tun:
- Mikrocontroller und Sensoren auswählen (Pir-Sensor, Licht, Temperatur, CO)
- Wählen Sie den RS-485-Treiber für die Modbus-Kommunikation
- ESP8266 für mqtt-Kommunikation (was soll ich wählen)
- Wählen Sie RGB-LED, um den Status des Geräts anzuzeigen
- Leistungsmodule entwickeln
- Entwickeln Sie einen Schaltplan, züchten Sie und stellen Sie Bretter her
Die Wahl eines Mikrocontrollers ist nicht schwierig, Sie müssen nur die Box mit den Devboards erreichen und ein Board bekommen - das reicht. Im Ernst, ich kann mich nicht mit den Kenntnissen vieler Mikrocontroller-Familien rühmen, daher kenne ich mich mit STM32, ATSAM und AVR aus. Ich entschied mich für Letzteres und nur, weil ich gerade ein paar Arduino Leonardo herumliegen hatte und die alten Tage MK2 verpasst hatte. Ich möchte nicht erwähnen, dass der AVR mit der für mich nützlichen Quarzfrequenz arbeitet und über eine breite Palette von Peripheriegeräten und einen ziemlich schnellen ADC verfügt. Viel wichtiger ist mir, dass er ein TQFP-Paket hat und ich ihn ohne Mikroskop selbst löten und mit Tamburinen tanzen kann . Wenn die Auswahl eines Mikrocontrollers nur zehn Minuten dauert, ist die Auswahl der Sensoren keine Kleinigkeit. Zunächst müssen wir uns überlegen, wie wir sie verbinden, wie wir ihre Signale verarbeiten und wie sie sich gegenseitig beeinflussen. Wenn einige Sensoren aus dem Arduino-Set entnommen werden können und sie einen Cent kosten, können Sie mit anderen, selteneren, länger basteln und mehr ausgeben. Zusätzlich wurde die Auswahl der Sensoren durch meine zusätzlichen Kriterien eingeschränkt:
- Sensoren können beliebig angeschlossen werden, jedoch nicht über I2C. So funktionierte es für mich nicht, I2C zuverlässig auf Mikrocontrollern zu implementieren, bei denen die Unterstützung für diesen Bus halb so groß wie für Hardware und halb so groß wie für Software ist (wie bei AVR). Es kam vor, dass es funktioniert, es funktioniert für einen Monat und dann bricht es ein, und es helfen keine Wiederherstellungssequenzen. Daher wurde beschlossen, so viele analoge Sensoren wie möglich an den ADC anzuschließen und SPI nur für die Temperatur zu verwenden (Freundschaft ist übrigens stark und zuverlässig).
- Sie waren zuverlässig genug und änderten ihre Eigenschaften während der Lebensdauer nicht (ich definierte es als 10 Jahre)
- Sie waren auf unserem Markt erhältlich, um sich nicht mit Bestellungen von Mauser usw. herumzuschlagen.
Als Ergebnis aller Untersuchungen erhalten wir dieses Set:
- PIR-Sensor - D203S
- Lichtsensor - GL5516
- Temperatursensor - LM95071
- CO-Sensor - TGS5141
Und wenn mit den ersten drei Positionen, denke ich, niemand Fragen haben wird, dann ist nicht klar, warum TGS5141 sofort benötigt wird. Sie sagen wahrscheinlich - "warum so eine teure Sache, denn es gibt Penny-CO-Sensoren aus dem Arduino-Set vom Typ MQ-7." In der Tat experimentierte ich mit ihnen und lehnte sie aus mehreren Gründen ab. Erstens handelt es sich um einen katalytischen Sensor, der sich erwärmt, was die Temperatur im Gehäuse des Geräts stark beeinflusst und keine Temperaturkompensation für das Signal vom PIR-Sensor ermöglicht. Zweitens lässt die Empfindlichkeit des MQ-7 zu wünschen übrig, selbst in der Spezifikation von 10 bis 1000 ppm, aber in Wirklichkeit ist es immer noch trauriger, und es gibt keine Stabilität von Sensor zu Sensor. Drittens ist die Lebensdauer des Sensors selbst nicht klar, ich gehe davon aus, dass sich seine Eigenschaften im Laufe der Jahre stark ändern werden, gerade weil er katalytisch ist. Und nun zu den Vorteilen des elektrochemischen TGS5141 - es erwärmt sich nicht, die Empfindlichkeit beträgt 0 ~ 5000 ppm (mit linearer Charakteristik), eine garantierte Lebensdauer von 10 Jahren, geringe Größe und viele weitere Vorteile. Ich denke, die Wahl liegt auf der Hand, wenn Sie wirklich etwas Wertvolles tun wollen und kein leichtfertiges Handwerk.
Wir haben uns für einen Mikrocontroller und Sensoren entschieden. Jetzt müssen wir uns darum kümmern, dem Benutzer mitzuteilen, was wir beabsichtigt haben. Wie ich zuvor schrieb, habe ich zwei Kommunikationskanäle dafür, RS-485 Modbus und MQTT über WIFI. Was es möglich macht, meinen Sensororteg als einzelnes Gerät zu verwenden, und daher wichtig ist, dass der Status auf dem Gerät selbst angezeigt wird, z. B. durch LEDs.
Nachdem Sie sich für das Konzept entschieden haben, können Sie ein wenig auf den Rest der Elementbasis achten. 485go Treiber Ich benutze ADM2587E, der Chip enthält nicht nur den Treiber selbst, sondern auch die galvanische Trennung des Transformators auf RX, TX und DE, minus nur im Preis. Wir werden ESP-07 für die mqtt-Kommunikation über WIFI verwenden, hier sind meines Erachtens keine Kommentare erforderlich, weil nur die faulen haben am ESP8266 nichts gemacht. Ich musste mehr am visuellen Display basteln, dafür entschied ich mich für sk6812 RGBW LEDs. Wie sich bei AVR herausstellte, ist die Verwaltung nicht sehr einfach, da das Timing ziemlich schwierig ist, musste ich einige Teile des Assembler-Codes hinzufügen, was ursprünglich nicht geplant war. Aber das Ergebnis hat sich bestätigt, es ist informativ und schön ausgefallen, vor allem wenn man mit diesen LEDs am Ende des Plexiglasringes glänzt. Diese Angabe wurde mir von einem Angestellten vorgeschlagen, der bereits einen Hund dazu gegessen hatte (danke an Sasha).

Nachdem ich ein bisschen mit Helligkeit experimentiert hatte, wurde klar, dass eine Helligkeitsstufe nicht meine Entscheidung ist - es ist tagsüber schwer zu sehen und nachts sehr hell. Daher musste ich die Helligkeit des Lichts dieser LEDs in Abhängigkeit von der Beleuchtung im Raum ändern. Nun, das ist alles, Sie haben die Indikation herausgefunden, Sie dachten, aber nein, das Schwierigste für mich war, Leuchtmuster und Timings für sie zu erfinden.
Ich habe bei dieser Option angehalten:
- blau langsam - im Leerlauf, Kommunikation nur über WLAN (Modbus fehlt)
- blau schnell - Wechsel vom Ruhezustand in den Alarmmodus, Kommunikation nur über WLAN (Modbus fehlt)
- Grün Langsam - Leerlauf (Modbus-Kommunikation OK)
- grün schnell - vom Ruhezustand in den Alarmmodus wechseln (Modbus-Kommunikation OK)
- rot langsam - Alarmmodus
- roter Zeitraffer - Alarm
- gelber Schnellgasalarm

Wir haben die Anzeige herausgefunden, der nächste Abschnitt ist Macht.
Wie ich bereits sagte, habe ich eine Niederspannung von 24 V in meinem Haus, die Leistung der Module ist also genau das. Mit Blick auf die Zukunft werde ich sagen, dass ich nach dem Bau des ersten Boards viel ernähren musste. Dann wurde ich überzeugt, dass Sie die technischen Daten der Abwärtswandler sorgfältig lesen müssen, insbesondere an den Stellen, an denen die Nuancen der Verkabelung beschrieben werden. Basierend auf den Recherchen entschied ich mich für den Tiefsetzsteller MCP16311 und es stellte sich heraus, dass er sehr wählerisch war, nur nachdem ich genau das getan hatte, was in der Spezifikation geschrieben war - es funktionierte. Dies war jedoch nicht das größte Problem. Wie sich später herausstellte, verursachte das Ändern der Helligkeit der LEDs einen geringen Stromverbrauch, der ausreichte, um das Signal vom D203S-Sensor zu zerstören. Dieses Problem konnte mit zusätzlichen Kondensatoren im Betriebsstromkreis des Sensors und im Tiefsetzstellerkreis behoben werden. Nachdem ich alles mit mqtt (über ESP8266) debuggt hatte, verband ich mich mit rs-485 und es wartete wieder ein Fehler auf mich, am Ausgang des Opamps im Sensorkanal D203S sah ich wieder Müll und dieser Müll entsprach eindeutig dem Austausch auf rs-485. Im Allgemeinen stellte sich heraus, dass dies mit einem zusätzlichen LDO-Wandler für den gesamten analogen Teil überwunden werden konnte, und dann kam das Glück.
Und wenn Sie alles miteinander kombinieren, erhalten Sie das folgende Bild:

Und wenn das alles genommen und verlötet ist, sieht es ungefähr so aus:

Sie löten die Platine, druckten das Gehäuse, setzten alles zusammen, hängten es an die Decke, die Daten gingen in das System ein. Stellen wir uns also vor, wie Sie diese Daten in einem Smart-Home-System anwenden und natürlich auch Alarme an Telegramme senden können. Ich habe bis auf den ersten Punkt noch nichts getan, aber ich habe die folgenden Skripte erstellt:
- Einbeziehung von Licht auf der Treppe, wenn dieses Licht nicht eingeschaltet ist, wenn Bewegung in einem Raum auftritt, und es jetzt dunkel ist, und Nachtzeit
- Automatisches Öffnen des Rollladens im ersten Stock, wenn sie geschlossen sind, wenn es bereits Morgen ist und zum ersten Mal an einem Tag eine Bewegung im Wohnzimmer festgestellt wird
- Öffnen der Lüftungsklappen, wenn die CO-Konzentration einen bestimmten Wert überschreitet, und Schließen der Klappen, wenn der CO-Wert gesunken ist (tatsächlich in einem Raum mit Kamin)
- lüftungsklappen öffnen, wenn die temperatur eine bestimmte grenze überschritten hat und ansonsten schließen
- Automatische Abschaltung des Rollladens im ersten Stock, wenn die Rollläden geöffnet sind und wenn nachts Bewegungssensoren auf der Straße funktionieren und das Haus Nachtwache ist.
Also ergänzen, wir machen das Haus schlauer ...