Cuprins:

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)
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)

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)

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)
Video: Cum să construiți propriul magazin online? - Proiectul GRACE 2024, Iunie
Anonim
Cum să vă construiți propriul anemometru folosind comutatoare Reed, senzor de efect Hall și câteva fragmente pe Nodemcu - Partea 2 - Software
Cum să vă construiți propriul anemometru folosind comutatoare Reed, senzor de efect Hall și câteva fragmente pe Nodemcu - Partea 2 - Software
Cum să vă construiți propriul anemometru folosind comutatoare Reed, senzor de efect Hall și câteva resturi pe Nodemcu - Partea 2 - Software
Cum să vă construiți propriul anemometru folosind comutatoare Reed, senzor de efect Hall și câteva resturi pe Nodemcu - Partea 2 - Software

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, plăci și biblioteci ESP8266 și contul dvs. ThingSpeak
Instalarea Arduino IDE, plăci și biblioteci ESP8266 și contul dvs. ThingSpeak
Instalarea Arduino IDE, plăci și biblioteci ESP8266 și contul dvs. ThingSpeak
Instalarea Arduino IDE, plăci și biblioteci 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

Explorarea schiței
Explorarea schiței
Explorarea schiței
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 …

Explicații despre …
Explicații despre …
Explicații despre …
Explicații despre …
Explicații despre …
Explicații despre …
Explicații despre …
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

Comunicări
Comunicări
Comunicări
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: