Spisu treści:
- Krok 1: Instalacja Arduino IDE, płyt i bibliotek ESP8266 oraz konta ThingSpeak
- Krok 2: Eksploracja szkicu
- Krok 3: Wyjaśnienia dotyczące …
- Krok 4: Komunikacja
- Krok 5: Główne zmienne
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)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
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
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
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 …
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
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:
Samouczek: Jak zbudować moduł czujnika zasięgu laserowego VL53L0X za pomocą Arduino UNO: 3 kroki
Samouczek: Jak zbudować moduł czujnika odległości lasera VL53L0X za pomocą Arduino UNO: Opisy: Ten samouczek pokaże wszystkim, jak zbudować detektor odległości za pomocą modułu czujnika odległości lasera VL53L0X i Arduino UNO i będzie działać tak jak ty chcieć. Postępuj zgodnie z instrukcjami, a zrozumiesz tego korepetytora
Alarm czujnika Halla: 7 kroków (ze zdjęciami)
Alarm czujnika Halla: pokażę Ci, jak można zrobić prosty alarm bezpieczeństwa za pomocą czujnika Halla. mam swój ze starego zakurzonego komputera
Alarm drzwi za pomocą magnetycznego czujnika Halla: 5 kroków
Alarm drzwi za pomocą magnetycznego czujnika Halla: Alarm drzwi jest bardzo powszechnym i użytecznym urządzeniem do celów bezpieczeństwa. Służą do wykrywania, czy drzwi są otwarte czy zamknięte. Często widzieliśmy alarm drzwi w lodówce, który po aktywacji wydawał inny dźwięk. Alarm drzwiowy Pro
Jak zbudować własny silnik odrzutowy: 10 kroków (ze zdjęciami)
Jak zbudować własny silnik odrzutowy: Nie musisz być Jayem Leno, aby posiadać motocykl z napędem odrzutowym, a my pokażemy Ci, jak zrobić własny silnik odrzutowy właśnie tutaj, aby napędzać zwariowane pojazdy. Jest to projekt w toku, a wiele dodatkowych informacji będzie dostępnych na naszej stronie
Jak zbudować zestaw głośników gitarowych lub zbudować dwa do swojego zestawu stereo.: 17 kroków (ze zdjęciami)
Jak zbudować zestaw głośników gitarowych lub zbudować dwa do swojego zestawu stereo.: Chciałem, aby nowy głośnik gitarowy pasował do wzmacniacza lampowego, który buduję. Głośnik pozostanie w moim sklepie, więc nie musi być niczym wyjątkowym. Pokrycie z Tolexu może być zbyt łatwo uszkodzone, więc po prostu spryskałem zewnętrzną czerń po lekkim piasku