Spisu treści:

Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk: 4 kroki
Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk: 4 kroki

Wideo: Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk: 4 kroki

Wideo: Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk: 4 kroki
Wideo: Jak samodzielnie zbudować automatyczną stację meteorologiczną - dr hab. inż. Marek Urbaniak 2024, Listopad
Anonim
Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk
Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk
Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk
Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk
DIY Stacja pogodowa wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk
DIY Stacja pogodowa wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk
DIY Stacja pogodowa wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk
DIY Stacja pogodowa wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk

Github: DIY_Pogoda_Stacja

Hackster.io: Stacja pogodowa

Widziałeś aplikację pogodową, prawda? Na przykład, kiedy go otworzysz, poznasz warunki pogodowe, takie jak temperatura, wilgotność itp. Te odczyty są średnią wartością dużego obszaru, więc jeśli chcesz poznać dokładne parametry związane z twoim pomieszczeniem, nie możesz po prostu polegać na Aplikacji Pogodowej. W tym celu przejdźmy do tworzenia Stacji Pogodowych, która jest opłacalna, a także niezawodna i daje nam dokładną wartość.

Stacja pogodowa to obiekt wyposażony w przyrządy i sprzęt do pomiaru warunków atmosferycznych w celu dostarczania informacji do prognoz pogody oraz badania pogody i klimatu. Podłączanie i kodowanie wymaga trochę wysiłku. Więc zacznijmy.

O Nodemcu:

NodeMCU to platforma IoT typu open source.

Zawiera oprogramowanie układowe działające na ESP8266 Wi-Fi SoC firmy Espressif Systems oraz sprzęt oparty na module ESP-12.

Termin „NodeMCU” domyślnie odnosi się do oprogramowania układowego, a nie do zestawów deweloperskich. Oprogramowanie układowe wykorzystuje język skryptowy Lua. Jest oparty na projekcie eLua i zbudowany na Espressif Non-OS SDK dla ESP8266. Wykorzystuje wiele projektów open source, takich jak lua-cjson i spiffs.

Wymagania dotyczące czujników i oprogramowania:

1. Nodemcu (esp8266-12e v1.0)

2. DHT11

3. BMP180

4. IDE Arduino

Krok 1: Poznaj swoje czujniki

Poznaj swoje czujniki
Poznaj swoje czujniki

BMP180:

Opis:

BMP180 składa się z czujnika piezorezystancyjnego, przetwornika analogowo-cyfrowego oraz jednostki sterującej z E2PROM i szeregowym interfejsem I2C. BMP180 dostarcza nieskompensowaną wartość ciśnienia i temperatury. E2PROM przechowuje 176 bitów indywidualnych danych kalibracyjnych. Służy do kompensacji przesunięcia, zależności od temperatury i innych parametrów czujnika.

  • UP = dane ciśnienia (16 do 19 bitów)
  • UT = dane temperatury (16 bitów)

Specyfikacja techniczna:

  • Vin: 3 do 5VDC
  • Logika: zgodność z 3 do 5 V
  • Zakres wykrywania ciśnienia: 300-1100 hPa (9000m do -500m nad poziomem morza)
  • Rozdzielczość do 0,03 hPa / 0,25 m Zakres roboczy -40 do +85°C, dokładność temperatury +-2°C
  • Ta płyta/układ używa 7-bitowego adresu I2C 0x77.

DHT11:

Opis:

  • DHT11 to podstawowy, bardzo tani cyfrowy czujnik temperatury i wilgotności.
  • Wykorzystuje pojemnościowy czujnik wilgotności i termistor do pomiaru otaczającego powietrza i wypuszcza sygnał cyfrowy na pin danych (nie są potrzebne analogowe piny wejściowe). Jest dość prosty w użyciu, ale wymaga starannego czasu, aby pobrać dane.
  • Jedyną wadą tego czujnika jest to, że nowe dane można z niego pobierać tylko raz na 2 sekundy, więc przy korzystaniu z naszej biblioteki odczyty czujnika mogą mieć nawet 2 sekundy.

Specyfikacja techniczna:

  • Zasilanie od 3 do 5 V i we/wy
  • Dobry dla odczytów temperatury 0-50 ° C ± 2 ° C dokładność
  • Dobry dla odczytów wilgotności 20-80% z dokładnością 5%
  • Maksymalne natężenie prądu 2,5 mA podczas konwersji (podczas żądania danych)

Krok 2: Łączność

Łączność
Łączność

DHT11 z Nodemcu:

Pin 1 - 3,3 V

Sworzeń 2 - D4

Pin 3 - NC

Pin 4 - Gnd

BMP180 z Nodemcu:

Vin - 3,3V

Gnd - Gnd

SCL - D6

SDA - D7

Krok 3: Skonfiguruj Blynk

Image
Image
Skonfiguruj Blynka
Skonfiguruj Blynka

Co to jest Blynk?

Blynk to platforma z aplikacjami na iOS i Androida do kontrolowania Arduino, Raspberry Pi i podobnych przez Internet.

Jest to cyfrowy pulpit nawigacyjny, w którym możesz zbudować interfejs graficzny swojego projektu, po prostu przeciągając i upuszczając widżety. Konfiguracja wszystkiego jest naprawdę prosta i zaczniesz majstrować w mniej niż 5 minut. Blynk nie jest przywiązany do jakiejś konkretnej planszy lub tarczy. Zamiast tego obsługuje wybrany przez Ciebie sprzęt. Niezależnie od tego, czy Twój Arduino, czy Raspberry Pi jest połączony z Internetem przez Wi-Fi, Ethernet lub ten nowy układ ESP8266, Blynk zapewni Ci połączenie z Internetem i przygotuje się na Internet Twoich rzeczy.

Aby uzyskać więcej informacji na temat konfiguracji Blynk: Szczegółowa konfiguracja Blynk

Krok 4: Kod

Kod
Kod

//Komentarze dla każdej linii znajdują się w poniższym pliku.ino

#include #define BLYNK_PRINT Serial #include #include #include #include #include Adafruit_BMP085 bmp; #define I2C_SCL 12 #define I2C_SDA 13 float dst, bt, bp, ba; char dstmp[20], btmp[20], bprs[20], balt[20]; bool bmp085_present=prawda; char auth="Wstaw tutaj swój klucz autoryzacji z aplikacji Blynk"; char ssid = "Twój SSID Wi-Fi"; char pass = "Twoje hasło"; #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); //Definiowanie pinu i timera dhttype BlynkTimer; void sendSensor() { if (!bmp.begin()) { Serial.println("Nie można znaleźć prawidłowego czujnika BMP085, sprawdź okablowanie!"); while (1) {} } float h = dht.readHumidity(); float t = dht.odczytTemperatura(); if (isnan(h) || isnan(t)) { Serial.println("Nie udało się odczytać z czujnika DHT!"); powrót; } podwójna gamma = log(h/100) + ((17,62*t) / (243,5+t)); podwójne dp = 243,5*gamma / (17,62 gamma); float bp = bmp.readPressure()/100; float ba = bmp.readAltitude(); float bt = bmp.odczytTemperatura(); float dst = bmp.readSealevelPressure()/100; Blynk.virtualWrite(V5, h); Blynk.virtualWrite(V6, t); Blynk.virtualWrite(V10, pz); Blynk.virtualWrite(V11, ba); Blynk.virtualWrite(V12, bt); Blynk.virtualWrite(V13, dst); Blynk.virtualWrite(V14, dp); } void setup() { Serial.begin(9600); Blynk.begin(auth, ssid, pass); dht.początek(); Drut.początek(I2C_SDA, I2C_SCL); opóźnienie(10); timer.setInterval(1000L, sendSensor); } void loop() { Blynk.run(); timer.uruchom(); }

Zalecana: