Taula de continguts:

Com construir el vostre propi anemòmetre mitjançant interruptors Reed, sensor d'efecte Hall i alguns retalls a Nodemcu - Part 2 - Programari: 5 passos (amb imatges)
Com construir el vostre propi anemòmetre mitjançant interruptors Reed, sensor d'efecte Hall i alguns retalls a Nodemcu - Part 2 - Programari: 5 passos (amb imatges)

Vídeo: Com construir el vostre propi anemòmetre mitjançant interruptors Reed, sensor d'efecte Hall i alguns retalls a Nodemcu - Part 2 - Programari: 5 passos (amb imatges)

Vídeo: Com construir el vostre propi anemòmetre mitjançant interruptors Reed, sensor d'efecte Hall i alguns retalls a Nodemcu - Part 2 - Programari: 5 passos (amb imatges)
Vídeo: Часть 1. Аудиокнига сэра Артура Конан Дойля «Затерянный мир» (гл. 01–07) 2024, Desembre
Anonim
Com construir el vostre propi anemòmetre mitjançant interruptors Reed, sensor d'efecte Hall i alguns retalls a Nodemcu - Part 2 - Programari
Com construir el vostre propi anemòmetre mitjançant interruptors Reed, sensor d'efecte Hall i alguns retalls a Nodemcu - Part 2 - Programari
Com construir el vostre propi anemòmetre mitjançant interruptors Reed, sensor d'efecte Hall i alguns retalls a Nodemcu - Part 2 - Programari
Com construir el vostre propi anemòmetre mitjançant interruptors Reed, sensor d'efecte Hall i alguns retalls a Nodemcu - Part 2 - Programari

Introducció

Aquesta és la seqüela del primer post "Com construir el vostre propi anemòmetre amb interruptors Reed, sensor d'efecte Hall i alguns retalls a Nodemcu - Part 1 - Maquinari" - on mostro com muntar els dispositius de mesura de la velocitat i la direcció del vent. Aquí explotarem el programari de control de mesurament dissenyat per utilitzar-lo en un Nodemcu mitjançant l'IDE Arduino.

Descripció del Projecte

A la publicació anterior, els dispositius armats i connectats al Nodemcu poden mesurar la velocitat i la direcció del vent. El programari de control es va dissenyar per llegir la rotació de l’anemòmetre durant un període de temps, calcular la velocitat lineal, llegir la direcció en què es troba la paleta, mostrar els resultats a l’OLED, publicar els resultats a ThingSpeak i dormir durant 15 minuts fins que la següent mesura.

Exempció de responsabilitat: aquest anemòmetre no s’ha d’utilitzar amb finalitats professionals. Només és per a ús acadèmic o domèstic.

Nota: l’anglès no és el meu idioma natural. Si trobeu errors gramaticals que us impedeixen comprendre el projecte, feu-me-ho saber per corregir-los. Moltes gràcies.

Pas 1: Instal·leu Arduino IDE, taulers i biblioteques ESP8266 i el vostre compte de ThingSpeak

Instal·lació d'arduino IDE, taulers i biblioteques ESP8266 i el vostre compte de ThingSpeak
Instal·lació d'arduino IDE, taulers i biblioteques ESP8266 i el vostre compte de ThingSpeak
Instal·lació d'arduino IDE, taulers i biblioteques ESP8266 i el vostre compte de ThingSpeak
Instal·lació d'arduino IDE, taulers i biblioteques ESP8266 i el vostre compte de ThingSpeak

Instal·lació d’Arduino IDE i Nodemcu

Si mai no heu instal·lat l'IDE, l'Arduino llegeix el tutorial a l'enllaç - Com instal·lar Arduino IDE - on trobaràs les instruccions completes.

El següent pas, per instal·lar la placa Nodemcu, utilitzeu aquest tutorial del Magesh Jayakumar Instructables, que és molt complet. Com instal·lar Nodemcu no Arduino IDE

Instal·lació de biblioteques

El següent pas heu d'instal·lar les biblioteques que utilitza l'esbós. Són habituals i podeu seguir els passos que es mostren a continuació.

Biblioteca ThingSpeak:

Biblioteca ESP8266 -

Creació d’un compte de ThingSpeak

Per utilitzar ThingSpeak (https://thingspeak.com/) heu de crear un compte (encara és gratuït per a un nombre determinat d’interaccions) on podeu desar les dades mesurades al vostre anemòmetre i controlar les condicions del vent a casa vostra, fins i tot a través del mòbil. En utilitzar ThingSpeak, podeu donar accés públic a les vostres dades recopilades a qui hi estigui interessat. Aquest és un bon avantatge del ThingSpeak. Introduïu la pàgina d'inici i seguiu els passos per crear el vostre compte.

Un cop creat el compte, introduïu aquest tutorial - Introducció a ThingSpeak - per crear els vostres canals. Està força ben explicat. En resum, heu de crear un canal on s’emmagatzemaran les dades. Aquest canal té un identificador i una API clau que s'han de fer referència a l'esbós cada vegada que vulgueu enregistrar dades. ThingSpeak emmagatzemarà totes les dades en un banc i les mostrarà cada vegada que accediu al vostre compte, de la manera que hàgiu configurat.

Pas 2: explorar l'esbós

Explorant l'esbós
Explorant l'esbós
Explorant l’esbós
Explorant l’esbós

Diagrama de flux

Al diagrama podeu entendre el fluxograma de l’esbós. En despertar (enllaçar) el Nodemcu, es connectarà a la vostra xarxa Wi-Fi, els paràmetres del qual heu configurat i començarà a comptar 1 minut de temps per realitzar les mesures. En primer lloc, comptarà les rotacions de l’anemòmetre durant 25 segons, calculeu la velocitat lineal i llegir la direcció del vent. Els resultats es mostren a l’OLED. Torneu a fer els mateixos passos i, per a aquesta segona lectura, es transmetrà a ThingSpeak.

A continuació, Nodemcu dorm durant 15 minuts per estalviar la bateria. Com que faig servir un petit panell solar, és imprescindible que ho faci. Si utilitzeu una font de 5V, podeu modificar el programa perquè no dormi i seguir mesurant les dades.

Estructura dels programes

Al diagrama podeu veure l'estructura de l'esbós.

Anemòmetre_Instructibles

És el programa principal que carrega les biblioteques, inicia les variables, controla la interrupció del fitxer adjunt, crida totes les funcions, calcula la velocitat del vent, determina la seva direcció i la posa a dormir.

comunicacions

Connecteu el WiFi i envieu les dades a ThingSpeak.

credencials.h

Les claus de la vostra xarxa WiFi i els identificadors del vostre compte a ThingSpeak. Aquí és on canviarà els ID i les API de claus.

defineix.h

Conté totes les variables del programa. Aquí és on podeu canviar els temps de lectura o quant de temps ha de dormir el nodemcu.

funcions

Conté les funcions per combinar els paràmetres i llegir el multiplexor, així com la funció per llegir les rotacions de l'anemòmetre.

oledDisplay

Mostra els resultats de la velocitat i la direcció del vent a la pantalla.

Pas 3: explicacions sobre …

Explicacions sobre …
Explicacions sobre …
Explicacions sobre …
Explicacions sobre …
Explicacions sobre …
Explicacions sobre …
Explicacions sobre …
Explicacions sobre …

Adjunta interrupció

La rotació de l’anemòmetre es mesura mitjançant la funció attachInterrupt () (i detachInterrupt ()) al GPIO 12 (pin D6) del Nodemcu (té una funció d’interrupció als pins D0-D8).

Les interrupcions són esdeveniments o condicions que fan que el microcontrolador aturi l'execució de la tasca que realitza, treballi temporalment en una tasca diferent i torni a la tasca inicial.

Podeu llegir el detall de la funció a l’enllaç del tutorial d’Arduino. Vegeu attachInterrupt ().

Sintaxi: attachInterrupt (pin, funció de devolució de trucada, tipus / mode d'interrupció);

pin = D6

funció de devolució de trucada = rpm_anemometer: compta cada impuls en una variable.

tipus / mode d’interrupció = RISING: interromp quan el pin passa de menor a major.

A cada pols produït pel magneto al sensor Hall, el pin passa de menor a major i la funció de recompte s'activa i suma el pols en una variable, durant els 25 segons establerts. Un cop expirat el temps, el comptador es desconnecta (detachInterrupt ()) i la rutina calcula la velocitat mentre es desconnecta.

Càlcul de la velocitat del vent

Un cop s’ha determinat quantes rotacions va donar l’anemòmetre en 25 segons, calculem la velocitat.

  • RADIO és la mesura des de l’eix central de l’anemòmetre fins a la punta de la bola de ping pong. Heu d’haver mesurat molt bé el vostre (vegeu-ho al diagrama que diu 10 cm).
  • RPS (rotacions per segon) = rotacions / 25 segons
  • RPM (rotacions per minut) = RPS * 60
  • OMEGA (velocitat angular - radians per segon) = 2 * PI * RPS
  • Lineal_Velocity (metres per segon) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km per hora) = 3,6 * Linear_Velocity i això és el que s'enviarà a ThingSpeak.

Llegiu la direcció de les veletes

Per llegir la posició de la veleta per determinar la direcció del vent, el programa envia senyals baixos i alts al multiplexor amb totes les combinacions dels paràmetres A, B, C (matriu muxABC) i espereu a rebre al pin A0 el resultat que pot tenir qualsevol tensió entre 0 i 3,3 V. Les combinacions es mostren al diagrama.

Per exemple, quan C = 0 (baix), B = 0 (baix), A = 0 (baix) el multiplexor li dóna les dades del pin 0 i envia el senyal a A0 que llegeix el Nodemcu; si C = 0 (baix), B = 0 (baix), A = 1 (alt) el multiplexor us enviarà les dades del pin 1 i així successivament, fins que es completi la lectura dels 8 canals.

Com que el senyal és analògic, el programa es transforma en digital (0 o 1), si el voltatge és inferior o igual a 1,3 V, el senyal és 0; si és superior a 1,3 V, el senyal és 1. El valor de 1,3 V és arbitrari i per a mi funcionava molt bé. Sempre hi ha petites fuites de corrent i això protegeix que no hi hagi falsos positius.

Aquestes dades s’emmagatzemen en un vector val [8] que es compararà amb la matriu d’adreces com la brúixola. Vegeu la matriu del diagrama. Per exemple, si el vector rebut és [0, 0, 1, 0, 0, 0, 0, 0, 0], indica a la matriu la direcció E i correspon a un angle de 90 graus; si [0, 0, 0, 0, 0, 0, 1, 1] indica a la matriu l'adreça WNW i correspon a un angle de 292,5 graus. La N correspon a [1, 0, 0, 0, 0, 0, 0, 0, 0] i angle de 0 graus.

El que s'enviarà a ThingSpeak està inclinat perquè només accepta números.

Pas 4: Comunicacions

Comunicacions
Comunicacions
Comunicacions
Comunicacions

Com enviar dades a ThingSpeak

La funció thingspeaksenddata () s’encarrega d’enviar les dades.

ThingSpeak.setField (1, float (linear_velocity_kmh)): envia les dades de velocitat al camp 1 del meu canal

ThingSpeak.setField (2, float (wind_Direction_Angle)): envia les dades de l'adreça al camp 2 del meu canal

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey): enviar al meu canal myChannelNumber, amb l'API myWriteAPIKey escrita indicada per TS. TS va generar aquestes dades en crear el vostre compte i canal.

A les imatges de dalt podeu veure com ThingSpeak mostra les dades rebudes.

En aquest enllaç podeu accedir a les dades del meu projecte al canal públic de ThingSpeak.

Pas 5: variables principals

paràmetres de la veleta

  • MUX_A D5: mux pi A a Nodemcu pin D5
  • MUX_B D4: pin mux B al pin D4 de Nodemcu
  • MUX_C D3: mux pin C a Nodemcu pin D3
  • READPIN 0 - Entrada analògica a NodeMcu = A0
  • NO_PINS 8: nombre de pins mux
  • val [NO_PINS]: ports del 0 al 7 de mux
  • wind_Direction_Angle: angle de direcció del vent
  • String windRose [16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - cardenals, col·laterals i sub-col·laterals
  • 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} - angles de cada direcció
  • Dígit [16] [NO_PINS] - Matriu d'indicacions
  • muxABC [8] [3] - Combinacions mux ABC

paràmetres de l’anemòmetre

  • rpmcount: compta quantes rotacions completes ha fet l'anemòmetre en el temps assignat
  • timemeasure = 25.00 - mesura durantion temps en segons
  • timetoSleep = 1: temps de despert de Nodemcu en minuts
  • sleepTime = 15: temps per seguir dormint en qüestió de minuts
  • rpm, rps - freqüències de rotació (rotacions per minut, rotacions per segon)
  • radi - metres: la mesura de la longitud de l’ala de l’anemòmetre
  • lineal_velocity: velocitat lineal en m / seg
  • lineal_velocitat_kmh: velocitat lineal en km / h
  • omega - velocitat radial en rad / seg

A continuació podeu trobar l’esbós complet. Creeu una carpeta nova a la carpeta Arduino de l'ordinador amb el mateix nom que el programa principal (Anemometer_Instructables) i ajunteu-les totes.

Introduïu les dades de la vostra xarxa wifi i l'identificador de ThingSpeak i la clau d'escriptor API a la part Credentials.h i deseu. Puja a Nodemcu i això és tot.

Per provar el funcionament del sistema, recomano un bon ventilador giratori.

Per accedir a les dades per telèfon mòbil, descarregueu l'aplicació per a iOS o Android anomenada ThingView, que, per sort, encara és gratuïta.

Configureu la configuració del vostre compte i estareu a punt per veure les condicions del vent de casa vostra allà on sigueu.

Si teniu interès, accediu al meu canal d’identificació del canal ThingSpeak: 438851, que és públic i allà trobareu les mesures de vent i direcció a casa meva.

Realment espero que us divertiu.

Si teniu cap dubte, no dubteu en posar-vos en contacte amb mi.

Salutacions

Recomanat: