Умный дом (Mega2560+SIM800L+TFT+DS3231+Keyes+датчики температуры, влажности, давления)

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

dr.lmg пишет:
На 500 Вт тэны реле 20А? Хмм.. серьезный подход. А если у меня нагрузка 2кВт, то реле надо на 100А брать? Не смешно.

Тогда радиатор рассчитывать. Ну как вариант кто мешает собрать твердотельное реле самостоятельно?

Тут вот внутренности FOTEK показаны. http://3dtoday.ru/blogs/eta4ever/fans-potentential/

Я почемуто всегда думал что в них стоит тиристор, а оказывается высоковольтный MOSFET.

Просто в omron202 как раз колассическая схема с оптопарой и тиристором.

P.S. Хотя вот тут http://3dtoday.ru/blogs/deviator2x/solid-state-relay-and-heat-table/ ниже в комментах пишут и фотки выкладывают что с тиристором. Да надо тему поизучать.

 

 

AlexArGC
AlexArGC аватар
Offline
Зарегистрирован: 18.11.2016

dr.lmg пишет:
На 500 Вт тэны реле 20А? Хмм.. серьезный подход. А если у меня нагрузка 2кВт, то реле надо на 100А брать? Не смешно.
Память плохая, 40А стоят... Почитайте теорию про ТТР (гугл много познавательных статей даёт) все станет ясно.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

С фотеком вопрос закрыт :)

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Получил с чипадипа SSR реле. Подключил на нагрузку 2,3кВт. За час без радиатора реле нагрелось до 87 градусов (задняя металлическая платформа, само реле едва теплое).
В даташите черным по белому написано: при токе свыше 10А использовать радиатор, при токе свыше 80А использовать радиатор с вентилятором или водяным охлаждением. 2,3 кВт это 10,5 А.
У меня токи 5-7А максимум, при чем обычные, не реактивные. Так что реле можно смело использовать и без радиатора. Поставлю их на медную шину, в качестве теплоотвода будет заглаза. Как-то так. Выбором доволен.

obuhanoe
Offline
Зарегистрирован: 18.05.2016

Напомните пожалуйста, что за нагрузка у Вас в 2,3 кВт?

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

2,3 кВт это просто для теста я подключил обычный нагреватель.
А реле будут управлять тоже нагревателями от 0,5 до 1,5 кВт.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Подключил SSR реле. В качестве теплоотвода взял алюминиевую шину толщиной 6 мм, шириной 80мм. В ширину шкафа получилось 7 реле. В принципе, мне больше пока и не надо, 7-е осталось не задействовано.
На шину прицепил датчик температуры, в коде прописал при нагреве пластины выше 70 градусов реле отключатся. Вряд ли такая температура может получиться, но автоматизировать - так автоматизировать.
Максимальная нагрузка на реле у меня только на одном -это как раз 2,3 кВт водонагреватель на 100л. За три часа нагрева от 20 до 90 градусов шина с реле нагрелась до темп +45 градусов.

Заодно переписал и оптимизировал код для работы с дисплеем. Устранил ошибки, которые слал дисплей и в результате вызывал зависание обмена. Изменил скорость передачи данных между GSM модулем и контроллером.
Добавил несколько дополнительных предустановленных температурных режимов.
Подвисонов не стало, обмен между всеми модулями работает как часы.
Как нибудь сниму ролик, как работает контроллер с дисплеем и командами по смс.

Теперь можно приступать к организации автоматического полива :)

alexbee
Offline
Зарегистрирован: 13.03.2018

Неделю шарюсь в инете по поводу получения текста и значения с nextion на ардуину и все безрезультатно. Возможно вы подскажете в чем проблема то, видел вы с этим сталкивались... 

    int  value=myNextion.getComponentValue("page0.n0");
    Serial.println(value);

Вот как я пытаюсь получить значение, по итому имею -1 в порте...

 
alexbee
Offline
Зарегистрирован: 13.03.2018

Неделю шарюсь в инете по поводу получения текста и значения с nextion на ардуину и все безрезультатно. Возможно вы подскажете в чем проблема то, видел вы с этим сталкивались... 

    int  value=myNextion.getComponentValue("page0.n0");
    Serial.println(value);

Вот как я пытаюсь получить значение, по итому имею -1 в порте...

 

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Неправильно делаете.
Что такое n0?

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Приложите скрин свойств данного поля из nextion editor.

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Предполагаю (т.к. не знаю, что у вас там в дисплее), что код должен выглядеть так:

int value=myNextion.getComponentValue("n0.val");
Serial.println(value)
Где n0 - параметр на странице, val -значение этого параметра.

alexbee
Offline
Зарегистрирован: 13.03.2018

Добрый день!
Извиняюсь за долгий ответ.
 
Вот мой текст в компеляторе:

 
#include <SoftwareSerial.h>
#include <Nextion.h>
 
SoftwareSerial nextion(2, 3);
 
Nextion myNextion(nextion, 9600); 
void setup() {
  Serial.begin(9600);
  myNextion.init();
 
}
 
void loop() {
 int n = myNextion.getComponentValue("n0");
  Serial.print(n);
  delay(1000);
}

На дисплее Nextion он просто:

Кнопка с кодом:
n0.val=n0.val+1
get n0.val

 

И при компиляции и поключении ардуино к дисплею, выдает в порте -1. (без дисплея выдает тоже самое)...
 
dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

А кроме этого кода на дисплей какая-то информация отправляется? Или не понятно, работает дисплей с ардуино или нет?

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Замените строку " int n = myNextion.getComponentValue("n0");"
На строку " int n = myNextion.getComponentValue("n0.val");

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Посмотрел код внимательно..
Не понимаю, зачем loop () строка "Serial.print(n);"? Что вы этой строкой хотите сделать?
Так же непонятно зачем в дисплее строка "get n0.val"? Она не нужна.

alexbee
Offline
Зарегистрирован: 13.03.2018

Спасибо за быстрый ответ!
Передачу данных с ардуино на дисплей я проверял, все работает отлично!
Вот обратно получить- проблема.

Менял значения n0 на n0.val, все без изменений показывает -1,

print(n); - хочу увидеть что значение пришло на ардуино 

 

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

n0.val - так правильно.
В дисплее уберите из кнопки get n0.val
Запустите процедуру чтения в loop
myNextion.listen ();
Для вывода в монитор напишите Serial.print(String (n));

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

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

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Итак, на сегодня переработал скетч по управлению GSM модулем. Отказался от GSM библиотеки в пользу АТ команд. В целом библиотека во всем устраивала, но потребовалась оптимизация с точки зрения доступной свободной памяти. В результате выяснилось, что библиотека отъедает почти 20% оперативки.
Заодно почти избавился от глобальных переменных, по максимуму использую получение и передачу данных через функции и массивы.

Так же отказался от модуля SIM 900 в пользу SIM800 (с него начинал, но потом перешел на сим900, т.к. модуль имел стабилизацию по питанию).
Поводом же послужило то,что 900 модуль не умеет складывать смс, размер которых больше 160 символов.

На дисплей добавил передачу уровня сигнала GSM, т.к. связь не всегда устойчивая.
Добавил контроль активности GSM модуля по пину DTR, и контроль входящего звонка по пину RING.

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

Так же на дисплее организован функционал постановки на охрану с задержкой 1 мин и выключение охраны по вводу пароля.

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

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