76

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

я имел в виду по беспроводной связи, с возможностью контроля и  управления с
полноценного блока полностью дублирующего смартфон, но смарт не исключать.
Управление и контроль с одного или другого устройства.

77

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

Вывод показаний на LCD1602(I2C)(подключение http://forum.rcl-radio.ru/viewtopic.php?id=63), регулировка параметров энкодером (подключение 8, 9, 10  === CLK, DT, SW)

http://forum.rcl-radio.ru/uploads/images/2020/08/c0f508626f7e7e13731b133b82ac002b.png

#include <Wire.h> 
#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>
#include <DallasTemperature.h>
#include <EEPROM.h>
#include <DHT.h> 
#include <LiquidCrystal_I2C.h> //Библиотека -  http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
  OneWire oneWire(A0);// вход датчика 18b20
  DHT dht(2, DHT11); // выход DAT подключен к цыфровому входу 2
  DallasTemperature temp(&oneWire);
  LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
  Encoder myEnc(8, 9);//CLK, DT 

int buff[2],i,dig,arr[2],w,w1,reg,nakal,h_reg,h_rele,menu;
float k;
int gis=1; // гистерезис 1 градус
unsigned long times,temp_time,oldPosition  = -999,newPosition;
 
void setup(){ Serial.begin(9600);Serial.setTimeout(50);
   temp.begin(); 
   temp.setResolution(11);//12 бит 
   dht.begin(); 
   pinMode(10,INPUT);// МЕНЮ КНОПКА SW энкодера
   Wire.begin();lcd.init();lcd.backlight();
   MsTimer2::set(3, to_Timer);MsTimer2::start();
   reg = EEPROM.read(0);h_reg = EEPROM.read(1);
   pinMode(12, OUTPUT); // выход реле рег. темп.
   pinMode(11, OUTPUT); // выход реле рег. влаж.
}
 
void loop() {
  ///// DHT 
  byte h = dht.readHumidity();// влажность
  //h = 45;
  /////// ПРИЕМ ДАННЫХ С SERIAL PORT /////////////////////////
  while (Serial.available()>0){ 
   for (i=0;i<1;i++) { 
     buff[0] = Serial.parseInt(); 
     buff[1] = Serial.parseInt();}    
     w=1;w1=1;times=millis();}
 
 ///////////// обработка команд /////////////////// 
 if(buff[0]>10&&w==1){ w=0; temp_time=millis();
     if(buff[0]==102){reg++;if(reg>125){reg=125;}}
     if(buff[0]==101){reg--;if(reg<0){reg=0;}}
     if(buff[0]==104){h_reg++;if(h_reg>100){h_reg=100;}}
     if(buff[0]==103){h_reg--;if(h_reg<20){h_reg=20;}}}
    /// EEPROM   
 if(w1==1&&millis()-times>10000){w1=0;EEPROM.update(0,reg);EEPROM.update(1,h_reg);}
   /// измирение температуры
 if(millis()-temp_time>1000&&menu==0){  
   temp.requestTemperatures();
   k = temp.getTempCByIndex(0);
  // k=25;
   temp_time=millis();}
   /// отправка днный в android
   Serial.print(k,1);
   Serial.print(":");
   Serial.print(reg);
   Serial.print(":");
   Serial.print(nakal);
   Serial.print(":");
   Serial.print(h);
   Serial.print(":");
   Serial.print(h_reg);
   Serial.print(":");
   Serial.println(h_rele);

   if(reg >= k + gis){digitalWrite(12,LOW);nakal=1;}
   if(reg <= k - gis){digitalWrite(12,HIGH);nakal=0;} 
    
   if(h_reg >= h + gis){digitalWrite(11,LOW);h_rele=1;}
   if(h_reg <= h - gis){digitalWrite(11,HIGH);h_rele=0;} 
///////////////////////////////////////////////////////////////
   if(digitalRead(10)==LOW){menu++;if(menu>2){menu=0;}delay(200);}
   
   if (newPosition != oldPosition&&menu==2){oldPosition = newPosition;
     h_reg=h_reg+newPosition;myEnc.write(0);newPosition=0;if(h_reg>100){h_reg=100;}if(h_reg<20){h_reg=20;}} 
   if (newPosition != oldPosition&&menu==1){oldPosition = newPosition;
     reg=reg+newPosition;myEnc.write(0);newPosition=0;if(reg>125){reg=125;}if(reg<0){reg=0;}}   
     
   lcd.setCursor(0,0);
   if(menu!=1){lcd.print(" T ");}
   if(menu==1){lcd.print(">T ");}
   lcd.print(k,1);
   lcd.setCursor(9,0);lcd.print("T_r ");lcd.print(reg);
   
   lcd.setCursor(0,1);
   if(menu!=2){lcd.print(" H ");}
   if(menu==2){lcd.print(">H ");}
   lcd.print(h);lcd.print(" %");
   lcd.setCursor(9,1);lcd.print("H_r ");lcd.print(h_reg);

}

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

78 (2020-08-02 15:53:56 отредактировано sanj76a)

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

как связь с базовым блоком? по кабелю?

я имел в виду по беспроводной связи, с возможностью контроля и  управления с
полноценного блока полностью дублирующего смартфон, но смарт не исключать.
Управление и контроль с одного или другого устройства.

79

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

Ни как, энкодер и экран должны быть в базовом блоке

80 (2020-08-02 16:02:45 отредактировано sanj76a)

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

я имел в виду по беспроводной связи, с возможностью контроля и  управления с
полноценного блока полностью дублирующего смартфон, но смарт не исключать.
Управление и контроль с одного или другого устройства.


блок находится в другом месте, (типа на стене висит, не далеко в удобном месте)

получаеца надо тянут кабель, если сложно, буду тянуть...

81

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

Понадобится вторая плата ардуино, передавать информацию можно через rs-485
https://rcl-radio.ru/?p=80037

Можно использовать ESP8266 и выводить управление на веб страницу.

Других вариантов я пока не вижу

82

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

пока сделаю так, протестирую, напишу, выложу все, потом остальное,

83

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

http://forum.rcl-radio.ru/uploads/images/2020/08/475901d8726eb29a6dac06dd97d6a9b9.jpg

  На  + питания энкодеа, подать 5в?

как я понял LCD управляется по шине I2C?  Но не понял из скетча  куда подключаются SDA, SCL

84

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

посмотрел распиновку ардуино, SDA - A4.  SCL -A5.
Так подключать управление  по шине I2C?

85

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

Да, все верно.