Zakúpiť projekt

Meteo v2 - Попробуйте онлайн здесь.


Техника для метеостанции:

  • PHP
  • CSS
  • AJAX - Динамическая запись последних температур на вкладки в реальном времени
  • Google Charts (диаграммы)
  • C (Wiring) для Arduino
  • Ethernet: Передача данных в Интернет
  • Ethernet Shield Wiznet W5100
  • Количество в проекте:

  • Температура дна: Senzor DS18B20 interiérové vyhotovenie
  • Температура на выходе: Senzor DS18B20 vonkajšie vyhotovenie
  • Влажность: DHT22 - senzor vhlhkosti na I2C zbernici
  • Атмосферное давление: BMP280 - senzor vhlhkosti na I2C zbernici
  • Аппаратное обеспечение без изменений (необязательно изменение DHT22 вместо DHT12)
    Версия v2 предлагает:
  • Новый графический интерфейс пользователя (отзывчивый)
  • Система входа
  • Данные в реальном времени в динамическую таблицу
  • Архивирование с 10-минутными интервалами в базу данных MySQL, Google Graphs (замена CanvasJS) - график с указанием текущего дня + 7 последних дней
  • Улучшенный прогноз погоды для развития температуры в течение всего дня
  • Сбросить рабочие столы на расстоянии
  • Вход в систему / изменение логинов
  • Индикатор состояния подключения пластины
  • Изменить названия отдельных комнат / имена датчиков
  • Прогнозы погоды:

    Исходный код для Arduino + W5100


  • библиотеки: TU

  • Проводка для выводов данных:
    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();
      }
    }