Автоматика/термостат на базе ESP8266/DS18B20.

Домашний алкоголь и все что с этим связано.

Модераторы: SergEkb, crazyman

Автоматика/термостат на базе ESP8266/DS18B20.

Сообщение номер:#1  Сообщение IvanAltay » 27 сен 2019, 21:34

Термостат с локальным сервером и градусником DS18B20. Девайс имеет управление с ИК пульта и отображение данных по локальной сети(WiFi).
Изображение
Изображение
Изображение
Изображение
http://tabak.aaa22.ru
Аватар пользователя
IvanAltay

 
Сообщений: 6092
Зарегистрирован:
11 фев 2015, 07:42
Откуда: Алтай
Благодарил (а): 219 раз.
Поблагодарили: 320 раз.

Re: Автоматика/термостат на базе ESP8266/DS18B20.

Сообщение номер:#2  Сообщение IvanAltay » 27 сен 2019, 21:37

На фото, измеряем температуру охлаждающей воды.
Изображение
http://tabak.aaa22.ru
Аватар пользователя
IvanAltay

 
Сообщений: 6092
Зарегистрирован:
11 фев 2015, 07:42
Откуда: Алтай
Благодарил (а): 219 раз.
Поблагодарили: 320 раз.

Re: Автоматика/термостат на базе ESP8266/DS18B20.

Сообщение номер:#3  Сообщение IvanAltay » 27 сен 2019, 21:41

#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#define ONE_WIRE_BUS_1 5
OneWire oneWire_in(ONE_WIRE_BUS_1);
DallasTemperature sensor_inhouse(&oneWire_in);
MDNSResponder mdns;
// Wi-Fi
const char* ssid = "tele2";
const char* password = "ta20242024";
byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip(192,168,43,155);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(80);
int a = 0;
int b = 0;
int c = 0;
int t = 0;
int D0_pin = 15;
int D2_pin = 12;
int D1_pin = 13;
const uint16_t kRecvPin = 14;
/////////////////
const int ledPinG = 12;//ЗЕЛЁНЫЙ
const int ledPinB = 13;//СИНИЙ
const int ledPinR = 15;//красный
const int ledPin16 = 16;//GPIO 16 белый провод
const int ledPin5 = 5;//GPIO 5 жёлтый провод
IRrecv irrecv(kRecvPin);
decode_results results;
void setup(void){
// preparing GPIOs
pinMode(D0_pin, OUTPUT);
digitalWrite(D0_pin, LOW);
pinMode(D2_pin, OUTPUT);
digitalWrite(D2_pin, LOW);
pinMode(D1_pin, OUTPUT);
digitalWrite(D1_pin, LOW);
delay(100);
Serial.begin(115200);
//ds18b20
sensor_inhouse.begin();
//////////////////////
pinMode(ledPinG, OUTPUT);
pinMode(ledPinB, OUTPUT);
pinMode(ledPinR, OUTPUT);
pinMode(ledPin16, OUTPUT);
pinMode(ledPin5, OUTPUT);
irrecv.enableIRIn(); // Start the receiver
while (!Serial) // Wait for the serial connection to be establised.
delay(50);
Serial.println();
Serial.print("IRrecvDemo is now running and waiting for IR message on Pin ");
Serial.println(kRecvPin);
/////////////////////
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (a==30){break;}
a=a+1;
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
//+++++++++++++++++++++++ START LED-1 ++++++++++++++++++++
server.on("/", [](){
server.send(200, "text/html", webPage());
});
server.on("/socket1On", [](){
digitalWrite(D0_pin, HIGH);
server.send(200, "text/html", webPage());
delay(100);
});
server.on("/socket1Off", [](){
digitalWrite(D0_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);
//+++++++++++++++++++++++ END LED-1 ++++++++++++++++++++
//+++++++++++++++++++++++ START LED-2 ++++++++++++++++++++
});
server.on("/socket2On", [](){
digitalWrite(D2_pin, HIGH);
server.send(200, "text/html", webPage());
delay(100);
});
server.on("/socket2Off", [](){
digitalWrite(D2_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);
// +++++++++++++++++++++++ END LED-2 ++++++++++++++++++++
//+++++++++++++++++++++++ START LED-3 ++++++++++++++++++++
});
server.on("/socket3On", [](){
digitalWrite(D1_pin, HIGH);
server.send(200, "text/html", webPage());
delay(100);
});
server.on("/socket3Off", [](){
digitalWrite(D1_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);
// +++++++++++++++++++++++ END LED-3 ++++++++++++++++++++
});
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
//ds18b20//
sensor_inhouse.requestTemperatures();
Serial.print("Inhouse: ");
Serial.println(sensor_inhouse.getTempCByIndex(0));
float tempC = sensor_inhouse.getTempCByIndex(0);
if (tempC != DEVICE_DISCONNECTED_C)
{
Serial.println("ТЕМПЕРАТУРА 1");
Serial.print(tempC);
}
else Serial.print("DEVICE1 ds18b20 DISCONNECTED");
Serial.print(" ");
if (tempC >= (27+t))
{
Serial.print("T1 !!! ");
digitalWrite(ledPinB, HIGH);
digitalWrite(ledPin16, HIGH);
delay(1000);
digitalWrite(ledPin16, LOW);
delay(1000);
tone(12,25,1000);
}
// else {digitalWrite(ledPinR, LOW);}
if (tempC <= (26+t))
{
Serial.print("T1 !!! ");
digitalWrite(ledPinB, LOW );
}

///////////////////////////
if (irrecv.decode(&results)) {
serialPrintUint64(results.value, HEX);
Serial.println("-");
if (results.value==0x5FA9A65){t=t+1;}//UP telefanken AB
if (results.value==0x1FE20DF) {t=t+1;}//UP
if (results.value==0x5FA8A75) {t=t-1;}//down telefanken AB
if (results.value==0x1FE609F) {t=t-1;}//down
Serial.println(t);
if (results.value==0x1FE40BF){//REC/RED
digitalWrite(ledPinR, HIGH);}
if (results.value==0xFB6A95){//REC/RED
digitalWrite(ledPinR, HIGH);}
if (results.value==0x1FE609F) {//DOWN//жёлтый
digitalWrite(ledPin5,HIGH);}
if (results.value==0xFBF807) {//DOWN//жёлтый
digitalWrite(ledPin5,HIGH);}
if (results.value==0x1FEA05F) {//MENU
digitalWrite(ledPinG,HIGH);}
if (results.value==0xFBEA15) {//MENU
digitalWrite(ledPinG,HIGH);}
if (results.value==0x1FE10EF) {//MODE
digitalWrite(ledPinB,HIGH);}
if (results.value==0xFBDA25) {//MODE
digitalWrite(ledPinB,HIGH);}
if (results.value==0x1FE7887) {//ON/OFF//mute
digitalWrite(ledPinR,LOW);
digitalWrite(ledPinG,LOW);
digitalWrite(ledPinB,LOW);
//digitalWrite(ledPin16,LOW);
digitalWrite(ledPin5,LOW);
}
if (results.value==0xFB10EF) {//ON/OFF//mute
digitalWrite(ledPinR,LOW);
digitalWrite(ledPinG,LOW);
digitalWrite(ledPinB,LOW);
//digitalWrite(ledPin16,LOW);
digitalWrite(ledPin5,LOW);
}
irrecv.resume();
}
a=0;
// Wait for connection
if (WiFi.status() != WL_CONNECTED) {
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (a==2){break;}
a=a+1;
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
}
server.handleClient();
}
String webPage()
{
String web;
web += "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/> <meta charset=\"utf-8\"><title>ESP 8266</title><style>button{color:red;padding: 10px 27px;}</style></head>";
//web += "<h1 style=\"text-align: center;font-family: Open sans;font-weight: 100;font-size: 20px;\">ESP8266 Web Server</h1><div>";
web += "<h1 style=\"text-align: center;font-family: Open sans;font-weight: 100;font-size: 20px;\">ТЕМПЕРАТУРА - </h1><div>";
web += (sensor_inhouse.getTempCByIndex(0));
web += "<h1 style=\"text-align: center;font-family: Open sans;font-weight: 100;font-size: 20px;\">ТЕМПЕРАТУРА АКТИВАЦИИ - </h1><div>";
web += (30+t);
//++++++++++ LED-1 +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----RED----</p>";
if (digitalRead(D0_pin) == 1)
{
web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</div>";
}
else
{
web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</div>";
}
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket1On\"><button>ON</button></a>&nbsp;<a href=\"socket1Off\"><button>OFF</button></a></div>";
// ++++++++ LED-1 +++++++++++++

//++++++++++ LED-2 +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">----GREEN----</p>";
if (digitalRead(D2_pin) == 1)
{
web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</div>";
}
else
{
web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</div>";
}
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket2On\"><button>ON</button></a>&nbsp;<a href=\"socket2Off\"><button>OFF</button></a></div>";
// ++++++++ LED-2 +++++++++++++

//++++++++++ LED-3 +++++++++++++
web += "<p style=\"text-align: center;margin-top: 0px;margin-bottom: 5px;\">---BLUE---</p>";
if (digitalRead(D1_pin) == 1)
{
web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #43a209;margin: 0 auto;\">ON</div>";
}
else
{
web += "<div style=\"text-align: center;width: 98px;color:white ;padding: 10px 30px;background-color: #ec1212;margin: 0 auto;\">OFF</div>";
}
web += "<div style=\"text-align: center;margin: 5px 0px;\"> <a href=\"socket3On\"><button>ON</button></a>&nbsp;<a href=\"socket3Off\"><button>OFF</button></a></div>";
// ++++++++ LED-2 +++++++++++++

// ========REFRESH=============
web += "<div style=\"text-align:center;margin-top: 20px;\"><a href=\"/\"><button style=\"width:158px;\">REFRESH</button></a></div>";
// ========REFRESH=============
web += "</div>";
return(web);
}
http://tabak.aaa22.ru
Аватар пользователя
IvanAltay

 
Сообщений: 6092
Зарегистрирован:
11 фев 2015, 07:42
Откуда: Алтай
Благодарил (а): 219 раз.
Поблагодарили: 320 раз.

Re: Автоматика/термостат на базе ESP8266/DS18B20.

Сообщение номер:#4  Сообщение IvanAltay » 27 сен 2019, 21:50

Коды любого пульта ИК, идут в серийный порт на скорости 115200.
http://tabak.aaa22.ru
Аватар пользователя
IvanAltay

 
Сообщений: 6092
Зарегистрирован:
11 фев 2015, 07:42
Откуда: Алтай
Благодарил (а): 219 раз.
Поблагодарили: 320 раз.

Re: Автоматика/термостат на базе ESP8266/DS18B20.

Сообщение номер:#5  Сообщение IvanAltay » 27 сен 2019, 22:03

Сообщение компилятора Arduino IDE.
"Скетч использует 354904 байт (33%) памяти устройства. Всего доступно 1044464 байт.
Глобальные переменные используют 30540 байт (37%) динамической памяти, оставляя 51380 байт для локальных переменных. Максимум: 81920 байт."
Память 4 Мб, можно вообще не думать об эффективности кода! Памяти - не мерЯно!
В 4 Мб, можно всю Войну и Мир запихать, все три тома(я читал, в трёх томах).
http://tabak.aaa22.ru
Аватар пользователя
IvanAltay

 
Сообщений: 6092
Зарегистрирован:
11 фев 2015, 07:42
Откуда: Алтай
Благодарил (а): 219 раз.
Поблагодарили: 320 раз.

Re: Автоматика/термостат на базе ESP8266/DS18B20.

Сообщение номер:#6  Сообщение alextirt » 29 сен 2019, 00:07

Ваня, ты сам понимаешь что нужно для народа -
1 - просто
2 - дёшево
3 - сердито
Зачем так заморачиваться, если можно за 100 рублей из Китая взять простой проверенный контроллер??

Несколько лет назад задумывался о приобретении Arduino, но понял что это мне не так уж и нужно хотя часть "хотелок" неплохо работают в этой системе, к тому же пункт 2 и 3.
включаймозги
Аватар пользователя
alextirt

 
Сообщений: 1066
Зарегистрирован:
06 фев 2015, 11:45
Откуда: Сочи
Благодарил (а): 83 раз.
Поблагодарили: 108 раз.

Re: Автоматика/термостат на базе ESP8266/DS18B20.

Сообщение номер:#7  Сообщение IvanAltay » 07 окт 2019, 21:10

alextirt писал(а):Ваня, ты сам понимаешь что нужно для народа -
1 - просто
2 - дёшево
3 - сердито
Зачем так заморачиваться, если можно за 100 рублей из Китая взять простой проверенный контроллер??

Несколько лет назад задумывался о приобретении Arduino, но понял что это мне не так уж и нужно хотя часть "хотелок" неплохо работают в этой системе, к тому же пункт 2 и 3.

Ты просто туповат и ленив(не инженер).
За 500 рублей градусник на DS18B20 у меня есть. Но он просто градусник. Он не может дать сигнал и связаться по сети с хозяином.
Изображение
http://tabak.aaa22.ru
Аватар пользователя
IvanAltay

 
Сообщений: 6092
Зарегистрирован:
11 фев 2015, 07:42
Откуда: Алтай
Благодарил (а): 219 раз.
Поблагодарили: 320 раз.

Re: Автоматика/термостат на базе ESP8266/DS18B20.

Сообщение номер:#8  Сообщение IvanAltay » 07 окт 2019, 21:20

DS18B20 - 50 РУБ с доставкой(если 1 шт).
https://ru.aliexpress.com/item/32224561 ... ad3d9c6ff4
И ESP8266 ESP-12F за 200 руб с доставкой, если 1 шт. Модуль включает в себя плату программатора, которую можно подключить к компу(через кабель USB/microUSB) и залить программу через него.
https://ru.aliexpress.com/item/32595394 ... b201603_52
А дальше, нужно несколько извилин в мозгу, чтоб залить мою прошивку в микропроцессор на абсолютно бесплатном ПО Arduino IDE.
http://tabak.aaa22.ru
Аватар пользователя
IvanAltay

 
Сообщений: 6092
Зарегистрирован:
11 фев 2015, 07:42
Откуда: Алтай
Благодарил (а): 219 раз.
Поблагодарили: 320 раз.


Вернуться в Винокурение

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


.