Cuprins:
- Pasul 1: Instalarea Arduino IDE, plăcile și bibliotecile ESP8266 și contul dvs. ThingSpeak
- Pasul 2: Explorarea schiței
- Pasul 3: Explicații despre …
- Pasul 4: Comunicări
- Pasul 5: Variabile principale
Video: Cum să vă construiți propriul anemometru folosind comutatoare Reed, senzor de efect Hall și câteva resturi pe Nodemcu - Partea 2 - Software: 5 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Introducere
Aceasta este continuarea primului post „Cum să-ți construiești propriul anemometru folosind comutatoare Reed, senzor de efect Hall și câteva resturi pe Nodemcu - Partea 1 - Hardware” - în care arăt cum să asamblați dispozitivele de măsurare a vitezei și direcției vântului. Aici vom exploata software-ul de control al măsurătorilor conceput pentru a fi utilizat într-un Nodemcu folosind Arduino IDE.
descrierea proiectului
În postarea anterioară, dispozitivele armate și conectate la Nodemcu sunt capabile să măsoare viteza și direcția vântului. Software-ul de control a fost conceput pentru a citi rotația anemometrului pentru o perioadă de timp, a calcula viteza liniară, a citi direcția în care se află paleta, a arăta rezultatele în OLED, a publica rezultatele în ThingSpeak și a dormi timp de 15 minute până următoarea măsurare.
Declinare de responsabilitate: Acest anemometru nu trebuie utilizat în scopuri profesionale. Este doar pentru uz academic sau casnic.
Notă: Engleza nu este limba mea naturală. Dacă găsiți erori gramaticale care vă împiedică să înțelegeți proiectul, vă rugăm să ne anunțați pentru a le corecta. Mulțumesc mult.
Pasul 1: Instalarea Arduino IDE, plăcile și bibliotecile ESP8266 și contul dvs. ThingSpeak
Instalarea Arduino IDE și Nodemcu
Dacă nu ați instalat niciodată IDE-ul, Arduino vă rugăm să citiți tutorialul din linkul - Cum se instalează Arduino IDE - unde puteți găsi instrucțiunile complete.
Pasul următor, pentru a instala placa Nodemcu, utilizați acest tutorial din Magesh Jayakumar Instructables, care este foarte complet. Cum se instalează Nodemcu fără Arduino IDE
Instalarea bibliotecilor
Pasul următor trebuie să instalați bibliotecile pe care schița le folosește. Acestea sunt comune și puteți urma pașii de mai jos.
Biblioteca ThingSpeak -
Biblioteca ESP8266 -
Crearea unui cont ThingSpeak
Pentru a utiliza ThingSpeak (https://thingspeak.com/) trebuie să creați un cont (este încă gratuit pentru un anumit număr de interacțiuni) în care puteți salva datele măsurate în anemometrul dvs. și puteți monitoriza starea vântului în casa dvs., chiar și prin intermediul telefonului mobil. Prin utilizarea ThingSpeak, puteți oferi publicului acces la datele dvs. colectate oricui este interesat. Acesta este un avantaj bun al ThingSpeak. Accesați pagina de pornire și urmați pașii pentru a vă crea contul.
Odată ce contul este creat, introduceți acest tutorial - ThingSpeak Getting Started - pentru a vă crea canalele. Este destul de bine explicat. Pe scurt, trebuie să creați un canal în care datele vor fi stocate. Acest canal are un ID și un API cheie care ar trebui să fie menționat în schiță de fiecare dată când doriți să înregistrați date. ThingSpeak va stoca toate datele într-o bancă și le va afișa de fiecare dată când vă accesați contul, în modul în care ați configurat.
Pasul 2: Explorarea schiței
Diagrama de flux
În diagramă, puteți înțelege fluxograma schiței. Când treziți (conectați) Nodemcu, acesta se va conecta la rețeaua dvs. Wi-Fi, ai cărei parametri i-ați configurat și începe să numărați 1 minut pentru efectuarea măsurătorilor. În primul rând, va număra rotațiile anemometrului timp de 25 de secunde, calculați viteza liniară și citiți direcția vântului. Rezultatele sunt afișate pe OLED. Faceți din nou aceiași pași și pentru această a doua lectură, acesta va transmite ThingSpeak.
Apoi Nodemcu doarme 15 minute pentru a economisi bateria. Deoarece folosesc un mic panou solar, este imperativ să fac acest lucru. Dacă utilizați o sursă de 5V, puteți modifica programul astfel încât să nu adoarmă și să măsurați în continuare datele.
Structura programelor
În diagramă, puteți vedea structura schiței.
Anemometru_Instructabile
Este programul principal care încarcă bibliotecile, pornește variabilele, controlează întreruperea atașamentului, apelează toate funcțiile, calculează viteza vântului, determină direcția acestuia și îl adoarme.
comunicații
Conectați WiFi și trimiteți datele la ThingSpeak.
acreditări.h
Cheile rețelei WiFi și identificatorii contului dvs. în ThingSpeak. Aici veți schimba ID-urile și API-urile cheilor.
definește.h
Conține toate variabilele programului. Aici puteți schimba timpul de citire sau cât timp ar trebui să doarmă nodemcu.
funcții
Conține funcțiile de combinare a parametrilor și citirea multiplexorului, precum și funcția de citire a rotațiilor anemometrului.
oledDisplay
Afișați pe ecran rezultatele vitezei și direcției vântului.
Pasul 3: Explicații despre …
Atașați întreruperea
Rotația anemometrului este măsurată de funcția attachInterrupt () (și detachInterrupt ()) în GPIO 12 (pinul D6) al Nodemcu (Are caracteristică de întrerupere pe pinii D0-D8).
Întreruperile sunt evenimente sau condiții care determină microcontrolerul să oprească executarea sarcinii pe care o efectuează, să lucreze temporar într-o altă activitate și să revină la sarcina inițială.
Puteți citi detaliile funcției în linkul pentru tutorialul Arduino. A se vedea attachInterrupt ().
Sintaxă: attachInterrupt (pin, funcție de apel invers, tip / mod de întrerupere);
pin = D6
funcția de apel invers = rpm_anemometer - contorizează fiecare impuls pe o variabilă.
tip / mod de întrerupere = RISING - întrerupe când pinul trece de la cel mai mic la cel mai mare.
La fiecare impuls produs de magneto în senzorul Hall, pinul trece de la cel mai mic la cel mai mare și funcția de numărare este activată și se sumează pulsul într-o variabilă, în cele 25 de secunde stabilite. Odată ce timpul a expirat, contorul este deconectat (detachInterrupt ()) și rutina calculează viteza în timp ce este deconectat.
Calculul vitezei vântului
Odată ce s-a stabilit câte rotații a dat anemometrul în 25 de secunde, calculăm viteza.
- RADIO este măsurarea de la axa centrală a anemometrului până la vârful mingii de ping pong. Trebuie să-l fi măsurat foarte bine pe al tău - (vezi asta în diagrama care spune 10 cm).
- RPS (rotații pe secundă) = rotații / 25 de secunde
- RPM (rotații pe minut) = RPS * 60
- OMEGA (viteza unghiulară - radiani pe secundă) = 2 * PI * RPS
- Linear_Velocity (metri pe secundă) = OMEGA * RADIO
- Linear_Velocity_kmh (Km pe oră) = 3,6 * Linear_Velocity și acesta este ceea ce va fi trimis la ThingSpeak.
Citiți direcția paletei
Pentru a citi poziția paletei pentru a determina direcția vântului, programul trimite semnale joase și înalte către multiplexor cu toate combinațiile parametrilor A, B, C (matricea muxABC) și așteptați să primiți pe pinul A0 rezultatul care poate fi orice tensiune între 0 și 3,3V. Combinațiile sunt prezentate în diagramă.
De exemplu, când C = 0 (scăzut), B = 0 (scăzut), A = 0 (scăzut) multiplexorul îi dă datele pinului 0 și trimite semnalul către A0 care este citit de Nodemcu; dacă C = 0 (scăzut), B = 0 (scăzut), A = 1 (ridicat) multiplexorul vă va trimite datele pinului 1 și așa mai departe, până la finalizarea citirii celor 8 canale.
Deoarece semnalul este analog, programul se transformă în digital (0 sau 1), dacă tensiunea este mai mică sau egală cu 1,3 V, semnalul este 0; dacă este mai mare de 1,3V semnalul este 1. Valoarea 1,3V este arbitrară și pentru mine a funcționat foarte bine. Există întotdeauna scurgeri mici de curent și acest lucru protejează faptul că nu există falsuri pozitive.
Aceste date sunt stocate într-un vector val [8] care va fi comparat cu matricea de adrese ca busolă. Vedeți matricea din diagramă. De exemplu, dacă vectorul primit este [0, 0, 1, 0, 0, 0, 0, 0, 0] indică în matrice direcția E și corespunde unui unghi de 90 de grade; dacă [0, 0, 0, 0, 0, 0, 1, 1] indică în matrice adresa WNW și corespunde unui unghi de 292,5 grade. N corespunde [1, 0, 0, 0, 0, 0, 0, 0, 0] și unghiului de 0 grade.
Ceea ce va fi trimis către ThingSpeak este la unghi, deoarece acceptă doar numere.
Pasul 4: Comunicări
Cum să trimiteți date către ThingSpeak
Funcția thingspeaksenddata () este responsabilă pentru trimiterea datelor.
ThingSpeak.setField (1, float (linear_velocity_kmh)) - Trimiteți datele de viteză la câmpul 1 al canalului meu
ThingSpeak.setField (2, float (wind_Direction_Angle)) - Trimiteți datele de adresă către câmpul 2 al canalului meu
ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - Trimiteți canalului meu myChannelNumber, cu API-ul myWriteAPIKey scris indicat de TS. Aceste date au fost generate de TS la crearea contului și a canalului.
În imaginile de mai sus puteți vedea cum ThingSpeak arată datele primite.
În acest link puteți accesa datele proiectului meu pe canalul public al ThingSpeak.
Pasul 5: Variabile principale
parametrii paletei
- MUX_A D5 - mux pi A to Nodemcu pin D5
- MUX_B D4 - pinul mux B la pinul D4 Nodemcu
- MUX_C D3 - mux pin C to Nodemcu pin D3
- READPIN 0 - Intrare analogică pe NodeMcu = A0
- NO_PINS 8 - numărul de pini mux
- val [NO_PINS] - porturile 0 la 7 ale mux
- wind_Direction_Angle - Unghiul direcției vântului
- String windRose [16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - cardenale, colaterale și subcolaterale
- 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} - unghiuri pentru fiecare direcție
- Cifra [16] [NO_PINS] - Matrice de indicații
- muxABC [8] [3] - combinații ABC mux
parametrii anemometrului
- rpmcount - numărați câte rotații complete a făcut anemometrul în timpul alocat
- timemeasure = 25.00 - timpul de măsurare durantion în secunde
- timetoSleep = 1 - Nodemcu treaz timp în minute
- sleepTime = 15 - timpul de a dormi în câteva minute
- rpm, rps - frecvențe de rotație (rotații pe minut, rotații pe secundă)
- raza - metri - măsura lungimii aripii anemometrului
- linear_velocity - viteza liniară în m / seg
- linear_velocity_kmh - viteza liniară în km / h
- omega - viteza radială în rad / seg
Mai jos puteți găsi schița completă. Creați un folder nou în folderul Arduino al computerului dvs. cu același nume ca programul principal (Anemometer_Instructables) și puneți-le pe toate împreună.
Introduceți datele rețelei dvs. wifi și ID-ul ThingSpeak și cheia de scriere API în partea Credentials.h și salvați. Încărcați pe Nodemcu și atât.
Pentru a testa funcționarea sistemului, vă recomand un ventilator rotativ bun.
Pentru a accesa datele prin telefonul mobil, descărcați aplicația pentru IOS sau Android numită ThingView, care, din fericire, este încă gratuită.
Configurați setările contului dvs. și veți fi gata să vedeți condițiile de vânt de acasă oriunde vă aflați.
Dacă aveți un interes, accesați canalul meu ThingSpeak Channel ID: 438851, care este public și acolo veți găsi măsurătorile vântului și direcției în casa mea.
Sper cu adevărat să te distrezi.
Dacă aveți vreo îndoială, nu ezitați să mă contactați.
Salutari
Recomandat:
Conversie senzor de efect Hall Logitech 3D Extreme Pro: 9 pași
Conversia senzorului de efect Hall Hall Logitech 3D Extreme Pro: Controlul cârmei de pe joystick-ul meu se stingea. Am încercat să desprind vasele și să le curăț, dar nu prea a ajutat. Așa că am început să caut oale de înlocuire și am dat peste câteva site-uri web diferite de acum câțiva ani care se referă
Raspberry Pi A1332 Precision Hall - Tutorial Java senzor de unghi de efect: 4 pași
Raspberry Pi A1332 Precision Hall - Senzor de unghi de efect Tutorial Java: A1332 este un senzor de poziție unghi magnetic programabil fără rezoluție de 360 °, de înaltă rezoluție. Este proiectat pentru sisteme digitale care utilizează o interfață I2C. Este construit pe tehnologia Circular Vertical Hall (CVH) și un semnal programabil bazat pe microprocesor
Stație de Looper cu efect de chitară True Bypass programabilă folosind comutatoare Dip: 11 pași
Stație de Looper cu efect de chitară True Bypass programabilă folosind comutatoare Dip: Sunt un pasionat de chitară și un jucător hobbyist. Majoritatea proiectelor mele se întâmplă în jurul accesoriilor de chitară. Îmi construiesc propriile amplificatoare și câteva pedale de efect. În trecut am jucat într-o bandă mică și m-am convins că am nevoie doar de un amplificator cu re
Senzor de efect Hall pe Arduino folosind Fidget Spinner: 3 pași (cu imagini)
Senzor de efect Hall pe Arduino Utilizând Fidget Spinner: Rezumat În acest proiect explic despre modul în care funcționează senzorul de efect Hall măsurând viteza de spinner Fidget cu placa arduino. funcționare: -Un senzor de efect Hall este un traductor care își variază tensiunea de ieșire ca răspuns la un câmp magnetic. Efectul de hol
Cum să vă construiți propriul motor Jet: 10 pași (cu imagini)
Cum să-ți construiești propriul motor de reacție: Nu trebuie să fii Jay Leno pentru a deține o motocicletă propulsată cu reacție și noi îți vom arăta cum să-ți faci propriul jet de avion chiar aici pentru a-ți alimenta vehiculele nebunești. Acesta este un proiect în derulare și multe informații suplimentare vor fi disponibile pe site-ul nostru web