Re: HC-06 терморегулятор DS18B20
k = temp.getTempCByIndex(0);
это строка отвечает за снятие показаний температуры, Вы можете использовать коэффициент, например:
k = temp.getTempCByIndex(0)*0.93;
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Разное → HC-06 терморегулятор DS18B20
k = temp.getTempCByIndex(0);
это строка отвечает за снятие показаний температуры, Вы можете использовать коэффициент, например:
k = temp.getTempCByIndex(0)*0.93;
То есть если мне надо вести поправку в 2 градуса мне надо поставить коэффициент 2?
k = temp.getTempCByIndex(0)-2.00;
почему вылетает прога с телефона постояно
Подключение к блютуз модулю происходит нормально, данные с датчиков приходят на смартфон?
да подключается все выводится и время от времени отваливается( вторая программа от вас боромерт не отваливается и не тормозит ) и ещо как поставить гистерезис 0.5 градуса ставил где написано 0.5 получается 0.1 градус поставил строку либс 05 получилось но тормазит программа телефон
Укажите адрес (номер сообщения форума) исходника программы и скетча, я поправлю программу.
2020-08-01 14:21:58 И СКРЕТЧЬ ОТ ТУДА
#include <Wire.h>
#include <Encoder.h> // http://rcl-radio.ru/wp-content/uploads/ … ncoder.zip
#include <MsTimer2.h> // http://rcl-radio.ru/wp-content/uploads/ … Timer2.zip
#include <OneWire.h>
#include <DallasTemperature.h>
#include <EEPROM.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h> //Библиотека - http://forum.rcl-radio.ru/misc.php?acti … 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;}
Укажите ссылку на исходник
исходник чего
Андроид приложения
Данный контент доступен только зарегистрированным пользователям.
этот
нет, это приложение, нужны исходники
Данный контент доступен только зарегистрированным пользователям.
Укажите ссылку (номер сообщения форума) на скетч
Я не могу найти причину, температура регулирования заносится в память контроллера (спустя 10 секунд после изминения), далее при включении питания температура регулирования считывается с памяти и отображается на экране смартфона.
По скетчу вроде все нормально. Само приложение не хранит ни каких данных, все данные в приложение поступают с ардуино.
Добрый день. При перезагрузки термостата температура сбрасывается. Должно быть так. Если да то где изменить стартовую температуру?
Не совсем понял вопрос. Температура регулирования сбрасывается?
После изменения температуры регулирования, температура регулирования заносится в память через 10 после регулировки. При включении она должна быть запрошена из памяти и выводится на экран.
Укажите скетч, что бы я посмотрел.
Здравствуйте!
Собираю термостат и решил приспособить для его управления вашу программу, пока не разберусь, как писать самому.
Мне подошла версия из 34 поста 2020-06-04 19:48:33.
Единственное, если не затруднит, можно доработать, чтобы дополнительно на экран выводилась строка "основной" или "резервный" датчик. Данные из программы будут идти следом за влажностью.
Спасибо!
Т.е. температура будет всегда одна, просто будет браться от основного или резервного датчика, если основной будет неисправен
Здравствуйте! Как Вы определите что датчик неисправен?
Варианты разные. Например DHT если отвалится, показывает температуру и влажность по нулям. А в обычной жизни нулевая влажность маловероятна.
Ну а вообще, в моем случае, основной датчик у меня будет работать по радиоканалу 433 МГц и там есть тайм-аут ожидания показаний. Если не придет сигнал в течение минуты, переключится на проводной датчик
С программой в ардуинке проблем нет, я не умею для андроид приложения делать пока
Вам нужно дописать скетч под Ваши датчики и опубликовать его на форуме. Автоматизировать переключение с основного датчика на резервный (например при отключении основного датчика). Создайте новую переменную (bool) которая показывает какой датчик активен (лог. 0 или 1). Как будет все готово я поправлю приложение.
Привет, всех с праздником.
Спасибо liman324 за то, что поделились.
В феврале, сообщение №9, вы перевели приложение для моего телефона на испанский язык.
Сейчас мы переехали в новый дом и мне нужно расширить этот термостат, я скажу, что мне нужно.
- Установите температуру 0,1 ºC.
- Используйте DHT22 для измерения температуры и влажности.
- Влажность, мне просто нужно ее измерить.
- Измените в приложении для телефона, отрегулируйте влажность: включение / выключение бойлера и включение / выключение отопления.
- Нажатием кнопки энкодера: долгое нажатие = включение / выключение котла, короткое нажатие = включение / выключение нагрева.
- Передача включения / выключения радио, бойлера, отопления и термостата.
Я изменил фотографию приложения для телефона, чтобы вы могли ее видеть.
Я изменил фото ЖК-дисплея, чтобы вы его увидели.
Я составил схему схемы того, что хотел бы сделать.
Я очень ценю вашу помощь, спасибо.
P.S. Переведено с помощью гугла считаю перевод очень плохим, поэтому прилагаю оригинал на испанском языке.
Скажите, могу ли я публиковать сообщения на форуме только на испанском языке.
---------
Hola, Felices fiestas para todos.
Gracias liman324 por compartir.
En Febrero, mensaje #9, tu tradujiste para mi al Español la App para teléfono.
Ahora nos hemos cambiado a una casa nueva y necesito ampliar este termostato, te cuento lo que necesito.
- Ajustar temperatura en 0.1 ºC.
- Usar DHT22 para medir la temperatura y humedad.
- La humedad, solo necesito medirla.
- Cambiar en la App del teléfono, ajuste humedad por : caldera on/off y calefacción on/off.
- Al pulsar el pulsador del encoder : pulsación largo = caldera on/off y pulsación corta = calefacción on/off.
- Transmitir por radio ON/OFF, de caldera, calefaccion y termostato.
He modificado la foto de la App del teléfono para que la veas.
He modificado la foto de el LCD para que la veas.
He hecho un esquema del circuito, de lo que me gustaría hacer.
Te agradezco mucho tu ayuda, gracias.
P.D. Traducido con google, creo que la traducción es muy mala, por esto, adjunto el original en Español.
Dime si puedo postear en el foro, solo en Español.
-------
К сожалению я не знаком с модулем RX433MHz, а так же у меня нет датчика DHT-22 что-бы собрать и протестировать схему. В таком варианте с применением модуля RX433MHz и двух плат Arduino я не смогу Вам помочь.
forum.rcl-radio.ru → Разное → HC-06 терморегулятор DS18B20
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|