Sommario:

Come Costruire il Tuo Anemometro Usando Interruttori Reed, Sensore ad Effetto Hall e alcuni Scarti su Nodemcu - Parte 2 - Software: 5 Passaggi (con Immagini)
Come Costruire il Tuo Anemometro Usando Interruttori Reed, Sensore ad Effetto Hall e alcuni Scarti su Nodemcu - Parte 2 - Software: 5 Passaggi (con Immagini)

Video: Come Costruire il Tuo Anemometro Usando Interruttori Reed, Sensore ad Effetto Hall e alcuni Scarti su Nodemcu - Parte 2 - Software: 5 Passaggi (con Immagini)

Video: Come Costruire il Tuo Anemometro Usando Interruttori Reed, Sensore ad Effetto Hall e alcuni Scarti su Nodemcu - Parte 2 - Software: 5 Passaggi (con Immagini)
Video: Mon Dashboard sur Jeedom v4 2024, Dicembre
Anonim
Come costruire il tuo anemometro usando interruttori reed, sensore ad effetto Hall e alcuni frammenti su Nodemcu - Parte 2 - Software
Come costruire il tuo anemometro usando interruttori reed, sensore ad effetto Hall e alcuni frammenti su Nodemcu - Parte 2 - Software
Come costruire il tuo anemometro usando interruttori reed, sensore ad effetto Hall e alcuni frammenti su Nodemcu - Parte 2 - Software
Come costruire il tuo anemometro usando interruttori reed, sensore ad effetto Hall e alcuni frammenti su Nodemcu - Parte 2 - Software

introduzione

Questo è il seguito del primo post "Come costruire il tuo anemometro usando interruttori a lamella, sensore ad effetto Hall e alcuni frammenti su Nodemcu - Parte 1 - Hardware" - dove mostro come assemblare i dispositivi di misurazione della velocità e della direzione del vento. Qui sfrutteremo il software di controllo della misura progettato per l'uso in un Nodemcu utilizzando l'IDE Arduino.

descrizione del progetto

Nel post precedente, i dispositivi armati e collegati al Nodemcu sono in grado di misurare la velocità e la direzione del vento. Il software di controllo è stato progettato per leggere la rotazione dell'anemometro per un periodo di tempo, calcolare la velocità lineare, leggere la direzione in cui si trova la paletta, mostrare i risultati nell'OLED, pubblicare i risultati in ThingSpeak e dormire per 15 minuti fino a quando la misurazione successiva.

Dichiarazione di non responsabilità: questo anemometro non deve essere utilizzato per scopi professionali. È solo per uso accademico o domestico.

Nota: l'inglese non è la mia lingua naturale. Se trovi errori grammaticali che ti impediscono di comprendere il progetto, fammelo sapere per correggerli. Grazie molte.

Passaggio 1: installazione di Arduino IDE, schede e librerie ESP8266 e il tuo account ThingSpeak

Installazione di Arduino IDE, schede e librerie ESP8266 e il tuo account ThingSpeak
Installazione di Arduino IDE, schede e librerie ESP8266 e il tuo account ThingSpeak
Installazione di Arduino IDE, schede e librerie ESP8266 e il tuo account ThingSpeak
Installazione di Arduino IDE, schede e librerie ESP8266 e il tuo account ThingSpeak

Installazione di Arduino IDE e Nodemcu

Se non hai mai installato l'IDE Arduino leggi il tutorial nel link - Come installare Arduino IDE - dove puoi trovare le istruzioni complete.

Il prossimo passo, per installare la scheda Nodemcu, usa questo tutorial da Magesh Jayakumar Instructables che è molto completo. Come installare Nodemcu senza Arduino IDE

Installazione di librerie

Il passaggio successivo è necessario installare le librerie utilizzate dallo schizzo. Sono comuni e puoi seguire i passaggi mostrati di seguito.

Libreria ThingSpeak -

Libreria ESP8266 -

Creazione di un account ThingSpeak

Per utilizzare ThingSpeak (https://thingspeak.com/) devi creare un account (è comunque gratuito per un certo numero di interazioni) dove puoi salvare i dati misurati nel tuo anemometro e monitorare le condizioni del vento nella tua casa, anche tramite cellulare. Utilizzando ThingSpeak, puoi dare l'accesso pubblico ai tuoi dati raccolti a chiunque sia interessato. Questo è un buon vantaggio di ThingSpeak. Entra nella home page e segui i passaggi per creare il tuo account.

Una volta creato l'account, accedi a questo tutorial - ThingSpeak Getting Started - per creare i tuoi canali. È spiegato abbastanza bene. In sintesi, è necessario creare un canale in cui verranno archiviati i dati. Questo canale ha un ID e un'API chiave a cui fare riferimento nello schizzo ogni volta che si desidera registrare i dati. ThingSpeak memorizzerà tutti i dati in una banca e li mostrerà ogni volta che accedi al tuo account, nel modo che hai configurato.

Passaggio 2: esplorazione dello schizzo

Esplorare lo schizzo
Esplorare lo schizzo
Esplorare lo schizzo
Esplorare lo schizzo

Diagramma di flusso

Nel diagramma, puoi capire il flussogramma dello schizzo. Quando risveglierai (link) il Nodemcu, si connetterà alla tua rete Wi-Fi, di cui hai configurato i parametri e inizierà a contare 1 minuto di tempo per eseguire le misurazioni. Innanzitutto, conterà le rotazioni dell'anemometro per 25 secondi, calcola la velocità lineare e leggere la direzione del vento. I risultati vengono visualizzati sull'OLED. Ripeti gli stessi passaggi e per questa seconda lettura, trasmetterà a ThingSpeak.

Quindi Nodemcu dorme per 15 minuti per risparmiare la batteria. Poiché sto usando un piccolo pannello solare, è imperativo che lo faccia. Se stai usando una sorgente a 5V puoi modificare il programma in modo che non dorma e continui a misurare i dati.

Struttura dei programmi

Nel diagramma, puoi vedere la struttura dello schizzo.

Anemometro_Instructables

È il programma principale che carica le librerie, avvia le variabili, controlla l'interrupt di collegamento, chiama tutte le funzioni, calcola la velocità del vento, ne determina la direzione e lo mette in stop.

comunicazioni

Connetti il WiFi e invia i dati a ThingSpeak.

credenziali.h

Le chiavi della tua rete WiFi e gli identificatori del tuo account in ThingSpeak. Qui è dove cambierai gli ID delle chiavi e le API.

definisce.h

Contiene tutte le variabili del programma. Qui è dove puoi cambiare i tempi di lettura o per quanto tempo il nodemcu dovrebbe dormire.

funzioni

Contiene le funzioni per combinare i parametri e leggere il multiplexer e la funzione per leggere le rotazioni dell'anemometro.

oledDisplay

Mostra i risultati sullo schermo della velocità e della direzione del vento.

Passaggio 3: spiegazioni su…

Spiegazioni su…
Spiegazioni su…
Spiegazioni su…
Spiegazioni su…
Spiegazioni su…
Spiegazioni su…
Spiegazioni su…
Spiegazioni su…

Allega interruzione

La rotazione dell'anemometro è misurata dalla funzione attachInterrupt () (e detachInterrupt ()) nel GPIO 12 (pin D6) del Nodemcu (ha funzione di interrupt sui suoi pin D0-D8).

Gli interrupt sono eventi o condizioni che fanno sì che il microcontrollore interrompa l'esecuzione dell'attività che sta eseguendo, lavori in un'attività diversa temporaneamente e torni all'attività iniziale.

Puoi leggere il dettaglio della funzione nel link per il tutorial di Arduino. Vedere attachInterrupt().

Sintassi: attachInterrupt (pin, funzione di callback, tipo/modalità di interruzione);

pin = D6

funzione di callback = rpm_anemometer - conta ogni impulso su una variabile.

tipo/modalità di interruzione = RISING - interruzione quando il pin passa da basso ad alto.

Ad ogni impulso prodotto dal magnete nel sensore di Hall, il pin va da basso ad alto e si attiva la funzione di conteggio sommando gli impulsi in una variabile, durante i 25 secondi stabiliti. Allo scadere del tempo, il contatore viene disconnesso (detachInterrupt()) e la routine calcola la velocità mentre è disconnesso.

Calcolo della velocità del vento

Una volta determinato quante rotazioni ha dato l'anemometro in 25 secondi, calcoliamo la velocità.

  • RADIO è la misura dall'asse centrale dell'anemometro alla punta della pallina da ping pong. Devi aver misurato molto bene il tuo - (vedi quello nel diagramma che dice 10 cm).
  • RPS (rotazioni al secondo) = rotazioni / 25 secondi
  • RPM (rotazioni al minuto) = RPS * 60
  • OMEGA (velocità angolare - radianti al secondo) = 2 * PI * RPS
  • Linear_Velocity (metri al secondo) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km all'ora) = 3.6 * Linear_Velocity e questo è ciò che verrà inviato a ThingSpeak.

Leggi la direzione della banderuola

Per leggere la posizione della banderuola per determinare la direzione del vento il programma invia i segnali basso e alto al multiplexer con tutte le combinazioni dei parametri A, B, C (matrice muxABC) e attende di ricevere sul pin A0 il risultato che può essere qualsiasi tensione compresa tra 0 e 3,3 V. Le combinazioni sono mostrate nel diagramma.

Ad esempio, quando C = 0 (basso), B = 0 (basso), A = 0 (basso) il multiplexer gli fornisce i dati del pin 0 e invia il segnale ad A0 che viene letto dal Nodemcu; se C = 0 (basso), B = 0 (basso), A = 1 (alto) il multiplexer ti invierà i dati del pin 1 e così via, fino al completamento della lettura degli 8 canali.

Essendo il segnale analogico, il programma si trasforma in digitale (0 o 1), se la tensione è minore o uguale a 1.3V il segnale è 0; se è maggiore di 1.3V il segnale è 1. Il valore 1.3V è arbitrario e per me ha funzionato molto bene. Ci sono sempre piccole dispersioni di corrente e questo protegge dall'assenza di falsi positivi.

Questi dati sono memorizzati in un vettore val[8] che verrà confrontato con l'array di indirizzi come bussola. Vedere la matrice nel diagramma. Ad esempio, se il vettore ricevuto è [0, 0, 1, 0, 0, 0, 0, 0, 0] indica nella matrice la direzione E e corrisponde ad un angolo di 90 gradi; se [0, 0, 0, 0, 0, 0, 1, 1] indica nella matrice l'indirizzo WNW e corrisponde ad un angolo di 292,5 gradi. La N corrisponde a [1, 0, 0, 0, 0, 0, 0, 0, 0] e un angolo di 0 gradi.

Ciò che verrà inviato a ThingSpeak è inclinato perché accetta solo numeri.

Passaggio 4: comunicazioni

Comunicazioni
Comunicazioni
Comunicazioni
Comunicazioni

Come inviare dati a ThingSpeak

La funzione thingspeaksenddata() è responsabile dell'invio dei dati.

ThingSpeak.setField (1, float (linear_velocity_kmh)) - Invia i dati di velocità al campo1 del mio canale

ThingSpeak.setField (2, float (wind_Direction_Angle)) - Invia i dati dell'indirizzo al campo2 del mio canale

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - Invia al mio canale myChannelNumber, con la scritta myWriteAPIKey API indicata da TS. Questi dati sono stati generati da TS durante la creazione del tuo account e del tuo canale.

Nelle immagini sopra puoi vedere come ThingSpeak mostra i dati ricevuti.

In questo link puoi accedere ai dati del mio progetto nel canale pubblico di ThingSpeak.

Passaggio 5: variabili principali

parametri della banderuola

  • MUX_A D5 - mux pi A a Nodemcu pin D5
  • MUX_B D4 - mux pin B a Nodemcu pin D4
  • MUX_C D3 - mux pin C a Nodemcu pin D3
  • READPIN 0 - Ingresso analogico su NodeMcu = A0
  • NO_PINS 8 - numero di pin mux
  • val[NO_PINS] - porte da 0 a 7 di mux
  • wind_Direction_Angle - Angolo della direzione del vento
  • String windRose[16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - cardenals, collaterali e sub-garanzie
  • 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} - angoli di ciascuna direzione
  • Cifra [16] [NO_PINS] - Matrice delle direzioni
  • muxABC[8] [3] - Combinazioni ABC mux

parametri dell'anemometro

  • rpmcount - conta quante rotazioni complete ha fatto l'anemometro nel tempo assegnato
  • timemeasure = 25,00 - tempo di durata della misurazione in secondi
  • timetoSleep = 1 - Nodemcu tempo di veglia in minuti
  • sleepTime = 15 - tempo per continuare a dormire in minuti
  • rpm, rps - frequenze di rotazione (rotazioni al minuto, rotazioni al secondo)
  • raggio - metri - la misura della lunghezza dell'ala dell'anemometro
  • linear_velocity - velocità lineare in m/seg
  • linear_velocity_kmh - velocità lineare in km/h
  • omega - velocità radiale in rad/seg

Di seguito potete trovare lo schizzo completo. Crea una nuova cartella sulla cartella Arduino del tuo computer con lo stesso nome del programma principale (Anemometer_Instructables) e mettili tutti insieme.

Inserisci i dati della tua rete wifi e il ThingSpeak ID e API Writer Key nella parte Credentials.he salva. Carica su Nodemcu e questo è tutto.

Per testare il funzionamento del sistema consiglio una buona ventola rotante.

Per accedere ai dati da cellulare, scarica l'applicazione per IOS o Android chiamata ThingView, che fortunatamente è ancora gratuita.

Configura le impostazioni del tuo account e sarai pronto a vedere le condizioni del vento di casa ovunque tu sia.

Se sei interessato, accedi al mio canale ThingSpeak Channel ID: 438851, che è pubblico e lì troverai le misurazioni del vento e della direzione a casa mia.

Spero davvero che tu ti diverta.

Se hai qualche dubbio non esitare a contattarmi.

Saluti

Consigliato: