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 e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *