126

Re: HC-06 терморегулятор DS18B20

Спасибо за ответ liman324.

Я собираюсь протестировать DHT22 на своем термостате, я скажу вам, работает ли он со скетчем, в сообщении №77.

Спасибо.
------

Gracias por tu respuesta liman324.

Voy a probar en mi termostato el DHT22, te diré si funciona con el bosquejo, en mensaje #77.

Gracias.

127

Re: HC-06 терморегулятор DS18B20

Привет liman324,

Я не могу заставить DHT22 работать на моем термостате, я куплю DHT11.
Наш новый дом очень большой и очень старый, котел находится в подвале, и проводить кабели будет очень сложно, поэтому я подумал сделать это по радио.
Я поменял схему, можно ли с RS485?
Подскажите, можно ли по новой схеме сделать?
Большое спасибо, я ценю вашу помощь, я изучаю электронику и многому учусь на ваших схемах, у вас их много, и они очень хороши.

Большое спасибо.
--------
Hola liman324,

No consigo que me funcione el DHT22 en mi termostato, comprare un DHT11.
Nuestra nueva casa es muy grande y muy antigua, la caldera esta en el sótano y llevar los cables sera muy difícil, por esta razón pensé hacerlo por radio.
He cambiado el esquema, es posible hacerlo con RS485 ?.
Dime si es posible hacer lo del nuevo esquema ?.
Muchas gracias, te agradezco tu ayuda, soy estudiante de electrónica y estoy aprendiendo mucho de tus circuitos, tienes muchos y son muy buenos.

Muchas gracias.
-------

http://forum.rcl-radio.ru/uploads/images/2020/12/fe5c2478e2dda4ed18f0462ffbf5481b.jpg

128

Re: HC-06 терморегулятор DS18B20

Да, применение RS-485 возможно. https://rcl-radio.ru/?p=80037

129

Re: HC-06 терморегулятор DS18B20

Счастливого нового года всем.
Привет liman324,

Я изучаю электронику, очень мало знаю о программировании, мне очень сложно запрограммировать ардуино так, чтобы работала схема сообщения №127, прошу вашей помощи, вы можете мне помочь?

Спасибо.
---------------
Feliz año nuevo para todos.
Hola liman324,

Soy estudiante de electrónica, se muy poco de programación, es muy difícil para mi programar el arduino para que funcione el esquema del mensaje #127, le pido ayuda, me puede ayudar ?.

Gracias.

130

Re: HC-06 терморегулятор DS18B20

18B20 у Вас что измеряет?

131

Re: HC-06 терморегулятор DS18B20

Спасибо, что ответили на liman324.

Я не понимаю перевод вашего вопроса Google, вы можете задать мне вопрос по-другому?

Спасибо.
-----------
Gracias por responder liman324.

La traducción que me hace google de su pregunta, no la entiendo, me puedes hacer la pregunta de otra manera ?.

Gracias.

132

Re: HC-06 терморегулятор DS18B20

Датчик DS18B20 измеряет температуру воздуха в доме или в паровом котле?

133

Re: HC-06 терморегулятор DS18B20

Спасибо, что ответили на liman324.

Датчик DS18B20 измеряет температуру воздуха в доме.

Спасибо.
-----------
Gracias por responder liman324.

El sensor DS18B20 mide la temperatura del aire en una casa.

Gracias.

134 (2021-01-03 23:58:46 отредактировано TyM)

Re: HC-06 терморегулятор DS18B20

Привет liman324.

Котел дизельный, его можно включить для нагрева горячей воды для душа и мытья посуды (Boiler ON), кроме этого можно включить отопление для обогрева дома (Heating ON). Только отопление включить нельзя, котел должен быть включен, чтобы отопление работало.
Датчик DS18b20 сравнивает температуру воздуха с заданной в термостате, если температура воздуха ниже, чем заданная в термостате, и обогрев включен, он включит реле (Thermostat ON)

Спасибо.
-----------
Hola liman324.

La caldera es de gasoil, se puede encender para calentar agua caliente para la ducha y fregar platos (caldera ON), ademas de esto, se puede encender la calefacción para calentar la casa (calefacción ON). No se puede encender solo la calefacción, tiene que estar la caldera ON, para que funcione la calefacción.
El sensor DS18b20 compara la temperatura del aire con la ajustada en el termostato, si la temperatura del aire es inferior a la ajustada en el termostato y la calefacción esta encendida, encenderá el relé (Termostato ON)

Gracias.

135

Re: HC-06 терморегулятор DS18B20

Я не смогу подготовить все скетчи и приложение целиком,  я могу сделать это в несколько этапов. Вам нужно протестировать часть кода, если у Вас все заработает как нужно, то я продолжу доделывать проект.

Есть часть схемы готовая к тестированию

Первая плата (основная) с индикатором, rs-485, энкодером и термометром
Вторая плата rs-485

У меня экран с модулем i2c, другого нет, если это проблема, то я переделаю скетч.

1 плата

Энкодер 8,9,10 = clk,dt,ws
ds18b20 = A0
rs-485 11,12,7 = R0, DI DE/RE
DE/RE - замкнуты между собой

2 плата
rs-485 11,12,10 = R0, DI DE/RE
DE/RE - замкнуты между собой

http://forum.rcl-radio.ru/uploads/images/2021/01/4a27a94df199a31190a33418dcb50957.png

Вы энкодером устанавливаете температуру регулирования, если температура регулирования выше температуры дома загорается диод на плате, если ниже то гаснет.

У меня работает на коротком расстоянии проводов rs-485, у Вас должно быть необходимая длина для теста, реальная длина провода.

136

Re: HC-06 терморегулятор DS18B20

1 плата

http://forum.rcl-radio.ru/uploads/images/2021/01/670bd83891d142dee330428143dbae2c.png


#include <SoftwareSerial.h>   // Входит в состав Arduino IDE  
#include <Wire.h> // Входит в состав Arduino IDE 
#include <EEPROM.h>  // Входит в состав Arduino IDE 
#include <Encoder.h>  // https://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h> // https://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <OneWire.h>  // https://rcl-radio.ru/wp-content/uploads/2018/07/OneWire.zip
#include <LiquidCrystal_I2C.h> //Библиотека - http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
 LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
 SoftwareSerial rs485(11, 12);  // RO и DI     
 Encoder myEnc(8, 9);//CLK, DT    
 OneWire  ds(A0); // Вход датчика  
 byte a1[8] = {0b11000,0b11000,0b00111,0b01000,0b01000,0b01000,0b00111,0b00000}; //c    
 
 float temper;
 int w,rele_1,menu,www,reg;
 unsigned long buff,oldPosition  = -999,newPosition,times,times1;
 
void setup() {
  Serial.begin(9600);rs485.begin(9600);         
  pinMode(10,INPUT);// МЕНЮ КНОПКА SW энкодера
  pinMode(7,OUTPUT);// rs - r/w  
  MsTimer2::set(3, to_Timer);MsTimer2::start();            
  lcd.init();lcd.backlight();// Включаем подсветку дисплея        
  lcd.createChar(0,a1); 
  reg=EEPROM.read(0)*256+EEPROM.read(1);         
}
 
void loop() {
  
 
  if (newPosition != oldPosition){oldPosition = newPosition;times=millis();times1=millis();w=1;
     reg=reg+newPosition;myEnc.write(0);newPosition=0;if(reg>500){reg=500;}if(reg<100){reg=100;}
     Serial.println(reg);
     }
   

  temper = dsRead(0);
  lcd.setCursor(0, 0);lcd.print("T=");lcd.print(temper,1);lcd.write((uint8_t)0);
  lcd.setCursor(8, 0);lcd.print("RG=");lcd.print((float)reg/10,1);lcd.write((uint8_t)0);
 
///////// прием данных
 // digitalWrite(7,LOW); // DE-RE прием данных
 // if( rs485.available() ){ 
 // while( rs485.available()>0 ){buff = rs485.parseInt();}      
 // }

 
 ///////// отправка данных 
  if(reg/10 >= temper + 0.1){rele_1=1;}
  if(reg/10 <= temper - 0.1){rele_1=0;}  
  if(millis()-times>3000){
  digitalWrite(7,HIGH); // DE-RE оправка данных 
  rs485.print(rele_1);for(int i=0;i<10;i++){delay(100);if(www==1){www=0;break;}}
  }

  if(millis()-times1>1000&&w==1){
    EEPROM.update(0,highByte(reg));EEPROM.update(1,lowByte(reg));
    times1=millis();w=0;
    }
  
 
  
}//loop


void to_Timer(){newPosition = myEnc.read()/4;}

float dsRead(byte x) {
  byte data[2], addr[8][8], kol = 0;
  while (ds.search(addr[kol])) {  // поиск датчиков, определение адреса и кол-ва датчиков
    kol++;
  } 
  ds.reset_search();  // Сброс поиска датчика
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0x44, 0);  // Измерение температуры с переносом данных в память
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0xBE);     // Обращение памяти
  data[0] = ds.read();// Чтение памяти byte low
  data[1] = ds.read();// Чтение памяти byte high
  float value = ((data[1] << 8) | data[0]) / 16.0; return (float)value; // Расчет температуры и вывод
}

2 плата

#include <SoftwareSerial.h>   // Входит в состав Arduino IDE  
 SoftwareSerial rs485(11, 12);  // RO и DI       

 int buff;

 
void setup() {
  Serial.begin(9600);rs485.begin(9600);         
  pinMode(10,OUTPUT);// rs - r/w 
  pinMode(13,OUTPUT);// led rele_1            
}
 
void loop() {
  
///////// прием данных
  digitalWrite(10,LOW); // DE-RE прием данных
  if( rs485.available() ){ 
  while( rs485.available()> 0 ){buff = rs485.parseInt();}
  }
  Serial.println(buff,BIN);
  
  if(buff & 0b01 == 1){digitalWrite(13,HIGH);}else{digitalWrite(13,LOW);}
    
 ///////// отправка данных 
 // digitalWrite(7,HIGH); // DE-RE оправка данных 
 // rs485.print(rele_1);
}//loop

137

Re: HC-06 терморегулятор DS18B20

Добавлен датчик влажности плата 1

http://forum.rcl-radio.ru/uploads/images/2021/01/390b4150368ea7c92c7e65f978a14588.png


#include <SoftwareSerial.h>   // Входит в состав Arduino IDE  
#include <Wire.h> // Входит в состав Arduino IDE 
#include <EEPROM.h>  // Входит в состав Arduino IDE 
#include <Encoder.h>  // https://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h> // https://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <OneWire.h>  // https://rcl-radio.ru/wp-content/uploads/2018/07/OneWire.zip
#include <LiquidCrystal_I2C.h> //Библиотека - http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
#include <DHT.h> // https://rcl-radio.ru/wp-content/uploads/2018/08/DHT.zip
 LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
 SoftwareSerial rs485(11, 12);  // RO и DI     
 Encoder myEnc(8, 9);//CLK, DT    
 OneWire  ds(A0); // Вход датчика  
 DHT dht(A1, DHT11); // выход DAT подключен к цыфровому входу 2
 byte a1[8] = {0b11000,0b11000,0b00111,0b01000,0b01000,0b01000,0b00111,0b00000}; //c  
 byte a2[8]={B00000,B01110,B10001,B10101,B10001,B01110,B00000,B00000,};
 byte a3[8]={B00000,B01110,B11111,B11011,B11111,B01110,B00000,B00000,};
  
 float temper;
 int w,rele_1,menu,www,reg;
 unsigned long buff,oldPosition  = -999,newPosition,times,times1;
 
void setup() {
  Serial.begin(9600);rs485.begin(9600);dht.begin();         
  pinMode(10,INPUT);// МЕНЮ КНОПКА SW энкодера
  pinMode(7,OUTPUT);// rs - r/w  
  MsTimer2::set(3, to_Timer);MsTimer2::start();            
  lcd.init();lcd.backlight();// Включаем подсветку дисплея        
  lcd.createChar(0,a1); lcd.createChar(1,a2); lcd.createChar(2,a3); 
  reg=EEPROM.read(0)*256+EEPROM.read(1);         
}
 
void loop() {
  
 
  if (newPosition != oldPosition){oldPosition = newPosition;times=millis();times1=millis();w=1;
     reg=reg+newPosition;myEnc.write(0);newPosition=0;if(reg>500){reg=500;}if(reg<100){reg=100;}
     Serial.println(reg);
     }
   

  temper = dsRead(0);
  lcd.setCursor(0, 0);lcd.print("T=");lcd.print(temper,1);lcd.write((uint8_t)0);
  lcd.setCursor(8, 0);lcd.print("RG=");lcd.print((float)reg/10,1);lcd.write((uint8_t)0);
  lcd.setCursor(0, 1);lcd.print("H=");lcd.print(dht.readHumidity(),0);lcd.print("%");
  lcd.setCursor(6, 1);lcd.print("R1");if(rele_1==0){lcd.write((uint8_t)1);}else{lcd.write((uint8_t)2);}
  
///////// прием данных
 // digitalWrite(7,LOW); // DE-RE прием данных
 // if( rs485.available() ){ 
 // while( rs485.available()>0 ){buff = rs485.parseInt();}      
 // }

 
 ///////// отправка данных 
  if((float)reg/10 >= temper + 0.1){rele_1=1;}
  if((float)reg/10 <= temper - 0.1){rele_1=0;}  
  if(millis()-times>2000){
  digitalWrite(7,HIGH); // DE-RE оправка данных 
  rs485.print(rele_1);for(int i=0;i<10;i++){delay(100);if(www==1){www=0;break;}}
  }

  if(millis()-times1>1000&&w==1){
    EEPROM.update(0,highByte(reg));EEPROM.update(1,lowByte(reg));
    times1=millis();w=0;
    }
  
 
  
}//loop


void to_Timer(){newPosition = myEnc.read()/4;}

float dsRead(byte x) {
  byte data[2], addr[8][8], kol = 0;
  while (ds.search(addr[kol])) {  // поиск датчиков, определение адреса и кол-ва датчиков
    kol++;
  } 
  ds.reset_search();  // Сброс поиска датчика
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0x44, 0);  // Измерение температуры с переносом данных в память
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0xBE);     // Обращение памяти
  data[0] = ds.read();// Чтение памяти byte low
  data[1] = ds.read();// Чтение памяти byte high
  float value = ((data[1] << 8) | data[0]) / 16.0; return (float)value; // Расчет температуры и вывод
}

138

Re: HC-06 терморегулятор DS18B20

Фантастический liman324, спасибо за проявленный интерес.

На прошлой неделе я заказал 2 модуля DHT11 и 4 RS485 из Китая, пройдет несколько недель, пока я их не получу, скажите, что я могу сделать, пока я их не получу. ЖК-дисплеи, которые у меня есть, НЕ I2C, я хотел бы использовать ЖК-дисплей без I2C, возможно ли?
Большое спасибо за Вашу помощь.

P.S. Сообщения только на испанском?, Только на русском?, На русском и испанском ?.
Спрашиваю, потому что знаю, что гугл перевод очень плохой.
---------
Fantástico liman324, gracias por tu interés.

La semana pasada pedí a China, 2 DHT11 y 4 módulos RS485, tardara unas semanas, hasta que los reciba, dime que puedo hacer hasta que los reciba. Los LCD que tengo NO son I2C, me gustaría usar el LCD sin I2C, es posible ?.
Muchas gracias por tu ayuda.

P.D. Los mensajes los pongo solo en Español ?,  solo en Ruso ?, en Ruso y Español ?.
Lo pregunto por que se que la traducción de google es muy mala.

139

Re: HC-06 терморегулятор DS18B20

Можно писать только на русском, перевод вполне качественный.

Как будете готовы к тестированию я поменяю подключение LCD.

140

Re: HC-06 терморегулятор DS18B20

Понял, спасибо.

Когда у меня будет материал, который я просил, я вам расскажу.
А пока я смонтирую плату для тестирования.
Большое спасибо liman324.

P.S. Я думаю, что перевод Google плохой, прежде чем я помещаю в форум, я перевожу с испанского / русского, а затем с русского / испанского, обычно мне приходится несколько раз менять способ написания сообщений, чтобы традиция была понята.
В любом случае, переводчик бесплатный, и у меня нет другого выхода.

141

Re: HC-06 терморегулятор DS18B20

Привет liman324,

Я видел в Интернете "небольшой код" для использования датчика DHT22,
Думаю, это будет полезно для моего термостата, не так ли? В этом случае мне не пришлось бы использовать DS18B20, к тому же разрешение +/- такое же.
Я читал, что разрешение DHT22 намного лучше, чем DHT11.
Я видел, как DHT22 отправляет 40 бит, 16 бит для температуры, 16 бит для влажности и 8 бит для обработки ошибок.

Спасибо.

// TyM Prueba de DHT22 - 7 Ene 2021 - 4868b Flhas - 103b RAM

#include <LiquidCrystal.h>
LiquidCrystal lcd(A4, A3, A2, A1, A0, 13);
#include "DHT.h"
#define DHTPIN 7 // 12
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
byte grados[8] = { // TyM ºC
  B11000,
  B11000,
  B00111,
  B01000,
  B01000,
  B01000,
  B00111,
};       

void setup() {
  lcd.begin(16,2);
  lcd.createChar(0, grados);     // Crear ºC
}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  lcd.setCursor(0,0);
  lcd.print("Temperat");
  lcd.setCursor(10,0);
  lcd.print(t, 1);
  lcd.setCursor(15,0);
  lcd.write(byte(0));
  lcd.setCursor(0,1);
  lcd.print("Humedad");
  lcd.setCursor(10,1);
  lcd.print(h, 1);
  lcd.setCursor(15,1);
  lcd.print("%");
  delay(2000);
}

http://forum.rcl-radio.ru/uploads/images/2021/01/08a46cadb2980adda6b936b978d71aa0.jpg

142

Re: HC-06 терморегулятор DS18B20

Хорошо. Как получите все компоненты я сделаю скетч с DHT22. DS18b20 уберу из схемы.

143 (2021-01-08 21:52:00 отредактировано TyM)

Re: HC-06 терморегулятор DS18B20

Большое спасибо liman324.