Skip to content

lan143/aqua_controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Аквариумный контроллер

В этом проекте представлены исходные коды прошивки для контроллера ESP-32, позволяющие организовать контроллер управления аквариумным оборудованием. Функционал:

  • Возможность управления 4-мя нагрузками (напряжения 220 вольт и ниже) при подключении блока из 4х реле к микроконтроллеру ESP-32
  • Каналы разделены по смыслу (освещение, обогрев, аэрация, фильтрация), каждый можно настроить в один из 3х режимов (всегда включен, всегда выключен, автоматическое управление)
  • Возможность настройки контроллера командами через Serial Port
  • Возможность настройки контроллера и просмотра текущего статуса через Web интерфейс
  • Автоматическая настройка и подстройка времени при подключении к сети WiFi имеющей доступ в интернет используя NTP протокол
  • Возможность подключения модуля часов реального времени к микроконтроллеру
  • Возможность подключения датчиков температуры воды и воздуха к микроконтроллеру
  • Возможность обновления настроек через внешний сервер а так же отправки статистики используя REST API

Сборка и настройка

Сборка прошивки а так же загрузка в микроконтроллер выполняется с помощью Arduino IDE. Для того, чтобы Arduino IDE смогла работать с микроконтроллером ESP-32 необходимо установить необходимые библиотеки: https://github.com/espressif/arduino-esp32 (инструкция на русском языке: https://habr.com/post/404685/)

После этого необходимо открыть файл aqua_controller.ino через Arduino IDE. Сборка и загрузка на плату выполняется стандартно.

Блок реле, датчики температуры подключаются к любым удобным для вас пинам на плате. Объявления используемых пинов находятся в файле defines.h, если пины не совпадают с вашими, необходимо внести изменения в этот файл перед сборкой прошивки. Модуль часов реального времени подключается к шине I2C.

Первый запуск

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

  • SSID: aqua-controller
  • Пароль: 1234567890

Вы можете подключиться к ней и перейдя по адресу http://192.168.4.1 попасть в Web интерфейс контроллера, и указать SSID и пароль от WiFi сети, к которой должен подключаться контроллер, а так же произвести другие настройки. Либо вы можете подключить плату через USB к компьютеру и через Serial Monitor произвести настройку подключения к WiFi командами. Команды будут описаны в отдельной секции.

Команды COM порта

На данный момент доступны следующие команды:

  • set ssid имя_сети - устанавливает название WiFi сети к которой будет осуществляться подключение в режиме клиента
  • set password пароль - устанавливает пароль который будет использоваться при подключении к WiFi сети
  • restart - перезагружает контроллер
  • reset - сбрасывает настройки WiFi по-умолчанию (включается режим точки доступа)

Внешний api

Контроллер может работать с внешним сервером по REST API. Настроить подключение к внешнему серверу можно в Web-интерфейсе. В нем необходимо указать базовый адрес api, токен который будет использоваться для авторизации и номер аквариума. Это необходимо для возможности собирать информацию в одном месте с нескольких контроллеров. Api должен реализовывать как минимум 2 метода:

  1. GET /aquariums/:id/settings - где :id - номер аквариума. Метод должен возвращать json объект с настройками для контроллера. Пример ответа:
{"heating": "1", "aeration": "3", "lighting": "1", "filtering": "1", "endLighting": "2100", "startLighting": "900", "maintainTemperature": "25"}

где:

  • heating - режим работы обогрева (1 - авто, 2 - всегда включен, 3 - всегда выключен)
  • aeration - режим работы аэрации (1 - авто, 2 - всегда включен, 3 - всегда выключен)
  • lighting - режим работы освещения (1 - авто, 2 - всегда включен, 3 - всегда выключен)
  • filtering - режим работы фильтрации (1 - авто, 2 - всегда включен, 3 - всегда выключен)
  • startLighting - время включения освещения при работы в автоматическом режиме. Представляет собой запись слитно часа и минут. Например если нужно включать свет в 10:30, значение будет выглядеть вот так: 1030.
  • endLighting - время отключения освещения при работе в автоматическом режиме. Представляет собой запись слитно часа и минут. Например если нужно выключать свет в 22:30, значение будет выглядеть вот так: 2230.
  • maintainTemperature - температура в градусах цельсия, которую будет пытаться поддерживать контроллер включая и выключая обогрев при необходимости (обогрев должен быть в автоматическом режиме)
  1. POST /aquariums/:id/stats - где :id - номер аквариума. Данные отправляются в теле HTTP запроса json кодированной строкой. Пример:
{"heating":"1", "aeration": "1", "lighting": "0", "filtering": "1", "maintainTemperature": "24", "outerTemperature": "17"}

где:

  • heating - включен ли сейчас обогрев (1 - да, 0 - нет)
  • aeration - включена ли сейчас аэрация (1 - да, 0 - нет)
  • lighting - включено ли сейчас освещение (1 - да, 0 - нет)
  • filtering - включена ли сейчас фильтрация (1 - да, 0 - нет)
  • maintainTemperature - температура воды в аквариуме в градусах Цельсия
  • outerTemperature - температура воздуха в градусах Цельсия

эти методы API вызываются раз в 5 минут.

Используемые модули

  • Dev-board ESP-32
  • Датчик температуры воды: DS18B20 с гидрозащитой
  • Датчик температуры воздуха: DHT22
  • Часы реального времени: DS3231
  • Блок реле на 4 канала с включением по низкому уровню сигнала

Используемые библиотеки

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

About

ПО контроллера для автоматизации оборудования в аквариуме.

Resources

License

Stars

Watchers

Forks

Packages

No packages published