Inhoudsopgave:

Hoe u uw eigen windmeter bouwt met behulp van reed-schakelaars, Hall-effectsensor en wat restjes op Nodemcu - Deel 2 - Software - Ajarnpa (met afbeeldingen)
Hoe u uw eigen windmeter bouwt met behulp van reed-schakelaars, Hall-effectsensor en wat restjes op Nodemcu - Deel 2 - Software - Ajarnpa (met afbeeldingen)

Video: Hoe u uw eigen windmeter bouwt met behulp van reed-schakelaars, Hall-effectsensor en wat restjes op Nodemcu - Deel 2 - Software - Ajarnpa (met afbeeldingen)

Video: Hoe u uw eigen windmeter bouwt met behulp van reed-schakelaars, Hall-effectsensor en wat restjes op Nodemcu - Deel 2 - Software - Ajarnpa (met afbeeldingen)
Video: Inspiratiesessie Apeldoorn in energietransitie 20200716 1347 1 2024, November
Anonim
Hoe u uw eigen windmeter kunt bouwen met behulp van reed-schakelaars, Hall-effectsensor en wat restjes op Nodemcu - Deel 2 - Software
Hoe u uw eigen windmeter kunt bouwen met behulp van reed-schakelaars, Hall-effectsensor en wat restjes op Nodemcu - Deel 2 - Software
Hoe u uw eigen anemometer kunt bouwen met behulp van reed-schakelaars, Hall-effectsensor en wat restjes op Nodemcu - Deel 2 - Software
Hoe u uw eigen anemometer kunt bouwen met behulp van reed-schakelaars, Hall-effectsensor en wat restjes op Nodemcu - Deel 2 - Software

Invoering

Dit is het vervolg op de eerste post "Hoe maak je je eigen windmeter met behulp van reed-schakelaars, Hall-effectsensor en wat restjes op Nodemcu - Deel 1 - Hardware" - waar ik laat zien hoe je de windsnelheids- en richtingsmeetapparatuur monteert. Hier zullen we gebruikmaken van de meetbesturingssoftware die is ontworpen voor gebruik in een Nodemcu met behulp van de Arduino IDE.

Projectbeschrijving

In het vorige bericht kunnen de apparaten die zijn ingeschakeld en verbonden met de Nodemcu de snelheid en richting van de wind meten. De besturingssoftware is ontworpen om de rotatie van de anemometer gedurende een bepaalde periode af te lezen, de lineaire snelheid te berekenen, de richting waarin de vaan is af te lezen, de resultaten in de OLED te tonen, de resultaten in ThingSpeak te publiceren en 15 minuten te slapen tot de volgende meting.

Disclaimer: Deze windmeter mag niet worden gebruikt voor professionele doeleinden. Het is alleen voor academisch of thuisgebruik.

Let op: Engels is niet mijn natuurlijke taal. Als u grammaticale fouten vindt waardoor u het project niet begrijpt, laat het me dan weten om ze te corrigeren. Heel erg bedankt.

Stap 1: Arduino IDE, ESP8266-kaarten en -bibliotheken en uw ThingSpeak-account installeren

Arduino IDE, ESP8266-kaarten en -bibliotheken en uw ThingSpeak-account installeren
Arduino IDE, ESP8266-kaarten en -bibliotheken en uw ThingSpeak-account installeren
Arduino IDE, ESP8266-kaarten en -bibliotheken en uw ThingSpeak-account installeren
Arduino IDE, ESP8266-kaarten en -bibliotheken en uw ThingSpeak-account installeren

Arduino IDE en Nodemcu installeren

Als je nog nooit de IDE van de Arduino hebt geïnstalleerd, lees dan de tutorial in de link - Hoe Arduino IDE te installeren - waar je de volledige instructies kunt vinden.

De volgende stap, om het Nodemcu-bord te installeren, gebruik deze tutorial van de Magesh Jayakumar Instructables die zeer compleet is. Hoe Nodemcu zonder Arduino IDE te installeren

Bibliotheken installeren

De volgende stap moet u de bibliotheken installeren die de schets gebruikt. Ze komen vaak voor en u kunt de onderstaande stappen volgen.

ThingSpeak-bibliotheek -

ESP8266 Bibliotheek -

Een ThingSpeak-account maken

Om de ThingSpeak (https://thingspeak.com/) te gebruiken, moet u een account aanmaken (het is nog steeds gratis voor een bepaald aantal interacties) waar u de in uw windmeter gemeten gegevens kunt opslaan en de windomstandigheden in uw huis kunt volgen, zelfs via mobiel. Door ThingSpeak te gebruiken, kunt u het publiek toegang geven tot uw verzamelde gegevens aan iedereen die geïnteresseerd is. Dat is een mooi voordeel van de ThingSpeak. Ga naar de startpagina en volg de stappen om uw account aan te maken.

Zodra het account is aangemaakt, ga je naar deze tutorial - ThingSpeak Getting Started - om je kanalen te maken. Het is best goed uitgelegd. Samengevat moet u een kanaal maken waar de gegevens worden opgeslagen. Dit kanaal heeft een ID en een Key API waarnaar in de schets moet worden verwezen telkens wanneer u gegevens wilt vastleggen. ThingSpeak slaat alle gegevens op in een bank en toont ze elke keer dat u uw account opent, op de manier die u hebt geconfigureerd.

Stap 2: De schets verkennen

De schets verkennen
De schets verkennen
De schets verkennen
De schets verkennen

Stroomdiagram

In het diagram kunt u het fluxogram van de schets begrijpen. Wanneer u de Nodemcu wekt (linkt), maakt deze verbinding met uw Wi-Fi-netwerk, waarvan u de parameters hebt geconfigureerd en begint 1 minuut te tellen om de metingen uit te voeren. Eerst telt het de windmeterrotaties gedurende 25 seconden, bereken de lineaire snelheid en lees de richting van de wind. De resultaten worden weergegeven op de OLED. Voer dezelfde stappen opnieuw uit en voor deze tweede lezing wordt deze naar de ThingSpeak verzonden.

Daarna slaapt Nodemcu 15 minuten om de batterij te sparen. Aangezien ik een klein zonnepaneel gebruik, is het absoluut noodzakelijk dat ik dit doe. Als u een 5V-bron gebruikt, kunt u het programma aanpassen zodat het niet slaapt en de gegevens blijven meten.

Structuur van de programma's

In het diagram ziet u de structuur van de schets.

Anemometer_Instructables

Het is het hoofdprogramma dat de bibliotheken laadt, de variabelen start, de attach-interrupt bestuurt, alle functies aanroept, de windsnelheid berekent, de richting bepaalt en in slaap brengt.

communicatie

Verbind de wifi en stuur de gegevens naar ThingSpeak.

geloofsbrieven.h

De sleutels van je wifi-netwerk en de identifiers van je account in ThingSpeak. Hier wijzigt u uw Keys-ID's en API's.

definieert.h

Het bevat alle variabelen van het programma. Hier kunt u de leestijden wijzigen of hoe lang de nodemcu moet slapen.

functies

Het bevat de functies om de parameters te combineren en de multiplexer uit te lezen, evenals de functie om de rotaties van de windmeter te lezen.

oledDisplay

Toon resultaten op het scherm van windsnelheid en -richting.

Stap 3: Uitleg over …

Uitleg over …
Uitleg over …
Uitleg over …
Uitleg over …
Uitleg over …
Uitleg over …
Uitleg over …
Uitleg over …

Onderbreking bijvoegen

De rotatie van de windmeter wordt gemeten door de functie attachInterrupt () (en detachInterrupt ()) in de GPIO 12 (pin D6) van de Nodemcu (hij heeft een interruptfunctie op de D0-D8-pinnen).

Interrupts zijn gebeurtenissen of omstandigheden die ervoor zorgen dat de microcontroller de uitvoering van de taak die hij uitvoert stopzet, tijdelijk in een andere taak werkt en terugkeert naar de oorspronkelijke taak.

U kunt het detail van de functie lezen in de link voor de tutorial van Arduino. Zie bijlageInterrupt().

Syntaxis: attachInterrupt(pin, callback-functie, interrupttype/modus);

pin = D6

callback-functie = rpm_anemometer - telt elke puls op een variabele.

interrupt type/mode = RISING - interrupt wanneer de pin van laag naar hoog gaat.

Bij elke puls die door de magneto in de Hall-sensor wordt geproduceerd, gaat de pin van laag naar hoog en wordt de telfunctie geactiveerd en wordt de puls in een variabele opgeteld, gedurende de vastgestelde 25 seconden. Zodra de tijd is verstreken, wordt de teller losgekoppeld (detachInterrupt ()) en berekent de routine de snelheid terwijl de verbinding is verbroken.

De windsnelheid berekenen

Nadat is vastgesteld hoeveel omwentelingen de windmeter in 25 seconden heeft gegeven, berekenen we de snelheid.

  • RADIO is de meting van de hartlijn van de windmeter tot de punt van de pingpongbal. Je moet de jouwe heel goed hebben gemeten - (zie dat in het diagram dat 10 cm zegt).
  • RPS (rotaties per seconde) = rotaties / 25 seconden
  • RPM (omwentelingen per minuut) = RPS * 60
  • OMEGA (hoeksnelheid - radialen per seconde) = 2 * PI * RPS
  • Linear_Velocity (meter per seconde) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km per uur) = 3.6 * Linear_Velocity en dit is wat er naar ThingSpeak wordt gestuurd.

Windvaanrichting lezen

Om de positie van de windvaan te lezen om de richting van de wind te bepalen, stuurt het programma lage en hoge signalen naar de multiplexer met alle combinaties van de parameters A, B, C (muxABC-matrix) en wacht om op pin A0 het resultaat te ontvangen dat kan elke spanning zijn tussen 0 en 3,3 V. De combinaties zijn weergegeven in het diagram.

Bijvoorbeeld, wanneer C = 0 (laag), B = 0 (laag), A = 0 (laag), geeft de multiplexer het de gegevens van pin 0 en stuurt het signaal naar A0 dat wordt gelezen door de Nodemcu; als C = 0 (laag), B = 0 (laag), A = 1 (hoog) stuurt de multiplexer u de gegevens van pin 1 enzovoort, totdat het uitlezen van de 8 kanalen is voltooid.

Omdat het signaal analoog is, transformeert het programma naar digitaal (0 of 1), als de spanning kleiner is dan of gelijk is aan 1,3V is het signaal 0; als het groter is dan 1,3 V is het signaal 1. De waarde 1,3 V is willekeurig en voor mij werkte het heel goed. Er zijn altijd kleine lekkages van stroom en dit zorgt ervoor dat er geen valse positieven zijn.

Deze gegevens worden opgeslagen in een vectorwaarde [8] die wordt vergeleken met de adresreeks als kompas. Zie de matrix in het diagram. Als de ontvangen vector bijvoorbeeld [0, 0, 1, 0, 0, 0, 0, 0, 0] is, geeft deze in de matrix de richting E aan en komt overeen met een hoek van 90 graden; if [0, 0, 0, 0, 0, 0, 1, 1] geeft in de matrix het WNW-adres aan en komt overeen met een hoek van 292,5 graden. De N komt overeen met [1, 0, 0, 0, 0, 0, 0, 0, 0] en een hoek van 0 graden.

Wat naar de ThingSpeak wordt gestuurd, is in de hoek omdat het alleen cijfers accepteert.

Stap 4: Communicatie

communicatie
communicatie
communicatie
communicatie

Gegevens verzenden naar ThingSpeak

De functie thingspeaksenddata () is verantwoordelijk voor het verzenden van de gegevens.

ThingSpeak.setField (1, float (linear_velocity_kmh)) - Stuur de snelheidsgegevens naar veld1 van mijn kanaal

ThingSpeak.setField (2, float (wind_Direction_Angle)) - Stuur de adresgegevens naar veld2 van mijn kanaal

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - Stuur naar mijn kanaal myChannelNumber, met de geschreven myWriteAPIKey API aangegeven door TS. Deze gegevens zijn door TS gegenereerd bij het aanmaken van je account en kanaal.

In de bovenstaande afbeeldingen kunt u zien hoe de ThingSpeak de ontvangen gegevens weergeeft.

Via deze link heb je toegang tot de gegevens van mijn project in het publieke kanaal van ThingSpeak.

Stap 5: Hoofdvariabelen

windvaan parameters:

  • MUX_A D5 - mux pi A naar Nodemcu-pin D5
  • MUX_B D4 - mux-pin B naar Nodemcu-pin D4
  • MUX_C D3 - mux-pin C naar Nodemcu-pin D3
  • READPIN 0 - Analoge ingang op NodeMcu = A0
  • NO_PINS 8 - aantal mux-pinnen
  • val[NO_PINS] - poorten 0 tot 7 van mux
  • wind_Direction_Angle - Hoek van windrichting
  • String windRose[16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - kardenalen, zekerheden en subonderpanden
  • 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} - hoeken van elke richting
  • Cijfer [16] [NO_PINS] - Richtingenmatrix
  • muxABC[8] [3] - ABC mux-combinaties

windmeter parameters:

  • rpmcount - tel hoeveel volledige omwentelingen de windmeter heeft gemaakt in de toegewezen tijd
  • timemeasure = 25.00 - meetduur in seconden
  • timetoSleep = 1 - Nodemcu wektijd in minuten
  • sleepTime = 15 - tijd om te blijven slapen in minuten
  • rpm, rps - rotatiefrequenties (rotaties per minuut, rotaties per seconde)
  • straal - meters - de maat van de lengte van de windmetervleugel
  • linear_velocity - lineaire snelheid in m/seg
  • linear_velocity_kmh - lineaire snelheid in km/h
  • omega - radiale snelheid in rad/seg

Hieronder vind je de volledige schets. Maak een nieuwe map in de Arduino-map van je computer met dezelfde naam als het hoofdprogramma (Anemometer_Instructables) en zet ze allemaal bij elkaar.

Voer de gegevens van uw wifi-netwerk en de ThingSpeak ID en API Writer Key in het gedeelte Credentials.h in en sla op. Upload naar Nodemcu en dat is alles.

Om de werking van het systeem te testen raad ik een goede draaiende ventilator aan.

Om toegang te krijgen tot de gegevens via een mobiele telefoon, downloadt u de applicatie voor IOS of Android genaamd ThingView, die gelukkig nog steeds gratis is.

Configureer uw accountinstellingen en u bent klaar om de windcondities van uw huis te zien, waar u ook bent.

Als je interesse hebt, ga dan naar mijn ThingSpeak Channel ID-kanaal: 438851, dat openbaar is en daar vind je de wind- en richtingsmetingen in mijn huis.

Ik hoop echt dat je plezier hebt.

Als u twijfelt, aarzel dan niet om contact met mij op te nemen.

Groeten

Aanbevolen: