ESP8266 NoFreeze cz. 3

Układ chroniący przed zamarzaniem.

Program główny.

Najnowszy kod programu znajduje się tutaj.

Utwórz nowy szkic w Arduino IDE i zapisz w katalogu NoFreezeAuto. Do pliku wklej dane jak poniżej.

#include <ESP8266WebServer.h>
#include <ESP8266HTTPUpdateServer.h>
#include "NoFreeze.h"
#include "NoFreezeWeb.h"
#include "Relay.h"
#include <OneWire.h>
#include <DallasTemperature.h>

NoFreeze nf; //utwórz obiekt nf

extern void setservers();

#define led D4 // sygnalizacja diody led wbudowanej
#define relay D1 // do tego pinu jest podłączony przekaźnik
#define DATA_COMPIL __TIMESTAMP__ //czas kompilacji

String version = "1.02 z dnia "DATA_COMPIL;

//SSID i pass do WiFi
const char* ssid = "SSID"; // SSID sieci WiFi
const char* password = "pass"; // password do WiFi

extern ESP8266WebServer server; 

#define DEBUG
//IP statyczny wyłączony
//define IP_STATIC  
//miejsce zainstalowania urządzenia
String slocation="Strych - łazienka";
//String slocation="Hydrofornia";

#ifdef IP_STATIC
//IPAddress IPadr(10,110,0,112); //stały IP łazienki na strychu
IPAddress IPadr(10,110,0,114); //stały IP hydroforni
IPAddress netmask(255,255,0,0);
IPAddress gateway(10,110,0,1);
#endif

void setup()
{
#ifdef DEBUG
 Serial.begin(115200);
#endif

#ifdef IP_STATIC
 WiFi.config(IPadr,gateway,netmask);
#endif
 WiFi.mode(WIFI_AP_STA);
 WiFi.begin(ssid, password);
 int i=0;
  while ((WiFi.status() != WL_CONNECTED) && ( i<=20)) { // czekaj na połączenie z wifi
  delay(500);
  i +=1;
  #ifdef DEBUG
   Serial.print(".");
  #endif
  }
 if (WiFi.status() != WL_CONNECTED){
 WiFi.mode(WIFI_AP_STA); //tryb AP+STATION
 nf.led0.setOff();}// włącz LED gdy nie jest połączenie z WiFi
 else {
 WiFi.mode(WIFI_STA); //tryb STATION
 nf.led0.setOn();}// wyłącz LED gdy jest połączenie z WiFi
#ifdef DEBUG
 Serial.println("");
 Serial.println("WiFi connected");
 Serial.println(WiFi.localIP()); // Wypisz IP serwera
 Serial.println(WiFi.macAddress()); // wypisz MAC adres
#endif
 nf.led0.setPin(led);
 nf.relay1.setPin(relay);
 nf.begin();

 setservers();
}

// The loop function is called in an endless loop
void loop()
{
#ifdef DEBUG
 Serial.println(nf.tempout); // wypisz temperaturę
 Serial.println(nf.tempinput); // wypisz temperaturę
#endif

 nf.working();//główny program NoFreeze
 server.handleClient();
 // załączenie LED wbudowanej gdy brak połączenia z WiFi
 if (WiFi.status() != WL_CONNECTED){
  nf.led0.setOff();
 // gdy brak połaczenia z WiFi ustaw tryb AP + STATION
  if (WiFi.getMode() != WIFI_AP_STA){
  WiFi.mode(WIFI_AP_STA);}
 }
 else{ // wyłącz LED gdy jest połączenie z WiFi
 nf.led0.setOn();
  //gdy tryb inny niż STATION ustaw STATION
  if (WiFi.getMode() != WIFI_STA){
  WiFi.mode(WIFI_STA);}
  }
 //obsługa sygnalizacji trybu MANUAL
  if (!nf.bmode) {
  nf.led0.setOff(); // włącz sygnalizację trybu MANUAL (LED ESP8266)
  delay(250);
  nf.led0.setOn(); // wyłącz sygnalizację trybu MANUAL (LED ESP8266)
  delay(250);
  }
}

Do katalogu NoFreezeAuto wklej pozostałe pliki.

Połącz moduł WeMos D1 mini z modułem przekaźnika. Wlutuj rezystor 4.7k pomiędzy pin 3.3V, a pin D2, na płytce Wemos D1 mini. Czujniki temperatury podłącz 1 (GND) z masą  G, 2 (1-Wire) z D2 i 3 (Vcc) z 3.3V. Połączenia można wykonać za pomocą gniazda RJ-45 i wtyków RJ-45, lub RJ-11. Można też wykorzystać niewielką listwę połączeniową.  Długość przewodów dla czujników zależy od ich rozmieszczenia. Do przekaźnika na środek łączówki podłącz  (wtyczkę) zasilanie 230V przewód L1, a przewód N podłącz do osobnej drugiej listwy zaciskowej. Z wyjścia przekaźnika NO przewód L1 i przewód N z listwy osobnej podłącz do gniazda, gdzie włączysz grzejnik. Moduł WeMos D1 trzeba jeszcze kablem USB – USBmini podłączyć do dowolnej ładowarki 5V minimum 500mA. Uwaga niebezpieczne napięcie!!! Prace wykonywać przy wyłączonym napięciu 230V. Wszystkie elementy układu można włożyć do dowolnej obudowy.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *