 |
|
06.01.2017, 12:47
|
|
AquaController
Живу я тут
Регистрация: 31.07.2010
Адрес: Белоруссия, Гомель
Сообщений: 411
Поблагодарил(а) : 38
Поблагодарили 189 раз(а) в 85 сообщениях

06.01.2017, 12:47
Рейтинг:
(2 голосов - 5.00 средняя оценка)
Уважаемые аквариумисты, хочется поделиться информацией и опытом по созданию умной "железяки" аквариумного контроллера. За последние несколько лет развитие одно платных компьютеров и им подобных шагнуло далеко в перед. Если ранее нужно было сидеть с паяльником травить лудить и вообще обладать не дюжими знаниями в области радиоэлектроники и программирования, то на текущий момент все это упростилось на столько что появилась возможность и желание сделать все самому. А посему, сею тему буду развивать и поддерживать в силу свободного времени и развития проекта...
Основные экраны
Печатные платы
Рекомендуется использовать готовые платы для сборки контроллера и силовой части:
Контроллер выполнен в виде нескольких функционально законченных блоков. Данный контроллер построен на платформе Arduino Nano на микроконтроллере ATmega328. Основной упор при разработке делался на дешевизну проекта, поэтому использовались простые комплектующие без сенсорных экранов и прочих излишеств. За исходный функционал брался контроллер Юсупова, а так же меню и экраны управления были взяты по примеру этого контроллера. За исключением собственного функционала.
Принципиальная схема
Для тех кто хочет собрать на макетке.
Комплектующие:
Скрытый текст
Мозги:Arduino Nano ATmega328
Дисплей: LCD 2004
Блока часов реального времени (DS3231)
Силового блока:Применяются 8-ми канальные блоки реле (твердотельное), либо собственная силовая плата.
Блок связи ESP8266 модель ESP-07
Основные функции.
Скрытый текст
• Часы. Индикация даты и времени.
• Управление аквариумными нагрузками от 4 до 8 каналов.
• До 10 ежедневных программ таймера.
• До 10 ежечасных программ таймера. С диапазоном длительности работы до 60 минут.
• До 10 секундных разовых таймеров. С диапазоном длительности работы от 1 до 255 секунд.
• Поддержка до 8 цифровых датчиков температуры2. на 3-х проводной шине.
• Измерение температуры в пределах 16…35 градусов. Разрешение измерения 0.125°C. Возможность управления нагрузкой (обогревателем/охладителем) на любом канале выхода.
• Аккумулятор для работы часов МК. Сохранение хода часов.
• Автоматическое сохранение в энергонезависимой памяти всех настроек (кроме хода часов) при полном отключении питания и разряде аккумулятора.
• Управление устройством через 2-х осевой джойстик.
• Вывод информации на ЖК-дисплей 20*4 с минимальными сокращениями, интуитивно-понятный интерфейс.
• Связь со смартфоном на ОС Android по Wi-Fi. Дополнительное программное обеспечение для быстрого программирования таймеров, термостата, синхронизации времени.
• Удаленное управление устройством по средствам Wi-Fi в локальной сети (либо сети Internet при определенной настройка сетевого оборудования).
• Самостоятельная синхронизация и корректировка даты и времени устройства при наличии доступа устройству в сеть Internet. Либо удаленная синхронизация через смартфон.
• Функция слежения за отклонением показаний датчиков от среднего установленного значения со звуковым оповещением и индикацией аварийного датчика.
• Отключение нагрузки (фильтра) при нажатии одной кнопки на 5 или 30 минут (временное отключение фильтра).
• Функция слежения и оповещения за уровнем воды (перелив).
Мобильный клиент.
Скачать можно по ссылке:
Также пишется документация по работе с устройством его сборке и прошивке... Полная документация
Что из этого можно будет потрогать руками?
Практически все. Все материалы по плате, схема, разводки, 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) - температурные датчики
A7(26), A6(25) - X,Y джойстика
A4(27),A5(28) - I2C шина, используется для подключения экрана и модуля часов.
TDX(31), RDX(30) - UART шина для обмена данных с WiFI модулем
A0(19) - waterpin (подключение датчика уровня воды)
Для чего это?
Да на форуме много тем с различными проектами аквариумной автоматики, данное устройство не претендует на какую-то оригинальность, делалось под себя, и возможно кому-то понравится данный проект... На все вопросы с удовольствием отвечу, все советы с удовольствием выслушаю...
Альтернативный источник скачивания: https://1drv.ms/f/s!AtUQdsFO3hWIgYMbwP45VuvP0xUTUA
Исходники прошивок
Все исходники доступны под MIT License по адресу: https://bitbucket.org/account/user/i...ch/projects/AQ
Последняя актуальная версия 1.3.9
- Обновлен протокол передачи данных до версии 0.6 (см. документацию)
- Добавлены уведомления о протечке (низком уровне) воды на удаленном клиенте. По умолчанию выключены.
- Добавлена возможность автоматического обновления прошивок удаленно с сервера. Данная функция настраивается только через удаленный клиент.
По умолчанию выключена.
-Добавлено кеширования основных настроек на модуле связи для ускорения подключения клиента к контроллеру.
Готовые решения
Итоговый вариант.

Миниатюры
Вложения
 |
Schema_v1_1.zip (42.4 Кб, 1593 просмотров) |
 |
Elemets_list.zip (7.4 Кб, 1501 просмотров) |
 |
Schema_power_v1_1.zip (29.7 Кб, 1403 просмотров) |
 |
Power_gerber_v_1_1.zip (88.6 Кб, 1470 просмотров) |
 |
Power_PCB_v_1_1.zip (89.5 Кб, 1454 просмотров) |
 |
Elemets_list_power.zip.zip (7.5 Кб, 1413 просмотров) |
 |
PCB_gerber_v_1_3.zip (215.0 Кб, 1446 просмотров) |
 |
PCB_v_1_3.zip (1.17 Мб, 1480 просмотров) |
 |
AquaControllerNano-1.3.9-0.6.zip (31.1 Кб, 1216 просмотров) |
 |
AquaControllerNano-1.3.9-0.6-invers-logic.zip (31.1 Кб, 1184 просмотров) |
 |
AquaControllerESP-1.3.9-0.6.zip (261.7 Кб, 1278 просмотров) |
Последний раз редактировалось AquaGomel; 10.11.2019 в 00:58..
|
Просмотров: 147963
|
33 пользователей поблагодарили AquaGomel за данный пост:
|
AfricaNN52 (05.11.2021), AlexVOK (02.05.2017), Alserk-3 (28.05.2017), AndrewUh (05.04.2017), Arduino (07.01.2017), Asrok (11.01.2017), chack (28.03.2017), Danchik (20.07.2018), Denisios (17.10.2017), DjoserZee (13.03.2020), Floyd (25.02.2018), harn (08.06.2018), igor_tj21 (04.07.2020), imac2008 (18.01.2017), kolljj (06.01.2017), litlechina (04.05.2022), LVit (05.10.2018), mashenkaM (28.03.2017), myprog (06.01.2017), nickanya (06.01.2017), orthos (23.01.2017), Rulik (02.09.2017), Sem (06.01.2017), Star_POM (22.10.2017), Torin21 (24.03.2017), Vadim_VD (04.05.2017), Wayler (09.08.2017), xxxFeLiXxxx (18.04.2017), ya7sergey (28.03.2017), yarishNEW (18.01.2017), _Vadim (22.01.2018), Сергій М (06.01.2017), Юрий77 (06.01.2017) |
Реклама помогает развиваться |
|
24.03.2017, 14:34
|
#46
|
Живу я тут
Регистрация: 31.07.2010
Адрес: Белоруссия, Гомель
Сообщений: 411
Поблагодарил(а) : 38
Поблагодарили 189 раз(а) в 85 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
Обновил в шапке схему, саму схему печатной платы залью чуток попозже. Надо еще раз все проверить что бы не было конфуза опять (((...
|
|
|
24.03.2017, 15:49
|
#47
|
Бан за нарушения
Регистрация: 04.01.2009
Адрес: Полтава
Сообщений: 5,495
Поблагодарил(а) : 6,244
Поблагодарили 5,759 раз(а) в 2,265 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
AquaGomel, Я могу ошибаться, но зачем на каждый датчик температуры свой резистор? У меня один на все.
__________________ 
|
|
|
24.03.2017, 16:24
|
#48
|
Бан за нарушения
Регистрация: 13.05.2016
Адрес: Глобино
Сообщений: 145
Поблагодарил(а) : 37
Поблагодарили 54 раз(а) в 32 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
AquaGomel, sae74 тоже самое кинулось в глаза, там именно один и нужен.
AquaGomel, Я смотрю Вы меня разыгрываете  У вас же все датчики температуры висят на одно выходе, значить тоже обращение через адреса, и просто так вытыкнуть и втыкнуть новый датчик простому пользователю не получится 
__________________ 
|
|
|
24.03.2017, 16:26
|
#49
|
Бан за нарушения
Регистрация: 04.01.2009
Адрес: Полтава
Сообщений: 5,495
Поблагодарил(а) : 6,244
Поблагодарили 5,759 раз(а) в 2,265 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
Цитата:
Сообщение от mashenkaM
и просто так вытыкнуть и втыкнуть новый датчик простому пользователю не получится
|
Почему не получится? Если реализован поиск датчиков, а потом в настройке указать какой именно датчик за что отвечает - то пользователю будет удобно.
__________________ 
|
|
|
24.03.2017, 16:32
|
#50
|
Живу я тут
Регистрация: 31.07.2010
Адрес: Белоруссия, Гомель
Сообщений: 411
Поблагодарил(а) : 38
Поблагодарили 189 раз(а) в 85 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
Цитата:
Сообщение от sae74
AquaGomel, Я могу ошибаться, но зачем на каждый датчик температуры свой резистор? У меня один на все.
|
Я тоже могу ошибаться, тем более особо не вникал, я читал что связанно с различной длинной провода, но толкового объяснения я не нашел. Хотя везде используется схема как с одним резистом так и с несколькими... А по хорошему я программист, который умеет чуток держать паяльник в руках))) Так что возможно я и не прав...
|
|
|
Реклама помогает развиваться |
|
24.03.2017, 16:36
|
#51
|
Живу я тут
Регистрация: 31.07.2010
Адрес: Белоруссия, Гомель
Сообщений: 411
Поблагодарил(а) : 38
Поблагодарили 189 раз(а) в 85 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
Цитата:
Сообщение от mashenkaM
AquaGomel, sae74 тоже самое кинулось в глаза, там именно один и нужен.
AquaGomel, Я смотрю Вы меня разыгрываете  У вас же все датчики температуры висят на одно выходе, значить тоже обращение через адреса, и просто так вытыкнуть и втыкнуть новый датчик простому пользователю не получится 
|
Как раз таки нет. Висят то они на одной шине, только кодом я к датчику никак не привязан. Т.е. простой пример: есть у вас 8 произвольных датчиков. Вы все их подключаете. После инициализации, каждый из них займет определенный индекс. И как бы вы потом эти датчики не "тусовали" контроллер всегда будет знать какой номер датчика подключен в любой порт!
Вы можете менять номера датчиков только последовательным подключением и инициализацией.
|
|
|
24.03.2017, 16:39
|
#52
|
Бан за нарушения
Регистрация: 04.01.2009
Адрес: Полтава
Сообщений: 5,495
Поблагодарил(а) : 6,244
Поблагодарили 5,759 раз(а) в 2,265 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
AquaGomel,
Тогда при замене датчика и новой инициализации придется заново настраивать программу?
__________________ 
|
|
|
24.03.2017, 16:48
|
#53
|
Живу я тут
Регистрация: 31.07.2010
Адрес: Белоруссия, Гомель
Сообщений: 411
Поблагодарил(а) : 38
Поблагодарили 189 раз(а) в 85 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
Цитата:
Сообщение от sae74
AquaGomel,
Тогда при замене датчика и новой инициализации придется заново настраивать программу?
|
Если убрать датчик то никаких настроек вообще не получиться с ним сделать. Программа привязана только к индексу датчика а не к его адресу. Если к примеру убрать, один из датчиков то программа для него выполняться не будет. А для остальных ничего не измениться, так как индексы меняются только при при инициализации датчиков. Что будет если произвести инициализацию с новым датчиком? Хм... если не изменятся индексы то все останется работать как прежде. А вот что как определяется порядок назначения индексов библиотекой нужно смотреть, пока не готов ответить... Вопрос хороший.. нужно будет посмотреть если хватит еще места в скетче позаботится что бы замененный датчик становился на место старого...
|
|
|
24.03.2017, 16:50
|
#54
|
Бан за нарушения
Регистрация: 13.05.2016
Адрес: Глобино
Сообщений: 145
Поблагодарил(а) : 37
Поблагодарили 54 раз(а) в 32 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
Цитата:
Сообщение от AquaGomel
Как раз таки нет. Висят то они на одной шине, только кодом я к датчику никак не привязан. Т.е. простой пример: есть у вас 8 произвольных датчиков. Вы все их подключаете. После инициализации, каждый из них займет определенный индекс. И как бы вы потом эти датчики не "тусовали" контроллер всегда будет знать какой номер датчика подключен в любой порт!
Вы можете менять номера датчиков только последовательным подключением и инициализацией.
|
Да Вы правы, но до первого выключения питания, потому что датчики индексируются каждый раз по разному (рандомно).
__________________ 
|
|
|
Пользователь, который поблагодарил mashenkaM за данный пост:
|
|
24.03.2017, 16:52
|
#55
|
Живу я тут
Регистрация: 31.07.2010
Адрес: Белоруссия, Гомель
Сообщений: 411
Поблагодарил(а) : 38
Поблагодарили 189 раз(а) в 85 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
Цитата:
Сообщение от mashenkaM
Да Вы правы, но до первого выключения питания, потому что датчики индексируются каждый раз по разному.
|
Датчики индексируются во-первых по адресу, а во вторых они инициализируются в ручную... После инициализации они сохраняются в EEPROM. И все последующие запуски и перезагрузки, контроллер работает без изменений как с датчиками так и с таймерами...
|
|
|
24.03.2017, 17:18
|
#56
|
Бан за нарушения
Регистрация: 13.05.2016
Адрес: Глобино
Сообщений: 145
Поблагодарил(а) : 37
Поблагодарили 54 раз(а) в 32 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
Цитата:
Сообщение от AquaGomel
Я тоже могу ошибаться, тем более особо не вникал, я читал что связанно с различной длинной провода, но толкового объяснения я не нашел. Хотя везде используется схема как с одним резистом так и с несколькими... А по хорошему я программист, который умеет чуток держать паяльник в руках))) Так что возможно я и не прав...
|
Данный резистор является подтягивающим и при подключение нескольких датчиков к одному питанию и сигналу нужен только один резистор, иначе несколько будут работать по принципу параллельного подключения и общее сопротивление просто упадёт.
__________________ 
|
|
|
Пользователь, который поблагодарил mashenkaM за данный пост:
|
|
24.03.2017, 17:39
|
#57
|
Бан за нарушения
Регистрация: 13.05.2016
Адрес: Глобино
Сообщений: 145
Поблагодарил(а) : 37
Поблагодарили 54 раз(а) в 32 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
AquaGomel, правильно ли мы поняли, вы инициализацию прописали у себя в коде программно? То есть идёт сканирование адресов, а вы определяете из списка (щупая каждый за кончик или подключая только один) кокой датчик за что отвечает? В EEPROM вы адреса сохраняете датчиков?
__________________ 
|
|
|
24.03.2017, 19:13
|
#58
|
Живу я тут
Регистрация: 31.07.2010
Адрес: Белоруссия, Гомель
Сообщений: 411
Поблагодарил(а) : 38
Поблагодарили 189 раз(а) в 85 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
Цитата:
Сообщение от mashenkaM
Данный резистор является подтягивающим и при подключение нескольких датчиков к одному питанию и сигналу нужен только один резистор, иначе несколько будут работать по принципу параллельного подключения и общее сопротивление просто упадёт.
|
В этом вопросе я спорить не буду, так как моя квалификация не позволяет этого сделать. Возможно вы правы, но я использовал другую схему, если вам больше нравиться один подтягивающий резистор впаивайте тогда его одного к примеру R12.
Цитата:
Сообщение от mashenkaM
AquaGomel, правильно ли мы поняли, вы инициализацию прописали у себя в коде программно? То есть идёт сканирование адресов, а вы определяете из списка (щупая каждый за кончик или подключая только один) кокой датчик за что отвечает? В EEPROM вы адреса сохраняете датчиков?
|
Другой инициализации я не знаю. Да сохраняются адреса, так как опрос самих датчиков делается именно по адресам.
Цитата:
Сообщение от mashenkaM
потому что датчики индексируются каждый раз по разному (рандомно)
|
К счастью нет. Порядок датчиков определяется строго их адресами.
Цитата:
Сообщение от AquaGomel
Если убрать датчик то никаких настроек вообще не получиться с ним сделать. Программа привязана только к индексу датчика а не к его адресу. Если к примеру убрать, один из датчиков то программа для него выполняться не будет. А для остальных ничего не измениться, так как индексы меняются только при при инициализации датчиков. Что будет если произвести инициализацию с новым датчиком? Хм... если не изменятся индексы то все останется работать как прежде. А вот что как определяется порядок назначения индексов библиотекой нужно смотреть, пока не готов ответить... Вопрос хороший.. нужно будет посмотреть если хватит еще места в скетче позаботится что бы замененный датчик становился на место старого...
|
Да к сожалению при подключении нового датчика или замена какого-либо из них, ломает логику работы программ для температурных датчиков, программы продолжат работать но для них могут быть уже другие датчики... так как программы связаны с индексом датчика а не с его реальным адресом. И возникает вопрос. Насколько это существенно? Конечно можно добавить какую-то логику, но как я уже говорил место практически нет... вообщем надо думать...
Последний раз редактировалось AquaGomel; 24.03.2017 в 19:20..
|
|
|
24.03.2017, 21:32
|
#59
|
Бан за нарушения
Регистрация: 13.05.2016
Адрес: Глобино
Сообщений: 145
Поблагодарил(а) : 37
Поблагодарили 54 раз(а) в 32 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
AquaGomel, чё там думать я выше раз 5 писала, что для конечного пользователя в широких масах нужно просто подключать один датчик только к одному выходу. Тогда не нужно будет лезть в программу и шить заново.
__________________ 
|
|
|
24.03.2017, 21:52
|
#60
|
Живу я тут
Регистрация: 31.07.2010
Адрес: Белоруссия, Гомель
Сообщений: 411
Поблагодарил(а) : 38
Поблагодарили 189 раз(а) в 85 сообщениях
|
Re: AquaController ===www.aquaforum.ua===
Цитата:
Сообщение от mashenkaM
AquaGomel, чё там думать я выше раз 5 писала, что для конечного пользователя в широких масах нужно просто подключать один датчик только к одному выходу. Тогда не нужно будет лезть в программу и шить заново.
|
Я читал ваши 5 раз, только я не совсем понимаю зачем вы так делаете? Я стараюсь сделать универсальное устройство. Вы же предлагаете сделать одноразовое. С таким подходом можно просто сделать торчащий шнур из коробки, без всяких там входов. Я уже объяснял вам 5 раз, что пользователь не должен лазить в прошивку что бы поменять сгоревший датчик. Если вы харкодно забьете адрес подключенного датчика, что потом делать пользователю если возникнет необходимость его поменять? А если добавить еще один? У вас один аквариум, а у кого-то пять! Не вы не я не знаете что нужно массе аквариумистов, поэтому нужно стараться делать универсальные вещи. Советую посмотреть на тот же контроллер Юсупова. Очень универсальная вещь. По поводу выше описанного случая, думаю есть решение. На выходных попробую грамотно закодить его!
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Опции темы |
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 21:09. Часовой пояс GMT +3.
|