Innholdsfortegnelse:

Hvordan bygge ditt eget vindmåler ved hjelp av Reed Switches, Hall Effect Sensor og noen rester på Nodemcu - Del 2 - Programvare: 5 trinn (med bilder)
Hvordan bygge ditt eget vindmåler ved hjelp av Reed Switches, Hall Effect Sensor og noen rester på Nodemcu - Del 2 - Programvare: 5 trinn (med bilder)

Video: Hvordan bygge ditt eget vindmåler ved hjelp av Reed Switches, Hall Effect Sensor og noen rester på Nodemcu - Del 2 - Programvare: 5 trinn (med bilder)

Video: Hvordan bygge ditt eget vindmåler ved hjelp av Reed Switches, Hall Effect Sensor og noen rester på Nodemcu - Del 2 - Programvare: 5 trinn (med bilder)
Video: Полный курс TypeScript за час | Тайпскрипт для начинающих 2024, Juni
Anonim
Hvordan bygge ditt eget vindmåler ved hjelp av sivbrytere, halleffektsensor og noen utklipp på Nodemcu - Del 2 - Programvare
Hvordan bygge ditt eget vindmåler ved hjelp av sivbrytere, halleffektsensor og noen utklipp på Nodemcu - Del 2 - Programvare
Hvordan bygge ditt eget vindmåler ved hjelp av sivbrytere, halleffektsensor og noen utklipp på Nodemcu - Del 2 - Programvare
Hvordan bygge ditt eget vindmåler ved hjelp av sivbrytere, halleffektsensor og noen utklipp på Nodemcu - Del 2 - Programvare

Introduksjon

Dette er oppfølgeren til det første innlegget "How to Build Your Own Anemometer Using Reed Switches, Hall Effect Sensor and Some Scraps on Nodemcu - Part 1 - Hardware" - hvor jeg viser hvordan jeg monterer måleinstrumenter for vindhastighet og retning. Her vil vi utnytte målekontrollprogramvaren designet for bruk i en Nodemcu ved bruk av Arduino IDE.

Prosjektbeskrivelse

I forrige innlegg kan enhetene som er bevæpnet og koblet til Nodemcu, måle vindens hastighet og retning. Kontrollprogramvaren ble designet for å lese rotasjonen av vindmåleren i en periode, beregne den lineære hastigheten, lese retningen som bladet er i, vise resultatene i OLED, publisere resultatene i ThingSpeak og sove i 15 minutter til neste måling.

Ansvarsfraskrivelse: Dette vindmåleren skal ikke brukes til profesjonelle formål. Det er bare for akademisk eller hjemmebruk.

Merk: Engelsk er ikke mitt naturlige språk. Hvis du finner grammatiske feil som hindrer deg i å forstå prosjektet, vennligst gi meg beskjed for å rette dem. Tusen takk.

Trinn 1: Installere Arduino IDE, ESP8266 Boards and Libraries og din ThingSpeak -konto

Installere Arduino IDE, ESP8266 Boards and Libraries og din ThingSpeak -konto
Installere Arduino IDE, ESP8266 Boards and Libraries og din ThingSpeak -konto
Installere Arduino IDE, ESP8266 Boards and Libraries og din ThingSpeak -konto
Installere Arduino IDE, ESP8266 Boards and Libraries og din ThingSpeak -konto

Installere Arduino IDE og Nodemcu

Hvis du aldri har installert IDE the Arduino, vennligst les opplæringen i lenken - Hvordan installere Arduino IDE - hvor du kan finne de fullstendige instruksjonene.

Neste trinn, for å installere Nodemcu -kortet, bruker denne opplæringen fra Magesh Jayakumar Instructables som er veldig komplett. Slik installerer du Nodemcu no Arduino IDE

Installere biblioteker

Neste trinn må du installere bibliotekene som skissen bruker. De er vanlige, og du kan følge trinnene vist nedenfor.

ThingSpeak Library -

ESP8266 Library -

Opprette en ThingSpeak -konto

For å bruke ThingSpeak (https://thingspeak.com/) må du opprette en konto (den er fortsatt gratis for et visst antall interaksjoner) der du kan lagre dataene målt i vindmåleren og overvåke vindforholdene i hjemmet ditt, selv via mobiltelefon. Ved å bruke ThingSpeak kan du gi publikum tilgang til dine innsamlede data til den som er interessert. Det er en god fordel med ThingSpeak. Skriv inn hjemmesiden og følg trinnene for å opprette kontoen din.

Når kontoen er opprettet, skriver du inn denne opplæringen - ThingSpeak Komme i gang - for å opprette kanalene dine. Det er ganske godt forklart. Oppsummert må du opprette en kanal der dataene vil bli lagret. Denne kanalen har en ID og et nøkkel -API som det skal vises til i skissen hver gang du vil registrere data. ThingSpeak lagrer alle dataene i en bank og viser dem hver gang du får tilgang til kontoen din, på den måten du har konfigurert.

Trinn 2: Utforske skissen

Utforsker skissen
Utforsker skissen
Utforsker skissen
Utforsker skissen

Flytskjema

I diagrammet kan du forstå skissens fluxogram. Når du våkner (kobler) Nodemcu, kobles den til Wi-Fi-nettverket, hvis parametere du har konfigurert og begynner å telle 1 minutt for å utføre målingene. Først vil det telle vindmålerotasjonene i 25 sekunder, beregne den lineære hastigheten og les vindens retning. Resultatene er vist på OLED. Gjør de samme trinnene igjen, og for denne andre behandlingen vil den overføres til ThingSpeak.

Deretter sover Nodemcu i 15 minutter for å spare batteri. Siden jeg bruker et lite solcellepanel, er det viktig at jeg gjør det. Hvis du bruker en 5V -kilde, kan du endre programmet slik at det ikke sover og fortsette å måle dataene.

Oppbygning av programmene

I diagrammet kan du se strukturen til skissen.

Anemometer_Instructables

Det er hovedprogrammet som laster inn bibliotekene, starter variablene, styrer vedleggsavbruddet, kaller alle funksjonene, beregner vindhastigheten, bestemmer retningen og setter den i dvale.

kommunikasjon

Koble til WiFi og send dataene til ThingSpeak.

legitimasjon.h

Nøklene til ditt WiFi -nettverk og identifikatorene til kontoen din i ThingSpeak. Det er her du vil endre nøkkel -ID -er og API -er.

definerer. h

Den inneholder alle variablene i programmet. Det er her du kan endre lesetiden eller hvor lenge nodemcu skal sove.

funksjoner

Den inneholder funksjonene for å kombinere parametrene og lese multiplexeren, samt funksjonen til å lese rotasjonene til vindmåleren.

oledDisplay

Vis resultater på vinduet med vindhastighet og retning.

Trinn 3: Forklaringer om …

Forklaringer om…
Forklaringer om…
Forklaringer om…
Forklaringer om…
Forklaringer om…
Forklaringer om…
Forklaringer om…
Forklaringer om…

Legg til Avbryt

Anemometerets rotasjon måles med funksjonen attachInterrupt () (og detachInterrupt ()) i GPIO 12 (pin D6) på Nodemcu (den har avbruddsfunksjon på D0-D8-pinnene).

Avbrudd er hendelser eller forhold som får mikrokontrolleren til å stoppe utførelsen av oppgaven den utfører, arbeide midlertidig i en annen oppgave og komme tilbake til den opprinnelige oppgaven.

Du kan lese detaljene i funksjonen i lenken for opplæringen av Arduino. Se vedleggInterrupt ().

Syntaks: attachInterrupt (pin, tilbakeringingsfunksjon, avbryt type/modus);

pin = D6

tilbakeringingsfunksjon = rpm_anemometer - teller hver puls på en variabel.

avbryt type/modus = RISING - avbryt når pinnen går fra lav til høy.

Ved hver puls produsert av magneto i Hall -sensoren går pinnen fra lav til høy, og tellefunksjonen aktiveres og summeres puls i en variabel i løpet av de 25 sekundene som er etablert. Når tiden er utløpt, blir telleren koblet fra (detachInterrupt ()) og rutinen beregner hastigheten mens den er frakoblet.

Beregner vindhastigheten

Når det er bestemt hvor mange rotasjoner vindmåleren ga på 25 sekunder, beregner vi hastigheten.

  • RADIO er målingen fra senteraksen til vindmåleren til spissen av bordtennisballen. Du må ha målt din veldig godt - (se det i diagrammet som sier 10 cm).
  • RPS (rotasjoner per sekund) = rotasjoner / 25 sekunder
  • RPM (rotasjoner per minutt) = RPS * 60
  • OMEGA (vinkelhastighet - radianer per sekund) = 2 * PI * RPS
  • Linear_Velocity (meter per sekund) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km per time) = 3.6 * Linear_Velocity og dette er det som skal sendes til ThingSpeak.

Les vindskovlretningen

For å lese vindbladets posisjon for å bestemme vindretningen sender programmet lave og høye signaler til multiplexeren med alle kombinasjonene av parameterne A, B, C (muxABC -matrise) og venter på å motta resultatet på pin A0 som kan være hvilken som helst spenning mellom 0 og 3,3V. Kombinasjonene er vist i diagrammet.

For eksempel, når C = 0 (lav), B = 0 (lav), A = 0 (lav) gir multiplekseren dataene til pin 0 og sender signalet til A0 som leses av Nodemcu; hvis C = 0 (lav), B = 0 (lav), A = 1 (høy) vil multiplexeren sende deg dataene til pin 1 og så videre, til avlesningen av de 8 kanalene er fullført.

Ettersom signalet er analogt, forvandles programmet til digitalt (0 eller 1), hvis spenningen er mindre enn eller lik 1.3V er signalet 0; hvis det er større enn 1,3V er signalet 1. Verdien 1,3V er vilkårlig og for meg fungerte det veldig bra. Det er alltid små lekkasjer av strøm, og dette beskytter at det ikke er falske positive.

Disse dataene er lagret i en vektorval [8] som vil bli sammenlignet med adressearrayet som kompasset. Se matrisen i diagrammet. For eksempel, hvis den mottatte vektoren er [0, 0, 1, 0, 0, 0, 0, 0, 0] angir den i matrisen retningen E og tilsvarer en vinkel på 90 grader; hvis [0, 0, 0, 0, 0, 0, 1, 1] angir WNW -adressen i matrisen og tilsvarer en vinkel på 292,5 grader. N tilsvarer [1, 0, 0, 0, 0, 0, 0, 0, 0] og vinkel på 0 grader.

Det som skal sendes til ThingSpeak er i vinkelen fordi den bare godtar tall.

Trinn 4: Kommunikasjon

Kommunikasjon
Kommunikasjon
Kommunikasjon
Kommunikasjon

Slik sender du data til ThingSpeak

Funksjonen thingspeaksenddata () er ansvarlig for å sende dataene.

ThingSpeak.setField (1, float (linear_velocity_kmh)) - Send hastighetsdata til felt1 på kanalen min

ThingSpeak.setField (2, float (wind_Direction_Angle)) - Send adressedataene til felt2 på kanalen min

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - Send til kanalen min myChannelNumber, med den skrevne myWriteAPIKey API angitt av TS. Disse dataene ble generert av TS da du opprettet kontoen og kanalen din.

På bildene ovenfor kan du se hvordan ThingSpeak viser mottatte data.

I denne lenken kan du få tilgang til dataene fra prosjektet mitt i den offentlige kanalen til ThingSpeak.

Trinn 5: Hovedvariabler

vindvinge parametere

  • MUX_A D5 - mux pi A til Nodemcu pin D5
  • MUX_B D4 - mux pin B til Nodemcu pin D4
  • MUX_C D3 - mux pin C til Nodemcu pin D3
  • READPIN 0 - Analog inngang på NodeMcu = A0
  • NO_PINS 8 - antall mux -pinner
  • val [NO_PINS] - porter 0 til 7 av mux
  • wind_Direction_Angle - Vinkelen på vindretningen
  • String windRose [16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - cardenals, collaterals og 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} - vinkler i hver retning
  • Siffer [16] [NO_PINS] - Veibeskrivelsesmatrise
  • muxABC [8] [3] - ABC mux -kombinasjoner

vindmålerparametere

  • rpmcount - teller hvor mange fulle rotasjoner som vindmåleren gjorde på den tildelte tiden
  • tidsmål = 25,00 - målingstid i sekunder
  • timetoSleep = 1 - Nodemcu våken tid i minutter
  • sleepTime = 15 - tid for å fortsette å sove på få minutter
  • rpm, rps - rotasjonsfrekvenser (rotasjoner per minutt, rotasjoner per sekund)
  • radius - meter - mål på lengden på anemometervinge
  • linear_velocity - lineær hastighet i m/seg
  • linear_velocity_kmh - lineær hastighet i km/t
  • omega - radiell hastighet i rad/seg

Nedenfor finner du hele skissen. Lag en ny mappe i Arduino -mappen på datamaskinen din med samme navn som hovedprogrammet (Anemometer_Instructables) og sett dem alle sammen.

Skriv inn dataene til wifi -nettverket og ThingSpeak ID og API Writer Key i delen Credentials.h og lagre. Last opp til Nodemcu og det er alt.

For å teste driften av systemet anbefaler jeg en god roterende vifte.

For å få tilgang til dataene med mobiltelefon, last ned programmet for IOS eller Android som heter ThingView, som heldigvis fortsatt er gratis.

Konfigurer kontoinnstillingene, og du vil være klar til å se vindforholdene i hjemmet ditt uansett hvor du er.

Hvis du har interesse, kan du få tilgang til min ThingSpeak Channel ID -kanal: 438851, som er offentlig, og der finner du vind- og retningsmålinger i huset mitt.

Jeg håper virkelig du koser deg.

Hvis du er i tvil, ikke nøl med å kontakte meg.

Hilsen

Anbefalt: