Przeszukaj forum
Pokazywanie wyników dla tagów 'Stacja pogodowa'.
Znaleziono 8 wyników
-
https://github.com/rkalwak/WeatherStation Wygodniej mi podlinkować do Githuba, gdzie mogę prościej aktualizować i przechowywać obrazki. Wiem, że aplikacja pokazuje trochę głupoty - rozłączyłem coś przenosząc. Stacja pogodowa: Z Arduino i zaraz potem ESP32 bawię się już ponad dwa lata. W sumie to zacząłem bardziej z https://www.nanoframework.net i tam portowałem kilka bibliotek, bo C++ to jest dla mnie epoka kamienia łupanego 😛 Padł pomysł, żeby zrobić sobie pogodynkę na bazie ESP32 zaprogramowaną w C# przez NanoFramework. W międzyczasie poznałem Suplę i zacząłem od rolet na SRW-01 a potem na zaprogramowaniu ESP przez GUI-Generic i się zaczęło... Doszedłem do momentu że dopisałem sobie "Kanał ogólnego przeznaczenia", umiem to zbudować ale ze względu na absolutny brak dokumentacji nie umiem tego uruchomić w Dokerze i się poddałem... Chciałem też napisać komunikację z Supla w C# ale z braku czasu odpuściłem. Prędzej czy później to zrobię... Poczytałem trochę co będzie potrzebne, kupiłem niekompletna stacje Sainlogic WS3500 na A****** i tak powstało to cudo, które niedlugo zawiśnie na płocie 😄 Funkcjonalności: * 2x temperatura, * wilgotność, * ciśnienie atmosferyczne, * siła i kierunek wiatru, * ilość opadów, * pomiar napięcia baterii, Części: * niekompletna stacja Sainlogic WS3500 - bez tabletu i zasilacza -> nie można jej skonfigurować, ale nieuszkodzona, wyrwana za 100zł 😄 * ESP32 DevKit * HDC1080 - czujnik wilgotności i temperatury * MS5611 - czujnik ciśnienia * DS18B20 - czujnik temperatury przy gruncie * LTR390 - czujnik UV i natężenia światła wbudowany w stację, użyty jako ten drugi * AS5600 - enkoder magnetyczny, zastąpił czujnik kierunku wiatru w stacji * czujnik Halla - zastąpil czujnik siły wiatru w stacji , ten od czujnika opadów został * 2 baterie 18650 LiPo i koszyk * lx-lifc1-n - Moduł BMS z ładowarką do akumulatorów Li-ion 2S z USB typu C i obsługą QC, możliwość ładowania z USB albo panelu. * przetwornica step-down * panel fotowoltaiczny dający 7V i ok. 1W wbudowany w stację Schemat i sposób działania ESP32 jest wyciągnięte do zewnętrznej puszki wraz z zasilaniem, ze względu na rozmiar stacji, po prostu się w niej nie mieści. Użyłem 12 żyłowego, 2 metrowego przewodu telefonicznego do połączenia płytki w stacji z tą w puszce. Wykorzystałem panel fotowoltaiczny z kupionej stacji do ładowania akumulatorków, jednak jest za słaby aby w pełni naładować 2 akumulatorki i co najwyżej wydłuża czas pracy na bateriach, który bez panelu wynosi ponad dobę pracy non stop. Stacja wykorzystuje bibliotekę SuplaDevice do komunikacji z Supla i robi to co 10 sek. Problemy 1. Brak schematów do stacji Sainlogic WS3500 i opisów na płytkach Metodą prób i błędów wymyśliłem jak wykorzystać niektóre wbudowane czujniki. LTR390 po wyjęciu i zobaczeniu oznaczeń pinów podpiąłem do ESP i puściłem skaner I2C a potem po adresie znalazłem czujnik, po dobraniu biblioteki zadziałał 😄 Niestety ten sam manewr nie zadziałał z czujnikiem temperatury i wilgotności. Mimo, że wygląda jak AHT XX i ma właściwy adres I2C nie działa z żadną biblioteką do tych czujników. Czujnik Halla dla opadów zadziałał. Doświadczalnie trzeba było dobrać jego pojemność. Czujnik Halla dla siły wiatru najpierw działał a potem przestał... Kupiłem inny i działa, ale obserwując dane w Supli, muszę poprawić obliczanie prędkości wiatru. Po kilku godzinach czytania okazało się, że kierunek wiatru jest zrealizowany przez dwa czujniki Halla i coś jeszcze, ale nie rozkminiłem tego... Kupiłem za to enkoder magnetyczny, który podaję kąt w stopniach - idealnie. 2. Zasilanie Pierwsza opcja: 1 akumulatorek 18650 i LDO na 3.3V, owszem ESP się uruchomi, ale z Wifi już się nie połączy przy obciążeniu wszystkimi czujnikami. Użyłem AMS1117 jako LDO. Druga opcja: 2 akumulatorki 18650 i przetwornica StepDown ustawiona na 5V, podane na VIN pin. Działa, ale chyba marnuje możliwości akumulatorków. Dodatkowo dwa akumulatorki to za dużo aby naładować z małego panela dającego max 7V, więc chyba skończy się to większym panelem 😄 Trzecia opcja: zasilanie z USB - nie mam póki co dobrego miejsca, żeby stacja wisiała na rozsądnej i dostępnej wysokości i był bezpieczny i wygodny dostęp do prądu. Czwarta opcja: czytałem, że ESP32 DevKit może przyjąć do 12V na VIN pin, podłączył bym bezpośrednio baterie, ale jakoś się nie odważyłem jeszcze, ktoś próbował? 3. Dokładność pomiarów ADC w ESP32 jest trochę słabe, pomiar napięcia akumulatorków jest "mniej więcej", wahania rzędu 0.3V. HDC1080 się bardzo grzeje w obudowie radiacyjnej i generalnie w południe pokazuje głupoty w stosunku do DS18B20 wiszącego luźno w cieniu, aczkolwiek wilgotność pokazuje nieźle co jest dziwne. Więc muszę to przemyśleć. Siła wiatru zdecydowanie będzie lepiej oprogramowana bo nie znając możliwości wiatraczka błądzę w obliczeniach. 4. Supla i jej możliwości Niestety Supla nie ma jeszcze generycznego kanału, któremu można przypisać jednostkę lub kanału stacji pogodowej przewidującego więcej parametrów więc niektóre pomiary musiały zostać przepchnięte przez kanał temperatury, np. napięcie akumulatorków czy kierunek wiatru jako kąt z zakresu 0-360 względem północy. Plany na przyszłość - Pewnie większy panel fotowoltaiczny. - Pomiar napięcia z panelu. - Pomiar poboru prądu przez ESP - mam już moduł INA219 obczajony 😄 - Własne płytki zamiast breakout boardów, a przynajmniej ta zewnętrzna. - Pomiar zanieczyszczenia powietrza (SDS0111). - Po przekroczeniu ustawionej godziny przechodzić na tryb "deep_sleep" i budzić co 15 min na minutę aby pomiar wiatru i deszczu był choć trochę użyteczny. Następnie rano o ustalonej godzinie budzić się aby pracować do wieczora w celu wydłużenia pracy na akumulatorkach. - Albo w Supli pojawi się kanał ogólnego przeznaczenia, który będzie wspierał dane, które mogę wysłać albo zgłosze PR ze zmianami 😄
- 28 odpowiedzi
-
- 6
-
Jak w temacie, buduję dla kogoś stację pogodową, taką max wypasiona z wieloma czujnikami. Ponieważ hardware już mam prawie ukończony, soft odczytuje te dane i teraz, poszukuję serwisu na który mógłbym to wszystko wysłać: stacja jest wyposażona w czujnik siły i kierunku wiatru, sumy opadów deszczu, detektor wyładowań atmosferycznych, czujnik temperatury, ciśnienia, wilgotności, indeksu UV, oraz pyłów. Co rozumiem pod pojęciem przyjaznego API? To że mam zerowe pojęcie o web app i fajnie by było gdyby był konfigurator 🙂
-
Mam problem. Mianowicie budując moją stację meteo na układzie Arduino Uno natknąłem się na błąd "SSD1306 allocation failed". Wywnioskowałem, że błąd ten powoduje zbyt mała ilość pamięci RAM dla wyświetlacza oraz że tą pamięć zabierają zmienne "char" wykorzystywane w moim kodzie. Program działał, gdy występowały dwie zmienne "char", teraz zaimplementowane są trzy, a mam w planach dodać jeszcze kilka. Poniżej dodaje kod całego programu modułu odbiornika stacji, do którego podłączony jest wyświetlacz. Jeżeli ktoś miałby jakieś rady co do sposobu pisanie kodu, lub zauważył w moim jakieś błędy, proszę śmiało pisać, gdyż nie jestem specem od pisania kodu. Wolę kabelki i lutownicę. 😉 Z góry dziękuję za odpowiedź. #include <SPI.h> #include <Wire.h> #include <VirtualWire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <Adafruit_BMP280.h> #include "DHT.h" #include <virtuabotixRTC.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define DHTPIN 2 // Pin, do którego podłączony jest DHT 11 #define DHTTYPE DHT11 // Typ czujnika DHT #define OLED_RESET -1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); Adafruit_BMP280 bmp280; DHT dht(DHTPIN, DHTTYPE); virtuabotixRTC myRTC(6, 7, 8); const int receive_pin = 3; char temperatureChar[10]; char humidityChar[10]; char pressureChar[10]; struct package { float temperature = 0.0; float humidity = 0.0; float pressure = 0.0; }; typedef struct package Package; Package data; void setup() { Serial.begin(9600); dht.begin(); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for(;;); // Don't proceed, loop forever } myRTC.setDS1302Time(00, 9, 15, 6, 01, 06, 2023); // Ustawienie zegara display.display(); delay(2000); display.clearDisplay(); //Wyczyszczenie ekranu vw_set_rx_pin(receive_pin); vw_setup(500); // Bits per sec vw_rx_start(); // Start the receiver PLL running } void loop() { float h = dht.readHumidity(); // Odczyt wilgotności wewnętrznej float t = dht.readTemperature(); //Odczyt temperatury wewnętrznej if (isnan(h) || isnan(t)) { Serial.println(F("Failed to read from DHT sensor!")); return; } float hic = dht.computeHeatIndex(t, h); uint8_t buf[sizeof(data)]; uint8_t buflen = sizeof(data); if (vw_have_message()) { for (int i = 0; i < 5; i++) { myRTC.updateTime(); delay(1050); display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,0); display.print(" Data: "); display.setTextSize(2); display.println(); display.println(); display.setTextColor(WHITE); display.print(myRTC.dayofmonth); display.print("/"); display.print(myRTC.month); display.print("/"); display.print(myRTC.year); display.print(" "); display.print(myRTC.hours); display.print(":"); display.print(myRTC.minutes); display.print(":"); display.print(myRTC.seconds); display.display(); display.clearDisplay(); } delay(2000); //Odczyt temperatury wewnętrznej display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Temperatura WEW.:"); display.println(); display.setTextSize(3); display.setTextColor(WHITE); display.print(t); display.print(" C"); display.display(); display.clearDisplay(); delay(2000); //Odczyt wilgotności wewnętrznej display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Wilgotnosc WEW.:"); display.println(); display.setTextSize(3); display.setTextColor(WHITE); display.print(h); display.print(" %"); display.display(); display.clearDisplay(); delay(2000); Serial.print(F("Temperatura wew.: ")); Serial.print(t); Serial.print(F("°C Wilgotność wew.: ")); Serial.print(h); Serial.print(F("% ")); Serial.println(); vw_get_message(buf, &buflen); //Odczyty z odbiornika zewnętrznego memcpy(&data,&buf,buflen); Serial.print(data.temperature); //Wypissanie odczytów na terminalu String temperatureString = String(data.temperature,1); temperatureString.toCharArray(temperatureChar,10); Serial.println(); Serial.println(data.humidity); String humidityString = String(data.humidity,1); humidityString.toCharArray(humidityChar,10); Serial.println(); Serial.print(data.pressure); String pressureString = String(data.pressure,1); pressureString.toCharArray(pressureChar,10); Serial.println(); display.setTextSize(1); //Odczyt temperatury zewnętrznej display.setTextColor(WHITE); display.setCursor(0,0); display.println("Teperatura ZEW.:"); display.println(); display.setTextSize(3); display.setTextColor(WHITE); display.print(data.temperature); display.print(" C"); temperatureString.toCharArray(temperatureChar,10); display.display(); display.clearDisplay(); delay(2000); //Odczyt wilgotności zewnętrznej display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Wilgotnosc ZEW.:"); display.println(); display.setTextSize(3); display.setTextColor(WHITE); display.print(data.humidity); display.print(" %"); humidityString.toCharArray(humidityChar,10); display.display(); display.clearDisplay(); delay(2000); //Odczyt ciśnienia display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println("Cisnienie.:"); display.println(); display.setTextSize(3); display.setTextColor(WHITE); display.print(data.pressure); display.print(" hPa"); pressureString.toCharArray(pressureChar,10); display.display(); display.clearDisplay(); delay(2000); } }
- 3 odpowiedzi
-
- 1
-
- Arduino
- Stacja pogodowa
-
(i 1 więcej)
Tagi:
-
Pięć lata temu miałem termometr avt. Zepsuł się po roku więc kupiłem kolejny, kolejny też się zepsuł. Pół roku temu postanowiłem zrobić termometr na arduino. Termometr cały czas udoskonalam. Obecnie posiada cztery czujniki : jeden czujnik DS18B20, Czujnik wilgotności i temperatury DHT11, Dwa czujniki temperatury i wilgotności DHT22. Pozostałe rzeczy, które użyłem to: Wyświetlaczem 4x20 znaków Konwerterem i2C LCD Moduł RTC DS3231 Koszyk na baterie AA do podtrzymania zegara Dwie baterie AA Czujnik ruchu Arduino uno Początkowo nie wiedziałem jak zapisać godzinę i datę w pamięci modułu RTC więc całość posiadało akumulator 12v 7Ah po to by godzina i data była prawdziwa a nie odczytywana z kodu po podaniu zasilania. Nie posiadał w tedy też czujnika ruchu więc posiadał włącznik, którym włączało się podświetlenie LCD. W tym momencie posiadał tylko trzy czujniki temperatury DS18B20 oraz jeden DHT11. Teraz termometr włącza się gdy ktoś przed nim się poruszy, mierzy temperaturę maksymalną i minimalną z każdego z czujników. Oraz posiada zasilacz 12V 1A. Całość umieściłem w obudowie z sklejki 6 mm pomalowanej szarą farbą. Z przodu znajduje się wyświetlacz, czujnik ruchu oraz dioda informująca że termometr oczekuje na ruch wyłącza się jeśli ktoś przednim się poruszy i włączy się wyświetlacz. Po lewej stronie znajduje się czujnik DHT22 mierzący temperaturę w pokoju. Specjalnie oddaliłem go od obudowy, żeby wynik był jak najbardziej prawidłowy. Na arduino wytrawiłem płytkę moją wytrawiarką do PCB (ma się dobrze i ostatnio dorobiłem do niej pompkę powietrza) są do niej podłączone wszystkie rzeczy. Czujniki które są poza pokojem jeden na zewnątrz DS18B20 i DHT11 drugi na dole DHT22 są podłączone przez złącze RJ45 do arduino. Do modułu RTC na miejsce fabrycznej baterii przylutowałem koszyczek na baterie AA ponieważ zegar na fabrycznej baterii wytrzymał 4 miesiące. Temperatury maks. i min. wyświetliłem na osobnym ekranie. Od lewej Strzałki oznaczają temperaturę minimalną i maksymalną oraz jest ona wyświetlana najpierw minimalna potem maksymalna. Galeria pozostałych ekranów: Dziękuję za przeczytaniem oraz liczę na komentarze.
-
Cześć poszukuję jakiegoś uniwersalnego serwisu do wyświetlania danych ze stacji pogodowej. Najlepiej aby też działał jako aplikacja webowa. Nie bardzo chce mi się od podstaw tworzyć całą stronę więc myślę nad jakimś gotowcem. Testowo dane wysyłane będą do remoteme jednak końcowo chciałbym coś w ładniejszej oprawie. Mierzone parametry to będą: temperatura, wilgotność, ciśnienie, prędkość i kierunek wiatru, suma opadów, czujnik pyłów i wskaźnik promieniowania UVA UVB, czujnik wyładowań atmosferycznych. Wszystko obsługiwać będzie ESP8266
-
Stacja pogodowa z wysyłką danych na stronę WWW Od paru tygodni testuję stację pogodową którą udało mi się zmontować w ostatnim czasie. Stacja oparta o sterownik Lan Kontroler V2.5 firmy Tiny Control. Jest to kompaktowe rozwiązanie zawierające: 5 wejść analogowych: pomiar temperatury, napięcia i prądu, oraz innych wielkości fizycznych, wejście cyfrowe w standardzie 1wire, wejście cyfrowe do obsługi czujnika temperatury i wilgotności DHT22, 4 wejścia logiczne: jako czujnik stanu do monitoringu, jako licznik impulsów z licznika energii, 1 przekaźnik (NZ, NO, C), 1 wyjście tranzystorowe, 4 wyjścia do załączania przekaźników oraz pomiar temperatury i napięcia zasilania na płytce. Do sterownika podłączyłem następujące czujniki: temperatury/wilgotności/ciśnienia - wszystko w jednym: CZUJNIK BME280/SPLITER 1WIRE/ RJ12 Grove - czujnik opadów / wody DFRobot Gravity - analogowy czujnik wilgotności gleby - odporny na korozję DFRobot Gravity - czujnik światła ultrafioletowego UV analogowy Miernik prędkości wiatru (chiński, zamówiony na aliexpress) 🙂 Podłączenie Urządzenie Lan Controler wymaga podłączenia czujników do odpowiednich wejść analogowych/cyfrowych. Czujnik BME280 podłączany jest do złącza wire1. Po zmontowaniu całość prezentuje się następująco: Oprogramowanie Sterownik Lan Controler posiada wbudowany serwer www i panel zarządzania parametrami sterownika oraz wejściami: dodatkowo posiada możliwość wysyłki danych do serwerów protokołem HTTP, taką opcję zbierania danych umożliwia np. serwer Thing Speak (https://thingspeak.com/) ThingSpeak to aplikacja i interfejs API dla urządzeń IoT (opensourcowe) do przechowywania i pobierania danych z urządzeń elektronicznych za pomocą protokołu HTTP i MQTT. tak wyglądają dane z mojej stacji pogodowej na platformie Thinspeak: dzięki opcji zagnieżdżania poszczególnych widgetów z ThingSpeak na innych stronach, zrobiłem własną zawierającą kluczowe parametry pogodowe: Rozwój: w planie dodatkowy czujnik - przepływu wody, mierzący ilość opadów, planuję oprzeć to o czujnik przepływu YF-S402, natomiast przed zimą czujnik zanieczyszczenia powietrza. Oczywiście wszystkie dane będą publikowane na stronie WWW automatycznie.
- 5 odpowiedzi
-
- 9
-
- Stacja pogodowa
- ThinkSpeak
-
(i 1 więcej)
Tagi:
-
Pracuję obecnie nad nowym projektem - ekranem w formie ramki na którym będą wyświetlane najważniejsze informacje, integrującym informację z kilku źródeł i pokazującym w ładnej przejrzystej formie: godziny, daty, kalendarza rodzinnego (wydarzenia, plany itp.) - dane pobierane z kalendarza Google (wprowadzanie wydarzeń na smartphonie) aktualnej temperatury wewnątrz i na zewnątrz, prognozy pogody na najbliższy dzień i kilka dni do przodu, to wszystko na tle wybranych zdjęć rodzinnych (pobieranych ze wskazanego katalogu dropboxa lub google drive). Elementy składowe: Komputer - Raspberry Pi Zero W 512MB RAM - WiFi + BT 4.1 Ekran IPS 7'' 1024x600px - Waveshare 12885 Czujnik temperatury i wilgotności DHT22 (AM2302) - Waveshare 11092 Raspberry w wersji zero - dla zaoszczędzenia miejsca oraz pieniędzy. Ekran IPS (dla dobrej jakości wyświetlania) ale bez opcji dotyku, w tym przypadku nie będzie potrzebna.. Czujnik temperatury wewnątrz domu (DTH22) planuję podłączyć bezpośrednio do tego samego Raspberry. Dane pogodowe z zewnątrz - będę pobierał ze stacji pogodowej która już działa - była przedmiotem odrębnego projektu (opis TUTAJ). Już wkrótce pochwalę się efektami prac i szczegółowym opisem realizacji..
- 2 odpowiedzi
-
- 1
-
- Raspberry Pi
- Stacja pogodowa
- (i 3 więcej)
-
Cześć Mam w planach zrobić stację pogodową z czujnikiem DHT22 lub BME 280 oraz NoneMcu lub Wemos D1 Mini Pro. Na podstawie projektu np. https://forbot.pl/blog/bezprzewodowa-solarna-stacja-pogodowa-z-esp8266-id35766 lub https://project.seeedstudio.com/hivwolf/greenhouse-monitoring-system-1c174c. Jak płytki NoneMcu oraz Wemos programuje się w arduino to nie wiem jak dołączyć bibliotekę do programu arduino bo nie che mi się dodać i nie mogę w arduino wybrać innej płytki niż arduino . Nie mam też żadnej z tych płytek, ale wolałem wcześniej sprawdzić czy da się dodać te bioblioteki, oraz czy kod podany w projekcie jest prawidłowy. Proszę o pomoc.