Zakúpiť projekt

Meteo v2 - Online testen HIER!


Technologie für Wetterstation:

  • PHP
  • CSS
  • AJAX - Dynamische Aufzeichnung der letzten Temperaturen in Echtzeit-Registerkarten
  • Google Charts (Graphen)
  • C (Wiring) für Arduino
  • Ethernet: Übertragen Sie Daten ins Web
  • Ethernet Shield Wiznet W5100
  • Mengen im Projekt:

  • Temperatur des Bodens: Temperatur des Bodens
  • Temperatur heraus:: Temperatur heraus:
  • Luftfeuchtigkeit: DHT22 - senzor vhlhkosti na I2C zbernici
  • Luftdruck: BMP280 - senzor vhlhkosti na I2C zbernici
  • Hardware ohne Änderung (optionale Änderung DHT22 anstelle von DHT12)
    Version v2 bietet:
  • Neue grafische Benutzeroberfläche (responsive)
  • Login-System
  • Echtzeitdaten in dynamische Tabelle
  • Archivierung in 10-Minuten-Intervallen in der MySQL-Datenbank, Google Graphs (Ersatz für CanvasJS) - Diagramm mit dem aktuellen Tag + 7 letzten Tagen
  • Verbesserte Wettervorhersage für die ganztägige Temperaturentwicklung
  • Setzen Sie die Desktops aus einiger Entfernung zurück
  • Login Log / Logins ändern
  • Statusanzeige der Plattenverbindung
  • Ändern Sie die Namen einzelner Räume / Namen der Sensoren
  • Wettervorhersagen:

    Quellcode für Arduino + W5100


  • Bibliotheken: TU

  • Verdrahtung für Datenpins:
    DS18B20 --> D8
    DHT22 --> D2
    BMP280 --> A4--> SDA A5 --> SCL/SCK
    
    #include <avr\wdt.h> //kniznica watchdogu
    #include <SPI.h>                     //kniznica SPI
    #include <Ethernet.h>                //kniznica k ethernet shieldu
    #include <OneWire.h>                 //Onewire kniznica
    #include <DallasTemperature.h>       //knižnica senzorov  DS18B20
    #include "Adafruit_BMP280.h"         //bmp280 kniznica s upravou na 0x76 adresu
    #define ONE_WIRE_BUS 8               //definovany pin OneWire zbernice
    OneWire oneWire(ONE_WIRE_BUS);       //inicializacia pinu
    DallasTemperature sensors(&oneWire); //priradenie ds18b20 senzorov na onewire zbernicu
    #include <Adafruit_Sensor.h>
    #include <DHT.h>
    #include <DHT_U.h>
    #define DHTPIN            2         // Pin which is connected to the DHT sensor.
    #define DHTTYPE           DHT22     // DHT 22 (AM2302)
    DHT_Unified dht(DHTPIN, DHTTYPE);
    Adafruit_BMP280 bmp; //inicializacia BMP senzora
    byte mac[] = { 0x20, 0x1A, 0x06, 0x75, 0x8C, 0xAA };  
    char server[] = "www.arduino.php5.sk";  
    IPAddress dnServer(192, 168, 0, 1);
    IPAddress gateway(192, 168, 0, 1);
    IPAddress subnet(255, 255, 255, 0);
    IPAddress ip(192, 168, 0, 45);                    
    EthernetClient client;
    void setup() {
      sensors.begin();           //start senzorov ds18b20
      bmp.begin();        //start snimaca BMP
      dht.begin();
      sensor_t sensor;
      Serial.begin(9600);
      if (Ethernet.begin(mac) == 0) {                  //V PRIPADE ZLYHANIA NASTAVENIA DHCP
        Serial.println("Chyba konfiguracie, manualne nastavenie");
        Ethernet.begin(mac, ip, dnServer, gateway, subnet);
      }
      wdt_enable(WDTO_8S);
    }
    void odosli_data(){
      sensor_t sensor;
      sensors_event_t event;  
      dht.humidity().getEvent(&event);
      sensors.requestTemperatures();
      delay(1000);
      String teplota1 = String(sensors.getTempCByIndex(0));
      String teplota2 = String(sensors.getTempCByIndex(1));
      String vlhkost = String(event.relative_humidity);
      String tlak = String(bmp.readPressure() / 100);
      if (client.connect(server, 80)) {               // AK SA NAPOJI NA SERVER NA PORTE 80 (HTTP)
        client.print("GET /meteostanicav2/system/nodemcu/zapishodnoty.php?teplota1=");        
        client.print(teplota1);  
        client.print("&teplota2=");
        client.print(teplota2);
        client.print("&tlak=");
        client.print(tlak);
        client.print("&vlhkost=");
        client.print(vlhkost);
        client.println(" HTTP/1.1");                 // UKONCENIE REQUESTU ZALOMENIM RIADKA A DOPLNENIM HLAVICKY HTTP S VERZIOU
        client.println("Host: www.arduino.php5.sk"); // ADRESA HOSTA, NA KTOREHO BOL MIERENY REQUEST (NIE PHP SUBOR)
        client.println("Connection: close");         //UKONCENIE PRIPOJENIA ZA HTTP HLAVICKOU
        client.println();                            //ZALOMENIE RIADKA KLIENTSKEHO ZAPISU
        client.stop();
        Serial.println("Data uspesne odoslane!");                    
      }else{
        Serial.println("Neuspesne odoslanie dat - spojenie sa nepodarilo");
        }
    }
     
    void loop() {
       if (Ethernet.begin(mac) == 0) {
        Serial.println("Chyba konfiguracie, manualne nastavenie");
        Ethernet.begin(mac, ip, dnServer, gateway, subnet);
        wdt_reset();
     
    }
    odosli_data();
    for(int i=0; i<=10; i++){
      delay(1000);
      wdt_reset();
      }
    }