Innehållsförteckning:

Hur man bygger din egen vindmätare med hjälp av Reed Switches, Hall Effect Sensor och några rester på Nodemcu - Del 2 - Programvara: 5 steg (med bilder)
Hur man bygger din egen vindmätare med hjälp av Reed Switches, Hall Effect Sensor och några rester på Nodemcu - Del 2 - Programvara: 5 steg (med bilder)

Video: Hur man bygger din egen vindmätare med hjälp av Reed Switches, Hall Effect Sensor och några rester på Nodemcu - Del 2 - Programvara: 5 steg (med bilder)

Video: Hur man bygger din egen vindmätare med hjälp av Reed Switches, Hall Effect Sensor och några rester på Nodemcu - Del 2 - Programvara: 5 steg (med bilder)
Video: The Challenges of a Wind Turbine on Your Home 2024, November
Anonim
Hur man bygger en egen vindmätare med hjälp av Reed Switches, Hall Effect Sensor och några rester på Nodemcu - Del 2 - Programvara
Hur man bygger en egen vindmätare med hjälp av Reed Switches, Hall Effect Sensor och några rester på Nodemcu - Del 2 - Programvara
Hur man bygger en egen vindmätare med hjälp av Reed Switches, Hall Effect Sensor och några rester på Nodemcu - Del 2 - Programvara
Hur man bygger en egen vindmätare med hjälp av Reed Switches, Hall Effect Sensor och några rester på Nodemcu - Del 2 - Programvara

Introduktion

Detta är uppföljaren till det första inlägget "How to Build Your Own Anemometer Using Reed Switches, Hall Effect Sensor and Some Scraps on Nodemcu - Part 1 - Hardware" - där jag visar hur man monterar enheter för vindhastighet och riktning. Här kommer vi att utnyttja mätkontrollprogrammet som är avsett för användning i en Nodemcu med Arduino IDE.

projekt beskrivning

I föregående inlägg kan enheterna som är beväpnade och anslutna till Nodemcu mäta vindens hastighet och riktning. Kontrollprogramvaran var utformad för att läsa av vindmätarens rotation under en tid, beräkna den linjära hastigheten, läsa i vilken riktning skoveln är, visa resultaten i OLED, publicera resultaten i ThingSpeak och vila i 15 minuter tills nästa mätning.

Friskrivningsklausul: Denna vindmätare bör inte användas för professionella ändamål. Det är endast för akademiskt eller hemligt bruk.

Obs: Engelska är inte mitt naturliga språk. Om du hittar grammatiska fel som hindrar dig från att förstå projektet, vänligen meddela mig för att korrigera dem. Tack så mycket.

Steg 1: Installera Arduino IDE, ESP8266 -kort och bibliotek och ditt ThingSpeak -konto

Installera Arduino IDE, ESP8266 -kort och bibliotek och ditt ThingSpeak -konto
Installera Arduino IDE, ESP8266 -kort och bibliotek och ditt ThingSpeak -konto
Installera Arduino IDE, ESP8266 -kort och bibliotek och ditt ThingSpeak -konto
Installera Arduino IDE, ESP8266 -kort och bibliotek och ditt ThingSpeak -konto

Installera Arduino IDE och Nodemcu

Om du aldrig har installerat IDE Arduino, vänligen läs självstudien i länken - Hur du installerar Arduino IDE - där du kan hitta de fullständiga instruktionerna.

Nästa steg, för att installera Nodemcu -kortet, använd den här självstudien från Magesh Jayakumar Instructables som är mycket komplett. Hur man installerar Nodemcu no Arduino IDE

Installera bibliotek

Nästa steg måste du installera biblioteken som skissen använder. De är vanliga och du kan följa stegen som visas nedan.

ThingSpeak Library -

ESP8266 Library -

Skapa ett ThingSpeak -konto

För att använda ThingSpeak (https://thingspeak.com/) måste du skapa ett konto (det är fortfarande gratis för ett visst antal interaktioner) där du kan spara data som mäts i din vindmätare och övervaka vindförhållandena i ditt hem, även via mobiltelefon. Genom att använda ThingSpeak kan du ge allmänheten åtkomst till dina insamlade data till den som är intresserad. Det är en bra fördel med ThingSpeak. Ange hemsidan och följ stegen för att skapa ditt konto.

När kontot har skapats anger du den här självstudien - ThingSpeak Komma igång - för att skapa dina kanaler. Det är ganska bra förklarat. Sammanfattningsvis måste du skapa en kanal där data ska lagras. Denna kanal har ett ID och ett Key API som bör refereras i skissen varje gång du vill spela in data. ThingSpeak lagrar all data i en bank och visar dem varje gång du öppnar ditt konto, på det sätt du har konfigurerat.

Steg 2: Utforska skissen

Utforska skissen
Utforska skissen
Utforska skissen
Utforska skissen

Flödesschema

I diagrammet kan du förstå skissens fluxogram. När du väcker (länkar) Nodemcu, kommer den att ansluta till ditt Wi-Fi-nätverk, vars parametrar du har konfigurerat och börja räkna 1 minuts tid för att utföra mätningarna. Först kommer det att räkna vindmätarens rotationer i 25 sekunder, beräkna linjär hastighet och avläs vindens riktning. Resultaten visas på OLED. Gör samma steg igen och för den andra behandlingen kommer den att överföras till ThingSpeak.

Sedan sover Nodemcu i 15 minuter för att spara batteriet. Eftersom jag använder en liten solpanel är det absolut nödvändigt att jag gör det. Om du använder en 5V -källa kan du ändra programmet så att det inte sover och fortsätta mäta data.

Programmenas struktur

I diagrammet kan du se skissens struktur.

Anemometer_Instructables

Det är huvudprogrammet som laddar biblioteken, startar variablerna, styr tilläggsavbrottet, anropar alla funktioner, beräknar vindhastigheten, bestämmer dess riktning och lägger den i viloläge.

kommunikation

Anslut WiFi och skicka data till ThingSpeak.

referenser.h

Nycklarna till ditt WiFi -nätverk och identifierarna för ditt konto i ThingSpeak. Det är här du kommer att ändra dina nycklar -ID och API: er.

definierar.h

Den innehåller alla variabler i programmet. Det är här du kan ändra lästiden eller hur länge nodemcu ska sova.

funktioner

Den innehåller funktionerna för att kombinera parametrarna och läsa multiplexorn samt funktionen för att läsa av vindmätarens rotationer.

oledDisplay

Visa resultat på skärmen för vindhastighet och riktning.

Steg 3: Förklaringar om …

Förklaringar om …
Förklaringar om …
Förklaringar om …
Förklaringar om …
Förklaringar om …
Förklaringar om …
Förklaringar om …
Förklaringar om …

Bifoga avbrott

Vindmätarens rotation mäts med funktionen attachInterrupt () (och detachInterrupt ()) i GPIO 12 (stift D6) på Nodemcu (den har avbrottsfunktion på sina D0-D8-stift).

Avbrott är händelser eller förhållanden som får mikrokontrollern att stoppa utförandet av uppgiften som den utför, arbeta i en annan uppgift tillfälligt och återgå till den ursprungliga uppgiften.

Du kan läsa detaljerna i funktionen i länken för handledning av Arduino. Se attachInterrupt ().

Syntax: attachInterrupt (pin, återuppringningsfunktion, avbrottstyp/läge);

stift = D6

återuppringningsfunktion = rpm_anemometer - räknar varje puls på en variabel.

avbrottstyp/läge = RISING - avbrott när stiftet går från lågt till högt.

Vid varje puls som produceras av magneto i Hall -sensorn går stiftet från lågt till högt och räkningsfunktionen aktiveras och summeras puls i en variabel under de 25 sekunder som fastställts. När tiden har gått ut kopplas räknaren bort (detachInterrupt ()) och rutinen beräknar hastigheten när den är frånkopplad.

Beräkna vindhastigheten

När det har fastställts hur många varv vindmätaren gav på 25 sekunder beräknar vi hastigheten.

  • RADIO är mätningen från vindmätarens mittaxel till pingisbollens spets. Du måste ha mätt din mycket bra - (se det i diagrammet som säger 10 cm).
  • RPS (rotationer per sekund) = rotationer / 25 sekunder
  • RPM (varv per minut) = RPS * 60
  • OMEGA (vinkelhastighet - radianer per sekund) = 2 * PI * RPS
  • Linear_Velocity (meter per sekund) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km per timme) = 3.6 * Linear_Velocity och detta är vad som ska skickas till ThingSpeak.

Läs vindskovelriktningen

För att avläsa vindskovans position för att bestämma vindens riktning sänder programmet låga och höga signaler till multiplexern med alla kombinationer av parametrarna A, B, C (muxABC -matris) och väntar på att ta emot resultatet A0 på resultatet som kan vara vilken spänning som helst mellan 0 och 3,3V. Kombinationerna visas i diagrammet.

Till exempel, när C = 0 (låg), B = 0 (låg), A = 0 (låg) ger multiplexorn data till stift 0 och skickar signalen till A0 som läses av Nodemcu; om C = 0 (låg), B = 0 (låg), A = 1 (hög) kommer multiplexorn att skicka data till stift 1 och så vidare tills avläsningen av de 8 kanalerna är klar.

Eftersom signalen är analog, omvandlas programmet till digitalt (0 eller 1), om spänningen är mindre än eller lika med 1,3V är signalen 0; om den är större än 1,3V är signalen 1. Värdet 1,3V är godtyckligt och för mig fungerade det mycket bra. Det finns alltid små läckage av ström och detta skyddar att det inte finns några falska positiva.

Denna data lagras i en vektorval [8] som jämförs med adressmatrisen som kompassen. Se matrisen i diagrammet. Till exempel, om den mottagna vektorn är [0, 0, 1, 0, 0, 0, 0, 0, 0] anger den i matrisen riktningen E och motsvarar en vinkel på 90 grader; om [0, 0, 0, 0, 0, 0, 1, 1] anger i matrisen WNW -adressen och motsvarar en vinkel på 292,5 grader. N motsvarar [1, 0, 0, 0, 0, 0, 0, 0, 0] och vinkel på 0 grader.

Det som kommer att skickas till ThingSpeak är i vinkeln eftersom det bara accepterar siffror.

Steg 4: Kommunikation

Kommunikation
Kommunikation
Kommunikation
Kommunikation

Hur man skickar data till ThingSpeak

Funktionen thingspeaksenddata () är ansvarig för att skicka data.

ThingSpeak.setField (1, float (linear_velocity_kmh)) - Skicka hastighetsdata till fält1 på min kanal

ThingSpeak.setField (2, float (wind_Direction_Angle)) - Skicka adressdata till fält2 på min kanal

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - Skicka till min kanal myChannelNumber, med det skrivna myWriteAPIKey API indikerat av TS. Denna data genererades av TS när du skapade ditt konto och din kanal.

På bilderna ovan kan du se hur ThingSpeak visar mottagen data.

I den här länken kan du komma åt data från mitt projekt i den offentliga kanalen på ThingSpeak.

Steg 5: Huvudvariabler

vindflöjelparametrar

  • MUX_A D5 - mux pi A till Nodemcu pin D5
  • MUX_B D4 - mux pin B till Nodemcu pin D4
  • MUX_C D3 - mux pin C till Nodemcu pin D3
  • READPIN 0 - Analog ingång på NodeMcu = A0
  • NO_PINS 8 - antal mux -stift
  • val [NO_PINS] - portar 0 till 7 på mux
  • wind_Direction_Angle - Vindriktningens vinkel
  • String windRose [16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - cardenals, collaterals och sub -collaterals
  • 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} - vinklar i varje riktning
  • Siffra [16] [NO_PINS] - Vägbeskrivningsmatris
  • muxABC [8] [3] - ABC mux -kombinationer

vindmätarparametrar

  • rpmcount - räkna hur många fulla varv som gjorde vindmätaren under den tilldelade tiden
  • tidsmätning = 25,00 - mätningstid i sekunder
  • timetoSleep = 1 - Nodemcu vaken tid i minuter
  • sleepTime = 15 - tid att fortsätta sova på några minuter
  • rpm, rps - rotationsfrekvenser (rotationer per minut, rotationer per sekund)
  • radie - meter - måttet på längden på vindmätarens vinge
  • linear_velocity - linjär hastighet i m/seg
  • linear_velocity_kmh - linjär hastighet i km/h
  • omega - radiell hastighet i rad/seg

Nedan hittar du hela skissen. Skapa en ny mapp i Arduino -mappen på din dator med samma namn som huvudprogrammet (Anemometer_Instructables) och sätt ihop dem alla.

Ange data för ditt wifi -nätverk och ThingSpeak ID och API Writer Key i delen Credentials.h och spara. Ladda upp till Nodemcu och det är allt.

För att testa systemets funktion rekommenderar jag en bra roterande fläkt.

För att komma åt data med mobiltelefon, ladda ner appen för IOS eller Android som heter ThingView, som lyckligtvis fortfarande är gratis.

Konfigurera dina kontoinställningar så är du redo att se vindförhållandena i ditt hem var du än är.

Om du har ett intresse, gå till min ThingSpeak Channel ID -kanal: 438851, som är offentlig och där hittar du vind- och riktningsmätningar i mitt hus.

Jag hoppas verkligen att du har kul.

Om du är osäker tveka inte att kontakta mig.

Hälsningar

Rekommenderad: