Проект полностью переведён на open source, доступны исходники конфигуратора. За неимением свободного времени дальнейшее развитие проекта будет происходить эпизодически.
Когда возник вопрос - здесь уже может быть половина ответа. Вторая половина ответа, как правило, расположена тут.
Перед закачиванием прошивки в контроллер её необходимо настроить, все настройки в файле `Globals.h`! Я тестирую и выкладываю прошивку практически в максимальной конфигурации, следовательно, вы должны исключить из прошивки те модули, которым нет соответствия в виде подключённых железных "ответок". Скажем, если у вас нет модуля SD-карты, то совершенно недопустимо включать в прошивку модуль логгирования информации (`USE_LOG_MODULE`) и модуль Wi-Fi (`USE_WIFI_MODULE`). Также хочу обратить внимание на то, что некоторые модули для своей нормальной работы требуют подключённого железного соратника DS3231, т.к. без модуля реального времени их штатная работа невозможна. При любых затруднениях в работе (прошивка не работает как надо, почему-то ничего не получается, что-то не выводится на экран) - прежде всего смотрите настройки прошивки и схему подключения. Подчёркиваю - предложенная прошивка не готовое решение, а конструктор, который вы можете настроить под свои нужды. И, как любое модульное изделие, требует вдумчивого подхода перед началом использования.Проект свободен для некоммерческого использования и исключительно в личных целях. Любое другое использование, например, встраивание любой части кода в коммерческий продукт, распространение любой части исходных кодов на сторонних ресурсах без разрешения автора проекта - не допускается. Все права интеллектуальной собственности на любую программную часть продукта принадлежат их авторам, использование программного кода в сторонних проектах без согласия авторов и упоминания об исходном авторстве - не допускается.
Автор проекта оставляет за собой право в любой момент пересмотреть лицензию распространения продукта.
- В папке Main - исходники прошивки для Меги;
- В папке SOFT - текущая версия конфигуратора, коннектится к Меге по COM-порту;
- В папке Libraries - сторонние библиотеки, искользуемые в проекте (их количество неуклонно приближается к нулю, но пока - как есть);
- В папке SD - файлы, которые надо закачать на SD-карту;
- arduino-1.6.7-windows.exe - версия Arduino IDE, используемая в проекте;
- В папке CHANGED_IDE_FILES - файлы, которые надо заменить, переписав стандартные, из поставки Arduino IDE;
- Файл NewPlan.spl7 - файл схемы для программы SPlan 7.0;
- В папке Nextion - файл прошивки для дисплея Nextion 320x240, и проект прошивки;
- В папке Nextion1WireModule - прошивка универсального исполнительного модуля с дисплеем Nextion, работающего по шине 1-Wire;
- В папке UniversalSensorsModule - прошивка универсального модуля с поддержкой до трёх датчиков разных типов, работающего по шине 1-Wire, по шине RS-485, и по радиоканалу, через nRF24L01+;
- В папке UniversalExecutionModule - прошивка универсального исполнительного модуля на 8 слотов настраиваемых привязок, работающего по шине 1-Wire, по шине RS-485, и по радиоканалу, через nRF24L01+;
- В папке FrequencySoilMoistureSensor - прошивка для опроса частотного датчика влажности почвы;
- В папке WEB - текущая версия вебморды, ставится под любой веб-сервер с поддержкой PHP и sqlite3.
Выкладываемая прошивка - это слепок того, что я делаю на текущий момент. Поэтому её настройки по умолчанию могут сильно разниться с теми, которые нужны вам. Примерная конфигурация, которая собрана у меня на макетке на текущий момент:
Кликните, чтобы посмотреть...
USE_UNIVERSAL_SENSORS
- модуль поддержки универсальных модулей (в разработке, подключен эмулятор на Uno);USE_UNI_NEXTION_MODULE
- модуль поддержки дисплея Nextion по шине 1-Wire;USE_DS3231_REALTIME_CLOCK
- подключён модуль часов реального времени DS3231;USE_TEMP_SENSORS
- модуль хранения информации о температуре и управления фрамугами, подключены DS18B20 и восьмиканальный модуль реле;USE_WINDOWS_SHIFT_REGISTER
- управление фрамугами идёт через сдвиговый регистр 74HC595;USE_WATERING_MODULE
- модуль управления поливом, подключен железный модуль реле на два канала;USE_LUMINOSITY_MODULE
- модуль досветки, подключёны два датчика BH1750, требуется железный модуль реле на один канал;USE_HUMIDITY_MODULE
- модуль влажности, подключены DHT22 и Si7021;USE_SOIL_MOISTURE_MODULE
- модуль влажности почвы, пока подключён китайский влагомер;USE_LOG_MODULE
- модуль логгирования информации, подключен железный SD-модуль;USE_TIMER_MODULE
- модуль таймеров (4 таймера периодических операций);USE_RESERVATION_MODULE
- модуль резервирования показаний датчиков (когда датчики одной группы дублируют друг друга);USE_WATERFLOW_MODULE
- модуль расхода воды, подключён китайский расходомер;USE_WIFI_MODULE
- модуль доступа по WI-FI, подключена ESP8266, требует подключение SD-модуля;USE_LCD_MODULE
- модуль экрана, подключён графический LCD 128x64 на контроллере ST7920, а также тактовая кнопка и энкодер;- Определено ещё кучу всяких
USE_*
, поэтому, прошу вас - будьте внимательны с настройками прошивки, ибо перечислять их здесь все - анрил полный; - Конвертеры уровней, DC-DC-преобразователи - подключены там, где это требуется;
- Neoway M590 (или SIM800L) - не подключен, директива
USE_SMS_MODULE
закомментирована; - Модули реле у меня включаются по низкому уровню;
- К Меге у меня подключен как минимум один универсальный модуль, для тестирования работы по 1-Wire и RS-485.
Настройки прошивки по умолчанию могут меняться с обновлениями, поэтому будьте внимательны, и проверяйте, пожалуйста, соответствие настроек прошивки вашим чаяниям. Обращаю внимание, что прошивку можно настроить и на другой экран (Nextion), и на другой шлюз в локальную сеть (W5100), можно менять кол-во датчиков, номера пинов для них, можно управлять пинами реле фрамуг напрямую, а не через сдвиговый регистр - всё это шаманство вы можете совершить, чтобы подогнать прошивку под ваши требования. Я лишь даю инструмент, которым можно (и нужно) воспользоваться с умом.
Установить библиотеки (в папке Libraries архива) в среду Arduino IDE!
Все настройки прошивки перед компиляцией - в файле `Globals.h`!
Распаковать архив в папку на диске, установить библиотеки из папки Libraries архива в среду Arduino IDE. Затем открыть в Arduino IDE файл Main.ino, настроить директивы условной компиляции (файл `Globals.h`), скомпилировать прошивку и закачать в Мегу. Подсоединить железки в зависимости от выбранных настроек прошивки. Если используется модуль Wi-Fi или модуль логгирования информации - подключить модуль SD-карты и закачать файлы из папки SD в корень SD-карточки!
Открыть конфигуратор и подключиться к COM-порту, на котором висит Мега, и начать общение с контроллером. Принципиальная схема подключения некоторого железного добра указана ниже:
В текущей версии используется LCD-экран 128х64 на базе контроллера ST7920, подключенный в режиме последовательного соединения. Подробности подключения - в файле Globals.h
.
Если вам не нужно использование этого модуля - закомментируйте USE_LCD_MODULE
в файле Globals.h
.
Внимание! Для того, чтобы использовать указанный экран - необходимо установить библиотеку `U8GLib` (есть в архиве проекта) в среду Arduino IDE!
Экран работает совместно с энкодером и тактовой кнопкой (подробности подключения - в `Globals.h`). Энкодером перелистываются закладки, затем кнопкой - производится переход внутрь выбранной закладки и пролистывание вариантов настроек. На экране ожидания нажатия кнопки пролистывают показания с датчиков, не дожидаясь времени их программного пролистывания. На экране ожидания можно вывести информацию со сколь угодно большого количества датчиков (настраивается в `Globals.h`).
В текущей версии используется модуль поддержки дисплеев Nextion (320x240). Если вам не нужно использование этого модуля - закомментируйте USE_NEXTION_MODULE
в файле Globals.h
. Прошивка для дисплея и её исходники - лежат в папке Nextion. Подробности по закачиванию прошивки в дисплей - в файле Nextion\320x240\Readme.txt.
В текущей версии используется модуль датчиков расхода воды на эффекте Холла (трёхпроводные с Али, искать по словам "water flow meter", они обычно около 300 рублей стоимостью). Если вам не нужно использование этого модуля - закомментируйте USE_WATERFLOW_MODULE
в файле Globals.h
. Датчиков может быть до двух, сидят они на пинах 2
и 3
. Подробные настройки - в Globals.h
.
В текущей версии используется модуль часов реального времени на микросхеме DS3231 (пин 20 - SDA, пин 21 - SCL). Если вам не нужно использование этого модуля - закомментируйте USE_DS3231_REALTIME_CLOCK
в файле Globals.h
.
В текущей версии используется GSM-модуль на базе чипа NEOWAY M590 (также поддерживается SIM800L). Если вы не хотите использовать управление по SMS - закомментируйте USE_SMS_MODULE
в файле Globals.h
.
Если у вас возникли проблемы с работой SMS-модуля - можно включить отладочный режим (не работает совместно с конфигуратором!), раскомментировав GSM_DEBUG_MODE
в файле Globals.h
.
Список команд для управления по SMS - смотрите в конфигураторе. Если вы посылаете команды на открытие или закрытие окон, включение/выключение полива или досветки - контроллер автоматически переходит в ручной режим работы!
В текущей версии используется WI-FI-модуль на основе чипа ESP8266. Если вы не хотите использовать WI-FI в проекте - закомментируйте USE_WIFI_MODULE
в файле Globals.h
.
Если у вас возникли проблемы с работой WI-FI-модуля - можно включить отладочный режим (не работает совместно с конфигуратором!), раскомментировав WIFI_DEBUG
в файле Globals.h
. Модуль ESP8266 соединён с Serial2 Меги (пины 16
и 17
, см. схему выше).
В текущей редакции реализован мост UART-TCP/IP: соединившись с IP, которое выдал роутер модулю ESP - можно посылать команды контроллеру так же, как если бы это было посредством соединения через UART, т.е.: любая команда начинается с `CTGET=` или `CTSET=`, и заканчивается переводом строки \r\n.
Работа с ESP протестирована на версии AT-прошивки 0.40, работоспособность на других прошивках не гарантируется!
ВНИМАНИЕ! Реле, используемые в текущей версии прошивки, включаются по низкому уровню. Если у вас наоборот - смотрите настройки RELAY_ON
и RELAY_OFF
в файле Globals. h
.
Для индикации ручного режима управления поливом на пин 8 выведен светодиод (см. схему), который будет мигать при переключении в ручной режим работы. Для управления каналами реле задействованы пины 22, 23, 24, с которых идёт управление тремя каналами реле. Можно рулить каким угодно количеством реле, вплоть до 8. Для изменения кол-ва реле в файле `Globals.h` установите `WATER_RELAYS_COUNT` в нужное число - от 1 до 8. Пины прописываются в `WATER_RELAYS_PINS`, каждый пин указывается через запятую, их общее количество должно быть равным количеству, указанному в настройке `WATER_RELAYS_COUNT`!
При подаче любой команды модулю управления поливом (начать/закончить полив, а также когда настройка "Автоматическое управление поливом" в положении "выключено") - контроллер переходит в ручной режим управления поливом, при этом мигает светодиод на пине 8. Номер пина для диода можно изменить с помощью настройки `DIODE_WATERING_MANUAL_MODE_PIN` в файле `Globals.h`.
В текущей версии используется модуль освещенности на базе чипа BH1750. Если вам не нужно использование этого модуля - закомментируйте USE_LUMINOSITY_MODULE
в файле Globals.h
. Схема подключения модуля освещенности приведена выше.
В текущей версии используется модуль опроса датчиков влажности на базе различных чипов. Поддерживаются следующие типа: DHT - DHT11 и старше, Si7021. Для добавления датчиков смотрите примеры ADD_HUMIDITY_SENSOR
в файле Globals.h
. Если вам не нужно использование этого модуля - закомментируйте USE_HUMIDITY_MODULE
в файле Globals.h
.
Конфигуратор автоматически подцепляет прошитые в контроллер модули, и показывает вкладки управления этими модулями, после соединения с контроллером. Если вы не видите вкладку управления поливом (например) - смотрите директивы условной компиляции на предмет того, выключен ли модуль из компиляции или нет. При перезагрузке контроллера он переходит в автоматический режим работы, даже если при последнем обращении к нему был выставлен ручной режим.