Автор Тема: AquaController  (Прочитано 4036 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Doc

  • Партнер akva.by
  • Старожил
  • *
  • Сообщений: 332
  • Поблагодарили: 10
    • Просмотр профиля
    • Гомельский аквариумный сайт
AquaController
« : 26 Апрель 2017, 14:13:06 »
Уважаемые аквариумисты, хочется поделиться информацией и опытом по созданию умной "железяки" аквариумного контроллера. За последние несколько лет развитие одно платных компьютеров и им подобных шагнуло далеко в перед. Если ранее нужно было сидеть с паяльником травить лудить и вообще обладать не дюжими знаниями в области радиоэлектроники и программирования, то на текущий момент все это упростилось на столько что появилась возможность и желание сделать все самому. А посему, сею тему буду развивать и поддерживать в силу свободного времени и развития проекта...

Контроллер выполнен в виде нескольких функционально законченных блоков. Данный контроллер построен на платформе Arduino Nano на микроконтроллере ATmega328. Основной упор при разработке делался на дешевизну проекта, поэтому использовались простые комплектующие без сенсорных экранов и прочих излишеств. За исходный функционал брался контроллер Юсупова, а так же меню и экраны управления были взяты по примеру этого контроллера. За исключением собственного функционала.

Комплектующие:

Мозги:Arduino Nano ATmega328
Дисплей: LCD 2004
Блока часов реального времени (DS3231)
Силового блока: В зависимости от типа устройства могут применяться как 4-х канальные, так и 8-ми канальные блоки.
Блок связи ESP8266 модель ESP-07

Основные функции.

•   Часы. Индикация даты и времени.
•   Управление аквариумными нагрузками от 4 до 8 каналов.
•   До 10 ежедневных программ таймера.
•   До 10 ежечасных программ таймера. С диапазоном длительности работы до 60 минут.
•   До 10 секундных разовых таймеров. С диапазоном длительности работы от 1 до 255 секунд.
•   До 10 ШИМ таймеров на 3 канала. С диапазоном длительности работы от 1 до 255 секунд.
•   Поддержка до 8 цифровых датчиков температуры. на 3-х проводной шине.
•   Измерение температуры в пределах 16…35 градусов. Разрешение измерения 0.125°C. Возможность управления нагрузкой (обогревателем/охладителем) на любом канале выхода.
•   Аккумулятор для работы часов МК. Сохранение хода часов.
•   Автоматическое сохранение в энергонезависимой памяти всех настроек (кроме хода часов) при полном отключении питания и разряде аккумулятора.
•   Управление устройством через 2-х осевой джойстик.
•   Вывод информации на ЖК-дисплей 20*4 с минимальными сокращениями, интуитивно-понятный интерфейс.
•   Связь со смартфоном на ОС Android по Wi-Fi. Дополнительное программное обеспечение для быстрого программирования таймеров, термостата, синхронизации времени.
•   Удаленное управление устройством по средствам Wi-Fi в локальной сети (либо сети Internet при определенной настройка сетевого оборудования).
•   Самостоятельная синхронизация и корректировка даты и времени устройства при наличии доступа устройству в сеть Internet. Либо удаленная синхронизация через смартфон.
•   Функция слежения за отклонением показаний датчиков от среднего установленного значения со звуковым оповещением и индикацией аварийного датчика.
•   Отключение нагрузки (фильтра) на произвольном выходе при нажатии одной кнопки на 5-30 минут (временное отключение фильтра).

*оранжевым выделено что еще в процессе разработки

Текущее состояние проекта:
Собран полноценный девайс на котором будут обкатываться прошивки.
Заканчивается написание прошивки оставшегося функционала (возможно что-то придется вынести в удаленные настройки с Android так как место под скетч катастрофически не хватает). Закончено написание прошивки для модуля связи ESP8266-07. Изготовлены мат.плата для сборки устройства.

Пишется мобильный клиент.
Исходники тут: https://bitbucket.org/Vteselkin/aquacontroller_client
Протокол для использования тут: http://pcb.aquagomel.ru/index.php/doc/deviceinfo/protocol
Также пишется документация по работе с устройством его сборке и прошивке... Полная документация

Что из этого можно будет потрогать руками?
Практически все. Все материалы по плате, схема, разводки, gerber файлы я выложу после исправления ошибок.

Распиновка
D6 (10), D7(11),D8(12), D9(13), D10(14), D11(15), D12(16), D13(17) - каналы используются для силовой части (реле).

D5(9) - switchPin (кнопка джойстика)

D4( 8 ) - tonePin (канал спикера)

D3(7) - температурные датчики

A0(23), A1(24) - X,Y джойстика

A4(27),A5(28) - I2C шина, используется для подключения экрана и модуля часов.

TDX(31), RDX(30) - UART шина для обмена данных с WiFI модулем[/HIDE]

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

Оффлайн Doc

  • Партнер akva.by
  • Старожил
  • *
  • Сообщений: 332
  • Поблагодарили: 10
    • Просмотр профиля
    • Гомельский аквариумный сайт
Re: AquaController
« Ответ #1 : 26 Апрель 2017, 14:14:07 »
К сожалению нет возможности загрузить файлы на форум.
Вся программная часть лежит тут: https://1drv.ms/f/s!AtUQdsFO3hWIgYMbwP45VuvP0xUTUA

Белорусский клуб аквариумистов

Re: AquaController
« Ответ #1 : 26 Апрель 2017, 14:14:07 »

Оффлайн Doc

  • Партнер akva.by
  • Старожил
  • *
  • Сообщений: 332
  • Поблагодарили: 10
    • Просмотр профиля
    • Гомельский аквариумный сайт
Re: AquaController
« Ответ #2 : 11 Сентябрь 2017, 08:24:27 »
Залил свежие прошивки:
AquaControllerNano v1.2.3
-исправлена ошибка 1 канала и температурных датчиков.
-исправлена ошибка отключения WiFi
+добавлены режимы временного выключения канала на 5 и 30 мин. Работают при длительном удержании джойстика вверх или вниз.
AquaControllerNano_1_3_0_[led]
+добавлена поддержка работы с 3 драйверами LED. Ручное включение выключение каналов. 10 таймеров рассвета заказа, с максимальным временем задержки 250 сек. Данная прошивка работает только через сдвиговый регистр 74hc165.

Распиновка:
D6 (10), D9(13), D10(14) - каналы используемые LED

//Пин подключен к ST_CP (12) входу 74HC595 D11
byte latchPin = 11;
//Пин подключен к SH_CP (11) входу 74HC595 D12
byte clockPin = 12;
//Пин подключен к DS (14) входу 74HC595 D13
byte dataPin = 13;

D5(9) - switchPin (кнопка джойстика)

D4(8) - tonePin (канал спикера)

D3(7) - температурные датчики

A7(23), A6(24) - X,Y джойстика

A4(27),A5(28) - I2C шина, используется для подключения экрана и модуля часов.



Клиент пока еще в работе, к сожалению не успел еще его доделать, постараюсь дописать для теста хотя бы альфа версию в течении пары недель.

В связи с тем что изменился протокол передачи данных. Необходимо обязательно прошить кроме ардуины модуль связи ESP для него прошивка находится в архиве с прошивкой ардуины.
Документацию обновлю уже после того как закончу клиент. Так как запарился каждый раз ее менять.

Есть есть вопросы или предложения пишите...

Оффлайн Lando

  • Новичок
  • Сообщений: 27
  • Поблагодарили: 0
    • Просмотр профиля
Re: AquaController
« Ответ #3 : 23 Октябрь 2017, 17:02:14 »
Влезу немного с комментариями:
R10-R12 не нужны. Хватит R9. А так лишний ток течет через ногу.
Зачем у Вас на плате 18B20 в одном месте стоят? Идейно там должны быть коннекторы к датчикам. В том числе в воду. На плате один оставить можно.
Для нагревателя я бы делал один канал с ПИД регулированием. Остальные обычные рeле.
Ну и платформу я бы взял не Arduino а Raspberry Pi Zero W. Присмотритесь на будущее. Очень рекомендую.
Извините за критику :)

Оффлайн chim

  • Сергей
  • Ветеран
  • Сообщений: 1240
  • Поблагодарили: 96
    • Просмотр профиля
Re: AquaController
« Ответ #4 : 23 Октябрь 2017, 17:43:34 »
Цитировать
Если ранее нужно было сидеть с паяльником травить лудить и вообще обладать не дюжими знаниями в области радиоэлектроники и программирования, то на текущий момент все это упростилось на столько что появилась возможность и желание сделать все самому.

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

Оффлайн сашsasha

  • Постоялец
  • Сообщений: 101
  • Поблагодарили: 0
    • Просмотр профиля
Re: AquaController
« Ответ #5 : 24 Октябрь 2017, 00:51:26 »
 аквариумный  контроллер КЛАСССССССССССССС я собрал себе контроллер на базе ардуина мега 2560
« Последнее редактирование: 24 Октябрь 2017, 00:54:08 от сашsasha »

Оффлайн Doc

  • Партнер akva.by
  • Старожил
  • *
  • Сообщений: 332
  • Поблагодарили: 10
    • Просмотр профиля
    • Гомельский аквариумный сайт
Re: AquaController
« Ответ #6 : 26 Октябрь 2017, 07:55:21 »
Влезу немного с комментариями:
R10-R12 не нужны. Хватит R9. А так лишний ток течет через ногу.
Зачем у Вас на плате 18B20 в одном месте стоят? Идейно там должны быть коннекторы к датчикам. В том числе в воду. На плате один оставить можно.
Для нагревателя я бы делал один канал с ПИД регулированием. Остальные обычные рeле.
Ну и платформу я бы взял не Arduino а Raspberry Pi Zero W. Присмотритесь на будущее. Очень рекомендую.
Извините за критику :)
Есть разные подключения датчиков, есть через один резистор есть для каждого отдельный. Работает как в первом так и во втором случае отлично. В  моем случае во втором работает лучше чем в первом. В принципе никто не мешает вам не использовать R10-R12.  На плате ничего не стоит. Если вы внимательно посмотрите на 3D плату то там видны ножки. Для нагревателя не вижу смысла городить огород так как он все равно будет работать от температурных таймеров, идея была удешевить устройство поэтому бралась самая дешевая и распространенная платформа. Спасибо за критику.
Цитировать
Если ранее нужно было сидеть с паяльником травить лудить и вообще обладать не дюжими знаниями в области радиоэлектроники и программирования, то на текущий момент все это упростилось на столько что появилась возможность и желание сделать все самому.

С точностью до наоборот.  Раньше берёшь паяльник и вперёд.  Всё  было предельно просто.  Сейчас не схемы,  а бред умалишённого.  Всё  усложнилось настолько,  что  рыгать тошно. 
Берешь паяльник и вперед что? Каких схем вам сейчас не хватает? Даташитов мало? Что такого сложного в том что бы посидеть за вечер и почитать как это работает сейчас а не 10 лет назад?

Текущая версия
Версия 1.2.6:
-----------------------------------
-Исправлена ошибка в порядке включения таймеров
-Исправлены ошибки в температурных таймерах
-----------------------------------
Мобильный клиент.
[ Указанное вложение недоступно ]
Текущая версия: 1.2.5*
-------------------------------------------------------
-Исправлены некоторые ошибки (и добавлены новые)
-Добавлена служба мониторинга температуры. Работает в фоновом режиме собирает статистику по температурным датчикам. В
системном лотке можно узнать температуру первого датчика не запуская программу.
-Настроена правильный подсчет расхода электроэнергии (пока без учета температурных таймеров)
-Добавлена информация по температуре для всех датчиков. На вкладке температурных таймеров.
-Добавлены графики изменения температуры для первых двух датчиков. (Нажатие на иконки температуры с главного окна)
-Добавлена синхронизация времени контроллера с временем телефона (через контекстное меню).
-Добавлена настройка GMT часового пояса для правильной синхронизации времени.
-Добавлена информация о типе таймера включившего канал
-------------------------------------------------------
* - Версия альфа. Для тестирования и поиска ошибок.

-------------------------------------------------------
« Последнее редактирование: 26 Октябрь 2017, 07:59:36 от Doc »

Оффлайн Lando

  • Новичок
  • Сообщений: 27
  • Поблагодарили: 0
    • Просмотр профиля
Re: AquaController
« Ответ #7 : 26 Октябрь 2017, 10:40:19 »
Есть разные подключения датчиков, есть через один резистор есть для каждого отдельный. Работает как в первом так и во втором случае отлично. В  моем случае во втором работает лучше чем в первом. В принципе никто не мешает вам не использовать R10-R12.  На плате ничего не стоит. Если вы внимательно посмотрите на 3D плату то там видны ножки. Для нагревателя не вижу смысла городить огород так как он все равно будет работать от температурных таймеров, идея была удешевить устройство поэтому бралась самая дешевая и распространенная платформа. Спасибо за критику.
Да, уже посмотрел рендеринг. А что за коннектор ставите? Вообще треугольный это хорошее решение. Тяжело воткнуть неправильно.
С позиции удешевления тогда правильнее было бы не Уно ставить а сразу на плате контроллер разводить. Желательно на больше пинов. Чтобы сдвиговый регистр выкинуть. А лучшее вообще STM32 вроде stm32f103. Хотя в изучении она тяжелее. Но там можно FreeRTOS развернуть. В принципе у меня и на меге 328 получалось. Но для своего кода не так много места оставалось.

На нагревателе если реализовать плавную регулеровку мощности то можно в принципе нормальный термостат замутить. При желании с суточными колебаниями (нужно ли оно правда?  :)). Хотя наверно и на сдвиговом можно. Кстати для контроля нагревателя я бы пару датчиков температуры воды использовал. Вдруг один откажет. А так можно отловить ситуацию и пользователю написать -"Меняй датчик срочно". А пока на втором работать. Ну или просто нагреватель включить. Мы ж не знаем кому из 2-х верить. Чтобы он управлялся на это время механикой самого нагревателя. Ну и само собой на нагревателе поставить адекватную температуру отключения.

Я кстати подобные устройства последнее время вижу немного по другому. Модульность наше все. Цена не так важна(в разумных пределах). Ну будет оно стоить не 30 а 50 вы ж не тысячами будете их клепать. Зато позволит потом быстро реконфигурацию сделать с минимальными затратами. Как правило всеравно за время разработки раз 5 концепцию сменишь. А так мелкими блоками сконфигурировал как тебе надо, прошивку (в иделе только файлы конфигурации) поправил и заработало. Плюс если будут повторять другие люди им проще будет под свои нужды собрать. Ну а потом когда все заработает как надо можно уже и финальную версию собрать без мелких модулей. Но как показывает практика - это врядли.
« Последнее редактирование: 26 Октябрь 2017, 11:00:23 от Lando »

Оффлайн Doc

  • Партнер akva.by
  • Старожил
  • *
  • Сообщений: 332
  • Поблагодарили: 10
    • Просмотр профиля
    • Гомельский аквариумный сайт
Re: AquaController
« Ответ #8 : 26 Октябрь 2017, 12:39:54 »
Есть разные подключения датчиков, есть через один резистор есть для каждого отдельный. Работает как в первом так и во втором случае отлично. В  моем случае во втором работает лучше чем в первом. В принципе никто не мешает вам не использовать R10-R12.  На плате ничего не стоит. Если вы внимательно посмотрите на 3D плату то там видны ножки. Для нагревателя не вижу смысла городить огород так как он все равно будет работать от температурных таймеров, идея была удешевить устройство поэтому бралась самая дешевая и распространенная платформа. Спасибо за критику.
Да, уже посмотрел рендеринг. А что за коннектор ставите? Вообще треугольный это хорошее решение. Тяжело воткнуть неправильно.
С позиции удешевления тогда правильнее было бы не Уно ставить а сразу на плате контроллер разводить. Желательно на больше пинов. Чтобы сдвиговый регистр выкинуть. А лучшее вообще STM32 вроде stm32f103. Хотя в изучении она тяжелее. Но там можно FreeRTOS развернуть. В принципе у меня и на меге 328 получалось. Но для своего кода не так много места оставалось.

На нагревателе если реализовать плавную регулеровку мощности то можно в принципе нормальный термостат замутить. При желании с суточными колебаниями (нужно ли оно правда?  :)). Хотя наверно и на сдвиговом можно. Кстати для контроля нагревателя я бы пару датчиков температуры воды использовал. Вдруг один откажет. А так можно отловить ситуацию и пользователю написать -"Меняй датчик срочно". А пока на втором работать. Ну или просто нагреватель включить. Мы ж не знаем кому из 2-х верить. Чтобы он управлялся на это время механикой самого нагревателя. Ну и само собой на нагревателе поставить адекватную температуру отключения.

Я кстати подобные устройства последнее время вижу немного по другому. Модульность наше все. Цена не так важна(в разумных пределах). Ну будет оно стоить не 30 а 50 вы ж не тысячами будете их клепать. Зато позволит потом быстро реконфигурацию сделать с минимальными затратами. Как правило всеравно за время разработки раз 5 концепцию сменишь. А так мелкими блоками сконфигурировал как тебе надо, прошивку (в иделе только файлы конфигурации) поправил и заработало. Плюс если будут повторять другие люди им проще будет под свои нужды собрать. Ну а потом когда все заработает как надо можно уже и финальную версию собрать без мелких модулей. Но как показывает практика - это врядли.
Коннектор это обычные 2.54 пины, как на рендеринге. По желанию можно хоть припаять. Из практики устройств что бы что-то отвалилось в корпусе... такого у меня не было. По контроллеру. У меня используется не Uno. Разводить сразу на плате чревато тем что не все смогут повторить это у себя дома с дедушкиным 100 Ватным паяльником. Поэтому схема строиться именно на "воткнул и забыл". STM мне не интересна, в плане разработки более перспективна ESP. Все нагреватели идут уже со встроенным термостатом за исключении какой-нибудь очень специализированной линейки. Поэтому не вижу смысла городить отдельный термостат, тем более для функции плавного нагрева... Не понимаю зачем это вообще? Контроллер физически поддерживает до 8 датчиков, программно до 4. Поэтому думаю 4 датчика на одну банку более чем достаточно. Цена всегда важна, не в ущерб функциональности и надежности. Модульность это хорошо. По конечному пользователю нужен максимально функициональный аппарат за минимально возможные деньги, остальное от лукавого... Прошивку вы тоже будете мелкими блоками конфигурить? Держать зоопарк версий и их поддерживать может только большая команда разработчиков и тестировщиков. Тут хоть бы одну версию обкатать. Сдвиговый регистр был нужен для подключения светодиодных диммеров, хотел сделать функционал для светодиодной подсветки. Но по причине описанной выше, вряд ли в этой версии это будет возможно. Так как в одну прошивку уже не помещается, а делать разные версии нет желания. Проще взять другой кристалл.

Оффлайн Doc

  • Партнер akva.by
  • Старожил
  • *
  • Сообщений: 332
  • Поблагодарили: 10
    • Просмотр профиля
    • Гомельский аквариумный сайт
Re: AquaController
« Ответ #9 : 10 Июнь 2019, 10:00:21 »
Альтернативный источник скачивания: https://1drv.ms/f/s!AtUQdsFO3hWIgYMbwP45VuvP0xUTUA

Исходники прошивок
Все исходники доступны под MIT License по адресу: https://bitbucket.org/account/user/i...ch/projects/AQ

Последняя актуальная версия 1.3.7
- Исправлена ошибка секундного таймера.
- Исправлены ошибки обновления времени.
-Исправлен баг с отправкой данных через клиент для часовых таймеров.
+ Обновления модуля связи теперь можно производить удаленно:http://[IP-устройства]/update
+ Обновление времени через сервера NTP теперь работают с учетом временной зоны. Для этого необходимо в клиенте в настройках установить вашу временную зону, (0,1,2,3... - накидывает время в часах к времени UTC ) и сделать одно обновление времени через клиент далее контроллер сам будет обновлять время с учетом временной зоны (Конечно если включена настройка NTP в контроллере).
- Статистика по температуре более не будет собираться клиентом, а будет собираться на стороне контроллера (более точные данные которые будут доступны и удаленно)
- Все параметры контроллера доступны через REST API, для желающих написать свою web оболочку или любой иной клиент. Список URL:
Скрытый текст
http://[IP-устройства]/device.json
http://[IP-устройства]/canal.json
http://[IP-устройства]/timerday.json
http://[IP-устройства]/timerhour.json
http://[IP-устройства]/timersec.json
http://[IP-устройства]/timertemp.json
http://[IP-устройства]/tempsensor.json
http://[IP-устройства]/tempstats.json
http://[IP-устройства]/ph.json (пока еще в процессе)