Zakúpiť projekt

Meteostanica v2 - Vyskúšajte online TU!


  • V úlohe mikrokontroléru pre toto riešenie je doska NodeMCU s legendárnym čipom ESP8266 vo verzii 12E
  • Doska sa dokáže pripojiť aj na HTTPS weby, čo umožňuje zaručiť integritu dát, aby neboli zmenené pred doručením
  • Technológie pre meteostanicu:

  • PHP
  • CSS
  • AJAX - dynamický zápis posledných teplôt do real-time tabuĺky
  • Google Charts (Grafy)
  • C (Wiring) pre NodeMCU
  • Wifi: Prenos dát na web (šifrovane)
  • Mikrokontróler --> NodeMCU (ESP8266-12E)NodeMCU v3
  • Veličiny v projekte:

  • Teplota dnu: Senzor DS18B20 interiérové vyhotovenie
  • Teplota von: Senzor DS18B20 vonkajšie vyhotovenie
  • Vlhkosť vzduchu: DHT22 - senzor vhlhkosti
  • Atmosférický tlak: BMP280 - senzor vhlhkosti na I2C zbernici
  • Verzia v2 ponúka:
  • Nové grafické používateľské rozhranie (responzívne)
  • Login systém
  • Real-time dáta do dynamickej tabuľky
  • Archivácia v 10-minútových intervaloch do MySQL databázy, Google Grafy (náhrada za CanvasJS) - výpis grafov aktuálny deň + 7 posledných dní
  • Vylepšená prognóza počasia pre celodenný vývoj teplôt
  • Reset dosky na diaľku
  • Log prihlásení/zmena loginu
  • Indikátor stavu pripojenia dosky
  • Zmena názvov jednotlivých izieb/názvov senzorov

  • Knižnice: TU

  • Wiring pre datove piny:
    DS18B20 --> D3
    DHT22 --> D4
    BMP280 --> D2 --> SDA / D1 --> SCL/SCK
    
    #include <ESP8266WiFi.h> 
    #include <WiFiClientSecure.h> 
    #include "DHT.h"
    #define DHTPIN 2     
    #define DHTTYPE DHT22   
    DHT dht(DHTPIN, DHTTYPE);
    #include "Adafruit_BMP280.h"  
    Adafruit_BMP280 bmp; //inicializacia BMP senzora
    const char * ssid = "wifiname"; //meno wifi siete
    const char * password = "password"; //Heslo na wifi siet
    const char * host = "arduino.php5.sk";
    const int httpsPort = 443; //https port zabezpeceny prenos
    const char * fingerprint = "13 ed 87 1d b1 85 be e6 bd 73 c1 8d 04 63 58 99 f0 32 43 92"; //odtlacok HTTPS certifikatu v SHA1 formate
    void setup() {          
      bmp.begin();        //start snimaca BMP
      dht.begin();              
      Serial.begin(9600);    //SPUSTENIE SERIOVEJ LINKY --UART-- NA CITACIU RYCHLOST 9600
      WiFi.begin(ssid, password); //pripoj sa na wifi siet s heslom
      while (WiFi.status() != WL_CONNECTED) { //pokial sa nepripojime na wifi opakuj pripajanie a spustaj funkcie pre ovladanie v offline rezime
        delay(500);
        Serial.println(".");
      }
      Serial.println("");
      Serial.println("WiFi pripojene"); //uspesne pripojenie na wifi siet
      Serial.println("IP adresa: ");
      Serial.println(WiFi.localIP()); // pridelena IP adresa pre dosku
    }
    
    void loop() {                                    
        String vlhkost = String(dht.readHumidity());
        String tlak = String((bmp.readPressure() / 100) + 103.855); //103.855 konstanta z: nadmorska vyska / 8,3
        String teplota2 = String(bmp.readTemperature());
        String teplota1 = String(dht.readTemperature());
        delay(5000);
        WiFiClientSecure client;
      if (client.verify(fingerprint, host)) {} else {}
      if (client.connect(host, httpsPort)) {
        Serial.println("Meranie");
       
        String url = "/meteostanicav2/system/nodemcu/zapishodnoty.php?teplota1=" + teplota1 + "&teplota2=" + teplota2 + "&tlak=" + tlak + "&vlhkost=" + vlhkost; 
        client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "User-Agent: NodeMCU\r\n" + "Connection: close\r\n\r\n");
      } else if (!client.connect(host, httpsPort)) {
        Serial.println("Neuspesne pripojenie pre odoslanie teplot - offline rezim aktivny");
      }
      delay(295000);
      }
    

    Screenshoty meteostanice: