Przejdź do głównej treści
Otwórz wyszukiwarkę
Szukaj
Zamknij wyszukiwarkę Wyczyść Szukaj
Produkty w koszyku: 0. Zobacz szczegóły
Twój koszyk jest pusty

Domowa stacja pogodowa na ESP32 - kompletny projekt DIY

  • dodano: 02-09-2026
Domowa stacja pogodowa na ESP32 - kompletny projekt DIY

Domowa stacja pogodowa na ESP32 to zestaw czujników meteorologicznych podłączonych do mikrokontrolera z Wi-Fi, który mierzy temperaturę, wilgotność, ciśnienie atmosferyczne, prędkość wiatru i opady, a następnie wysyła odczyty do serwera MQTT, Home Assistant lub na wyświetlacz OLED. Kompletny zestaw części kosztuje 250-450 zł, a złożenie działającego prototypu na płytce stykowej zajmuje jedno popołudnie. Ten poradnik prowadzi przez cały projekt: od doboru czujników, przez schemat połączeń i zasilanie, po kod, integrację z Home Assistant i kalibrację.

Parametr projektu

Wartość

Poziom trudności

Średni (wymaga lutowania i podstaw programowania)

Czas montażu

4-6 h prototyp, 1 dzień wersja finalna

Orientacyjny koszt

250-450 zł

Mikrokontroler

ESP32-WROOM-32

Mierzone wielkości

Temperatura, wilgotność, ciśnienie, prędkość wiatru, opad

Zasilanie

5 V USB lub 18650 + panel słoneczny 6 V

Transmisja danych

Wi-Fi → MQTT → Home Assistant

Co dokładnie chcemy mierzyć? Lista pomiarów i wymagana dokładność

Zanim kupisz jakikolwiek podzespół, ustal listę mierzonych wielkości. To ona decyduje o budżecie, liczbie pinów i sposobie zasilania. Amatorska stacja pogodowa mierzy zwykle pięć podstawowych parametrów.

Wielkość

Jednostka

Realna dokładność DIY

Czujnik

Temperatura powietrza

°C

±0,5 °C

BME280

Wilgotność względna

% RH

±3 % RH

BME280

Ciśnienie atmosferyczne

hPa

±1 hPa

BME280

Temperatura zewnętrzna / gruntu

°C

±0,5 °C

DS18B20 w sondzie wodoszczelnej

Prędkość wiatru

km/h

±5 %

Anemometr kubełkowy z kontaktronem

Opad atmosferyczny

mm

0,2794 mm/przechył

Deszczomierz korytkowy

Dwie wielkości warto dopisać do listy życzeń już na starcie, bo dokłada się je bez zmiany konstrukcji: kierunek wiatru (wiatromierz z przełącznikiem rezystancyjnym, odczyt przez ADC) oraz nasłonecznienie (fotorezystor lub moduł BH1750). Jeżeli planujesz sterować czymkolwiek na podstawie pogody - podlewaniem, roletami, wentylacją - dołóż do projektu przekaźnik i potraktuj stację jako czujnik wejściowy większego systemu. Dokładnie tak działa układ opisany we wpisie o inteligentnym nawadnianiu ogrodu z Arduino, który można wysterować danymi z własnej stacji zamiast prognozą z internetu.

Kluczowa decyzja projektowa: czy stacja ma pracować bez przerwy, czy budzić się co kilka minut. Ciągła praca upraszcza pomiar wiatru i opadu (liczysz impulsy non stop), ale wyklucza zasilanie z małego akumulatora. Praca cykliczna z deep sleep wydłuża czas pracy na baterii do kilku tygodni, ale wymaga licznika impulsów na pinie RTC. W tym projekcie zakładamy pracę ciągłą - jest prostsza, a przy zasilaniu z panelu słonecznego wystarczająco oszczędna.

2. ESP32 czy Arduino? Dlaczego do stacji pogodowej lepszy jest ESP32?

ESP32 wygrywa z klasycznym Arduino UNO w stacji pogodowej z jednego powodu: ma wbudowane Wi-Fi. Stacja bez transmisji danych to termometr z wyświetlaczem, a Arduino UNO wymaga dokupienia modułu ESP8266 lub Ethernet Shield, co podnosi koszt i komplikuje kod.

Cecha

ESP32-WROOM-32

Arduino UNO R3

Rdzeń

2× 240 MHz, 32-bit

1× 16 MHz, 8-bit

RAM

520 kB

2 kB

Wi-Fi / Bluetooth

Tak / Tak

Nie / Nie

Napięcie logiki

3,3 V

5 V

ADC

12-bit

10-bit

Deep sleep

~10 µA (goły moduł)

~35 µA (z bibliotekami)

Liczba GPIO

34 (część input-only)

20

Dwie różnice bezpośrednio wpływają na montaż. Po pierwsze, ESP32 pracuje na 3,3 V - czujniki 5 V wymagają konwertera poziomów, dlatego w projekcie używamy wyłącznie modułów 3,3 V. Po drugie, piny GPIO34-GPIO39 są wejściami bez rezystorów podciągających, więc nie nadają się do podłączenia kontaktronu bez zewnętrznego pull-upa. Unikaj też pinów strapujących (GPIO0, GPIO2, GPIO12, GPIO15) - stan wysoki lub niski w chwili startu blokuje uruchomienie płytki.

Jeżeli dopiero zaczynasz z mikrokontrolerami, zajrzyj wcześniej do przewodnika „Czy Arduino jest trudne?" - środowisko i logika programu są identyczne, zmienia się tylko płytka. Gotowe zestawy startowe i płytki rozwojowe znajdziesz w kategorii Arduino.

3. Czujniki do stacji pogodowej: BME280, DS18B20, anemometr i deszczomierz

Dobór czujników to najważniejsza decyzja w całym projekcie - od niej zależy, czy Twoje odczyty będą zgodne z oficjalnymi danymi z pobliskiej stacji IMGW, czy rozjadą się o kilka stopni.

BME280 - temperatura, wilgotność i ciśnienie w jednym module

BME280 firmy Bosch mierzy trzy wielkości jednocześnie i komunikuje się po I²C pod adresem 0x76 lub 0x77. Deklarowana dokładność to ±1,0 °C dla temperatury (±0,5 °C w zakresie 0-65 °C), ±3 % RH dla wilgotności i ±1 hPa dla ciśnienia. Zakres pomiarowy ciśnienia 300-1100 hPa pokrywa cały realny zakres pogodowy w Polsce.

Uwaga na wersje: moduły opisane jako BMP280 nie mierzą wilgotności. Rozpoznasz je po liczbie wyprowadzeń na kostce i po tym, że biblioteka zwraca zero na kanale wilgotności.

DS18B20 - niezależny pomiar temperatury zewnętrznej

DS18B20 pracuje na magistrali 1-Wire, mierzy w zakresie od −55 °C do +125 °C z dokładnością ±0,5 °C i występuje w wersji zatopionej w stalowej sondzie na przewodzie. Ta wersja jest odporna na wilgoć, więc sprawdza się jako czujnik temperatury gruntu, wody w oczku lub powietrza pod dachem. Magistrala wymaga rezystora podciągającego 4,7 kΩ między linią danych a 3,3 V - bez niego odczyty to same wartości −127 °C. Jeżeli nie masz pewności, jak dobrać wartość i moc rezystora, pomoże poradnik obliczania rezystorów.

Po co drugi czujnik temperatury, skoro BME280 już ją mierzy? Bo BME280 siedzi w obudowie razem z ESP32 i grzeje się od układu - różnica potrafi sięgnąć 2 °C. DS18B20 na przewodzie, wyprowadzony poza obudowę, daje punkt odniesienia do kalibracji.

Anemometr kubełkowy - pomiar prędkości wiatru

Typowy amatorski anemometr to trzy kubełki na osi z magnesem i kontaktronem. Każdy pełny obrót zwiera kontakt na ułamek sekundy. W popularnych modelach (WH-SP-WS01 i pochodne) jeden obrót na sekundę odpowiada prędkości 2,4 km/h - ale zawsze sprawdź współczynnik w karcie katalogowej swojego egzemplarza, bo różni się między producentami.

Kontaktron drga przy zwarciu, dlatego liczenie impulsów wymaga filtrowania. Najprostsze rozwiązanie to programowy debounce (ignorowanie impulsów krótszych niż 10 ms), a najpewniejsze - dodatkowo filtr RC z rezystorem 10 kΩ i kondensatorem 100 nF przy pinie wejściowym.

Deszczomierz korytkowy - pomiar opadu

Deszczomierz korytkowy zbiera wodę w wywrotnej łyżeczce. Po napełnieniu łyżeczka przechyla się, wylewa wodę i zwiera kontaktron. Jeden przechył to zwykle 0,2794 mm opadu (standard Davis) lub 0,3 mm w tańszych modelach. Suma dobowa opadu to po prostu liczba przechyłów pomnożona przez tę stałą.

Wyświetlacz OLED - lokalny podgląd bez telefonu

Wyświetlacz OLED SSD1306 128×64 dzieli magistralę I²C z BME280 (adres 0x3C) i nie zabiera dodatkowych pinów. Na czterech wierszach zmieści się temperatura, wilgotność, ciśnienie i prędkość wiatru. To element opcjonalny - jeśli stacja stoi na maszcie w ogrodzie, nikt na ten ekran nie patrzy. Sensowniejsze jest umieszczenie OLED-a w osobnej obudowie wewnątrz domu, jako terminala odbierającego dane po MQTT.

Lista części (BOM)

Element

Ilość

Uwagi

Płytka ESP32-WROOM-32 DevKit

1

Wersja z 30 lub 38 pinami

Czujnik BME280 (moduł I²C, 3,3 V)

1

Nie mylić z BMP280

Czujnik DS18B20 w sondzie wodoszczelnej

1

Przewód 1-3 m

Rezystor 4,7 kΩ

1

Pull-up magistrali 1-Wire

Rezystory 10 kΩ

2

Filtr RC wejść impulsowych

Kondensatory 100 nF

2

Filtr RC wejść impulsowych

Kondensator elektrolityczny 470 µF / 10 V

1

Bufor przy szczytach poboru Wi-Fi

Anemometr kubełkowy z kontaktronem

1

Sprawdź stałą przeliczeniową

Deszczomierz korytkowy

1

0,2794 mm/przechył

Wyświetlacz OLED SSD1306 128×64 I²C

1

Opcjonalny

Obudowa hermetyczna IP65

1

Min. 120×80×50 mm

Osłona radiacyjna (talerzyki)

1

Do druku 3D lub gotowa

Dławnice kablowe M12

3

Przepusty na przewody czujników

Zasilacz 5 V / 2 A lub panel 6 V + TP4056 + ogniwo 18650

1

Zależnie od lokalizacji

Dioda Schottky'ego 1N5819

1

Zabezpieczenie przed prądem wstecznym z panelu

Przewód wielożyłowy, koszulki termokurczliwe

-

Do połączeń zewnętrznych

Wszystkie moduły pomiarowe znajdziesz w kategorii czujniki, płytki i moduły rozszerzeń w dziale moduły elektroniczne, a materiał na okablowanie zewnętrzne w kategorii przewody.

4. Schemat połączeń i zasilanie stacji pogodowej

Połączenia są proste, bo trzy z czterech czujników korzystają z magistral cyfrowych. Poniższa tabela to kompletna mapa pinów.

Sygnał

Pin ESP32

Uwagi

SDA (BME280, OLED)

GPIO21

Wspólna magistrala I²C

SCL (BME280, OLED)

GPIO22

Wspólna magistrala I²C

DQ (DS18B20)

GPIO4

Pull-up 4,7 kΩ do 3,3 V

Anemometr

GPIO27

Przerwanie zboczem opadającym, pull-up wewnętrzny

Deszczomierz

GPIO26

Przerwanie zboczem opadającym, pull-up wewnętrzny

Zasilanie modułów

3V3

Nie podłączaj czujników do 5 V

Masa wspólna

GND

Jedna masa dla wszystkich modułów

Kontaktrony anemometru i deszczomierza podłącz jedną nogą do pinu GPIO, drugą do masy. Wewnętrzny pull-up utrzymuje stan wysoki, a zwarcie kontaktu generuje zbocze opadające, które wyzwala przerwanie.

Zasilanie to najczęstsze źródło problemów w tym projekcie. ESP32 w szczycie transmisji Wi-Fi pobiera 250-500 mA przez kilkanaście milisekund. Słaby zasilacz albo cienki przewód USB powodują chwilowy spadek napięcia i restart płytki (brownout detector was triggered w monitorze portu szeregowego). Trzy zasady:

  1. Zasilacz o wydajności minimum 1 A, najlepiej 2 A.

  2. Kondensator 470 µF między 3V3 a GND, jak najbliżej modułu ESP32.

  3. Przewód zasilający możliwie krótki i o przekroju min. 0,35 mm².

W wersji solarnej układ wygląda tak: panel 6 V / 2 W → dioda Schottky'ego → moduł ładowania TP4056 z zabezpieczeniem → ogniwo 18650 → wejście 5 V płytki ESP32. Dioda blokuje rozładowywanie ogniwa przez panel po zmroku i musi mieć niski spadek napięcia - dlatego Schottky, a nie zwykła prostownicza. Odpowiednie elementy znajdziesz w kategorii dioda półprzewodnikowa.

Do połączeń między obudową a czujnikami zewnętrznymi używaj złącz rozłącznych zamiast lutowania na stałe. Po pierwszej zimie będziesz chciał wyjąć anemometr do przeglądu bez rozbierania całej stacji.

5. Kod stacji pogodowej: Arduino IDE czy PlatformIO?

Arduino IDE wystarczy do pierwszego uruchomienia i jest szybsze w konfiguracji. PlatformIO (wtyczka do VS Code) lepiej sprawdza się w docelowym projekcie: trzyma zależności w pliku platformio.ini, wersjonuje biblioteki i nie gubi konfiguracji przy aktualizacji.

Potrzebne biblioteki: Adafruit BME280 Library z Adafruit Unified Sensor, OneWire, DallasTemperature, PubSubClient oraz Adafruit SSD1306, jeśli używasz wyświetlacza.

#include <WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <Adafruit_BME280.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define PIN_DS18B20     4
#define PIN_ANEMOMETR   27
#define PIN_DESZCZOMIERZ 26

// Stałe przeliczeniowe - sprawdź w karcie katalogowej swojego czujnika
const float KM_H_NA_OBROT   = 2.4;      // km/h przy 1 obr./s
const float MM_NA_PRZECHYL  = 0.2794;   // mm opadu na jeden przechył
const uint32_t OKRES_MS     = 60000;    // publikacja co 60 s

const char* SSID_WIFI = "TwojaSiec";
const char* HASLO_WIFI = "TwojeHaslo";
const char* BROKER_MQTT = "192.168.1.10";

Adafruit_BME280 bme;
OneWire oneWire(PIN_DS18B20);
DallasTemperature ds(&oneWire);
WiFiClient espClient;
PubSubClient mqtt(espClient);

volatile uint32_t impulsyWiatru = 0;
volatile uint32_t przechylyDeszczu = 0;
volatile uint32_t ostatniWiatr = 0;
volatile uint32_t ostatniDeszcz = 0;
uint32_t poprzedniaPublikacja = 0;

void IRAM_ATTR isrWiatr() {
  uint32_t t = millis();
  if (t - ostatniWiatr > 10) { impulsyWiatru++; ostatniWiatr = t; }
}

void IRAM_ATTR isrDeszcz() {
  uint32_t t = millis();
  if (t - ostatniDeszcz > 200) { przechylyDeszczu++; ostatniDeszcz = t; }
}

void setup() {
  Serial.begin(115200);
  Wire.begin(21, 22);

  if (!bme.begin(0x76)) Serial.println("Brak BME280 pod adresem 0x76");
  ds.begin();

  pinMode(PIN_ANEMOMETR, INPUT_PULLUP);
  pinMode(PIN_DESZCZOMIERZ, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(PIN_ANEMOMETR), isrWiatr, FALLING);
  attachInterrupt(digitalPinToInterrupt(PIN_DESZCZOMIERZ), isrDeszcz, FALLING);

  WiFi.begin(SSID_WIFI, HASLO_WIFI);
  while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
  mqtt.setServer(BROKER_MQTT, 1883);
}

void publikuj(const char* temat, float wartosc, uint8_t miejsca) {
  char buf[16];
  dtostrf(wartosc, 0, miejsca, buf);
  mqtt.publish(temat, buf, true);   // retained = ostatnia wartość po restarcie
}

void loop() {
  if (!mqtt.connected()) mqtt.connect("stacja-pogodowa");
  mqtt.loop();

  if (millis() - poprzedniaPublikacja < OKRES_MS) return;
  poprzedniaPublikacja = millis();

  noInterrupts();
  uint32_t obroty = impulsyWiatru; impulsyWiatru = 0;
  uint32_t przechyly = przechylyDeszczu; przechylyDeszczu = 0;
  interrupts();

  float wiatr = (obroty / (OKRES_MS / 1000.0)) * KM_H_NA_OBROT;
  float opad  = przechyly * MM_NA_PRZECHYL;

  ds.requestTemperatures();
  float tZewn = ds.getTempCByIndex(0);

  publikuj("stacja/ogrod/temperatura", bme.readTemperature(), 1);
  publikuj("stacja/ogrod/wilgotnosc", bme.readHumidity(), 0);
  publikuj("stacja/ogrod/cisnienie", bme.readPressure() / 100.0F, 1);
  publikuj("stacja/ogrod/temperatura_zewn", tZewn, 1);
  publikuj("stacja/ogrod/wiatr", wiatr, 1);
  publikuj("stacja/ogrod/opad", opad, 2);
}

Trzy szczegóły, które decydują o stabilności programu. Funkcje obsługi przerwań mają atrybut IRAM_ATTR, bo na ESP32 muszą być wykonywane z pamięci RAM. Odczyt liczników odbywa się przy wyłączonych przerwaniach (noInterrupts()), żeby impuls nadchodzący w trakcie kopiowania nie zginął. Wiadomości publikowane są jako retained, dzięki czemu Home Assistant po restarcie od razu widzi ostatnią znaną wartość zamiast pustej encji.

6. Wysyłanie danych do MQTT i Home Assistant

MQTT to lekki protokół publikacji i subskrypcji: stacja publikuje odczyty na tematach (topikach), a dowolna liczba odbiorców je subskrybuje. Broker (najczęściej Mosquitto działający na Raspberry Pi lub w dodatku Home Assistant) pośredniczy w wymianie.

Przyjmij hierarchię tematów dom/lokalizacja/wielkosc - czytelną i łatwą do rozbudowy:

stacja/ogrod/temperatura      → 21.4
stacja/ogrod/wilgotnosc       → 68
stacja/ogrod/cisnienie        → 1013.2
stacja/ogrod/wiatr            → 12.6
stacja/ogrod/opad             → 0.56

Najwygodniejsza integracja z Home Assistant to MQTT Discovery: stacja sama zgłasza swoje encje, więc nie musisz nic dopisywać w configuration.yaml. Wystarczy raz, w setup(), opublikować konfigurację na temacie homeassistant/sensor/stacja_temp/config:

{
  "name": "Temperatura ogród",
  "state_topic": "stacja/ogrod/temperatura",
  "unit_of_measurement": "°C",
  "device_class": "temperature",
  "unique_id": "stacja_ogrod_temp"
}

Analogiczne komunikaty dla humidity, pressure i pozostałych wielkości sprawiają, że po restarcie Home Assistant pokazuje komplet czujników z poprawnymi ikonami i historią. Jeżeli wolisz konfigurację ręczną, ten sam efekt uzyskasz wpisem mqtt: sensor: z polami state_topic i unit_of_measurement.

Alternatywy bez własnego brokera: ThingSpeak (darmowy limit jednego wpisu na 15 s, gotowe wykresy), Blynk (aplikacja mobilna) albo InfluxDB z Grafaną, jeśli zależy Ci na długoterminowej analizie i ładnych wykresach.

7. Obudowa odporna na deszcz i prawidłowy montaż

Elektronika stacji pogodowej stoi na zewnątrz przez cały rok, więc obudowa jest równie ważna jak czujniki. Potrzebujesz obudowy hermetycznej o klasie szczelności minimum IP65, wykonanej z ABS lub poliwęglanu z filtrem UV - tanie pudełka z nieuodpornionego tworzywa po dwóch sezonach kruszeją i pękają. Gotowe obudowy w rozmiarze od 120×80×50 mm mieszczą płytkę ESP32 z modułem zasilania i zapasem miejsca na okablowanie.

Cztery zasady montażu, które najbardziej wpływają na jakość danych:

  • Przepusty od spodu. Przewody czujników wprowadzaj przez dławnice w dolnej ściance, nigdy w górnej. Woda spływa po kablu i wnika do środka od góry.

  • Osłona radiacyjna dla BME280. Czujnik temperatury w słońcu pokazuje wartości zawyżone nawet o 10 °C. Osłona radiacyjna (zestaw białych talerzyków, do kupienia lub wydrukowania na drukarce 3D) zapewnia cyrkulację powietrza i cień. Bez niej cały projekt traci sens pomiarowy.

  • Wysokość i otoczenie. Standard meteorologiczny to 2 m nad gruntem, z dala od ścian budynków i utwardzonych powierzchni. Anemometr powinien stać jak najwyżej i minimum 10 m od przeszkód - na działce to zwykle kompromis, byle nie za kalenicą dachu.

  • Deszczomierz w poziomie. Wypoziomuj go libellą i ustaw w miejscu bez okapów i gałęzi nad głowicą. Przechylony deszczomierz systematycznie zaniża lub zawyża sumę opadu.

Woreczek z żelem krzemionkowym wrzucony do obudowy pochłania wilgoć skraplającą się przy dobowych wahaniach temperatury. Wymieniaj go raz na sezon.

8. Kalibracja stacji pogodowej

Świeżo złożona stacja pokazuje wartości „mniej więcej" poprawne. Kalibracja zamienia je w dane, które można porównywać z oficjalnymi pomiarami.

  • Temperatura. Umieść stację obok wzorcowego termometru (lub sondy DS18B20 wyprowadzonej poza obudowę) w cieniu, odczekaj 30 minut i porównaj odczyty. Różnica wynikająca z samonagrzewania układu jest stała - wprowadź ją jako offset w kodzie: float t = bme.readTemperature() - 1.2;.

  • Wilgotność. Test solny daje punkt odniesienia bez żadnego przyrządu. Nasycony roztwór soli kuchennej w zamkniętym pojemniku utrzymuje wilgotność 75,3 % RH w temperaturze 25 °C. Włóż czujnik do pojemnika (nie do samego roztworu), odczekaj 8-12 godzin i sprawdź odczyt. Odchyłka to Twój offset.

  • Ciśnienie. Czujnik mierzy ciśnienie w miejscu instalacji, a serwisy pogodowe podają ciśnienie zredukowane do poziomu morza. Przeliczenie:

p0 = p × (1 − 0,0065 × h / (T + 0,0065 × h + 273,15))^(−5,257)

gdzie p to ciśnienie zmierzone w hPa, h - wysokość n.p.m. w metrach, T - temperatura w °C. Bez tej korekty odczyt na wysokości 300 m n.p.m. będzie niższy od komunikatów IMGW o około 35 hPa i będzie wyglądał jak awaria czujnika.

  • Anemometr. Najprościej: przejedź samochodem ze stałą prędkością 30 km/h w bezwietrzny dzień, trzymając anemometr w wyciągniętej ręce poza strefą zawirowań, i porównaj odczyt z prędkościomierzem. Skoryguj stałą KM_H_NA_OBROT proporcjonalnie.

  • Deszczomierz. Odmierz strzykawką 50 ml wody i wlewaj ją powoli, przez kilka minut, do lejka. Policz przechyły. Objętość opadu przelicz ze wzoru: opad [mm] = objętość [ml] × 10 / powierzchnia lejka [cm²]. Wynik podzielony przez liczbę przechyłów to rzeczywista stała MM_NA_PRZECHYL.

Kalibrację temperatury i wilgotności powtarzaj raz w roku, najlepiej wiosną. Deszczomierz czyść z liści i owadów co kilka tygodni w sezonie.

Najczęstsze problemy i ich przyczyny

Objaw

Prawdopodobna przyczyna

ESP32 restartuje się cyklicznie

Za słaby zasilacz lub brak kondensatora buforowego

BME280 nie odpowiada

Zły adres I²C (spróbuj 0x77) lub zamienione SDA/SCL

DS18B20 pokazuje −127 °C

Brak rezystora pull-up 4,7 kΩ lub przerwa w przewodzie

Prędkość wiatru zawyżona kilkukrotnie

Brak filtrowania drgań styku kontaktronu

Temperatura zawyżona w słoneczne dni

Brak osłony radiacyjnej

Skokowe spadki wilgotności do 0 %

Skroplona woda na czujniku, zawilgocona obudowa

Najczęściej zadawane pytania

Ile kosztuje zbudowanie stacji pogodowej na ESP32?

Wersja podstawowa (ESP32 + BME280 + obudowa + zasilacz) mieści się w 120-150 zł. Komplet z anemometrem, deszczomierzem, wyświetlaczem OLED i zasilaniem solarnym to koszt rzędu 350-450 zł.

Czy stacja pogodowa na ESP32 działa bez internetu?

Tak. ESP32 może pracować w trybie punktu dostępowego i serwować stronę z odczytami w sieci lokalnej albo wyświetlać dane wyłącznie na module OLED. Internet jest potrzebny tylko do wysyłania danych do usług chmurowych.

Jak długo stacja wytrzyma na akumulatorze 18650?

Przy pracy ciągłej z aktywnym Wi-Fi ogniwo 3000 mAh wystarczy na 2-4 dni. Z deep sleep i wybudzaniem co 10 minut ten sam akumulator pracuje 3-6 tygodni, a z panelem słonecznym 6 V / 2 W - bezterminowo poza okresem grudzień-styczeń.

Czy mogę użyć DHT22 zamiast BME280?

Możesz, ale stracisz pomiar ciśnienia, a dokładność wilgotności spadnie z ±3 % do ±2-5 % przy znacznie wolniejszym czasie odpowiedzi. Różnica w cenie jest dziś niewielka, więc BME280 jest lepszym wyborem.

Co zrobić, żeby dane z mojej stacji trafiły do Windy lub innej sieci pogodowej?

Serwisy takie jak Windy, Weather Underground czy Awekas przyjmują dane przez proste zapytania HTTP GET z kluczem stacji. Wystarczy dopisać do pętli głównej wywołanie HTTPClient wysyłające odczyty pod podany przez serwis adres, zwykle nie częściej niż co 5 minut.

Jak mierzyć kierunek wiatru?

Standardowy wiatromierz zawiera osiem kontaktronów z rezystorami o różnych wartościach. Napięcie z dzielnika odczytujesz wejściem ADC ESP32 i porównujesz z tabelą wartości z karty katalogowej, otrzymując jeden z 16 kierunków.

Podsumowanie

Domowa stacja pogodowa na ESP32 jest projektem, w którym najtrudniejsza nie jest elektronika, tylko szczegóły montażowe: osłona radiacyjna, stabilne zasilanie, szczelne przepusty i rzetelna kalibracja. Kod z tego poradnika działa na dowolnej płytce ESP32-WROOM-32 i można go rozbudowywać moduł po module - najpierw BME280 na płytce stykowej, potem czujniki impulsowe, na końcu obudowa i zasilanie solarne.

Kompletując części, zajrzyj do kategorii czujniki i Arduino, a przy okazji sprawdź narzędzia do lutowania - czyste, mechanicznie pewne połączenia to warunek, żeby stacja przetrwała pierwszą zimę bez interwencji.

Komentarze do wpisu (0)

Napisz komentarz