Как я делал удаленное управление теплом в гараже.

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

Для обогрева своего гаража, я использую 2 "конвектора". Один конвектор включен постоянно на +5 градусов, для поддержания плюсовой температуры, второй "конвектор" включается по необходимости.


Раньше приходилось бегать, включать его, уходить домой, ждать час-два пока температура поднимется до комфортных +20, но это быстро надоело, одолела лень и я решил применить максимально бюджетный вариант удаленного включения на Arduino.


Что необходимо было купить:

Arduino nano: https://ru.aliexpress.com/item/Freeshipping-1PCS-Nano-3-0-co...

146 руб

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

Модуль ENC28J60: https://ru.aliexpress.com/item/2PCS-ENC28J60-Ethernet-LAN-Ne...

165 руб

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

Датчик температуры DHT22: https://ru.aliexpress.com/item/1pcs-DHT22-digital-temperatur...

151руб

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

Реле: https://ru.aliexpress.com/item/5PCS-LOY-1-Channel-5V-Relay-M...

40руб

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

Коротко о подключении всего этого барахла.


Модуль ENC28J60:

VCC к 5V

GND к GND

SCK к Pin 13

SO к Pin 12

ST к Pin 11

CS к Pin 10


Реле:

S к Pin 2

Vcc к 5V

GND к GND


Датчик температуры DHT22:

Vcc к 3.3V

GND к GND

DATA к Pin4

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

Здесь все понятно без схем, если не понятно, в интернете есть масса материала о том, как подключать эти модули. А вот готового скетча, я не нашел, да и искать было лень… Проще было найти скетч управления реле и скетч вывода данных с датчика, скрестить их и набросать страницу, чтоб ей было удобно управлять с телефона и обычного ПК.


Что из этого вышло:


#include "DHT.h"

#include <EEPROM.h>

#define DHTPIN 4

#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

#include <EtherCard.h>

static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 }; // MAC Address должен быть уникальным в локальной сети

static byte myip[] = { 192,168,1,222 }; // Постоянный IP адресс нашей страницы

byte Ethernet::buffer[1000];

BufferFiller bfill;

// Начальные данные

int LedPins[] = {

2,3,5,6,7,8,9};

int t=0;

int h=0;

boolean PinStatus[7];

const char http_OK[] PROGMEM =

"HTTP/1.0 200 OK\r\n"

"Content-Type: text/html\r\n"

"Pragma: no-cache\r\n\r\n"

"\r\n"

"<meta charset='UTF-8'>"

"<meta name='viewport' content='width=device-width, initial-scale=1.0'>"

"<meta http-equiv='refresh' content='10'/>";

const char http_Found[] PROGMEM =

"HTTP/1.0 302 Found\r\n"

"Location: /\r\n\r\n";

const char http_Unauthorized[] PROGMEM =

"HTTP/1.0 401 Unauthorized\r\n"

"Content-Type: text/html\r\n\r\n"

"<h1>401 Unauthorized</h1>";

// Подключаем Ethernet порт HR911105A и датчик DHT22

void setup () {

if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)

Serial.println( "Failed to access Ethernet controller");

ether.staticSetup(myip);

for(int i = 0; i <= 7; i++)

{

pinMode(LedPins[i],OUTPUT);

PinStatus[i]=EEPROM.read(i);

digitalWrite(LedPins[i],PinStatus[i]);

}

dht.begin();

}

// Получаем данные от DHT22

static void ReadDHT22()

{

h = dht.readHumidity();

t = dht.readTemperature();

}

// Оформление Web страницы

static word homePage() {

bfill = ether.tcpOffset();

bfill.emit_p(PSTR("$F"

"<title>Гараж</title>"

"<p style=\"text-align: center;\"><br />Конвектор: <br> <span style=\"font-size: 4em;\"><a href=\"?ArduinoPIN2=$F\">$F</a></span>"),

http_OK,

PinStatus[0]?PSTR("off"):PSTR("on"),

PinStatus[0]?PSTR("<font color=\"green\"><b>ON</b></font>"):PSTR("<font color=\"red\">OFF</font>"));

bfill.emit_p(PSTR(

"<br><br>Температура: <br> <span style=\"font-size: 4em;\">$D C</span> <br /><br />Влажность:<br> <span style=\"font-size: 4em;\"> $D %</span></p>"),t, h);

return bfill.position();

}

void loop () {

delay(1); // Задержка

word len = ether.packetReceive();

word pos = ether.packetLoop(len);

if (pos) // check if valid tcp data is received

{

ReadDHT22();

bfill = ether.tcpOffset();

char *data = (char *) Ethernet::buffer + pos;

if (strncmp("GET /", data, 5) != 0) {

bfill.emit_p(http_Unauthorized);

}

else {

data += 5;

if (data[0] == ' ') {

homePage();

}

else if (strncmp("?ArduinoPIN2=on ", data, 16) == 0) {

PinStatus[0] = true;

digitalWrite(LedPins[0],PinStatus[0]);

EEPROM.write(0,PinStatus[0]); // записываем в ячейку EEPROM №0, текущее состояние LedPins[0].

bfill.emit_p(http_Found);

}

else if (strncmp("?ArduinoPIN2=off ", data, 17) == 0) {

PinStatus[0] = false;

digitalWrite(LedPins[0],PinStatus[0]);

EEPROM.write(0,PinStatus[0]);

bfill.emit_p(http_Found);

}

else {

// Page not found

bfill.emit_p(http_Unauthorized);

}

}

ether.httpServerReply(bfill.position()); // send http response

}

}


Коротко о данном скетче:

В память ардуины (EEPROM) сохраняется информация о последнем положении кнопки реле, перебои со светом нам не страшны, положение кнопки всегда отражает реальное состояние реле, не будет такого, что на странице выводится OFF а на самом деле ON.


Далее подключаю сборку к локалке, для питания использую старую зарядку от мобильного телефона.


Вызываю страницу по IP адресу, который мы задали в начале скетча: http://192.168.1.222


Получаю страницу с данными:

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

Всё открывается, данные с датчика верные, реле на нажатие кнопки реагирует, положение запоминает.


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

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост
Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост
Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

Собрал все в корпус, закрепил модули термоклеем.

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

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

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

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

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

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

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

Вывел датчик DHT22 примерно на среднюю высоту стены, т.к. конвекторы сильно греют потолок, а пол помещения долго остается прохладным.


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

Провел интернет в гараж. Купил недорогую направленную Wi-Fi антенну, поставил её на карниз пока вот так, летом если дойдут руки и не будет лень сделаю нормальный кронштейн.

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

В гараже установил обычную точку доступа и настроил её как адаптер. Поймал сигнал от направленной антенны, которая без труда пробила стену гаража, поставил небольшой коммутатор и подключил к нему нашу систему.


Теперь гараж с домом у нас в одной сети и самое время настроить виртуальный сервер на домашнем роутере.


Прописываем порт который мы открываем например 7777, прописываем IP нашей системы 192.168.1.222, прописываем порт по которому будет доступна наша страница, для доступа из браузера порт 80.

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

При наличии статического IP адреса от провайдера, наша система теперь доступна откуда угодно по адресу http://нашip:порт


Если провайдер не предоставляет статический IP, можно сделать и другими способами, но для этого потребуется всегда включенный ПК в доме.


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

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

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

Как я делал удаленное управление теплом в гараже. Гараж, Мастерская, Arduino, Удаленный доступ, Скетч, Длиннопост

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


Спасибо за внимание. Если есть вопросы, готов ответить )

Arduino & Pi

1.4K постов20.6K подписчиков

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Вы смотрите срез комментариев. Показать все
16
Автор поста оценил этот комментарий

Деревянные стены... Электропитание... Точно так у моего знакомого машина сгорела. Розетку закоротило, искрила, искрила и пиздец! Дом в 10 метрах от гаража. Главное, рассказывал, вижу свет мигает, подумал - сосед что-то варит...

раскрыть ветку (19)
21
Автор поста оценил этот комментарий

Обработано огнебиозащитой, может поможет ) А вообще люди ведь как то в деревянных домах и срубах живут с розетками на стенах. Может у соседа проводка слабенькая была и не выдержала? Я сечение с запасом подбирал, когда делал проводку.

раскрыть ветку (5)
6
Автор поста оценил этот комментарий

Все равно усиль прокладкой асбест-металл. Конденсат из ямы, сырость, да и обработка не вечно защищает. Через несколько лет может выстрелить. А насчет деревянных домов - там именно живут. Проблема в том, что гараж практически без присмотра.

Впрочем, дело хозяйское, удачи! )

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Либо от распиздяйства хозяина, как в описанном мной случае. И ничему его пожар не научил: всё по-прежнему на соплях и через жопу.

Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

+1

СМСками можно ещё всей системой управлять. Хоть какой-то толк от этих пакетов СМС будет)

4
Автор поста оценил этот комментарий

Поддерживаю! Большие опасения вызывает это реле, а особенно клемник! Его надо убирать однозначно, и подпаивать провода прямо к плате.

раскрыть ветку (12)
2
Автор поста оценил этот комментарий

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

раскрыть ветку (11)
4
Автор поста оценил этот комментарий

Вот тебе реле качеством получше, с нормальным клемником и оптроном на борту. https://ru.aliexpress.com/item/1-5-VC-30A-250VAC-30VDC/32678632039.html?spm=2114.14010208.99999999.441.m1wbiP И запас по мощности лишним не будет, а у реле которое ты используешь при нагрузке порядка 2 кВт могут залипать контакты, т.е. реле будет клацать, а нагрузка оставаться постоянно включенной.

раскрыть ветку (7)
1
Автор поста оценил этот комментарий
Лучше поставить релюху которая как автомат выглядит леграновскую, а релюхой с платы уже управлять ей. Я так на даче умный дом делал.
раскрыть ветку (5)
Автор поста оценил этот комментарий
После такого комментария ты исключаешься из ЛЛ и теперь ждем пост от тебя! Сам интересуюсь умным домом, изучаю атмегу для этих целей, но пока не вижу практической пользы это этих приблуд.
раскрыть ветку (4)
Автор поста оценил этот комментарий

Ну умный дом это я сильно сказал. Главное что у меня зимний домик отапливается двумя обогревателями. Контроллер управляет ими по заданной программе + я могу дать команду на изменение по СМС. Зимой дом поддерживает температуру +5-10 градусов. Перед приездом (а ездим мы круглый год) дом разогревается до +23. Летом можно поставить кондиционер и сделать что б охлаждал :)

раскрыть ветку (3)
Автор поста оценил этот комментарий
Электрические обогреватели? Наверно не дешево выходит за зиму? Хотя явно дешевле чем греть всю зиму и удобнее чем размораживать дом с -20.
раскрыть ветку (2)
Автор поста оценил этот комментарий
Я посмотрю на счетчик как кончится зимний сезон. Это первая зима. Я думаю получится не более 5-6 тысяч рублей за зиму. Зато дом не перекашивант от перепадов температур. Плюс у нас кошка есть - ей не прикалывало приезжать в -10 и ждать пока дом протопится.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Так вот кто у вас заказчик. Я ее прекрасно понимаю, мы как то раз так и не смогли растопить дачу перед новым годом.
Автор поста оценил этот комментарий

Спасибо большое, закажу парочку.

2
Автор поста оценил этот комментарий

Дело говорят. Если система не находится постоянно на виду, то реле - фу-фу-фу! Либо любое из доступных SSR с запасом по мощности, либо (в идеале) - симисторная оптронная сборка.

Не вдаваясь в технику: реле врубается сразу при поступлении управляющего сигнала от контроллера, и ему по барабану, какое напряжение сейчас в фазном проводе, если импульс пришёл в момент максимума полуволны - будет некисло искрить, а если подключена серьёзная нагрузка - залипнет как делать нефиг. Симистор же откроется только в момент прохождения синусоиды через ноль; максимальная задержка включения - менее 0,02 сек, не критично для силовой аппаратуры от слова "совсем". Как следствие - искрить не будет, срок службы блока питания силового прибора, да и самой силовой установки ощутимо возрастёт. Да, они подороже, чем реле, но, блин, лучше один раз 500 рублей переплатить и дрыхнуть, не думая о последствиях.

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

SSR это и есть симистор + опторазвязка (часто с детектором нуля).

И симисторы *закрываются* при переходе через ноль, а не открываются.

Ни что не мешает открыть симистор в любой момент (>0), благодаря чему работают диммеры.


Но для нагревателя такой режим не имеет смысла, лучше регулировать пропуском целого количества полуволон или еще проще просто включая на определенное время.

Хотя думаю нагреватель ОПа и так имеет терморегулятор.

Автор поста оценил этот комментарий

Твердотельные реле хороши.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку