1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 19

"Народный контроллер" для теплового насоса

Тема в разделе "Геотермальные тепловые насосы", создана пользователем Pav2000, 21.03.16.

Статус темы:
Закрыта.
  1. Gaunt
    Регистрация:
    14.06.12
    Сообщения:
    14.743
    Благодарности:
    10.104

    Gaunt

    Живу здесь

    Gaunt

    Живу здесь

    Регистрация:
    14.06.12
    Сообщения:
    14.743
    Благодарности:
    10.104
    Адрес:
    Стерлитамак Уфимской Губернии
    Как страничка в браузере.
    И крутилка, аля печка Жигули, встроенная в розетку.

    Серьезно, дисплей, при наличии веб морды и айпи адреса - задача второстепенная. Что мешает сделать симпатичный веб интерфейс?
     
  2. СлесарьC
    Регистрация:
    14.10.12
    Сообщения:
    2.373
    Благодарности:
    828

    СлесарьC

    Живу здесь

    СлесарьC

    Живу здесь

    Регистрация:
    14.10.12
    Сообщения:
    2.373
    Благодарности:
    828
    Адрес:
    Москва
    Причем бесплатно, на народных началах...
     
  3. dobrinia
    Регистрация:
    27.12.13
    Сообщения:
    4.445
    Благодарности:
    2.648

    dobrinia

    Живу здесь

    dobrinia

    Живу здесь

    Регистрация:
    27.12.13
    Сообщения:
    4.445
    Благодарности:
    2.648
    Адрес:
    Минск
    Я в вебе шарю (своя компания, занимаюсь созданием сайтов).
    Так что сделать отличный адаптивный интерфейс не проблема вообще. И занимать памяти копейки будет...
     
  4. СлесарьC
    Регистрация:
    14.10.12
    Сообщения:
    2.373
    Благодарности:
    828

    СлесарьC

    Живу здесь

    СлесарьC

    Живу здесь

    Регистрация:
    14.10.12
    Сообщения:
    2.373
    Благодарности:
    828
    Адрес:
    Москва
    Занимать память и проц. будет та операционная система на базе которой будет работать веб интерфейс. Не стоит забывать что те сайты которые вы создаете скорее всего крутятся на базе PHP движков, а эти движки в свою очередь крутятся на базе определенной операционной системы. Что в контексте МК может быть совсем неприемлемо.

    Лично я делаю веб интерфейсы наплевав на мировые тенденции. Раньше под Виндовс делал 100% динамический веб сервер ООП на C+, теперь перенес те методы на МК но упростив до процедурного программирования на С, уже без ОС, на базе специального стека.
    Работает очень экономично и очень быстро, но создание своего обособленного интерфейса обходится очень дорого.
     
  5. dobrinia
    Регистрация:
    27.12.13
    Сообщения:
    4.445
    Благодарности:
    2.648

    dobrinia

    Живу здесь

    dobrinia

    Живу здесь

    Регистрация:
    27.12.13
    Сообщения:
    4.445
    Благодарности:
    2.648
    Адрес:
    Минск
    @СлесарьC, я вкурсе на чем крутится сайт итп, красивый интерфес можно сделать даже без картинок...или грузить картинки с иного места, ну это байка другой истории, давайте выбирать экран...
     
  6. СлесарьC
    Регистрация:
    14.10.12
    Сообщения:
    2.373
    Благодарности:
    828

    СлесарьC

    Живу здесь

    СлесарьC

    Живу здесь

    Регистрация:
    14.10.12
    Сообщения:
    2.373
    Благодарности:
    828
    Адрес:
    Москва
    Не знаете... На чем крутятся сайты очень глубоко сокрыто от разработчиков сайтов, по этому такое легкомысленное пожелание делать простому контроллеру веб интерфейс...
    Не стоит забывать, контроллер теплового насоса, это уровень разработки просто помигать лампочками и покрутить моторчиками и для этой цели вешать мощный контроллер как-то не очень рационально...
    Стоимость разработки контроллера просто не будет соответствовать стоимости ТН.
     
  7. СлесарьC
    Регистрация:
    14.10.12
    Сообщения:
    2.373
    Благодарности:
    828

    СлесарьC

    Живу здесь

    СлесарьC

    Живу здесь

    Регистрация:
    14.10.12
    Сообщения:
    2.373
    Благодарности:
    828
    Адрес:
    Москва
    Жесть, форум не принимает сочетание букв - C плюс плюс. - С+.
     
  8. Pav2000
    Регистрация:
    01.03.09
    Сообщения:
    1.018
    Благодарности:
    2.705

    Pav2000

    Живу здесь

    Pav2000

    Живу здесь

    Регистрация:
    01.03.09
    Сообщения:
    1.018
    Благодарности:
    2.705
    Адрес:
    Москва
    Тут у нас все не плохо выбранные датчики DS18b20 имеют отличное разрешение (0.06) и точность (0.5) Если купить все в одной партии (я уже заказываю 10 герметичных) + калибровка (есть дешевые ртутные термометры с точностью 0.1) то можно добиться точности 0.2 - 0.3 градуса.

    Великолепно, сразу видно руку профессионала. Мне после таких картинок стыдно за свои -)
    Снимаю шляпу :hello:
    Надеюсь что Вы примкнете к "партии дисплеев nextion"
    А то я самостоятельно нарисую горазда хуже.

    ИХМО реализовывать "умный дом" на одном контроллере я считаю неверно. Сейчас электроника стоит копейки, самое дорогое софт. Запихнуть в один контроллер 2-5 устройств и потом иметь проблемы с отладкой смысл. Я за клинет-серверную архитектуру. Каждое устройство самодостаточно (контроль и управление есть) + открытый протокол взаимодействия с сервером. Сервер отдельное устройство которое только выводит инфо. Все это можно сделать через web.
    У меня сейчас уже есть как минимум три таких устройства
    - 2 шт "контроль влажности в подвале " они самодостаточны и вещают в эфир инфо пакеты (nrf24)
    - 1 шт. дистанционный термометр с батарейным питанием (1 батарейки хватает на 1 год). для изучения "проблемных областей дома"
    Получается очень гибкая настраиваемая система.
    По этому выбираемый дисплей только для ТН. Будет большой дисплей умного дома со страницей ТН маленький дисплей переедет в подвал к ТН.
    ТУТ главное трудоемкость и надежность объединения.
    А если контроллер в вашем варианте сломается? все перестанет работать
    Это рассуждения о том куда далее развивать контроллер ТН

    Тогда лучше wifi и веб - что будет реализовано.
    Андройд планшет это универсальное устройство и удобство пользования (конкретным функционалом) страдает. В прошлом году я жене купил самый навороченный автомобильный навигатор. Как оказалось это андройд планшет + Новител так вот пользоваться не удобно, везде лезут уши Андройда.

    Я понял БОЛЬШИНСТВО за дисплей типа 20х4.
    Так как дисплей дополнительная опция то будет ТРИ варианта (определяется ключами компиляции)
    - nixton 4.3 - я ищу "рисовальщика" под дисплей
    - 20x4 - обеспечу совместимость как минимум, если будет время напишу код. НАДО определится
    с органами управления - предлагаю энкодер с кнопкой. Контроллер по любому 3.3 вольта - сопряжение? может по i2c?
    - отсутствие дисплея.
    Как следствие на контроллере будет обязательно один светодиод
    не горит - ТН выключен
    горит - ТН включен
    мигает - ТН остановлен по ошибке
    Я думаю такое решение всех устроит.

    Почти все это сейчас реализуется. Но с важными замечаниями.
    - доступа к массивам памяти не будет - будут классы и только через их методы вы можете работать. Это увеличивает надежность кода и позволяет уменьшить число логических ошибок.
    - в моем понимании модуль - программный объект с ЗАРАНЕЕ описным интерфейсом взаимодействия. Я не готов разрабатывать этот интерфейс. Будет либо условная компиляция по дифайнам или виртуальные методы и их подмена под конкретный модуль
    - сейчас я закладываю все структуры на максимальное число датчиков и исполнительных устройств (объединение множеств конфигураций). и у каждого объекта есть признак наличия в конфигурации для которой сгенерирован код.

    Все таки это микроконтроллер с ограниченными ресурсами, я сейчас думаю где все это хранить - в памяти или ка карте. У каждого решения есть и + и -.
    И для понимания как это работает контроллер шлет последовательность байтов в контроллер сети (это понятно - это код страницы), но когда надо вывести переименую - выполняется программный код результат переводится в строку и запихивается в контроллер сети и далее продолжается посылка кода страницы. Т. е. страница режется на многочисленные КУСКИ. Обычно применяется смешанный метод часть страницы в константах (файлах) часть страницы в программном коде. Все это менять одно мученье и код почти не читаемый.
    Есть два метода решения проблемы
    - резать страницу на куски и хранить каждый кусок отдельно в виде файла или константы. Большая трудоемкость и большие проблемы с изменением страниц
    - сделать макроязык - в коде страницы вместо переменных ставятся операторы языка например #TOUT# и контроллер при выдачи последовательности в порт подменяет операторы языка вычисленными значениями - в примере забортной температурой. В последнем своем проекте я использовал 2 подход (правда это был не веб а текстовый отчет но суть одна)

    Отлично есть ресурсы для написания интерфейса, Мне код не писать тем более в вебе я полный профан. Предлагаю на следующей неделе приступить. Тем более есть уже конкретная задача - вывод конфигурации ТН - на страничке смотрим под чего настроена прошивка.
     
    Последнее редактирование: 01.04.16
  9. Gaunt
    Регистрация:
    14.06.12
    Сообщения:
    14.743
    Благодарности:
    10.104

    Gaunt

    Живу здесь

    Gaunt

    Живу здесь

    Регистрация:
    14.06.12
    Сообщения:
    14.743
    Благодарности:
    10.104
    Адрес:
    Стерлитамак Уфимской Губернии
    Выкинул - поставил новый. Если среди зимы, а именно 1 января, к обеду...Чего-нибудь накроется - никакие рюшечки не помогут.
    Свою задачу вижу в следующем:
    1 Настроенная через веб запчасть,
    2 с прикрученными датчиками
    3 Заливается компаундом
    4 И кнопка вкл/выкл
    5 Кнопка больше/меньше
    6 Светодиод - индикатор.

    ТН - достаточно агрессивная среда для любой электроники. Как и место ТН - там. где люди жить не в состоянии. Размещать в сухом и теплом месте не планирую.
    Напротив, свой периметр, планирую держать в тепле и на диване.
     
  10. kir102
    Регистрация:
    08.11.13
    Сообщения:
    275
    Благодарности:
    179

    kir102

    Живу здесь

    kir102

    Живу здесь

    Регистрация:
    08.11.13
    Сообщения:
    275
    Благодарности:
    179
    Адрес:
    Минск
    ради интереса, посмотрите как это реализовано в arduino mega server (ссылку давал выше). если своими словами, то: пишем html странички и закидываем их на флешку в ethernet плате. этот файл содержит в себе ajax запросы, которые будут обрабатываться браузером. браузер будет генерировать каждую секунду (время регулируется) запрос на ардуину с просьбой выдать значение конкретной переменной. полученное значение будет подставлятся в html странице автоматически. т. е. оснавная нагрузка будет на браузере. ардуина просто слушает этот запрос и если находит переменную Х, то выдает ее значение, если Y - то ее. если нет переменных (первое обращение браузера), то выдает с флешки index. html.
    вот пример html я писал для датчика DHT22:

    <!DOCTYPE html>
    <html lang-"ru">
    <head>
    <meta charset="UTF-8" />
    <title>Arduino Web Page</title>
    <script type="text/javascript">

    function GetDHT22State()
    {
    nocache = "&nocache=" + Math. random() * 1000000;
    var request = new XMLHttpRequest();

    request. onreadystatechange = function()
    {
    if (request.readyState = 4)
    {
    if (request.status = 200)
    {
    if (request.responseText != null)
    {
    document. getElementById("switch_txt").innerHTML = request. responseText;
    }
    }
    }
    }

    request. open("GET", "ajax_DHT22" + nocache, true);
    request. send (null);
    setTimeout('GetDHT22State()', 1000);
    }

    </script>
    </head>
    <body onload="GetDHT22State()">
    <h1>Arduino DHT22 Status</h1>
    <p id="switch_txt">DHT22 state: Not requested...</p>
    </body>
    </html>

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

    а вот кусок кода в ардуине:

    /-
    EthernetClient client = server. available(); / try to get client

    if (client)
    { / got client?
    boolean currentLineIsBlank = true;
    while (client.connected()
    {
    if (client.available()
    {
    / client data available to read
    char c = client. read(); / read 1 byte (character) from client
    HTTP_req += c; / save the HTTP request 1 char at a time

    / last line of client request is blank and ends with \n
    / respond to client only after last line received
    if (c = '\n' && currentLineIsBlank)
    {
    / send a standard http response header
    client. println("HTTP/1.1 200 OK");
    client. println("Content-Type: text/html");
    client. println("Connection: keep-alive");
    client. println();

    / AJAX request for switch state
    if (HTTP_req.indexOf("ajax_DHT22") > -1)
    {
    / read switch state and send appropriate paragraph text
    GetDHT22State (client);
    }
    else
    { / HTTP request for web page
    / send web page - contains JavaScript with AJAX calls

    webFile = SD. open("index.htm"); / open web page file
    if (webFile)
    {
    while (webFile.available()
    {
    client. write (webFile.read(); / send web page to client
    }
    webFile. close();
    connection_count = connection_count +1;
    }
    }

    / display received HTTP request on serial port
    Serial. print (HTTP_req);
    HTTP_req = "; / finished with request, empty string

    break;
    }

    / every line of text received from the client ends with \r\n
    if (c = '\n') {
    / last character on line of received text
    / starting new line with next character read
    currentLineIsBlank = true;
    }
    else if (c != '\r') {
    / a text character was received from client
    currentLineIsBlank = false;
    }
    } / end if (client.available()
    } / end while (client.connected()
    delay (1); / give the web browser time to receive the data

    client. stop(); / close the connection
    } / end if (client)
    }

    void GetDHT22State (EthernetClient cl)
    {

    cl. print("Temperature: ");
    cl. print (t);
    cl. println(" *C");

    cl. print("Humidity: ");
    cl. print (h);
    cl. println(" %\t");

    cl. print("Connections: ");
    cl. print (connection_count);
    }
     

    Вложения:

    Последнее редактирование: 01.04.16
  11. 707
    Регистрация:
    22.02.11
    Сообщения:
    347
    Благодарности:
    255

    707

    Живу здесь

    707

    Живу здесь

    Регистрация:
    22.02.11
    Сообщения:
    347
    Благодарности:
    255
    Адрес:
    Екатеринбург
    Что можно сделать с ТН удаленно? поменять уставку, ВСЁ.
    все остальные действия подразумевают присутствие оператора возле установки
    (по опыту общения с чиллерами на карел с вэб картой, заходишь на айпи, видишь все в табличке, кроме уставки ничего изменить не можешь и наверно это правильно)
     
  12. kir102
    Регистрация:
    08.11.13
    Сообщения:
    275
    Благодарности:
    179

    kir102

    Живу здесь

    kir102

    Живу здесь

    Регистрация:
    08.11.13
    Сообщения:
    275
    Благодарности:
    179
    Адрес:
    Минск
    а какие еще действия требуются? ну вот реально - какие?

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

    т. е. в принципе минимум действий.

    другое дело, что мы создаем холодильник с нуля. и для этого делаем несколько крутёлок в нем, которые будем использовать для отладки алгоритмов работы. в процессе отладки нужно будет смотреть за всеми параметрами и менять несколько коэфициентов в уравнениях, описывающих работу этих алгоритмов. находится рядом с ТН в эти моменты - имхо в этом нет нужды, все данные снимаются датчиками. т. е. присутствие на месте ничего не добавит. крутить ручками там тоже нечего - все крутится электроникой.
     
  13. dobrinia
    Регистрация:
    27.12.13
    Сообщения:
    4.445
    Благодарности:
    2.648

    dobrinia

    Живу здесь

    dobrinia

    Живу здесь

    Регистрация:
    27.12.13
    Сообщения:
    4.445
    Благодарности:
    2.648
    Адрес:
    Минск
    Да супер. Если кому надо -> докупил большой экран -> перекомпилировал с ключем и ура.
    По шине давайте i2c для универсальности, вполне отлично сэкономим выводы и выход на дисплей будет универсальным.
    Отлично, веб я беру на себя, если никто не против...
    Последовательность такая: Рисуем картинку как выглядеть страница должна => когда всем нравится я верстаю. Думаю нарисовать сможет @Sheeny а я сверстаю что б страница занимала мало места и хорош выглядела...
    Давайте начнем с вывода конфигурации ТН? Для этого надо:
    1) Написать для @Sheeny какие параметры надо выводить
    2) Он нарисует
    3) Я сверстаю и оценим способности нашей команды !

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

    А вот и @kir102 ответил готовым примером решения проблемы. Работать будет очень быстро!
     
  14. Gaunt
    Регистрация:
    14.06.12
    Сообщения:
    14.743
    Благодарности:
    10.104

    Gaunt

    Живу здесь

    Gaunt

    Живу здесь

    Регистрация:
    14.06.12
    Сообщения:
    14.743
    Благодарности:
    10.104
    Адрес:
    Стерлитамак Уфимской Губернии
    Ключевые слова...
    Имея конденсатор, массой более 120 тонн...Попробуй настроить кучу переменных за раз.
    Сейчас, весна и день уже длинный, в полный рост встала проблема регулировки ТН.
    Днем - температура воздуха поднимается на градус-полтора...
    Ночью - не стынет.
    Убавить сильно не могу, ибо капилярка...
    Насос= испаритель тоже практически на минимуме...

    И так будет у каждого, если пытаться залезть в переменную объемную производительность...
     
  15. Pav2000
    Регистрация:
    01.03.09
    Сообщения:
    1.018
    Благодарности:
    2.705

    Pav2000

    Живу здесь

    Pav2000

    Живу здесь

    Регистрация:
    01.03.09
    Сообщения:
    1.018
    Благодарности:
    2.705
    Адрес:
    Москва
    Очень схоже с моим вариантом №2. Но горазда лучше. На ардуино не надо делать синтаксического разбора. Только функции выдачи значений. Код проще и быстрее выполнятся будет.
    Короче принимаю и сделаю именно так. Вот он коллективный разум -)
    Получается очень гибко.
    Вопрос по вводу данных (числа строки, чекбоксы)
     
Статус темы:
Закрыта.