include etherShield include ETHER_28J60 include EEPROM include DHT def

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include "etherShield.h"
#include "ETHER_28J60.h"
#include <EEPROM.h>
#include "DHT.h"
#define DHTPIN 2 // к какому пину будет подключен вывод Data
//выбор используемого датчика
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
//инициализация датчика
DHT dht(DHTPIN, DHTTYPE);
int VlagInPin = 3;
int RelPin = 4;
int PotPin = 5;
byte vlaga = 75;
int temp = 55;
int vent =85;
int pot; // переменная датчика затопления
byte vf; // переменная для значения влаги во флеше
static uint8_t mac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};
static uint8_t ip[4] = {192,168,88,24};
static uint16_t port = 80;
ETHER_28J60 ethernet;
void setup()
{
dht.begin(); //
pinMode(VlagInPin, INPUT);
pinMode(RelPin, OUTPUT);
digitalWrite(RelPin, HIGH);
pinMode(PotPin, OUTPUT);
digitalWrite(PotPin, HIGH);
vf = EEPROM.read(0); //чтение из флеш значение влаги для сработки вентилятора
if ( vf > 110)
{
EEPROM.write(0, 110); // Запись нового значения в Флеш
}
ethernet.setup(mac, ip, port);
}
void loop()
{
// чтение температуры и влажности займет примерно 250 миллисекунд
//float h = dht.readHumidity();
//float t = dht.readTemperature();
vlaga = dht.readHumidity();
temp = dht.readTemperature();
pot = digitalRead(VlagInPin);
if (pot == LOW) { // Условие включения и отключения затопления
digitalWrite(PotPin, LOW);
}
if (pot == HIGH) { // Условие включения и отключения затопления
digitalWrite(PotPin, HIGH);
}
if (vlaga >= vf) { // Условие включения и отключения вентиляции
digitalWrite(RelPin, LOW);
}
if (vlaga < vf-1) { // Условие включения и отключения вентиляции
digitalWrite(RelPin, HIGH);
}
String param;
if (param = ethernet.serviceRequest())
{
ethernet.print("<H1>БОЛЬШОЙ ПОДВАЛ</H1>");
ethernet.print("<a href=\"/\">ОБНОВИТЬ СОСТОЯНИЕ</a><br>");
if (pot == LOW) { // Условие включения и отключения затопления
ethernet.print("<H1>Внимание Затопление!!!</H1>");
}
if (temp <= 3) { // Условие вывода сообщения Угроза разморозки системы
ethernet.print("<H1>Угроза разморозки системы</H1>");
}
if (param == "plus") {
vf++; // Увеличить значение переменной влаги
if ( vf > 110)
{
vf=110;
}
EEPROM.write(0, vf); // Запись нового значения в Флеш
go_back_home();
}
if (param == "minus") {
vf--; // Уменьшить значение переменной влаги
if ( vf < 5)
{
vf=5;
}
EEPROM.write(0, vf); // Запись нового значения в Флеш
go_back_home();
}
ethernet.print("<H1>Температура</H1>");
ethernet.print("<H2>");
ethernet.print(temp);
ethernet.print("</H2>");
ethernet.print("<H1>Влага</H1>");
ethernet.print("<H2>");
ethernet.print(vlaga);
ethernet.print("</H2>");
ethernet.print("<H1>Сработка Вентиляции</H1>");
ethernet.print("<H2>");
ethernet.print(vf);
ethernet.print("</H2>");
ethernet.print("<a href=\"/minus\">Уменьшить</a> <a href=\"/plus\">Увеличить</a><br>");
ethernet.respond();
}
}
void go_back_home() {
ethernet.print("<meta http-equiv='refresh' content='0;URL=http://");
ethernet.print(ip[0]);
ethernet.print(".");
ethernet.print(ip[1]);
ethernet.print(".");
ethernet.print(ip[2]);
ethernet.ptint(".");
ethernet.print(ip[3]);
ethernet.print("/' />");
}