ruzne:lolin_d32_teplota_vlhkost_a_tlak_vzduchu_srazkomer_smer_a_sila_vetru
Meteostanice s Lolin D32
Autor: Jakub Mareš jakubmares.214@outlook.cz
Měřené veličiny: teplota, vlhkost a tlak vzduchu, srážkoměr, směr a síla větru
Komponenty
Zapojení
Kód
- Meteostanice_ESP32.ino
#include <WiFi.h> #include <HTTPClient.h> #include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_BME280.h> #include <BH1750.h> #include <SparkFun_Weather_Meter_Kit_Arduino_Library.h> #include <WiFiManager.h> #define BMESDAPin 21 #define BMESCLPin 22 #define rainSensorPin 25 #define windSpeedSensorPin 14 #define windDirectionPin 35 #define BME280_ADDRESS 0x76 const char* domain1 = "http://......tmep.cz/"; const char* domain2 = "http://......tmep.cz/"; const char* domain3 = "http://......tmep.cz/"; const char* domain4 = "http://......tmep.cz/"; Adafruit_BME280 bme; BH1750 lightSensor; SFEWeatherMeterKit weatherMeterKit(windDirectionPin, windSpeedSensorPin, rainSensorPin); unsigned long previousMillis = 0; const long interval = 60000; // 1 minuta void WiFiConnection() { WiFi.mode(WIFI_STA); WiFiManager wm; wm.setConfigPortalTimeout(180); bool res = wm.autoConnect("Meteo214", "meteostation"); if (!res) { Serial.println("Nepodařilo se připojit k WiFi. Přejdu do restartu."); ESP.restart(); // Restart instead of deep sleep } else { Serial.println("Připojeno k WiFi."); Serial.print("IP adresa: "); Serial.println(WiFi.localIP()); } } void setup() { Serial.begin(115200); Wire.begin(BMESDAPin, BMESCLPin); WiFiConnection(); if (!bme.begin(BME280_ADDRESS)) { Serial.println("Nemohu najít BME280 - zkontroluj zapojení!"); return; } Serial.println("BME280 inicializován."); lightSensor.begin(); Serial.println("Senzor BH1750 inicializován."); weatherMeterKit.begin(); Serial.println("Meteostanice v chodu"); } void loop() { unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; float tlak = bme.readPressure() / 100.0F; float teplota = bme.readTemperature(); float vlhkost = bme.readHumidity(); float viditelneSvetlo = lightSensor.readLightLevel(); float mnozstviSrazek = weatherMeterKit.getTotalRainfall(); float rychlostVetra = weatherMeterKit.getWindSpeed(); int smerVetra = weatherMeterKit.getWindDirection(); int rssi = WiFi.RSSI(); if (WiFi.status() == WL_CONNECTED) { HTTPClient http; String url1 = String(domain1) + "send?temperature=" + String(teplota, 1) + "&humidity=" + String(vlhkost, 1) + "&pres=" + String(tlak, 1) + "&rssi=" + String(rssi); http.begin(url1); http.GET(); http.end(); String url2 = String(domain2) + "?winds=" + String(rychlostVetra, 1) + "&windd=" + String(smerVetra) + "&rssi=" + String(rssi); http.begin(url2); http.GET(); http.end(); String url3 = String(domain3) + "?rain=" + String(mnozstviSrazek, 1) + "&rssi=" + String(rssi); http.begin(url3); http.GET(); http.end(); String url4 = String(domain4) + "?visible=" + String(viditelneSvetlo, 1) + "&rssi=" + String(rssi); http.begin(url4); http.GET(); http.end(); } } }