Как мы делали удаленное управление конвектором в мастерской на Arduino

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

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

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

Далее мы делимся, как повторить нашу идею.

 

Что нам для этого необходимо:

  1. Arduino nano
  2. Модуль ENC28J60
  3. Датчик температуры DHT22
  4. Реле

Подключаем следующим образом:

Схема подключения

Модуль ENC28J60 к Arduino:

  • VCC к 5V ардуино
  • GND  к GND ардуино
  • SCK  к Pin 13 ардуино
  • SO  к Pin 12 ардуино
  • ST или SI к Pin 11 ардуино
  • CS  к Pin 10 ардуино

Реле к Arduino:

  • S к Pin 2 ардуино
  • Vcc к 5V ардуино
  • GND к GND ардуино

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

  • Vcc к 3.3V
  • GND к GND
  • DATA к Pin4

Тестируем на макетной плате

Для прошивки Arduino используем следующий скетч:

https://gist.github.com/Zaibatsuhmao/8701ba2aa4339b85ba643b7a345dee14

 

Логика скетча следующая:

  1. Скетч подключает библиотеки, формирует страницу;
  2. В память ардуины (EEPROM) сохраняется информация о последнем положении кнопки реле, положение кнопки всегда отражает реальное состояние реле, не будет такого, что на странице выводится OFF а на самом деле ON;
  3. Датчик DHT22 отправляет данные о текущей температуре помещения и влажности;
  4. Модуль ENC28J60 выводит данные с Arduino в локальную сеть.

 

Подключение и управление:

Далее подключаем сборку к локальной сети.

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

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

Проверяем доступность в локальной сети

Всё открывается, проверяем данные с датчика и работу реле. При нажатии кнопки "ON" или "OFF", реле должно щелкать, после выключения и включения питания от Arduino положение должно сохраняться.

Упаковываем всё это в какой нибудь корпус. Корпус можно сделать из какого-нибудь пластикового контейнера, или заказать на али типовой пластиковый корпус, еще можно купить распределительную коробку в магазине электро-товаров и упаковать в неё. Мы набросали корпус в 3D редакторе и распечатали его на 3D принтере.

Модель корпуса в формате STL: http://www.thingiverse.com/thing:2099299

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

Интернет в мастерскую приходит из направленной Wi-Fi антенны.

Антенну мы временно поставили на карниз, летом мы сделаем нормальный кронштейн

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

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

Прописываем порт который мы хотим открыть для внешнего доступа например 7777, прописываем IP нашей системы например 192.168.1.222, прописываем стандартный порт по Ethernet модуля 80.

Создаем виртуальный сервер на роутере

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

Если провайдер не предоставляет статический IP, можно сделать например через сервис: http://www.noip.com/.

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

Если необходима защита и аутентификация, вместо модуля ENC28J60 следует использовать к примеру Ethernet шилд с возможностью установки карт памяти.

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


Опубликовано: 8 февраля 2017 | Метки: , , ,

Комментариев: 0

Оставить комментарий