Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lan143/aqua_controller_esp8266
https://github.com/lan143/aqua_controller_esp8266
esp8266 esp8266-arduino
Last synced: 15 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/lan143/aqua_controller_esp8266
- Owner: lan143
- License: mit
- Created: 2019-01-06T21:29:29.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-01-28T19:45:57.000Z (17 days ago)
- Last Synced: 2025-01-28T20:32:45.795Z (17 days ago)
- Topics: esp8266, esp8266-arduino
- Language: C++
- Size: 41 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Аквариумный контроллер
======================В этом проекте представлены исходные коды прошивки для контроллера ESP-8266, позволяющие
организовать контроллер управления аквариумным оборудованием. Функционал:
* Возможность управления 4-мя нагрузками (напряжения 220 вольт и ниже) при подключении блока из 4х реле
к микроконтроллеру ESP-8266
* Каналы разделены по смыслу (освещение, обогрев, аэрация, фильтрация), каждый можно настроить
в один из 3х режимов (всегда включен, всегда выключен, автоматическое управление)
* Возможность настройки контроллера командами через Serial Port
* Возможность настройки контроллера и просмотра текущего статуса через Web интерфейс
* Автоматическая настройка и подстройка времени при подключении к сети WiFi имеющей доступ в интернет используя
NTP протокол
* Возможность подключения модуля часов реального времени к микроконтроллеру
* Возможность подключения датчиков температуры воды и воздуха к микроконтроллеру
* Возможность обновления настроек через внешний сервер а так же отправки статистики используя REST API
Сборка и настройка
---
Сборка прошивки а так же загрузка в микроконтроллер выполняется с помощью Arduino IDE.
Для того, чтобы Arduino IDE смогла работать с микроконтроллером ESP-8266 необходимо установить
необходимые библиотеки: https://github.com/esp8266/Arduino (инструкция на русском языке: https://habr.com/post/371853/)
После этого необходимо открыть файл aqua_controller_esp8266.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 - температура в градусах цельсия, которую будет пытаться поддерживать
контроллер включая и выключая обогрев при необходимости (обогрев должен быть в автоматическом режиме)
2. 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-8266 (NodeMCU v1.0)
* Датчик температуры воды: DS18B20 с гидрозащитой
* Датчик температуры воздуха: DHT22
* Часы реального времени: DS3231
* Блок реле на 4 канала с включением по низкому уровню сигнала
Используемые библиотеки
---
Перечисленные ниже библиотеки используются для сборки проекта. Если они не установлены
в вашей Arduino IDE, их необходимо установить, иначе сборка прошивки будет невозможна.
* https://github.com/bblanchon/ArduinoJson
* https://github.com/milesburton/Arduino-Temperature-Control-Library
* https://github.com/me-no-dev/EspAsyncTCP
* https://github.com/adafruit/DHT-sensor-library
* https://github.com/me-no-dev/ESPAsyncWebServer
* https://github.com/PaulStoffregen/OneWire
* https://github.com/adafruit/RTClib
* https://github.com/br3ttb/Arduino-PID-Library