Чувак сделал удалённое управление конвектором
Для обогрева НЕ своего гаража, я использую 2 "конвектора". Один конвектор включен постоянно на +5 градусов, для поддержания плюсовой температуры, второй "конвектор" включается по необходимости, когда необходимо работать в гараже.
Раньше приходилось бегать, включать его, уходить домой, ждать час-два пока температура поднимется до комфортных +20, но это быстро надоело, одолела лень и я решил применить максимально бюджетный вариант удаленного включения на Arduino.
Что необходимо было купить:
Arduino nano:
*ссылка удалена* 146 руб
Модуль ENC28J60 165 руб
*изображение недоступно*
Датчик температуры DHT22 151 руб
Реле 40 руб
Коротко о подключении всего этого барахла.
Модуль 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
Здесь все понятно без схем, если не понятно, в интернете есть масса материала о том, как подключать эти модули. А вот готового скетча, я не нашел, да и искать было лень…
Проще было найти скетч управления реле и скетч вывода данных с датчика, скрестить их и набросать страницу, чтоб ей было удобно управлять с телефона и обычного ПК.
Что из этого вышло:
#include "DHT.h"
#include
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#include
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"
" "
" "
" ";
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"
" 401 Unauthorized ";
// Подключаем 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,OUTPUT);
PinStatus=EEPROM.read(i); digitalWrite(LedPins,PinStatus);
)
dht.begin();
)
// Получаем данные от DHT22
static void ReadDHT22()
(
h = dht.readHumidity();
t = dht.readTemperature();
)
// Оформление Web страницы
static word homePage() (
bfill = ether.tcpOffset();
bfill.emit_p(PSTR("$F"
" Гараж "
" Конвектор: $F"),
http_OK,
PinStatus[0?PSTR("off"):PSTR("on"),
PinStatus[0?PSTR("ON"):PSTR("OFF"));
bfill.emit_p(PSTR(
" Температура: $D C Влажность: $D % "),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 адресу, который мы задали в начале скетча: *ссылка удалена*
Получаю страницу с данными:
Всё открывается, данные с датчика верные, реле на нажатие кнопки реагирует, положение запоминает.
Далее нужен корпус. Можно заколхозить из какого-нибудь пластикового контейнера, или заказать на али типовой пластиковый корпус для подобного барахла, или купить распределительную коробку в электротоварах, но мне лень выходить из дома, поэтому, я по-быстрому накидал в солиде уродца и распечатал его на 3D принтере.
Собрал все в корпус, закрепил модули термоклеем.
Установил крышку, держится и без шурупов, можно было и не предусматривать отверстия под них.
Притащил все в гараж, подключил, проверил. Вывел двойную розетку т.к. одинарной под руками не было.
Вывел датчик DHT22 примерно на среднюю высоту стены, т.к. конвекторы сильно греют потолок, а пол помещения долго остается прохладным.
Датчик кстати оснащен и гигрометром, это очень хорошо, т.к. в мастерской я работаю с деревом, знать о текущей влажности воздуха очень полезно.
Провел интернет в гараж. Купил недорогую направленную Wi-Fi антенну, поставил её на карниз пока вот так, летом если дойдут руки и не будет лень сделаю нормальный кронштейн.
В гараже установил обычную точку доступа и настроил её как адаптер. Поймал сигнал от направленной антенны, которая без труда пробила стену гаража, поставил небольшой коммутатор и подключил к нему нашу систему.
Теперь гараж с домом у нас в одной сети и самое время настроить виртуальный сервер на домашнем роутере.
Прописываем порт который мы открываем например 1234, прописываем IP нашей системы 192.168.1.222, прописываем порт по которому будет доступна наша страница, для доступа из браузера порт 80.
При наличии статического IP адреса от провайдера, наша система теперь доступна откуда угодно по адресу *ссылка удалена*
Если провайдер не предоставляет статический IP, можно сделать и другими способами, но для этого потребуется всегда включенный ПК в доме.
У меня есть статика и зарегистрированный домен, к поддомену которого, я привязал свою систему и мне нет необходимости помнить свой IP для доступа к управлению.
Не знаю, как на андроиде, а на айфоне можно вывести закладку на экран, она будет доступна как приложение, тем самым мы имеем быстрый доступ к нашей системе без лишних телодвижений и рытья в закладках.
Далее в планах сделать автоматическую вытяжку при большой влажности или задымленности. Задымленность появляется, когда работаешь фрезером или, когда работает лазерный станок.
Ссылка на исходник
ОФФ! Двигатель на магнитах
Чем убрать водный налет с пластика?
Есть увлажнитель воздуха, через пару месяцев пользования появляется твердый налет типа известкового со ржавчиной. Лимонная кислота не справляется, если сильно ногтем соскребать - удаляется, щетки зубн...
Редуктор с манометром для пропанового баллона
ПРобовал кто? Рабочая тема, чтобы видеть когда газ пора заправлять для плитки?
Други, у кого Добродел стоит -помогите проголосовать
Сейчас идет региональная программа по благоустройству родников. Кому не сложно, можете проголосовать за этот родник? *ссылка удалена* Егорьевский р-н, д. Троица (за д.1)
AUX в машину
Совет требуется, в авто есть разъем 3,5 джек для AUX. Есть кабель При подсоединении Xiaomi Redmi 8Pro - телефон выводит звук через автомобильные колонки. При подсоединении этого же кабеля к Xiaomi Red...
Регулировка пластикового окна
Никогда не озадачивался регулировкой пластиковых окон. Сейчас на удаленке, при ветре сильном - задувает. Увидел такую байду: 2 цапфы (верхняя и средняя) цепляются только 2 мм за ответную часть, а нижн...
Подкиньте контакты бригады кто балконы отделывает
Банальная косметическая внутрянка на застекленном балконе без утепления. Хочется что-то приближенное к этому: В 50-70 уложиться можно?
Ребзя, какого диаметра газовый шланг взять?
Редуктор обычный на пропановый балон для газплиты Какого диаметра надо под него шланг газовый? *ссылка удалена*
Жена в Wildberries померила обувь, блин!
В ботинок на уровне шнуровки был вставлен согнутый гвоздь, поранила ногу
Что могло произойти с ТВ-розеткой?
1. В одной комнате стоит ТВ подключенный к ТВ-розетке 2. Во вторую комнату купили ТВ, также стоит ТВ-розетка Телевизор новый, во второй комнате работает 3-ий день. Утром по центральным каналам изображ...
Как сдать анализы температурящему человеку?
Позвонил сейчас в КДЛ, у них есть услуга сдачи анализов на дому. Они говорят, к ковидникам и температурящим не выезжают. Как человеку с температурой сдать анализы крови? И как на КТ легких попасть? Ко...
Что я сделал не так в этой жизни?
Решил я попробовать сделать картофель спиралью на мангале. Нарезал спецножом, насадил на шампур, смазал маслом и посыпал специями с солью. Угли после шашлыка не шибко жаркие. 20 минут над углями - сыр...
У центрального рынка ща опрос автолюбителей был
Журналист с телеканала Россия подходил к автовладельцам с вопросом: Как Вы относитесь к повышению стоимости платной парковки до 450 руб в час. И прилагаю фото состояния платных парковок в центре.
Бизнес на перепродаже квартир - флиппинг
Динамика реконструкции Новорязанки от декабря
Правую половину моста над р.Москвой должны запустить до НГ7 Кстати, кто знает, что вместо Касторамы в Котельниках сейчас?
Чудеса на АлиЭкспресс
1. Вчера в почтовом ящике обнаруживаю посылку с алиэкспресс. Открываю упаковку - защитная маска для лица. Адрес, ФИО, телефон - мои. Залезаю в историю своих заказов - нет такого заказа, просмотрел все...
На даче в лесу завелись дикие алабаи
Лесник сказал, чтобы не ходили на лыжах в лес. Фотоловушки зафиксировали стаю из 5 алабаев в диком лесу. Пожрали кабанов и косуль, некоторые охотничьи лайки пострадали. 3-х отстрелили охотники, при то...
Удивило отношение людей к раздельному сбору мусора
У дома есть такой пункт раздельного сбора мусора. Вчера вечером слышу на улице звук падающих бутылок в 11 вечера. Смотрю в окно и вижу, подъехала Камри и водитель, достав пакет, выкидывает отдельно ст...
Новорязанщикам! Динамика строительства моста на М5
Ролик месячной давности, но динамика на лицо. Я уже года полтора не езжу по М5, приходится объезжать по Егорьевке. Ждем с нетерпением завершение реконструкции.
ОПСОСЫ перестали подключать к безлимитному инету
Мобильные операторы перестали подключать к безлимитному интернету новых абонентов Операторы «Вымпелком», «Мегафон», МТС и Tele2 перестали подключать новых абонентов к безлимитному интернету. Об этом с...