Spisu treści:

Jak zbudować własny anemometr za pomocą kontaktronów, czujnika Halla i niektórych notatek na Nodemcu - część 2 - oprogramowanie: 5 kroków (ze zdjęciami)
Jak zbudować własny anemometr za pomocą kontaktronów, czujnika Halla i niektórych notatek na Nodemcu - część 2 - oprogramowanie: 5 kroków (ze zdjęciami)

Wideo: Jak zbudować własny anemometr za pomocą kontaktronów, czujnika Halla i niektórych notatek na Nodemcu - część 2 - oprogramowanie: 5 kroków (ze zdjęciami)

Wideo: Jak zbudować własny anemometr za pomocą kontaktronów, czujnika Halla i niektórych notatek na Nodemcu - część 2 - oprogramowanie: 5 kroków (ze zdjęciami)
Wideo: Amatorskie pomiary parametrów atmosferycznych 2024, Czerwiec
Anonim
Jak zbudować własny anemometr za pomocą kontaktronów, czujnika Halla i niektórych notatek na Nodemcu - część 2 - oprogramowanie
Jak zbudować własny anemometr za pomocą kontaktronów, czujnika Halla i niektórych notatek na Nodemcu - część 2 - oprogramowanie
Jak zbudować własny anemometr za pomocą kontaktronów, czujnika Halla i niektórych notatek na Nodemcu - część 2 - oprogramowanie
Jak zbudować własny anemometr za pomocą kontaktronów, czujnika Halla i niektórych notatek na Nodemcu - część 2 - oprogramowanie

Wstęp

To kontynuacja pierwszego postu „Jak zbudować własny anemometr za pomocą kontaktronów, czujnika Halla i niektórych skrawków na Nodemcu – Część 1 – Sprzęt” – gdzie pokazuję, jak złożyć urządzenia do pomiaru prędkości i kierunku wiatru. Tutaj wykorzystamy oprogramowanie sterujące pomiarami zaprojektowane do użytku w Nodemcu przy użyciu Arduino IDE.

Opis Projektu

W poprzednim poście urządzenia uzbrojone i podłączone do Nodemcu są w stanie mierzyć prędkość i kierunek wiatru. Oprogramowanie sterujące zostało zaprojektowane tak, aby odczytywać obroty anemometru przez pewien czas, obliczać prędkość liniową, odczytywać kierunek, w którym znajduje się wiatrowskaz, wyświetlać wyniki na OLED, publikować wyniki w ThingSpeak i spać przez 15 minut do następny pomiar.

Zastrzeżenie: Ten anemometr nie powinien być używany do celów profesjonalnych. To jest tylko do użytku akademickiego lub domowego.

Uwaga: angielski nie jest moim językiem naturalnym. Jeśli znajdziesz błędy gramatyczne, które uniemożliwiają zrozumienie projektu, daj mi znać, aby je poprawić. Bardzo dziękuję.

Krok 1: Instalacja Arduino IDE, płyt i bibliotek ESP8266 oraz konta ThingSpeak

Instalacja płyt i bibliotek Arduino IDE, ESP8266 oraz konta ThingSpeak
Instalacja płyt i bibliotek Arduino IDE, ESP8266 oraz konta ThingSpeak
Instalacja płyt i bibliotek Arduino IDE, ESP8266 oraz konta ThingSpeak
Instalacja płyt i bibliotek Arduino IDE, ESP8266 oraz konta ThingSpeak

Instalowanie Arduino IDE i Nodemcu

Jeśli nigdy nie instalowałeś IDE Arduino, zapoznaj się z tutorialem w linku - Jak zainstalować Arduino IDE - gdzie znajdziesz pełną instrukcję.

Następnym krokiem, aby zainstalować płytę Nodemcu, skorzystaj z tego samouczka z Magesh Jayakumar Instructables, który jest bardzo kompletny. Jak zainstalować Nodemcu bez Arduino IDE?

Instalowanie bibliotek

W następnym kroku musisz zainstalować biblioteki, z których korzysta szkic. Są powszechne i możesz wykonać kroki pokazane poniżej.

Biblioteka ThingSpeak -

Biblioteka ESP8266 -

Tworzenie konta ThingSpeak

Aby korzystać z ThingSpeak (https://thingspeak.com/) należy założyć konto (jest ono nadal bezpłatne przez określoną liczbę interakcji), w którym można zapisywać dane zmierzone w anemometrze i monitorować warunki wietrzne w domu, nawet przez telefon komórkowy. Korzystając z ThingSpeak, możesz udostępnić publicznie swoje zebrane dane każdemu, kto jest zainteresowany. To dobra zaleta ThingSpeak. Wejdź na stronę główną i postępuj zgodnie z instrukcjami, aby utworzyć konto.

Po utworzeniu konta wejdź do tego samouczka - ThingSpeak Pierwsze kroki - aby utworzyć swoje kanały. To całkiem dobrze wyjaśnione. Podsumowując, musisz stworzyć kanał, w którym będą przechowywane dane. Ten kanał ma identyfikator i Key API, do których należy odwoływać się w szkicu za każdym razem, gdy chcesz rejestrować dane. ThingSpeak przechowa wszystkie dane w banku i pokaże je za każdym razem, gdy uzyskasz dostęp do swojego konta, tak jak skonfigurowałeś.

Krok 2: Eksploracja szkicu

Eksploracja szkicu
Eksploracja szkicu
Eksploracja szkicu
Eksploracja szkicu

Schemat blokowy

Na schemacie możesz zrozumieć fluksogram szkicu. Po wybudzeniu (połączeniu) Nodemcu połączy się z siecią Wi-Fi, której parametry skonfigurowałeś i zacznie odliczać 1 minutę czasu na wykonanie pomiarów. Najpierw będzie liczyć obroty anemometru przez 25 sekund, oblicz prędkość liniową i odczytać kierunek wiatru. Wyniki są wyświetlane na OLED. Wykonaj te same kroki ponownie, a podczas drugiego czytania zostanie przesłany do ThingSpeak.

Następnie Nodemcu śpi przez 15 minut, aby oszczędzać baterię. Ponieważ używam małego panelu słonecznego, konieczne jest, aby to zrobić. Jeśli korzystasz ze źródła 5V, możesz zmodyfikować program tak, aby nie spał i dalej mierzył dane.

Struktura programów

Na schemacie widać strukturę szkicu.

Anemometr_Instrukcje

Jest to główny program, który ładuje biblioteki, uruchamia zmienne, steruje przerwaniem dołączania, wywołuje wszystkie funkcje, oblicza prędkość wiatru, określa jego kierunek i usypia.

komunikacja

Podłącz Wi-Fi i wyślij dane do ThingSpeak.

poświadczenia.h

Klucze Twojej sieci Wi-Fi i identyfikatory Twojego konta w ThingSpeak. W tym miejscu zmienisz identyfikatory kluczy i interfejsy API.

definiuje.h

Zawiera wszystkie zmienne programu. Tutaj możesz zmienić czasy czytania lub jak długo nodemcu powinien spać.

Funkcje

Zawiera funkcje łączenia parametrów i odczytu multipleksera oraz funkcję odczytu obrotów anemometru.

OledWyświetlacz

Pokaż na ekranie wyniki prędkości i kierunku wiatru.

Krok 3: Wyjaśnienia dotyczące …

Wyjaśnienia O …
Wyjaśnienia O …
Wyjaśnienia O …
Wyjaśnienia O …
Wyjaśnienia O …
Wyjaśnienia O …
Wyjaśnienia O …
Wyjaśnienia O …

Dołącz przerwanie

Obrót anemometru jest mierzony przez funkcję attachInterrupt() (i detachInterrupt()) w GPIO 12 (pin D6) Nodemcu (ma funkcję przerwania na swoich pinach D0-D8).

Przerwania to zdarzenia lub warunki, które powodują, że mikrokontroler przerywa wykonywanie zadania, które wykonuje, tymczasowo pracuje w innym zadaniu i wraca do zadania początkowego.

Możesz przeczytać szczegóły funkcji w linku do samouczka Arduino. Zobacz attachInterrupt().

Składnia: attachInterrupt(pin, funkcja wywołania zwrotnego, typ/tryb przerwania);

kołek = D6

funkcja zwrotna = rpm_anemometer - zlicza każdy impuls na zmiennej.

typ/tryb przerwania = RISING - przerwanie, gdy pin przechodzi z niskiego na wysoki.

Przy każdym impulsie wytworzonym przez magneto w czujniku Halla, szpilka przechodzi od niskiego do wysokiego, a funkcja zliczania jest aktywowana i sumuje impuls w zmiennej, w ciągu 25 sekund ustalonych. Po upływie tego czasu licznik jest odłączany (detachInterrupt()) i procedura oblicza prędkość po odłączeniu.

Obliczanie prędkości wiatru

Po ustaleniu, ile obrotów wykonał anemometr w ciągu 25 sekund, obliczamy prędkość.

  • RADIO to pomiar od osi środkowej anemometru do czubka piłki pingpongowej. Musiałeś bardzo dobrze zmierzyć swoje - (zobacz to na diagramie, który mówi 10 cm).
  • RPS (obroty na sekundę) = obroty / 25 sekund
  • RPM (obroty na minutę) = RPS * 60
  • OMEGA (prędkość kątowa - radiany na sekundę) = 2 * PI * RPS
  • Prędkość_liniowa (metry na sekundę) = OMEGA * RADIO
  • Linear_Velocity_kmh (Km na godzinę) = 3,6 * Linear_Velocity i to zostanie wysłane do ThingSpeak.

Czytaj kierunek wiatrowskazu

Aby odczytać położenie wiatrowskazu w celu określenia kierunku wiatru program wysyła do multipleksera sygnały niski i wysoki ze wszystkimi kombinacjami parametrów A, B, C (macierz muxABC) i czeka na otrzymanie na pinie A0 wyniku które może być dowolnym napięciem od 0 do 3,3 V. Kombinacje są pokazane na schemacie.

Na przykład, gdy C = 0 (niski), B = 0 (niski), A = 0 (niski) multiplekser podaje mu dane z pinu 0 i wysyła sygnał do A0, który jest odczytywany przez Nodemcu; jeśli C = 0 (niski), B = 0 (niski), A = 1 (wysoki) multiplekser wyśle dane z pinu 1 i tak dalej, aż do zakończenia odczytu 8 kanałów.

Ponieważ sygnał jest analogowy, program zamienia się na cyfrowy (0 lub 1), jeśli napięcie jest mniejsze lub równe 1,3V sygnał wynosi 0; jeśli jest większa niż 1,3V sygnał wynosi 1. Wartość 1,3V jest dowolna i jak dla mnie zadziałała bardzo dobrze. Zawsze występują niewielkie upływy prądu, co chroni przed fałszywymi alarmami.

Dane te są przechowywane w wartości wektorowej[8], która będzie porównywana z tablicą adresową jako kompas. Zobacz macierz na diagramie. Na przykład, jeśli otrzymany wektor to [0, 0, 1, 0, 0, 0, 0, 0, 0] oznacza to w macierzy kierunek E i odpowiada kątowi 90 stopni; jeśli [0, 0, 0, 0, 0, 0, 1, 1] wskazuje w macierzy adres WNW i odpowiada kątowi 292,5 stopnia. N odpowiada [1, 0, 0, 0, 0, 0, 0, 0, 0] i kątowi 0 stopni.

To, co zostanie wysłane do ThingSpeak, jest pod kątem, ponieważ akceptuje tylko liczby.

Krok 4: Komunikacja

Komunikacja
Komunikacja
Komunikacja
Komunikacja

Jak wysłać dane do ThingSpeak

Za przesyłanie danych odpowiada funkcja thingspeaksenddata().

ThingSpeak.setField (1, float (linear_velocity_kmh)) - Wysyła dane o prędkości do field1 mojego kanału

ThingSpeak.setField (2, float (wind_Direction_Angle)) - Wyślij dane adresowe do field2 mojego kanału

ThingSpeak.writeFields (myChannelNumber, myWriteAPIKey) - wyślij do mojego kanału myChannelNumber z napisanym interfejsem API myWriteAPIKey wskazanym przez TS. Te dane zostały wygenerowane przez TS podczas tworzenia konta i kanału.

Na powyższych zdjęciach możesz zobaczyć, jak ThingSpeak pokazuje odebrane dane.

Pod tym linkiem możesz uzyskać dostęp do danych mojego projektu w publicznym kanale ThingSpeak.

Krok 5: Główne zmienne

parametry wiatrowskazu,

  • MUX_A D5 - mux pi A do Nodemcu pin D5
  • MUX_B D4 - mux pin B do Nodemcu pin D4
  • MUX_C D3 - mux pin C do Nodemcu pin D3
  • READPIN 0 - Wejście analogowe na NodeMcu = A0
  • NO_PINS 8 - liczba pinów mux
  • val[NO_PINS] - porty od 0 do 7 mux
  • wind_Direction_Angle - Kąt kierunku wiatru
  • String windRose[16] = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"} - kardynałowie, zabezpieczenia i sub-zabezpieczenia
  • 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} - kąty w każdym kierunku
  • Cyfra [16] [NO_PINS] - Macierz dojazdu
  • muxABC[8] [3] - kombinacje ABC mux

parametry anemometru

  • rpmcount - policz ile pełnych obrotów wykonał wiatromierz w wyznaczonym czasie
  • pomiar czasu = 25,00 - czas trwania pomiaru w sekundach
  • timetoSleep = 1 - Nodemcu czas czuwania w minutach
  • sleepTime = 15 - czas na spanie w minutach
  • rpm, rps - częstotliwości obrotów (obroty na minutę, obroty na sekundę)
  • promień - metry - miara długości skrzydła anemometru
  • linear_velocity - prędkość liniowa w m/seg
  • linear_velocity_kmh - prędkość liniowa w km/h
  • omega - prędkość radialna w rad/seg

Poniżej znajdziecie kompletny szkic. Utwórz nowy folder w folderze Arduino swojego komputera o tej samej nazwie co główny program (Anemometer_Instructables) i połącz je wszystkie razem.

Wprowadź dane swojej sieci Wi-Fi oraz ThingSpeak ID i API Writer Key w części Credentials.hi zapisz. Prześlij do Nodemcu i to wszystko.

Do przetestowania działania systemu polecam dobry wentylator obrotowy.

Aby uzyskać dostęp do danych przez telefon komórkowy, należy pobrać aplikację na IOS lub Android o nazwie ThingView, która na szczęście nadal jest bezpłatna.

Skonfiguruj ustawienia swojego konta, a będziesz mógł zobaczyć swoje warunki wiatrowe w domu, gdziekolwiek jesteś.

Jeśli jesteś zainteresowany, wejdź na mój kanał ThingSpeak Channel ID: 438851, który jest publiczny i tam znajdziesz pomiary wiatru i kierunku w moim domu.

Naprawdę mam nadzieję, że dobrze się bawisz.

Jeśli masz jakiekolwiek wątpliwości, nie wahaj się ze mną skontaktować.

Pozdrowienia

Zalecana: