Inhaltsverzeichnis:

So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu - Teil 2 - Software - Gunook
So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu - Teil 2 - Software - Gunook

Video: So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu - Teil 2 - Software - Gunook

Video: So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu - Teil 2 - Software - Gunook
Video: Windgeschwindigkeit messen mit dem Arduino & Selbstbau Anemometer | Update 2024, November
Anonim
So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu - Teil 2 - Software
So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu - Teil 2 - Software
So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu - Teil 2 - Software
So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu - Teil 2 - Software

Einführung

Dies ist die Fortsetzung des ersten Beitrags "How to build your own Anemometer Using Reed Switches, Hall Effect Sensor and Some Scraps on Nodemcu - Part 1 - Hardware" - wo ich zeige, wie man die Windgeschwindigkeits- und Richtungsmessgeräte zusammenbaut. Hier werden wir die Messsteuerungssoftware nutzen, die für die Verwendung in einem Nodemcu mit der Arduino IDE entwickelt wurde.

Projektbeschreibung

Im vorherigen Beitrag sind die Geräte, die mit dem Nodemcu bewaffnet und verbunden sind, in der Lage, die Geschwindigkeit und Richtung des Windes zu messen. Die Steuerungssoftware wurde entwickelt, um die Drehung des Anemometers für einen bestimmten Zeitraum abzulesen, die Lineargeschwindigkeit zu berechnen, die Richtung abzulesen, in der sich die Schaufel befindet, die Ergebnisse in der OLED anzuzeigen, die Ergebnisse in ThingSpeak zu veröffentlichen und 15 Minuten zu schlafen, bis die nächste Messung.

Haftungsausschluss: Dieses Anemometer sollte nicht für professionelle Zwecke verwendet werden. Es ist nur für den akademischen oder privaten Gebrauch.

Hinweis: Englisch ist nicht meine natürliche Sprache. Wenn Sie grammatikalische Fehler finden, die Sie daran hindern, das Projekt zu verstehen, lassen Sie es mich bitte wissen, um sie zu korrigieren. Ich danke dir sehr.

Schritt 1: Arduino IDE, ESP8266 Boards und Bibliotheken und Ihr ThingSpeak-Konto installieren

Installieren von Arduino IDE, ESP8266-Boards und -Bibliotheken und Ihrem ThingSpeak-Konto
Installieren von Arduino IDE, ESP8266-Boards und -Bibliotheken und Ihrem ThingSpeak-Konto
Installieren von Arduino IDE, ESP8266-Boards und -Bibliotheken und Ihrem ThingSpeak-Konto
Installieren von Arduino IDE, ESP8266-Boards und -Bibliotheken und Ihrem ThingSpeak-Konto

Installieren von Arduino IDE und Nodemcu

Wenn Sie die IDE des Arduino noch nie installiert haben, lesen Sie bitte das Tutorial im Link - So installieren Sie die Arduino IDE - wo Sie die vollständige Anleitung finden.

Im nächsten Schritt, um das Nodemcu-Board zu installieren, verwenden Sie dieses Tutorial aus den Magesh Jayakumar Instructables, das sehr vollständig ist. So installieren Sie Nodemcu ohne Arduino IDE

Bibliotheken installieren

Im nächsten Schritt müssen Sie die Bibliotheken installieren, die die Skizze verwendet. Sie sind üblich und Sie können die unten aufgeführten Schritte ausführen.

ThingSpeak-Bibliothek -

ESP8266-Bibliothek -

Erstellen eines ThingSpeak-Kontos

Um das ThingSpeak (https://thingspeak.com/) zu nutzen, müssen Sie ein Konto erstellen (es ist für eine bestimmte Anzahl von Interaktionen noch kostenlos), in dem Sie die gemessenen Daten in Ihrem Windmesser speichern und die Windverhältnisse in Ihrem Zuhause überwachen können. sogar per Handy. Durch die Nutzung von ThingSpeak können Sie jedem Interessierten den öffentlichen Zugang zu Ihren gesammelten Daten gewähren. Das ist ein guter Vorteil des ThingSpeak. Rufen Sie die Startseite auf und folgen Sie den Schritten, um Ihr Konto zu erstellen.

Sobald das Konto erstellt wurde, rufen Sie dieses Tutorial – ThingSpeak Erste Schritte – auf, um Ihre Kanäle zu erstellen. Es ist ziemlich gut erklärt. Zusammenfassend müssen Sie einen Kanal erstellen, in dem die Daten gespeichert werden. Dieser Kanal hat eine ID und eine Schlüssel-API, die jedes Mal, wenn Sie Daten aufzeichnen möchten, in der Skizze referenziert werden sollten. ThingSpeak speichert alle Daten in einer Bank und zeigt sie bei jedem Zugriff auf Ihr Konto an, so wie Sie es konfiguriert haben.

Schritt 2: Erkundung der Skizze

Die Skizze erkunden
Die Skizze erkunden
Die Skizze erkunden
Die Skizze erkunden

Flussdiagramm

Im Diagramm können Sie das Fluxogramm der Skizze verstehen. Wenn Sie den Nodemcu aufwecken (verknüpfen), verbindet er sich mit Ihrem Wi-Fi-Netzwerk, dessen Parameter Sie konfiguriert haben, und beginnt 1 Minute Zeit zu zählen, um die Messungen durchzuführen. Zuerst werden die Anemometer-Umdrehungen 25 Sekunden lang gezählt und berechnet die Lineargeschwindigkeit und lesen Sie die Windrichtung ab. Die Ergebnisse werden auf dem OLED angezeigt. Führen Sie die gleichen Schritte erneut aus und für diese zweite Lesung wird es an das ThingSpeak übertragen.

Dann schläft Nodemcu 15 Minuten lang, um den Akku zu schonen. Da ich ein kleines Solarpanel verwende, ist dies zwingend erforderlich. Wenn Sie eine 5V-Quelle verwenden, können Sie das Programm so ändern, dass es nicht schläft und die Daten weiter misst.

Aufbau der Programme

Im Diagramm sehen Sie den Aufbau der Skizze.

Anemometer_Instructables

Es ist das Hauptprogramm, das die Bibliotheken lädt, die Variablen startet, den Attach-Interrupt steuert, alle Funktionen aufruft, die Windgeschwindigkeit berechnet, seine Richtung bestimmt und in den Ruhezustand versetzt.

Kommunikation

Verbinden Sie das WLAN und senden Sie die Daten an ThingSpeak.

Anmeldeinformationen.h

Die Schlüssel Ihres WLAN-Netzwerks und die Kennungen Ihres Kontos in ThingSpeak. Hier ändern Sie Ihre Schlüssel-IDs und APIs.

definiert.h

Es enthält alle Variablen des Programms. Hier können Sie die Lesezeiten ändern oder wie lange der Nodemcu schlafen soll.

Funktionen

Es enthält die Funktionen zum Kombinieren der Parameter und Auslesen des Multiplexers sowie die Funktion zum Auslesen der Umdrehungen des Anemometers.

oledDisplay

Zeigen Sie die Ergebnisse der Windgeschwindigkeit und -richtung auf dem Bildschirm an.

Schritt 3: Erläuterungen zu …

Erläuterungen zu …
Erläuterungen zu …
Erläuterungen zu …
Erläuterungen zu …
Erläuterungen zu …
Erläuterungen zu …
Erläuterungen zu …
Erläuterungen zu …

Unterbrechung anhängen

Die Drehung des Anemometers wird durch die Funktion attachInterrupt () (und detachInterrupt ()) im GPIO 12 (Pin D6) des Nodemcu gemessen (es hat eine Interrupt-Funktion an seinen D0-D8-Pins).

Interrupts sind Ereignisse oder Bedingungen, die den Mikrocontroller veranlassen, die Ausführung der von ihm ausgeführten Aufgabe zu stoppen, vorübergehend in einer anderen Aufgabe zu arbeiten und zur ursprünglichen Aufgabe zurückzukehren.

Sie können die Details der Funktion im Link zum Tutorial von Arduino lesen. Siehe attachInterrupt().

Syntax: attachInterrupt(Pin, Callback-Funktion, Interrupt-Typ/Modus);

Stift = D6

Callback-Funktion = rpm_anemometer - zählt jeden Impuls auf einer Variablen.

Interrupt-Typ/Modus = RISING - Interrupt, wenn der Pin von Low nach High geht.

Bei jedem vom Magnetzünder im Hall-Sensor erzeugten Impuls geht der Stift von niedrig auf hoch und die Zählfunktion wird aktiviert und der Impuls in einer Variablen während der festgelegten 25 Sekunden summiert. Nach Ablauf der Zeit wird der Zähler abgeschaltet (detachInterrupt()) und die Routine berechnet die Geschwindigkeit im abgeschalteten Zustand.

Berechnung der Windgeschwindigkeit

Nachdem festgestellt wurde, wie viele Umdrehungen das Anemometer in 25 Sekunden abgegeben hat, berechnen wir die Geschwindigkeit.

  • RADIO ist die Messung von der Mittelachse des Anemometers bis zur Spitze des Tischtennisballs. Sie müssen Ihre sehr gut gemessen haben - (siehe das Diagramm, das 10 cm sagt).
  • RPS (Umdrehungen pro Sekunde) = Umdrehungen / 25 Sekunden
  • RPM (Umdrehungen pro Minute) = RPS * 60
  • OMEGA (Winkelgeschwindigkeit - Radiant pro Sekunde) = 2 * PI * RPS
  • Linear_Velocity (Meter pro Sekunde) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km pro Stunde) = 3,6 * Linear_Velocity und das wird an ThingSpeak gesendet.

Windfahnenrichtung lesen

Um die Position der Windfahne zu lesen und die Windrichtung zu bestimmen, sendet das Programm Low- und High-Signale mit allen Kombinationen der Parameter A, B, C (muxABC-Matrix) an den Multiplexer und wartet auf den Empfang des Ergebnisses an Pin A0 das kann jede Spannung zwischen 0 und 3,3 V sein. Die Kombinationen sind im Diagramm dargestellt.

Wenn beispielsweise C = 0 (low), B = 0 (low), A = 0 (low) ist, gibt der Multiplexer ihm die Daten von Pin 0 und sendet das Signal an A0, das von Nodemcu gelesen wird; wenn C = 0 (low), B = 0 (low), A = 1 (high), sendet Ihnen der Multiplexer die Daten von Pin 1 usw., bis das Lesen der 8 Kanäle abgeschlossen ist.

Da das Signal analog ist, wird das Programm in ein digitales (0 oder 1) umgewandelt, wenn die Spannung kleiner oder gleich 1,3 V ist, ist das Signal 0; wenn es größer als 1,3 V ist, ist das Signal 1. Der Wert 1,3 V ist willkürlich und für mich hat es sehr gut funktioniert. Es gibt immer kleine Leckströme und dies schützt vor Fehlalarmen.

Diese Daten werden in einem Vektor val[8] gespeichert, der mit dem Adressfeld als Kompass verglichen wird. Siehe die Matrix im Diagramm. Wenn der empfangene Vektor beispielsweise [0, 0, 1, 0, 0, 0, 0, 0, 0] ist, zeigt er in der Matrix die Richtung E an und entspricht einem Winkel von 90 Grad; wenn [0, 0, 0, 0, 0, 0, 1, 1] in der Matrix die WNW-Adresse angibt und einem Winkel von 292,5 Grad entspricht. Das N entspricht [1, 0, 0, 0, 0, 0, 0, 0, 0] und einem Winkel von 0 Grad.

Was an das ThingSpeak gesendet wird, liegt am Winkel, da es nur Nummern akzeptiert.

Schritt 4: Kommunikation

Kommunikation
Kommunikation
Kommunikation
Kommunikation

So senden Sie Daten an ThingSpeak

Für das Versenden der Daten ist die Funktion thingspeaksenddata() zuständig.

ThingSpeak.setField (1, float (linear_velocity_kmh)) - Sende die Geschwindigkeitsdaten an Feld1 meines Kanals

ThingSpeak.setField (2, float (wind_Direction_Angle)) - Sende die Adressdaten an Feld2 meines Kanals

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - Senden Sie myChannelNumber an meinen Kanal mit der geschriebenen myWriteAPIKey-API, die von TS angegeben wird. Diese Daten wurden von TS beim Erstellen Ihres Kontos und Kanals generiert.

In den obigen Bildern sehen Sie, wie das ThingSpeak die empfangenen Daten anzeigt.

Unter diesem Link können Sie auf die Daten meines Projekts im öffentlichen Kanal von ThingSpeak zugreifen.

Schritt 5: Hauptvariablen

Windfahnenparameter

  • MUX_A D5 - mux pi A an Nodemcu-Pin D5
  • MUX_B D4 - Mux-Pin B zu Nodemcu-Pin D4
  • MUX_C D3 - Mux-Pin C zu Nodemcu-Pin D3
  • READPIN 0 - Analogeingang an NodeMcu = A0
  • NO_PINS 8 - Anzahl der Mux-Pins
  • val[NO_PINS] - Ports 0 bis 7 von Mux
  • wind_Direction_Angle - Winkel der Windrichtung
  • String windRose[16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - Kardinäle, Sicherheiten und Untersicherheiten
  • windAng[16] = {0, 22.5, 45, 67.5, 90, 112.5, 135, 157.5, 180, 202.5, 225, 247.5, 270, 292.5, 315, 337.5} - Winkel jeder Richtung
  • Ziffer [16] [NO_PINS] - Richtungsmatrix
  • muxABC[8] [3] - ABC-Mux-Kombinationen

Windmesserparameter

  • rpmcount - zählen Sie, wie viele volle Umdrehungen das Anemometer in der vorgegebenen Zeit gemacht hat
  • timemeasure = 25.00 - Messdauer in Sekunden
  • timetoSleep = 1 - Nodemcu Wachzeit in Minuten
  • sleepTime = 15 - Zeit zum Durchschlafen in Minuten
  • rpm, rps - Rotationsfrequenzen (Umdrehungen pro Minute, Umdrehungen pro Sekunde)
  • Radius - Meter - das Maß für die Länge des Anemometerflügels
  • linear_velocity - lineare Geschwindigkeit in m/seg
  • linear_velocity_kmh - Lineargeschwindigkeit in km/h
  • omega - Radialgeschwindigkeit in rad/seg

Unten finden Sie die komplette Skizze. Erstellen Sie einen neuen Ordner im Arduino-Ordner Ihres Computers mit dem gleichen Namen wie das Hauptprogramm (Anemometer_Instructables) und fügen Sie alle zusammen.

Geben Sie die Daten Ihres WLAN-Netzwerks und die ThingSpeak ID und den API Writer Key im Teil Credentials.h ein und speichern Sie. Auf Nodemcu hochladen und das ist alles.

Um die Funktion des Systems zu testen, empfehle ich einen guten rotierenden Lüfter.

Um per Handy auf die Daten zuzugreifen, laden Sie die App für IOS oder Android namens ThingView herunter, die glücklicherweise noch kostenlos ist.

Konfigurieren Sie Ihre Kontoeinstellungen und Sie sind bereit, die Windbedingungen zu Hause zu sehen, wo immer Sie sind.

Wenn Sie Interesse haben, greifen Sie auf meinen ThingSpeak Channel ID-Kanal: 438851 zu, der öffentlich ist und dort finden Sie die Wind- und Richtungsmessungen in meinem Haus.

Ich hoffe wirklich, Sie haben Spaß.

Wenn Sie Zweifel haben, zögern Sie nicht, mich zu kontaktieren.

Grüße

Empfohlen: