Inhoudsopgave:
- Stap 1: Arduino IDE, ESP8266-kaarten en -bibliotheken en uw ThingSpeak-account installeren
- Stap 2: De schets verkennen
- Stap 3: Uitleg over …
- Stap 4: Communicatie
- Stap 5: Hoofdvariabelen
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)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
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 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
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 …
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
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:
Hoe ik mijn eigen boksmachine heb gemaakt? 11 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe ik mijn eigen boksmachine heb gemaakt?: Er zit geen geweldig verhaal achter dit project - ik heb altijd genoten van de boksmachines, die op verschillende populaire plaatsen stonden. Ik besloot de mijne te bouwen
Hoe u uw eigen nachtzichtapparaat kunt maken! 5 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe maak je je eigen nachtkijker! In dit project laat ik je zien hoe je een nachtkijker maakt. Het bestaat voornamelijk uit een beveiligingscamera, een klein scherm en een aangepaste PCB met IR-LED's en een LED-driver. Nadat je het apparaat hebt gevoed met een USB Type-C PD powerbank, kun je
Hoe u een consolekabel voor de universele printplaat bouwt: 11 stappen
Hoe maak je een consolekabel voor de universele printplaat: Het project Universal PCB (kortweg UPCB) is gestart om een enkele gamecontroller, met name vechtsticks, op zoveel mogelijk verschillende consoles mogelijk te maken. Informatie over het project is te vinden in de volgende thread op Shoryuken.com
Hoe u gebruikersniveaus van NUMA toevoegt aan uw exemplaar van N met behulp van NumADD Firefox AddOn: 4 stappen
Gebruikersniveaus van NUMA toevoegen aan uw exemplaar van N NumADD Firefox-add-on gebruiken: Elke gebruiker van Metanet's N-database op gebruikersniveau NUMA weet hoe onhandig de interface is voor het kopiëren van door gebruikers gemaakte niveaus naar uw exemplaar van het spel. NumADD, elimineert de noodzaak van kopiëren en plakken en maakt het overzetten van niveaus het werk van één muisklik
Hoe u een gitaarluidsprekerbox bouwt of er twee bouwt voor uw stereo: 17 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe een gitaarluidsprekerbox te bouwen of er twee te bouwen voor uw stereo.: Ik wilde een nieuwe gitaarluidspreker die past bij de buizenversterker die ik aan het bouwen ben. De speaker blijft in mijn winkel staan, dus het hoeft niet heel bijzonder te zijn. Tolex-bekleding kan te gemakkelijk beschadigd raken, dus ik heb de buitenkant gewoon zwart gespoten na een lichte schuurbeurt