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.