Inhaltsverzeichnis:

IOT-basierter DOL-Starter-Controller für Bewässerungspumpenset - Gunook
IOT-basierter DOL-Starter-Controller für Bewässerungspumpenset - Gunook

Video: IOT-basierter DOL-Starter-Controller für Bewässerungspumpenset - Gunook

Video: IOT-basierter DOL-Starter-Controller für Bewässerungspumpenset - Gunook
Video: GSM Mobile Motor Starter Controller | Control Water Pump from anywhere with Mobile Phone 2024, November
Anonim
IOT-basierter DOL-Starter-Controller für Bewässerungspumpenset
IOT-basierter DOL-Starter-Controller für Bewässerungspumpenset
IOT-basierter DOL-Starter-Controller für Bewässerungspumpenset
IOT-basierter DOL-Starter-Controller für Bewässerungspumpenset

Hallo Freunde

In diesem anweisbaren geht es darum, wie man ein Bewässerungspumpenset über das Internet aus der Ferne überwacht und steuert.

Story: In meinem Betrieb bekomme ich nur ca. 6 Stunden am Tag Strom aus dem lokalen Netz. Die Zeiten sind nicht regelmäßig, die Verfügbarkeit von Strom kann am frühen Morgen oder am späten Abend oder sogar um Mitternacht sein. Jedes Mal, wenn Sie zum Bohrloch gehen, um die Verfügbarkeit der Stromversorgung zu überprüfen, war das Starten oder Stoppen des Motors ein sehr schmerzhafter Prozess. Außerdem musste ich sicherstellen, dass der Motor jeden Tag mindestens 2-3 Stunden lang läuft, um ausreichend Wasser für das Tropfsystem zu liefern. Ich habe lange nach Möglichkeiten gesucht, dieses Problem zu lösen, indem ich den Motor aus der Ferne betreibe und auch den Status kenne. Es gibt auf dem Markt erhältliche Geräte, die den Motor starten, sobald eine Stromversorgung vorhanden ist, aber sie haben nicht die Funktion, den Motor jederzeit zu stoppen. Außerdem gibt es zu keinem Zeitpunkt die Möglichkeit, den Status von Motor EIN/AUS zu kennen. Dies führt normalerweise zu einer Überbewässerung, die zu einem Verlust der Bodenfruchtbarkeit und auch zu einer Stromverschwendung führt. Endlich habe ich selbst eine Lösung gebaut, bei der ich den Motor jederzeit und überall vom Handy/Tablet/PC aus starten und stoppen kann…!!. Außerdem kann ich die Verfügbarkeit der Stromversorgung aus dem Netz sowie den Motorstatus (EIN / AUS) ständig überwachen. Ich hoffe, es wird Farmbesitzern auf dem Land helfen, ihre Bewässerungssysteme zu verwalten, ohne die ganze Zeit zum Starterstandort gehen zu müssen.

Lieferungen

Voraussetzungen:

Der Standort, an dem Sie dieses Gerät installieren möchten, muss über Internetverfügbarkeit verfügen (Breitband mit WLAN/mobilem Internet)

Dinge, die du brauchst:

  1. KnotenMCU /ESP12
  2. Zweikanalrelais
  3. WCS1700 – Stromsensor
  4. TP4056 Batterielademodul
  5. LD313, Kondensator – 1000uF Register – Zwei Register von 5k Ohm
  6. Jedes (alte) Smartphone mit Hotspot/Internet.

Wie es funktioniert:

Es handelt sich um eine einfache Cloud-basierte IOT-Lösung mit NodeMCU/ESP12 und Remote-MQTT-Broker. NodeMCU arbeitet als IOT-Gateway, steuert auch den DOL-Starter. Es verbindet sich über das Internet mit einem entfernten MQTT-Broker. Eine App, die auf einem Android-Handy läuft, verbindet sich mit dem Broker, über den wir unser Bewässerungspumpenset ständig überwachen und steuern können. Ich habe den kostenlos verfügbaren MQTT-Broker von Adafruit IO verwendet. Es gibt viele kostenlose Broker wie mosquitto, cloudmqtt usw. Sie können jeden Broker auswählen, vorausgesetzt, Sie ändern den Server und die Portnummer im Code. NodeMCU verbindet sich über WLAN vom mobilen Hotspot mit dem Internet. Yon kann jedes alte oder kostengünstige Mobiltelefon verwenden, um einen WLAN-Zugang über einen Hotspot oder andere Mittel zur Bereitstellung des Internets über WLAN bereitzustellen. Das Handy sollte an das Ladegerät angeschlossen werden, wie es bei 24X7 sein sollte.

NodeMCU ist mit zwei Relais verbunden, um den Start- und Stoppbetrieb des Motors zu steuern. Um den Strom im Motor zu messen, habe ich den Stromsensor WCS1700 verwendet. Der analoge Ausgang des Sensors wird verwendet, um zu wissen, ob der Motor EIN oder AUS ist. Es erkennt auch die Stromverfügbarkeit aus dem Netz und veröffentlicht sie an den Broker, damit wir jederzeit den Netzstatus kennen. Das Gerät abonniert zwei Feeds, um die Anforderung für Motor EIN und Motor AUS zu empfangen. Durch das Senden bestimmter Werte an diese Feeds können wir den Motor auf START oder STOP steuern.

Zuletzt habe ich die MQTT Dash-App auf meinem Android-Telefon installiert und so konfiguriert, dass sie sich mit dem MQTT-Broker verbindet und die Feeds auf seinem Dashboard/GUI verwendet. Die App verfügt über sehr gute Symbole mit Schaltflächen, Messgeräten, Schaltern usw., um ein attraktives Dashboard zu erstellen. Sie können jedoch jede mobile IOT-Heimautomatisierungs-App verwenden, die das mqtt-Protokoll unterstützt.

So funktioniert WCS1700:

WCS1700 ist im Grunde ein Hall-Effekt-Sensor, der eine Ausgangsspannung proportional zum Magnetfeld erzeugt, das erzeugt wird, wenn der Strom durch die Spule fließt. Die Spule hier ist eine Stromversorgungsleitung, die mit dem Motor verbunden wird. Es kann Wechselstrom bis zu 70 Ampere messen. Die Betriebsspannung liegt zwischen 3,3 bis 12 V. Weitere Informationen finden Sie im Datenblatt. Da ich ESP12 verwende, habe ich das gleiche Netzteil von 3,3 V als Betriebsspannung für WCS1700 verwendet. Wie im Datenblatt angegeben, sollte das Gerät bei 3,3 V eine Differenzspannung von ca. 32 bis 38 mV pro Ampere Strom durch die Spule erzeugen. Sie kann jedoch je nach Spulengröße / Luftspalt und Variationen im Gerät variieren. Daher musste ich es kalibrieren, indem ich es mit Ampere Meter testete. Ich bin nicht glücklich über die Genauigkeit des Geräts, aber es ist gut genug, um den Status des Motors als EIN / AUS zu bestimmen. Der Ausgangspin von WCS1700 ist mit A0 von ESP12 verbunden. Wenn kein Strom vorhanden ist, sollte der ESP12 den Wert um 556 anzeigen. Wenn der Strom in der Spule ansteigt, kann die Spannung je nachdem, wie das Kabel durch den Sensor verläuft, auf beiden Seiten liegen. Im Code habe ich die Differenz der Werte als Absolutwert von (x - 556) genommen. Durch Teilen des Ergebnisses durch 15 erhielt ich einen ungefähren Strom, der durch den Sensor fließt. Sie müssen dies ausprobieren, um die richtige Zahl für Sie zu erhalten. Jede Strommessung des Geräts über 5 Ampere betrachte ich als Motor EIN und unter 5 Ampere als Motor AUS. Sie können die richtige Nummer für Ihr Gerät verwenden, indem Sie experimentieren. Sie müssen WCS1700_CONST und MIN_CURRENT im Code entsprechend ändern.

Schritt 1: Geräteaufbau

Geräteaufbau
Geräteaufbau
Geräteaufbau
Geräteaufbau

Das obige Diagramm enthält vollständige Details zur Verdrahtung aller Komponenten.

Stromversorgung: Ich habe TP4056 zum Laden der Batterien und LM313 verwendet, um die 3,7 V - 4,2 V Batterieausgang auf 3,3 V zu regulieren, um NodeMCU mit Strom zu versorgen. Verwendet einen 1000-mF-Kondensator zwischen Vin und Masse von LM313, um eine stabile Versorgung von 3,3 V zu erhalten. Sie können ein normales mobiles USB-Ladegerät verwenden, um das TP4056 mit Strom zu versorgen. Es verfügt über eine Batterieschutzschaltung, um die Batterie vor Überladung zu schützen.

Netzstromversorgungserkennung: Der 5-k-Ohm-Spannungsteiler reduziert 5 V auf 2,5 V. Pin D5 von NodeMCU erkennt die Spannung.

Der Ausgangspin des WCS1700 ist mit A0 verbunden, um die analoge Spannung vom Sensor zu lesen. Die Netzstromleitung muss durch das Loch führen, um den Strom zu messen. Ich habe einen 0,01-uF-Kondensator verwendet, um den stabilen Messwert von WCS1700 zu erhalten.

D1 und D2 der NodeMCU werden mit IN0 und IN1 der Relaiseingangspins verbunden.

Schritt 2: DOL-Starterverbindungen

DOL-Starteranschlüsse
DOL-Starteranschlüsse
DOL-Starteranschlüsse
DOL-Starteranschlüsse

Ich habe den Steuerkreis des DOL-Starters optimiert, um einen weiteren Satz von START- und STOP-Schaltern einzuführen. Diese Änderung hat keinen Einfluss auf den manuellen Start/Stopp-Betrieb und sie funktionieren unverändert weiter.

Vorsicht !!!! Da es sich beim DOL-Starter um ein Hochspannungsgerät handelt, stellen Sie sicher, dass der Hauptschalter ausgeschaltet ist, bevor Sie die Box öffnen. Direkter Kontakt mit stromführenden Leitungen kann gefährlich sein. Wenn Sie sich nicht sicher sind, lassen Sie sich von einem Elektriker helfen, die Anschlüsse herzustellen

Ich habe ein 2-Kanal-5-V-Relaismodul als START- und STOP-Schalter verwendet. Diese Relais werden von ESP12 gesteuert.

Relais – 0 funktioniert als START-Schalter – verdrahtet als NO (Normally Open).

Relais-1 arbeitet als STOP-Schalter - verdrahtet als NC (normalerweise geschlossen). Der Anlasser hat bereits eine Verbindung vom oberen Schütz zum NVC. Sie müssen es entfernen und durch Relais -1 Drähte ersetzen, wie gezeigt.

Stellen Sie sicher, dass die Verbindungen zwischen dem Starter und den Relaismodulen aus Sicherheitsgründen vollständig isoliert sind. Ich habe ESP so programmiert, dass beide Relais 2 Sekunden lang gehalten werden, um das Drücken der START / STOP-Taste zu emulieren.

Schritt 3: Erstellen Sie ein Konto bei Adafruit IO (io.adafruit.com)

Ich habe Adafruit io mqtt Broker verwendet, der mit wenigen Einschränkungen kostenlos verwendet werden kann, aber für unsere Verwendung in Ordnung ist. Ich bevorzuge dies, weil ich es auch in anderen Projekten verwendet habe und es ziemlich zuverlässig fand und auch viele andere Funktionen wie Dashboard mit schöner GUI hat und sogar Trigger verwenden können. Um Adafruit io zu verwenden, müssen Sie ein Konto erstellen und den Benutzernamen und den aktiven Schlüssel notieren.

Schritt 4: Erstellen und installieren Sie die Software

Vollständiger Code ist in der Skizze verfügbar. Sie müssen dies in der Arduino IDE öffnen und einige Änderungen vornehmen, bevor Sie die Firmware kompilieren und hochladen. Wählen Sie als Board-Typ NodeMCU 1.0. Die Installation der IDE und zugehöriger Bibliotheken ist nicht Gegenstand dieser Dokumentation.

Ändern Sie die folgenden Zeilen im Code als Brache.

#define WLAN_SSID "xxx" // Dein mobiler Hotspot WLAN SSID

#define WLAN_PASS "……" //

/************************ Adafruit.io-Setup ***************** ************/

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883 // 8883 für SSL verwenden

#define AIO_USERNAME "xyz" // Dein Adafruit-Account-Benutzername

#define AIO_KEY "abcd……" // Ihr aktiver Schlüssel…

Über MQTT-Feeds: Das Gerät und der Client (mobile App) tauschen Informationen über Nachrichten-Feeds mithilfe des Pub-Submodells über den MQTT-Broker aus. Jeder Client oder jedes Gerät muss zum Empfangen einer Nachricht einen vordefinierten Feed abonnieren und die Veröffentlichungsmethode verwenden, um eine Nachricht an einen Feed zu senden. Für unser Projekt benötigen wir ca. 5 Feeds. Unten finden Sie die Erläuterungen zu jedem der Feeds, wie Sie im Code sehen, und wie sie funktionieren.

Netzstatus: Verfügbarkeit der Stromversorgung aus dem Netz wird im Feed /feeds/grid veröffentlicht. Adafruit_MQTT_Publish grid_stat = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/grid");

0 zeigt an, dass keine Stromversorgung verfügbar ist und 1 bedeutet, dass die Stromversorgung verfügbar ist.

Motorstatus: Das Gerät veröffentlicht den Status des Motors im Feed …/feeds/grid.

Adafruit_MQTT_Publish motor_status = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/motor")

Wert 0 für AUS und 1 für EIN

Taste Motor EIN: Dieser Feed wird verwendet, um die Motorstartanforderung zu empfangen. Das Gerät abonniert den Feed, um eine Motorstartanforderung mit dem Wert = 1 zu empfangen, und verwendet denselben Feed, um eine Bestätigungsnachricht wie 0 zu veröffentlichen. Auf diese Weise können wir bestätigen, dass die Startanforderungsnachricht tatsächlich vom Gerät empfangen wurde.

Adafruit_MQTT_Subscribe motoronbutton = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/motor_on");

Motor AUS-Taste:

Ähnlich wie bei der Startanforderung wird dieser Feed verwendet, um die Motorstoppanforderung zu empfangen. Das Gerät abonniert den Feed, um die Stoppanforderung mit dem Wert = 1 zu empfangen, und verwendet denselben Feed, um die Bestätigungsnachricht als 0 zu veröffentlichen.

Adafruit_MQTT_Subscribe motoroffbutton = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/motor_off");

Verbindung:

Dies ist ein spezieller Feed mit aktivierter Option "Letzter Wille". Wenn das Gerät in jedem festen Intervall einwandfrei funktioniert, veröffentlicht es connection=1, um dem Benutzer mitzuteilen, dass alles in Ordnung ist. Falls das System ausfällt oder die Verbindung verloren geht, kann das Gerät nicht mit dem Broker kommunizieren. In solchen Fällen veröffentlicht der MQTT-Broker selbst den Feed als connection=0, um den Benutzer darüber zu informieren, dass ein Fehler aufgetreten ist und das Gerät über das Internet nicht erreichbar ist. Wir müssen physisch gehen und das Gerät überprüfen. Der Code ist sehr einfach. Weitere Informationen zur Funktionsweise von „Last Will“finden Sie in der MQTT-Dokumentation.

if(itr <= 0)

{

mqtt.publish(AIO_USERNAME "/feeds/connection", "1", 1);

itr = CON_LIVE_ITR;

}

Der Rest des Codes ist selbsterklärend und es sind keine Änderungen erforderlich. Fühlen Sie sich frei zu kommentieren, falls Sie weitere Informationen benötigen.

Schritt 5: MQTT Dash APP auf Ihrem Handy installieren und konfigurieren

Installieren und konfigurieren Sie die MQTT Dash APP auf Ihrem Handy
Installieren und konfigurieren Sie die MQTT Dash APP auf Ihrem Handy
Installieren und konfigurieren Sie die MQTT Dash APP auf Ihrem Handy
Installieren und konfigurieren Sie die MQTT Dash APP auf Ihrem Handy
Installieren und konfigurieren Sie die MQTT Dash APP auf Ihrem Handy
Installieren und konfigurieren Sie die MQTT Dash APP auf Ihrem Handy
  1. Installieren Sie MQTT Dash auf Ihrem Android-Handy und öffnen Sie die App
  2. Klicken Sie auf das +-Symbol in der oberen rechten Ecke, um ein Gerät hinzuzufügen.
  3. Wie im ersten Bild oben gezeigt, geben Sie Ihrem Gerät einen Namen, sagen Sie "MyFarm-IPSet". Adressfeld als io.adafruit.com und Port als 1883, Benutzername sollte Ihr adafruit-Benutzername und Passwort sollte Ihr Active Key von adafruit sein. Lassen Sie die restlichen Felder unverändert. Klicken Sie abschließend auf Speichern.
  4. Sie haben Ihr Gerät erstellt. Klicken Sie nun darauf, um ein Dashboard hinzuzufügen.
  5. Klicken Sie auf + und wählen Sie Typ als Schalter/Schaltfläche. Geben Sie wie oben gezeigt sys in das Namensfeld ein. und geben Sie den Feednamen in das Themenfeld ein. jeder Feed sollte mit username/feeds/ beginnen. dazu /feeds/connection. Stellen Sie sicher, dass Veröffentlichung aktivieren deaktiviert ist. Durch Klicken auf das anzuzeigende Symbol können Sie die Art des Symbols auswählen, das auf dem Dashboard aussehen soll. Wählen Sie für den Wert 1 eine der Farben (z. B. Grün) und für den Wert 0 die Farbe Grau oder Rot. Klicken Sie abschließend oben rechts auf Speichern. Erstellen Sie auf ähnliche Weise zwei weitere Symbole, eines für Grid mit Benutzername/Feeds/Grid als Thema und Motor mit Benutzername/Feeds/Motor. Stellen Sie sicher, dass Veröffentlichung aktivieren deaktiviert ist.
  6. Zuletzt erstellen Sie die Schaltfläche Motor EIN. Es ist wieder das gleiche wie der Typ wie Schalter/Taste. Das Thema sollte /feeds/motor_on sein und sicherstellen, dass Enable Publish dieses Mal aktiviert ist und QOS =1 ist. Erstellen Sie auf ähnliche Weise eine weitere Schaltfläche für Motor AUS. Das Thema sollte /feeds/motor_off sein.

Schritt 6: Letzter Schritt:-) Testen und Feintuning

  1. Zur Sicherheit müssen Sie das Gerät zuerst auf seine START- und STOP-Funktion testen, bevor Sie die Relais an den Direktstarter anschließen. Aktivieren Sie Hotspot auf dem Handy mit aktiviertem Internet. Schließen Sie den Laptop mit der Entwicklungsumgebung direkt an den NodeMCU-USB-Anschluss an, während gleichzeitig ein anderes Ladegerät an das TP4056 angeschlossen ist. Wenn das Gerät erfolgreich mit dem Internet verbunden ist, sollten Sie auf dem Smartphone 1 Gerät sehen, das mit dem Hotspot verbunden ist.
  2. Öffnen Sie auf dem anderen Smartphone, auf dem Sie MQTT Dash installiert haben, das App-Dashboard. Sie sollten sehen, dass das NET-Symbol grün und das Grid-Symbol ebenfalls grün mit ihren Werten 1 ist. Das Motorsymbol sollte als Motor aus mit dem Wert 0 angezeigt werden.
  3. Wenn Sie auf die Schaltfläche Motor EIN klicken, sollte das Startrelais zwei Klickgeräusche im Abstand von zwei Sekunden machen. Ebenso die Taste Motor OFF.
  4. Schalten Sie nun zur Sicherheit die Hauptversorgung des DOL-Starters aus und schließen Sie die Relais an den DOL-Starter an, wie oben in Schritt 2 gezeigt. Stellen Sie sicher, dass der Motor ausgeschaltet ist. Drücken Sie die Reset-Taste auf der NodeMCU. Aus der seriellen Monitorausgabe können Sie Debug-Anweisungen sehen, die Werte vom WC1700-Sensor, Delta und den berechneten Strom in der Spule ausgeben. Mit Motor im ausgeschalteten Zustand und " #define WCS1700_CONST 15 " sollte maxCur konstant kleiner als 2 sein. Wenn größer als 2 angezeigt wird, versuchen Sie es mit höheren Werten von WCS1700_CONST. Jedes Mal müssen Sie den Code neu kompilieren und die Firmware laden.
  5. Schalten Sie nun den Motor ein und suchen Sie erneut nach den aktuellen Messwerten. Lassen Sie den Motor für ca. 10 -15 Minuten eingeschaltet und notieren Sie den stabilen Stromwert. Der Strom kann ungefähr zwischen 10 und 20 Ampere schwanken und muss nicht genau sein.
  6. Gehen Sie zurück zum Code und setzen Sie " #define MIN_CURRENT X. Wobei X 40 Prozent des maximalen Stroms ist, der dem numerischen Wert angenähert ist. In meinem Fall habe ich MIN_CURRENT auf 5 gesetzt. Kompilieren und laden Sie die Firmware erneut auf NodeMCU.
  7. Entfernen Sie das USB-Kabel von NodeMCU. Schalten Sie das Gerät mit dem an TP4056 angeschlossenen USB-Ladegerät AUS und EIN. Durch Klicken auf die Schaltfläche Motor ON in der mobilen App sollte der Motor gestartet werden. Sobald der Motor eingeschaltet ist, sollte der Status des Motors auf dem App-Dashboard als EIN angezeigt werden. Ein Klick auf die Stopp-Schaltfläche sollte den Motor stoppen.

Genießen !!!!

Empfohlen: