Grüße an alle Habr-Leser! In meinem nächsten Artikel werde ich noch einmal über ARDUINO sprechen. Ich möchte Ihnen mein nächstes Projekt vorstellen, das auf dem Mikrocontroller nRF52832 implementiert ist. Dies ist ein Temperatur- und Feuchtigkeitssensor auf sht20 | (
Datenblatt ) mit einer monochromen elektronischen Tintenanzeige (E-INK | E-PAPER), die Teil des MySensors-Ökosystems ist.

Die Hauptfunktion besteht darin, die Temperatur und Luftfeuchtigkeit im Raum zu überwachen und Daten an die Steuerung eines Smart Homes oder direkt an den Stellantrieb zu senden. Eine zusätzliche Funktionalität ist lediglich die Ausgabe von Daten vom sht20-Sensor, Netzwerkinformationen und Batteriestand an den Monitor. In meiner Implementierung ist dies nur eine direkte Interaktion direkt mit dem Aktuator (Heizungsregler). Die Implementierung ist aus Sicht von MySensors nicht kanonisch. Ich habe die Funktionalität der Master-Slave-Modi, Sensortypen und Air Snap hinzugefügt. Außerdem wurde in meiner Implementierung das Verfahren zum Initialisieren der Transportschicht geändert, weil Die MySensors-Logik ist für eigenständige Geräte nicht sehr gut. Aber all dies ist eine etwas andere Geschichte, die vielleicht einer separaten Veröffentlichung würdig ist, aber vorerst ein Artikel über das Gerät in der Tradition des MySensors-Protokolls.
Die Idee eines Geräts mit einer solchen Funktionalität ist in meinem Kopf schon lange gereift. Der erste Versuch, diese Idee umzusetzen, wurde auf dem atmega328-Mikrocontroller unternommen. Im Prinzip wurde dies getan, aber ich wollte mehr Energieeffizienz und eine farbenfrohere Anzeige von Informationen auf dem Display.
Version auf Atmega 328
Bei der Präsentation des Sensors bezog sich die Community manchmal auf das Xiaomi-Firmengerät. Aber es gibt einen kleinen Unterschied, Xiaomi hat ein Anzeigegerät, in meinem Fall ist es ein Smart-Home-Systemsensor mit Anzeigefunktion. Warum anzeigen? Ich möchte nur manchmal einfach meinen Kopf in Richtung des Sensors drehen und die Temperatur im Raum betrachten :).

Der Sensor wurde auf zwei Platinen implementiert, die Basis für die Anzeigeschaltung wurde den üblichen Waveshare-Anzeigen entnommen
Datashit . Zwar wurden später geringfügige Änderungen vorgenommen. Das Gehirn des Sensors ist der nRF52832-Chip in einer modularen Implementierung von HOLYIOT. Die Module selbst verdienen besondere Aufmerksamkeit, dies ist die problemloseste Implementierung in Bezug auf die Arbeit in der Arduino IDE. Das Gerät verwendete Module - YJ-16048.

Die Grundlage für die Software-Implementierung der Arbeit mit dem Display wurde als
"Instanz" auf der Website Waveshare Electronics verteilt. Es stimmt, hier war es nicht ohne Verfeinerung.
Die Messungen des Anzeigeverbrauchs entsprechen den Angaben im Datenblatt. Das Wichtigste ist, dass diese Anzeige in den Ruhezustand versetzt werden kann und die Daten auf dem Bildschirm verbleiben. Das Display in einen Traum zu verwandeln, funktionierte zwar nicht sofort, die Implementierung von Waveshare erlaubte dies jedoch nicht.
Die Stromversorgung des Sensors erfolgt über zwei cr2450-Batterien und senkt den TPS62745DSSR1-Chip mit ziemlich guten Eigenschaften auf funktionierende 3,3 V |
Datenblatt . Im Moment können wir zuversichtlich sagen, dass dieses Gerät (die beschriebene Version) 1 Jahr lang funktionsfähig ist.
Verbrauch im Tiefschlafmodus - ~ 25 μA (mit einem Testprogramm). Durchschnittlicher Verbrauch im Betriebsmodus ~ 9mA.
Das Projekt ist offen,
Gerber- Dateien sind auf der
OpenHardVar- Website verfügbar, der Programmcode und die Bibliothek sind hier verfügbar (
Google Drive ). Warum nicht GitHub? Es ist einfach so passiert, in der endgültigen Re-Versionierung (v2) wird es auch da sein.
Eine separate Konversation für diejenigen, die sich entschieden haben, dieses Gerät zu wiederholen, verdient das Thema der Konvertierung der Zeichen der gewünschten Schriftarten in C-Arrays. Meine Erfahrung ist die Konvertierung mit TheDotFactory.
Ich werde versuchen, den Prozess mit Bildern zu beschreiben :) Ein weiteres Problem war das Aktualisieren der Informationen auf dem Bildschirm. Auf diesen Anzeigen ist eine teilweise Aktualisierung des gewünschten Bereichs auf dem Bildschirm verfügbar, was ein absolutes Plus für den Stromverbrauch darstellt. Das Minus ist jedoch das Auftreten von Artefakten im Bereich der Aktualisierung von Daten aus vorherigen Zeichen.

Dieses Problem wurde jedoch gelöst (siehe Programmcode). Es endete so:




Das Video zeigt die Bedienung des Displays.
Dies zeigt die Aktualisierung der Daten auf dem Bildschirm nach der Verfeinerung:
Diese Implementierung ist nicht endgültig, dieses Projekt muss in Form eines Arduino-Moduls wiederholt werden. Ein Korps dazu ist nicht geplant. Aus diesem Projekt wurden nun mehrere als logische Fortsetzung auf einmal geboren. Die Hauptunterschiede des zukünftigen V2 werden durch eine einzelne Batterie, ein dreifarbiges Display und das Vorhandensein eines Gehäuses gespeist.
Beispiel für das Auslösen einer dreifarbigen Anzeige:
Es wird dringend empfohlen (für diejenigen, die es wiederholen möchten), mein Thema im
.org-Forum zu diesem Projekt (auf Englisch) zu lesen. Wenn die Sprache ein Problem darstellt, helfe ich immer gerne allen im Chat (Installieren von Boards, Arbeiten mit nRF5-Mikrocontrollern in einer Arduino-Ide-Umgebung, Tipps zur Arbeit mit dem mysensors-Protokoll -
@mysensors_rus