#1 2017-03-12 20:07:26

Strelok2004
Участник
Зарегистрирован: 2015-06-15
Сообщений: 7

SMART бойлер

Здравствуйте, меня зовут Кирилл и мне 12 лет.
Представляю Вашему вниманию полностью работоспособный проект «SMART бойлер + сайт + Android приложение» для анализа и визуализации собираемых данных работы водонагревателя и управления режимами нагрева через интернет, т.е. мне удалось создать умный бойлер или Internet of Things, IoT. Такой водонагреватель может входить в систему умный дом.

  Хотел бы узнать Ваше мнение о проекте, прочесть Ваши замечания и советы, которые наверняка будут, учитывая, что я только учусь и выяснить:
есть ли вообще спрос на такие устройства и возможности  сайта у владельцев водонагревателей?

  В видеоролике будет показан краткий обзор проекта, а на возникающие вопросы отвечу более подробно на форуме.

Ссылка на ролик https://www.youtube.com/watch?v=WDK5JIUUzfU

Ссылка на сайт http://economics.zzz.com.ua

#2 2017-03-12 22:53:16

vvr
Участник
Зарегистрирован: 2015-04-12
Сообщений: 427

Re: SMART бойлер

молодец!!!!
это твой уже не первый проект
радует что у тебя в твоём возрасте что то получается, да ещё и не плохо)))

#3 2017-06-03 21:55:48

agrostandartukraine
Участник
Зарегистрирован: 2017-02-20
Сообщений: 9

Re: SMART бойлер

Молодец, перспективно и интересно, так держать cool

#4 2017-06-03 22:54:57

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 784

Re: SMART бойлер

Потрясающе! Full stack programmer в 12 лет. Обязательно продолжайте систематическое образование.

#5 2017-06-04 10:39:56

renoshnik
Участник
Зарегистрирован: 2017-04-03
Сообщений: 211

Re: SMART бойлер

Strelok2004, для вашего возраста вы проделали довольно серьезную работу.
НО, если вы заявляете о экономии, то нужно предоставлять для сравнения другие данные.
То есть нужен второй бойлер с альтернативным способом нагревания ... 
Советую добавить на сайт данные с другого бойлера (установите систему на бойлер у родственников или приятеля) ...
Отведите на сайте страницу или окно для сравнительных результатов объем слитой воды и затраченная энергия на нагрев и средняя температура нагрева (или что-то аналогичное).

Без этого ваше устройство любой оппонент (недоброжелатели) легко "затюкает" вашу идею...

#6 2017-06-04 11:20:22

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 784

Re: SMART бойлер

renoshnik пишет:

Strelok2004, для вашего возраста вы проделали довольно серьезную работу.
НО, если вы заявляете о экономии, то нужно предоставлять для сравнения другие данные.
То есть нужен второй бойлер с альтернативным способом нагревания ... 
Советую добавить на сайт данные с другого бойлера (установите систему на бойлер у родственников или приятеля) ...
Отведите на сайте страницу или окно для сравнительных результатов объем слитой воды и затраченная энергия на нагрев и средняя температура нагрева (или что-то аналогичное).

Без этого ваше устройство любой оппонент (недоброжелатели) легко "затюкает" вашу идею...

Конечно, с технико-экономической стороны это просто дорогая игрушка. Но то, что это сделал 12-летний подросток впечатляет. Я помню, был один мальчик который, даже в более юном возрасте, закончил университет с отличием. Я не помню как его звали и какова его судьба сейчас, мне неизвестно.

Редактировался Вячеслав Азаров (2017-06-04 13:28:34)

#7 2017-06-04 13:51:17

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,323

Re: SMART бойлер

Вячеслав Азаров, Лев Ландау,  врядли вы были знакомы, он умер в 68.

#8 2017-06-04 13:57:09

renoshnik
Участник
Зарегистрирован: 2017-04-03
Сообщений: 211

Re: SMART бойлер

Вячеслав Азаров пишет:
renoshnik пишет:

Strelok2004, для вашего возраста вы проделали довольно серьезную работу.
НО, если вы заявляете о экономии, то нужно предоставлять для сравнения другие данные.
То есть нужен второй бойлер с альтернативным способом нагревания ... 
Советую добавить на сайт данные с другого бойлера (установите систему на бойлер у родственников или приятеля) ...
Отведите на сайте страницу или окно для сравнительных результатов объем слитой воды и затраченная энергия на нагрев и средняя температура нагрева (или что-то аналогичное).

Без этого ваше устройство любой оппонент (недоброжелатели) легко "затюкает" вашу идею...

Конечно, с технико-экономической стороны это просто дорогая игрушка. Но то, что это сделал 12-летний подросток впечатляет. Я помню, был один мальчик который, даже в более юном возрасте, закончил университет с отличием. Я не помню как его звали и какова его судьба сейчас, мне неизвестно.

Так я и не спорю о работе и возрасте автора...
Я дал ДЕЛЬНЫЙ совет автору, а так это просто большой объем работы без конкретного результата...
Почему без результата ?
Потому, что автор позиционирует свое устройство как способ экономии (даже название сайта мониторинга).
А реальных результатов подтверждающих экономию - НЕТ...

#9 2017-06-04 14:27:17

qwone
Участник
Зарегистрирован: 2016-07-25
Сообщений: 116

Re: SMART бойлер

Так даже проблема не в экономии. А в детском подходе к проекту. Это ух ты я какую штуку забабахал, не каждый взрослый сможет. А вот точно не каждый взрослый может подойти по взрослому к такому проекту. Одно дело сделать, а другое расчитать экономическую целесообразность, заинтересовать людей этим проектом и прочее прочее.  А то будет как у Ростика с картоными танками для ВСУ.

#10 2017-06-04 14:31:40

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 784

Re: SMART бойлер

renoshnik пишет:
Вячеслав Азаров пишет:
renoshnik пишет:

Strelok2004, для вашего возраста вы проделали довольно серьезную работу.
НО, если вы заявляете о экономии, то нужно предоставлять для сравнения другие данные.
То есть нужен второй бойлер с альтернативным способом нагревания ... 
Советую добавить на сайт данные с другого бойлера (установите систему на бойлер у родственников или приятеля) ...
Отведите на сайте страницу или окно для сравнительных результатов объем слитой воды и затраченная энергия на нагрев и средняя температура нагрева (или что-то аналогичное).

Без этого ваше устройство любой оппонент (недоброжелатели) легко "затюкает" вашу идею...

Конечно, с технико-экономической стороны это просто дорогая игрушка. Но то, что это сделал 12-летний подросток впечатляет. Я помню, был один мальчик который, даже в более юном возрасте, закончил университет с отличием. Я не помню как его звали и какова его судьба сейчас, мне неизвестно.

Так я и не спорю о работе и возрасте автора...
Я дал ДЕЛЬНЫЙ совет автору, а так это просто большой объем работы без конкретного результата...
Почему без результата ?
Потому, что автор позиционирует свое устройство как способ экономии (даже название сайта мониторинга).
А реальных результатов подтверждающих экономию - НЕТ...

Будьте снисходительны. Парнишке всего 12 лет. У него еще все впереди. А без труда не выловишь и рыбку из пруда.

#11 2017-06-04 14:37:26

renoshnik
Участник
Зарегистрирован: 2017-04-03
Сообщений: 211

Re: SMART бойлер

Вячеслав Азаров пишет:

Будьте снисходительны. Парнишке всего 12 лет. У него еще все впереди. А без труда не выловишь и рыбку из пруда.

!?!?!?!  по моему в видео он сам просил критики и совета ...

сейчас для молодежи не такая проблема освоить программирование, гораздо бОльшая проблема это грамотная постановка задачи и адекватное её решение...
проекты ради проектов - этого полным полно на выставках, форумах и в сети...

#12 2017-06-04 14:37:51

qwone
Участник
Зарегистрирован: 2016-07-25
Сообщений: 116

Re: SMART бойлер

У парнишки "звездная болезнь", его лечить надо, а не быть снисходительным. Он же вырастет, и "болезнь вырастет".

#13 2017-06-04 14:41:04

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 784

Re: SMART бойлер

qwone пишет:

У парнишки "звездная болезнь", его лечить надо, а не быть снисходительным. Он же вырастет, и "болезнь вырастет".

Пусть болеет, когда выздоровеет - будет толк.   wink

#14 2017-06-04 15:54:09

renoshnik
Участник
Зарегистрирован: 2017-04-03
Сообщений: 211

Re: SMART бойлер

qwone пишет:

У парнишки "звездная болезнь", его лечить надо, а не быть снисходительным. Он же вырастет, и "болезнь вырастет".

Вячеслав Азаров пишет:
qwone пишет:

У парнишки "звездная болезнь", его лечить надо, а не быть снисходительным. Он же вырастет, и "болезнь вырастет".

Пусть болеет, когда выздоровеет - будет толк.   wink

Когда болеет и НЕ лечат, то НЕ выздоравливает !!!

#15 2017-06-04 16:40:56

vvadim
Гость

Re: SMART бойлер

renoshnik пишет:

Strelok2004, для вашего возраста вы проделали довольно серьезную работу.
НО, если вы заявляете о экономии, то нужно предоставлять для сравнения другие данные.
То есть нужен второй бойлер с альтернативным способом нагревания ... 
Советую добавить на сайт данные с другого бойлера (установите систему на бойлер у родственников или приятеля) ...
Отведите на сайте страницу или окно для сравнительных результатов объем слитой воды и затраченная энергия на нагрев и средняя температура нагрева (или что-то аналогичное).

Без этого ваше устройство любой оппонент (недоброжелатели) легко "затюкает" вашу идею...

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

он молодец, башка работает, аглицким шпарит.
не удивлюсь что в этом году ещё что нибудь интересное и более сложное представит smile

#16 2017-06-04 16:45:24

vvr
Участник
Зарегистрирован: 2015-04-12
Сообщений: 427

Re: SMART бойлер

qwone пишет:

У парнишки "звездная болезнь", его лечить надо, а не быть снисходительным. Он же вырастет, и "болезнь вырастет".

а в чём его звездизм?
чел поделился своим законченным проектом, и это гуд smile

#17 2017-06-04 19:32:41

renoshnik
Участник
Зарегистрирован: 2017-04-03
Сообщений: 211

Re: SMART бойлер

vvadim пишет:
renoshnik пишет:

Strelok2004, для вашего возраста вы проделали довольно серьезную работу.
НО, если вы заявляете о экономии, то нужно предоставлять для сравнения другие данные.
То есть нужен второй бойлер с альтернативным способом нагревания ... 
Советую добавить на сайт данные с другого бойлера (установите систему на бойлер у родственников или приятеля) ...
Отведите на сайте страницу или окно для сравнительных результатов объем слитой воды и затраченная энергия на нагрев и средняя температура нагрева (или что-то аналогичное).

Без этого ваше устройство любой оппонент (недоброжелатели) легко "затюкает" вашу идею...

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

он молодец, башка работает, аглицким шпарит.
не удивлюсь что в этом году ещё что нибудь интересное и более сложное представит smile


В таком случае пацан НЕ должен рассказывать про энергоЭКОНОМИЮ...
В видео пацан жонглирует терминами "экономия", "окупаемость" без всякого на то основания...
А это откровенное словоблудие которое полностью нивелирует его труд по написанию программ и сборке устройства...
Соответственно на выходе получили некое устройство подключенное к бойлеру просто ради подключения ...

А так это изделие ради изделия и причем даааааааалеко не оптимальной конфигурации...

Редактировался renoshnik (2017-06-04 19:43:22)

#18 2017-06-04 19:45:14

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 784

Re: SMART бойлер

NoName пишет:

Вячеслав Азаров, Лев Ландау,  врядли вы были знакомы, он умер в 68.

Я не о Ландау. Ландау не единственный. Есть и помоложе. Не могу отыскать а вспомнить уже не могу.

#19 2017-06-04 20:06:17

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,323

Re: SMART бойлер

renoshnik,  мы ведь не на научном соевете )
такой холовар развели что просто не оставили мне выбора, просмотрел ролик )

парниша молодец.
укажите на недостатки проекта, данных  и этого хватит. пусть сам даелает выводы  )

fix сайт не работает  долго грузится
разраб акцентирует  внимание на возрасте,  в его  устах это минус. мы не в штатах и это не егго эссе   и так видно что  школьник
его менеджер имеет право  такое говорить - разраб нет. 


а вы видели как он провода в коробке уложил? - это ведь ужастный ужас )

лечить от неверно представляемой экономической составляющей - 
это просто писец пушистый. это и без нас жизнь сделает, она такая )

Редактировался NoName (2017-06-04 20:10:55)

#20 2017-06-04 20:58:17

qwone
Участник
Зарегистрирован: 2016-07-25
Сообщений: 116

Re: SMART бойлер

Ладно. С пацаном и его проектом все ясно. Я вот скеч нарисовал. Зацените.  smile

/*Cl_LcdBtn_in_Nokia5110.ino
 *  синий экран
  Serial clock out   5(SCLK) -->3
  Serial data out     4(DIN) -->4
  Data/Command select 3(D/C) -->5
  LCD chip select      2(CS) -->6
  LCD reset           1(RST) -->7
                      6(Vcc) -->3.3V
                       7(BL) -->3.3V
                      8(GND) -->GND
  кнопка 1           (Btn_1) -->8
  кнопка 2           (Btn_2) -->9
  кнопка 3           (Btn_3) -->10
*/
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(/*SCLK*/3,/*DIN*/4,/*D/C*/5,/*CS*/6,/*RST*/7);
class Cl_Sys;// предварительно объявить о создании класса Sys для послед подключения к нему
//-----Cl_Label-----------------
class Cl_Label {
  public:
    byte x, y   ; // положение надписи
    char * txt = NULL ; // указатель на надпись
    // указатель на следующий элемент
    Cl_Label *pnt;
    // конструктор
    Cl_Label(Cl_Sys *Sys, char *_txt , byte _x , byte _y );
    void setup() {
    }
    // setup()
    void loop() {
    }
    // сделать надпись
    void Caption(char *_txt) {
      txt = _txt;
    }
};
//-----Cl_LcdBtn-----------------
class Cl_LcdBtn {
    byte pin; // номер ноги на кнопке
    bool btn, btn_old;
    bool bounce = 0; // антидребезговый флаг
    uint32_t past = 0 ;
  public:
    void (* Do1)(), (* Do2)(); // указатель на обработчики нажатия,отжатия
    byte x, y   ; // положение надписи
    char * txt = NULL ; // указатель на надпись
    // указатель на следующий элемент
    Cl_LcdBtn *pnt = NULL;
    // конструктор
    Cl_LcdBtn(Cl_Sys *Sys, byte _pin, void (* _Do1)(), void (* _Do2)(), char *_txt , byte _x , byte _y );
    void setup() {
      pinMode(pin, INPUT_PULLUP);// подключить кнопку 1 с подтяжкой
      btn = digitalRead(pin); // прочитать реальное значение на выводе};
    }
    // setup()
    void loop() {
      if (! bounce && btn != digitalRead(pin)) { // если прошел фронт изм на выводн
        bounce = 1;                              // выставить флаг
        past = millis();                         // сделать временую засветку
      }
      else if ( bounce && millis() - past >= 5 ) { // если прошло антидребезговое время
        bounce = 0;                                // то снять флаг
        btn_old = btn ;
        btn = digitalRead(pin) ;                   // прочитать реальное значение на выводе
        if (btn_old && !btn) Do1(); // если произошло нажатие
        if (!btn_old && btn) Do2(); // если произошло отжатие
      }
    }
    // сделать надпись
    void Caption(char *_txt) {
      txt = _txt;
    }
};
//-----Cl_Sys-----------------
class Cl_Sys {
    uint32_t past = 0;
  public:
    Cl_Label *Startl_Label = NULL;
    Cl_LcdBtn *Start_Btn = NULL;
    Cl_Sys() {}
    // setup()
    void setup() {
      display.begin();              // Инициализация дисплея
      display.setContrast(60);      // Устанавливаем контраст
      display.setTextColor(BLACK);  // Устанавливаем цвет текста
      display.setTextSize(1);       // Устанавливаем размер текста
      display.clearDisplay();       // Очищаем дисплей
      display.display();
      for (Cl_Label *i = Startl_Label; i != NULL; i = i->pnt) i->setup();
      for (Cl_LcdBtn *i = Start_Btn; i != NULL; i = i->pnt) i->setup();
    }
    void loop() {
      for (Cl_LcdBtn *i = Start_Btn; i != NULL; i = i->pnt) i->loop();
      // вывод обновленой информации раз в 0.5 сек
      if (millis() - past >= 500) {
        past = millis();
        display.clearDisplay();       // Очищаем дисплей
        for (Cl_LcdBtn *i = Start_Btn; i != NULL; i = i->pnt) {
          display.setCursor(i->x, i-> y);
          display.print(i->txt);
        }
        for (Cl_Label *i = Startl_Label; i != NULL; i = i->pnt) {
          display.setCursor(i->x, i-> y);
          display.print(i->txt);
        }
        display.display();
      }
    }
} Sys;
//---------описание классов------------
Cl_Label::Cl_Label(Cl_Sys *Sys, char *_txt , byte _x = 0 , byte _y = 0):  x(_x), y(_y) {
  txt = _txt,
  pnt = Sys->Startl_Label;
  Sys->Startl_Label = this;
}
Cl_LcdBtn::Cl_LcdBtn(Cl_Sys *Sys, byte _pin, void (* _Do1)(), void (* _Do2)(), char *_txt , byte _x = 0 , byte _y = 0)
  : pin(_pin), Do1(_Do1), Do2(_Do2),  txt(_txt), x(_x), y(_y) {
  pnt = Sys->Start_Btn;
  Sys->Start_Btn = this;
}
//----------Компоновка---------------------
Cl_Label *Label = new Cl_Label(&Sys,/*текст*/"Label",/*поз х*/0,/*поз y*/0); // создать объект Лабел
void Do1_Btn1();// объявим что есть такие обработчики
void Do2_Btn1();
void Do1_Btn2();
void Do2_Btn2();
void Do1_Btn3();
void Do2_Btn3();
Cl_LcdBtn *Btn_1 = new Cl_LcdBtn(&Sys,/*пин*/8 ,/*обработчик*/Do1_Btn1,/*обработчик*/Do2_Btn1,/*текст*/"1of",/*поз х*/0*8  ,/*поз y*/5*8); // создать кнопку Btn_1
Cl_LcdBtn *Btn_2 = new Cl_LcdBtn(&Sys,/*пин*/9 ,/*обработчик*/Do1_Btn2,/*обработчик*/Do2_Btn2,/*текст*/"2of",/*поз х*/4*8  ,/*поз y*/5*8); // создать кнопку Btn_2
Cl_LcdBtn *Btn_3 = new Cl_LcdBtn(&Sys,/*пин*/10,/*обработчик*/Do1_Btn3,/*обработчик*/Do2_Btn3,/*текст*/"3of",/*поз х*/8*8 ,/*поз y*/5*8); // создать кнопку Btn_3
void Do1_Btn1() {
  Label->Caption("Btn 1");
  Btn_1->Caption("1on");
}
void Do2_Btn1() {
  Btn_1->Caption("1of");
}
void Do1_Btn2() {
  Label->Caption("Btn 2");
  Btn_2->Caption("2on");
}
void Do2_Btn2() {
  Btn_2->Caption("2of");
}
void Do1_Btn3() {
  Label->Caption("Btn 3");
  Btn_3->Caption("3on");
}
void Do2_Btn3() {
  Btn_3->Caption("3of");
}
//-----------Main()-----------------------
void setup() {
  Sys.setup();
}

void loop() {
  Sys.loop();
}

#21 2017-06-05 17:46:51

qwone
Участник
Зарегистрирован: 2016-07-25
Сообщений: 116

Re: SMART бойлер

Сорри на не по теме. Вот код недо графический интерфейс. 3 графические кнопки на экране и окошко для сообщение. кликаешь по кнопкам сообщение меняется. Вроде программа не о чем Экран Нокия 5110 и аналоговый джойстик вместо мышки.

/*Cl_aJoystick_v3.ino
      синий экран
  Serial clock out   5(SCLK) -->3
  Serial data out     4(DIN) -->4
  Data/Command select 3(D/C) -->5
  LCD chip select      2(CS) -->6
  LCD reset           1(RST) -->7
                      6(Vcc) -->3.3V
                       7(BL) -->3.3V
                      8(GND) -->GND
  Джойстик (GND) --> GND
           (+5V) --> +5V
           (VRx) --> A0
           (VRy) --> A1
            (SW) --> A2
*/
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(/*SCLK*/3,/*DIN*/4,/*D/C*/5,/*CS*/6,/*RST*/7);
class Cl_Sys;// предварительно объявить о создании класса Sys для послед подключения к нему
//-----Cl_aJoystick-------------------------------------------------------
const int delta = 5; // колебание значения на аналоговых выходах, которые можно игнорировать
class Cl_aJoystick {
    byte VRx_pin ; // номер ноги на выводе VRx
    byte VRy_pin ; // номер ноги на выводе VRy
    byte SW_pin  ; // номер ноги на выводе SW
    void (* Do_SW)(byte, byte); //указатель на обработчик кнопки SW
    int VRx_old; // старые значение на канале X
    int VRy_old; // старые значение на канале Y
    bool SW, SW_old;
    bool   bounce_VRx = 0, bounce_VRy = 0, bounce_SW = 0; // антидребезговый флаг
    uint32_t past_VRx = 0, past_VRy = 0  , past_SW = 0   ;
  public:
    byte x, y   ; // положение надписи
    char * txt = NULL ; // указатель на надпись
    // указатель на следующий элемент
    Cl_aJoystick *pnt;
    // конструктора
    Cl_aJoystick(Cl_Sys *Sys, byte _1pin, byte _2pin, byte _3pin, void (* _Do_SW)(byte, byte));
    void setup() {
      pinMode(VRx_pin, INPUT)       ;// подключить вывод VRx
      pinMode(VRy_pin, INPUT)       ;// подключить вывод VRy
      pinMode(SW_pin , INPUT_PULLUP);// подключить вывод SW с подтяжкой
      VRx = analogRead (VRx_pin);
      x = map( VRx, 0, 1023, 0, 83);
      VRy = analogRead (VRy_pin);
      y = map( VRy, 0, 1023, 0, 47);
      SW = digitalRead(SW_pin) ;
    }
    // setup()
    void loop() {
      // проверяем аналог канал х
      int analog = analogRead (VRx_pin);
      if (! bounce_VRx && (VRx < analog - delta || VRx > analog + delta)) { // если прошел фронт изм на выводн
        bounce_VRx = 1;                    // выставить флаг
        past_VRx = millis();               // сделать временую засветку
      } else if ( bounce_VRx && millis() - past_VRx >= 5 ) { // если прошло антидребезговое время
        bounce_VRx = 0;      // то снять флаг
        VRx_old = VRx ;
        VRx = analog ; // прочитать реальное значение на выводе
        x = map( VRx, 0, 1023, 0, 83);

      }
      // проверяем аналог канал y
      analog = analogRead (VRy_pin);
      if (! bounce_VRy && (VRy < analog - delta || VRy > analog + delta)) { // если прошел фронт изм на выводн
        bounce_VRy = 1;                    // выставить флаг
        past_VRy = millis();               // сделать временую засветку
      } else if ( bounce_VRy && millis() - past_VRy >= 5 ) { // если прошло антидребезговое время
        bounce_VRy = 0;      // то снять флаг
        VRy_old = VRy ;
        VRy = analog ; // прочитать реальное значение на выводе
        y = map( VRy, 0, 1023, 0, 47);
      }
      // проверяем кнопку SW
      if (! bounce_SW && SW != digitalRead(SW_pin)) { // если прошел фронт изм на выводн
        bounce_SW = 1;                    // выставить флаг
        past_SW = millis();               // сделать временую засветку
      } else if ( bounce_SW && millis() - past_SW >= 5 ) { // если прошло антидребезговое время
        bounce_SW = 0;      // то снять флаг
        SW_old = SW ;
        SW = digitalRead(SW_pin) ; // прочитать реальное значение на выводе
        if (! SW_old && SW)  Do_SW(x, y);
      }
    }
    int VRx ; // значение на канале X
    int VRy ; // значение на канале Y
};
//-----Cl_Label-------------------------------------------------------------
class Cl_Label {
  public:
    byte x, y, w, h; // геомет размеры поз x,y w-ширина h-высота
    char *txt = NULL;
    // указатель на следующий элемент
    Cl_Label *pnt;
    // конструктора
    Cl_Label(Cl_Sys *Sys, byte _x, byte _y, byte _w, byte _h, char *_txt);
    void setup() {
    }
    // setup()
    void loop() {
    }
};
//-----Cl_Btn-------------------------------------------------------------
class Cl_Btn {
  public:
    void (* Do)(); // указатель на обработчик клик
    byte x, y, w, h; // геомет размеры поз x,y w-ширина h-высота
    char *txt = NULL;
    // указатель на следующий элемент
    Cl_Btn *pnt;
    // конструктора
    Cl_Btn(Cl_Sys *Sys, byte _x, byte _y, byte _w, byte _h, char *_txt, void (* _Do)());
    void setup() {
    }
    // setup()
    void loop() {
    }
};
//-----Cl_Sys----------------------------------------------------------------
class Cl_Sys {
    uint32_t past = 0;
  public:
    Cl_aJoystick *Start_aJoystick = NULL;
    Cl_Label     *Start_Label     = NULL;
    Cl_Btn       *Start_Btn       = NULL;
    Cl_Sys() {}
    // setup()
    void setup() {
      display.begin();              // Инициализация дисплея
      display.setContrast(60);      // Устанавливаем контраст
      display.setTextColor(BLACK);  // Устанавливаем цвет текста
      display.setTextSize(1);       // Устанавливаем размер текста
      display.clearDisplay();       // Очищаем дисплей
      display.display();
      for (Cl_aJoystick *i = Start_aJoystick; i != NULL; i = i->pnt) i->setup();
      for (Cl_Label     *i = Start_Label    ; i != NULL; i = i->pnt) i->setup();
      for (Cl_Btn       *i = Start_Btn      ; i != NULL; i = i->pnt) i->setup();
    }
    // loop()
    void loop() {
      for (Cl_aJoystick *i = Start_aJoystick; i != NULL; i = i->pnt) i->loop();
      for (Cl_Label     *i = Start_Label    ; i != NULL; i = i->pnt) i->loop();
      for (Cl_Btn       *i = Start_Btn      ; i != NULL; i = i->pnt) i->loop();
      // вывод обновленой информации раз в 0.5 сек
      if (millis() - past >= 100) {
        past = millis();
        display.clearDisplay();       // Очищаем дисплей
        // вывод Label
        for (Cl_Label *i = Start_Label; i != NULL; i = i->pnt) {
          display.setCursor(i->x + 2, i-> y + 2);
          display.print(i->txt);
          display.drawRect(i->x, i->y, i->w, i->h, BLACK);
        }
        // вывод Btn
        for (Cl_Btn *i = Start_Btn; i != NULL; i = i->pnt) {
          display.setCursor(i->x + 2, i-> y + 2);
          display.print(i->txt);
          display.drawRect(i->x, i->y, i->w, i->h, BLACK);
        }
        // вывод джойстика
        for (Cl_aJoystick *i = Start_aJoystick; i != NULL; i = i->pnt) {
          display.setCursor(i->x, i-> y);
          display.print(i->txt);
          display.display();
        }
      }
    }
    void onClick(byte onClickX, byte onClickY) {
      for (Cl_Btn *i = Start_Btn; i != NULL; i = i->pnt)
        if (i->x <= onClickX && onClickX < (i->x + i->w) && i->y <= onClickY && onClickY < (i->y + i->h))i->Do();
    }
} Sys;
//---------описание классов------------
Cl_aJoystick::Cl_aJoystick(Cl_Sys *Sys, byte _1pin, byte _2pin, byte _3pin, void (* _Do_SW)(byte, byte))
  :                              VRx_pin(_1pin), VRy_pin(_2pin), SW_pin(_3pin), Do_SW(_Do_SW) {
  x = 0; y = 0; txt = "^";
  pnt = Sys->Start_aJoystick;
  Sys->Start_aJoystick = this;
}
Cl_Label::Cl_Label(Cl_Sys *Sys, byte _x, byte _y, byte _w, byte _h, char *_txt)
  :                                 x(_x), y(_y), w(_w), h(_h), txt(_txt) {
  pnt = Sys->Start_Label;
  Sys->Start_Label = this;
}
Cl_Btn::Cl_Btn(Cl_Sys *Sys, byte _x, byte _y, byte _w, byte _h, char *_txt, void (* _Do)())
  :                           x(_x),   y(_y),   w(_w),   h(_h),   txt(_txt) ,    Do(_Do) {
  pnt = Sys->Start_Btn;
  Sys->Start_Btn = this;
}
//----------Компоновка---------------------
void Do_SW(byte onClickX, byte onClickY) {
  Sys.onClick(onClickX, onClickY);
}
Cl_aJoystick *aJoystick = new Cl_aJoystick(&Sys,/*VRx*/A0,/*VRy*/A1,/*SW*/A2,/*обработчик наж SW*/Do_SW); // создать aJoystick_1
Cl_Label     *Label     = new Cl_Label    (&Sys,/*x*/0 ,/*y*/0 ,/*w*/48,/*h*/11,/*текст*/"Label 1"); // создать Label_1
void Do_Btn1() {
  Label->txt = "Do_Btn1";
}
void Do_Btn2() {
  Label->txt = "Do_Btn2";
}
void Do_Btn3() {
  Label->txt = "Do_Btn3";
}
Cl_Btn  *Btnl = new Cl_Btn(&Sys,/*x*/0 ,/*y*/36,/*w*/27,/*h*/11,/*текст*/"Btn1",/*обработчик^\_*/Do_Btn1);// создать кнопку 1
Cl_Btn  *Btn2 = new Cl_Btn(&Sys,/*x*/28,/*y*/36,/*w*/27,/*h*/11,/*текст*/"Btn2",/*обработчик^\_*/Do_Btn2);// создать кнопку 2
Cl_Btn  *Btn3 = new Cl_Btn(&Sys,/*x*/56,/*y*/36,/*w*/27,/*h*/11,/*текст*/"Btn3",/*обработчик^\_*/Do_Btn3);// создать кнопку 3
//-----------Main()-----------------------
void setup() {
  Sys.setup();
}

void loop() {
  Sys.loop();
}

#22 2018-01-18 16:58:53

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 784

Re: SMART бойлер

renoshnik пишет:

Когда болеет и НЕ лечат, то НЕ выздоравливает !!!

Где вы видели, что-бы врачи кого-то вылечили?

#23 2018-01-20 08:58:31

Lic Control
Участник
Зарегистрирован: 2016-01-23
Сообщений: 60

Re: SMART бойлер

Кирилл, очень похвально ваше желание сделать своими руками что-то полезное, но как известно дьявол кроется в деталях...
1. Физика процесса.
- Основной потерей, которая возникает в процессе работы бойлера является остывание уже нагретой горячей воды. Это остывание происходит в двух направлениях - через стенки бойлера и через трубы, по которым эта вода поступает к потребителю. Остальные потери несущественные и ими можно пренебречь.
- Следует оценить величину потерь на остывание воды, учитывая, что часть потерянной энергии останется внутри жилища и зимой будет отапливать его. Зависеть эта величина будет от качества теплоизоляции корпуса бойлера и изоляции подводящих труб. Можно предположить, что качественный и правильно смонтированный бойлер будет терять очень мало тепла. Количество потерь в хорошем бойлере может быть на уровне точности доступных вам методов измерения потерь тепла.
1.Экономика.
- Экономический эффект может быть достигнут только за счет снижения потерь бойлера. Определите эту величину, и тогда без утомительного наблюдения за графиками расходов энергии, сможете спрогнозировать возможный эффект. Для определения потерь бойлера просто нагрейте в нем воду. Отключите нагрев и проток воды.  Дождитесь когда вода равномерно прогреется по объему бойлера. Измеряйте температуру воды и посчитайте время, которое потребуется для остывания воды например на 10*С. Зная объем воды, время и разницу температур, сможете посчитать потери.
- Совет. Существенная экономия может быть достигнута простым и не научным методом - снижением расхода воды wink.
3.Безопасность.
- Судя по внешнему виду собранной вами схемы вы нарушили все существующие нормы безопасности! Настоятельно рекомендую вашему наставнику помочь вам собрать новую схему, в которой бы цепи высокого напряжения были бы надежно отделены от низковольтной части и надежно закрыты. Обязательно используйте УЗО (дифреле) для питания всех цепей экспериментальной установки.

Ну и полезная информация по теме. Радикальным способом экономии электроэнергии, расходуемой на подогрев воды в быту является использование проточных электро нагревателей. Например вот такой:
проточный нагреватель
Но у них есть недостаток. Температура воды может сильно изменяться. Вот здесь вы бы и смогли приложить свои знания. Разработайте быстродействующую схему, которая бы обеспечила качественный (равномерный) нагрев воды.
Я бы посоветовал делать это не на реальном нагревателе а на лабораторной установке, работающей, например через трансформатор 220/12В.
Под лабораторной установкой я подразумеваю пару емкостей по 3-5л, 12В насосик
насос
ТЭН на 12 В
ТЭН
и несколько гибких трубочек(шлангов), которые бы обеспечили циркуляцию воды в системе.

ЖДЕМ НОВЫХ ПРОЕКТОВ.
УДАЧИ!

#24 2018-01-20 09:42:08

Вячеслав Азаров
Участник
Из Запорожье
Зарегистрирован: 2017-05-25
Сообщений: 784

Re: SMART бойлер

Lic Control пишет:

Ну и полезная информация по теме. Радикальным способом экономии электроэнергии, расходуемой на подогрев воды в быту является использование проточных электро нагревателей. Например вот такой:
https://images.ua.prom.st/971033590_w200_h200_cid2389428_pid612991149-72e64d0f.jpg
Но у них есть недостаток. Температура воды может сильно изменяться. Вот здесь вы бы и смогли приложить свои знания. Разработайте быстродействующую схему, которая бы обеспечила качественный (равномерный) нагрев воды.
ЖДЕМ НОВЫХ ПРОЕКТОВ.
УДАЧИ!

Кирил, для обеспечения наилучшей динамики нагрева вы можете использовать магнетрон. Круто будет! Но дорого. smile

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела