Wasserzählerstand: ESP8266 + Android

Viele haben jetzt Wasserzähler. Und die meisten stehen vor dem Problem, Messwerte von diesen Messgeräten zu erfassen und rechtzeitig zu liefern. Ich war keine Ausnahme. Es war bequem, Zeugnisse von mir zu nehmen, aber hier vergaß ich ständig, sie zu nehmen und erinnerte mich an sie im ungünstigsten Moment. Es wurde beschlossen, den Prozess der Messwertmessung zu automatisieren, damit Sie sie jederzeit anzeigen können. Wen interessiert es, wie ich ein Bild links auf meinem Handy bekomme, bitte unter Katze.

Einführung


Die Idee der Implementierung kam mir nach dem Lesen dieses Artikels. Während der Reparatur habe ich sofort die Impulszähler eingestellt. Die erste Version des auf ESP-03 basierenden Geräts wurde erstellt. Der Code ist in LUA geschrieben. Daten wurden auch an thingspeak.com übertragen .

Erste Version


Nach 2-monatiger Anwendung wurden folgende Nachteile festgestellt:

  1. Es gab keine leichte Betriebsanzeige, da das Modul einige Male hing, war es wichtig
  2. Die Komplexität der Einstellungen, da die Einstellungen im Code enthalten waren
  3. Für die Stromversorgung wurde ein Kabel mit einem Mini-USB-Anschluss benötigt. Ich hatte dies nur von Sony Playstation
  4. Unbequeme Anzeigeergebnisse auf thingspeak.com
  5. Die relative Komplexität der Implementierung.

Daher wurde beschlossen, die zweite Version zu erstellen, die die folgenden Anforderungen erfüllt:

  1. MicroUSB-Stromanschluss
  2. Führen Sie die Konfiguration durch, indem Sie über WLAN eine Verbindung zum Gerät herstellen
  3. Arbeitsanzeige
  4. Bequemes Anzeigen von Informationen
  5. Einfache Wiederholung
  6. Ästhetisches Aussehen
  7. Niedrige Kosten

Gebühr


Die Leiterplatte ist recht einfach. Es basiert auf demselben ESP-03. Die Website esp8266.ru half mir bei den Hauptfunktionen der Verbindung .



COLD, HOT - RJ9-Buchsen
LED1 - dient zur Anzeige des Betriebs der Karte (Einstellmodus - ständig eingeschaltet, Fehler - häufiges Blinken, normaler Betrieb - einmal pro Sekunde blinkend)
LED2 - Anzeige der Stromversorgung
R3, R4 - 330 Ohm
R1, R2, R5, R6 , R7 - 6,8 kOhm
C1 - 33 mkF Tantalkondensator;
C2 - 0,1 mkF Keramikkondensator;
LM1117 - zur Umwandlung von 5 V in 3,3 V;
J1 - Jumper zum Blinken von ESP-03
BTN - zur Auswahl des Platinenbetriebsmodus

Ein Mini-USB-Anschluss zum Flashen des Moduls und zum Aufzeichnen von Skripten wurde hinzugefügt. Für die Stromversorgung wird ein weiterer Micro-USB-Anschluss separat hinzugefügt, ohne dass RX- und TX-Pins angeschlossen werden müssen (dies wird im Diagramm nicht angezeigt). Dies liegt an der Tatsache, dass das Modul aus irgendeinem Grund einfriert, wenn Sie das Modul über den miniUSB-Anschluss mit Strom versorgen, an dem RX und TX angeschlossen sind. Ich habe versucht, RX und TX hochzuziehen, aber nichts hat geholfen. Deshalb habe ich beschlossen, es so zu lassen, außerdem hatte ich viele Kabel mit microUSB.

Die Abmessungen der Komponenten erleichtern die Erstellung einer Karte mithilfe der LUT-Methode, die zum Debuggen von Skripten durchgeführt wurde. Später bestellte ich die Herstellung der Platte bei den Chinesen . Die Größe der Platine wurde an das vorhandene Gehäuse angepasst.

Fotos vor der Installation:

Bild


Foto nach:



Firmware


Ich habe die Firmware mit dem Online-Konstruktor gesammelt . Es ist möglich, NodeMCU-Firmware nur mit den erforderlichen Modulen zu generieren, wodurch Sie den freien Speicherplatz erhöhen können. Ich hatte kein Problem mit Speichermangel, und infolgedessen wurden etwa 30% des freien Speicherplatzes für Skripte und Zusatzdateien ausgegeben. Ich habe die Firmware mit nodemcu-flasher hochgeladen . Ich habe ESPlorer verwendet , um Skripte zu schreiben und zu füllen .

Die Bedienung des Impulszählers ähnelt dem Drücken einer Taste. Wenn bestimmte Werte übergeben werden, werden die Kontakte geschlossen und geöffnet. Mein Zähler schloss die Kontakte an der Nummer 7 und öffnete an der Nummer 2. Ich hängte die Zähler an die GPIO12-, GPIO13-Anschlüsse und an Masse mit einem Pull-up am Netzteil (ein interner Widerstand wird verwendet). Wenn der Port seinen Wert auf 0 ändert, können wir davon ausgehen, dass 10 l Wasser verbraucht wurden.

Das Gerät kann in zwei Modi betrieben werden: Setup-Modus und Lesemodus. Halten Sie die BTN-Taste gedrückt, um bei eingeschalteter Stromversorgung in den Setup-Modus zu wechseln. Dies dauert 2 Sekunden. In diesem Modus arbeitet das ESP als Zugriffspunkt und ist ein einfacher Webserver. Ein zugängliches ESP-Netzwerk wird angezeigt - ???????, wo anstelle von Zeichen? wird id esp sein. Zum Konfigurieren müssen Sie eine Verbindung zu diesem Netzwerk herstellen und im Browser zu 1.1.1.1 gehen. Die folgende Seite wird angezeigt:



Wenn die Taste beim Einschalten nicht eingeklemmt wurde, beginnt der Lesemodus. In diesem Modus wird jede Sekunde der Status der GPIO12- und GPIO13-Ports überprüft. Wenn irgendwo 0 erscheint, erhöht sich der entsprechende Wert. Anfangs habe ich eine Interrupt-basierte Prüfung durchgeführt, aber diese Methode hat sich als nicht zuverlässig herausgestellt (ESP hängt regelmäßig). Jede Minute wird versucht, Daten an den Server zu senden (falls Änderungen vorgenommen wurden). Für jeden Zähler werden 2 Werte übertragen: der aktuelle Zählerstand und der Änderungsbetrag seit der letzten Datenübertragung.

Android App


Wie gesagt, auf thingspeak.com war es mir unangenehm, mir die Messwerte anzusehen . Ich habe beschlossen, eine Android-Anwendung zu schreiben. Das Ergebnis ist eine Anwendung, mit der Sie:

  • Erstellen Sie Verbrauchsdiagramme nach Stunden, Tagen, Monaten
  • Zugriff auf Daten offline
  • Hinzufügen eines Metrik-Widgets

Thingspeak.com verfügt über eine API, mit der Sie Daten sammeln können. Mit dieser API fordert die Anwendung bei jedem Start oder vor dem Aktualisieren des Widgets die neuesten Daten an und speichert sie in einer lokalen Datenbank. Weitere Arbeiten mit ihr sind bereits im Gange. Der Anwendung wurden zwei Arten von Widgets hinzugefügt: als Zähler und als Verbrauchsdiagramm. Es stellte sich als ziemlich praktisch heraus.

Anwendungs-Screenshots


Ich dachte daran, eine automatische Zählerablesung zu implementieren, fand jedoch keine vorgefertigte API. Es war möglich, den offiziellen Antrag zu analysieren, aber er ist nicht zuverlässig. Für Moskau gibt es eine EMP . Ich habe mich dort registriert und Zugriff auf ihre API erhalten, aber Sie können nur sehen, welche Messwerte angegeben wurden, was für mich nicht interessant war.

Fazit


Die Kosten für das Gerät ohne den Fall betrugen ungefähr 450 Rubel. Einige der Komponenten wurden in einem bekannten Geschäft gekauft. Wenn Sie alles von den Chinesen nehmen, können die Kosten auf etwa 370 Rubel reduziert werden. Diese Version für 4 Monate hat nie gehangen oder ist fehlgeschlagen. Das resultierende Gerät ist einfach zu wiederholen und zu ändern. Mit seiner Hilfe erfuhr ich, dass die Toilettenschüssel langsam aber sicher Wasser durchließ.

Nützliche Links:

Source: https://habr.com/ru/post/de395459/


All Articles