Целью было сделать довольно простое web управляемое устройство почти без кнопок и мониторов.
На данный момент устройство работает как стабилизатор мощности, в режиме дистилляции, ректификации и режиме проверки внешнего оборудования.
Все программное обеспечение, разводка платы и веб часть представлены "как есть", и может свободно копироваться и модифицироваться
в некоммерческих целях.
Устройство поддерживает:
- Стабилизацию мощности с использованием симистора с фазовым управлением.
- До 4 клапанов на 12 вольт.
- До 8 температурных датчика ds18b20, подключенных через i2c/w1 мост DS2482-100.
- Поддерживается небольшой oled дисплей по шине I2C или SPI.
- Соответственно шины I2C и SPI выведены на разъемы и доступны для подключения дополнительного оборудования.
- Поддерживается тихий режим включения и выключения клапанов.
- Поддерживается отправка SMS об авариях и состоянии через сервис smsc.ru.
Аппаратное обеспечение:
- ESP32 модуль revision 1 с 20 контактным разъемом для подключения.
Я взял такой, для реализации бесперебойности питания, но можно выбрать любой другой с 20 или 18 контактами.
Надо быть крайне осторожным с микро-usb разъемом. Он на этих модулях крайне не надежен и так и норовит отвалится. Я уже парочку отломал прямо с дорожками платы. - PZEM-004t модуль для измерения тока, напряжения и мощности, например такой.
Т.к. питание у нас 3.3 вольта, желательно допаять резистор номиналом 1 кОм для стабильной работы uart модуля от этого напряжения. - Клапана на 12 вольт и датчики ds18b20 в гильзах и без, все с того-же алиэкспресса.
- 12 вольтовый источник питания, который по току смог бы вытянуть все клапана и сам модуль.
Модуль при активном использовании WiFi сети может потреблять до 700 mA по 5 вольтовой шине питания. - Схема, плата, гербера для сопряжения всего этого добра доступна и выложена в виде проекта на easyeda.
Там же можно генерировать гербер файлы при необходимости или подправить посадочные места для PZEM модуля, если они отличаются от
используемого мной.
svg изображение платы.
Логотип сайта с разрешения владельца нанесен на pcb. - Симистор с радиатором, корпус, провода и т.д.
Общий вид тестового стенда:
Дисплей.
Устройство поддерживает небольшой Oled дисплей с интерфейсом i2c или spi,
на основе чипа SSD1336, например такой
На дисплее отображаются последовательно несколько циклически сменяющихся экрана:
Первый - это аптайм, кубовая температура и текущая мощность.
Второй - сетевая конфигурация
Третий - данные всех температурных датчиков.
Программное обеспечение.
Написано с использованием esp-idf .
В общем это модифицированный китайцами FreeRtos.
Проект автоматики располагается на ГитХабе под MIT лицензией.
Веб часть скачивается при первом запуске системы с моего сайта на сам esp32. По аналогии с проектом BrewManiacEsp8266.
Но каждый вправе создать свой веб интерфейс и, указав url в разделе обновления, закачать свою версию web интерфейса.
Веб часть разрабатывалась ориентируясь на вертикальное расположение на смартфоне, поэтому может выглядеть слегка странным и не логичным
на большом экране.
Для передачи данных в реальном времени используется websocket.
Формат передачи данных модуль Модуль<->Браузер: json.
Стартовая настройка.
- Устройство после прошивки переходит в режим WiFi точки доступа.
Для дальнейшей работы нужно подключиться к этой точке и
зайти браузером на адрес http://192.168.4.1/ выбрать из списка обнаруженных
WiFi сетей свою, ввести пароль, сохранить и перегрузить устройство. - После перезагрузки и успешного подключения к точке доступа, можно зайти
браузером по назначенному Вашей точкой ip адресу на устройство и загрузить
html часть в флэшь память устройства. После этого устройство готово к работе.
Веб интерфейс.
По моему, интуитивно понятный. Все основные данные выведены на главный экран.
Устройство можно защитить паролем, чтоб нежелательные персоны не нажали чего лишнего.
Есть раздел для настроек параметров дистилляции и ректификации.
Отдельно можно произвести функциональное назначение датчикам температуры
и внести поправку к измеряемым значениям для каждого из них.
Все это будет запомнено и не требует дальнейшего вмешательства, даже если
используется разная группа датчиков, например для дома и для дачи.
Меню wifi так-же позволяет запомнить данные нескольких wifi сетей и
автоматически к ним подключаться, если находимся в зоне их доступа.
Отдельно вынесен файловый менеджер устройства, где можно посмотреть,
что и как записалось в настройках. Заодно можно сделать резервные копии
настроек на всякий случай или стереть поврежденные по какой-либо причине файлы.
Пункт "Обновления" предназначен для обновления web интерфейса, обновления
firware через него пока не предусмотрено.
Установка программной среды для виндовс.
Для заливки программного обеспечения в esp32 необходимо установить набор инструментов - toolchain.
Описывается этот процесс тут: https://docs.espressif.com/...dows-setup.html
1. Скачиваем готовый Toolchain (набор инструментов для компиляции и генерации кода) для создания приложения для ESP32 по указанной выше ссылке.
Прямая ссылка на zip файл может изменяться при выходе обновлений, поэтому тут я ее не привожу.
Распаковываем полученный архив, например в c:\msys32.
Запускаем C:\msys32\mingw32.exe .
По сути - это юниксовый bash адаптированный под win32 среду.
2. В получившемся окошке мы должны теперь скачать ESP-IDF, который по существу
содержит API для ESP32 и скрипты для работы с Toolchain.
Скачиваем его с GitHub:
git clone --recursive https://github.com/espressif/esp-idf.git
На забудьте опцию --recursive, иначе не будут установлены субмодули.
Если все-таки забыли, то можно поправить дело следующими командами:
cd ~/esp-idf
git submodule update --init --recursive
Теперь надо добавить путь до esp-idf. Для этого надо определить переменную
IDF_PATH в профиль пользователя. Эта переменная должна быть настроена,
иначе проекты не будут компилироваться.
Для этого нужно добавить скрипт и указать IDF_PATH в профиле пользователя.
Скрипты пользовательского профиля содержатся в каталоге
C:/msys32/etc/profile.d/. Они выполняются каждый раз, когда вы запускаете
mingw32.exe
Создайте новый текстовый файл скрипта в каталоге C:/msys32/etc/profile.d/. Назовите его export_idf_path.sh .
Определите путь к каталогу ESP-IDF. Он специфичен для вашей конфигурации системы и может выглядеть примерно так: C:\msys32\home\<user-name>\esp-idf.
Где <user-name> - это имя учетной записи в системе виндовс.
Далее надо добавить одну строчку в этот файл:
export IDF_PATH="C:/msys32/home/<user-name>/esp/esp-idf"
на прямой слэш "/" принятый для unix систем.
Закроем и заново запустим mingw32.
Проверяем все ли установилось:
$printenv IDF_PATH
C:/msys32/home/yuri/esp-idf
Создание прошивки.
Переходим в свою домашнюю директорию cd ~ и получаем исходники с ГитХаба:
git clone --recursive https://github.com/ys1797/esp32_hd
Далее выполняем команду для установки пакетов Python.
Пакеты, необходимые для ESP-IDF, находятся в файле $IDF_PATH/requirements.txt
python -m pip install --user -r $IDF_PATH/requirements.txt
Переходим в папку с проектом
cd ~/esp32_hd
Для заливки загрузчика и прошивки в esp32 необходимо подключить модуль по USB.
После этого посмотреть в диспетчере устройств, какой новый COM порт появился в системе.
Если драйвер устройства не устанавливается автоматически, определите чип USB для последовательного преобразователя на плате ESP32,
найдите драйверы в Интернете и установите их.
Идем в директорию проекта и выполняем
make menuconfig
Serial flasher config > Default serial port и вбиваем имя com порта, так,
как он обзывается в виндовс, без всяких /dev/, например, если COM14, то так и пишем.
Сохраняем по "Save" и выходим по "Exit".
Теперь вы можете создавать и запускать приложение. Выполните в консоли:
make flash monitor
таблица разделов и собственно сам firmware файл. Все это загрузится
в модуль ESP32, запустится мониторинг порта и модуль перегрузится.
В консоле можно увидеть отладочные сообщения и информацию о найденной
периферии в процессе загрузки.
Все приложение установлено - можно конфигурить и скачать веб часть.
История изменений
1.4 В плату добавлено место для датчика давления bmp180.1.6
Исправлены падения из-за нехватки памяти под стэк фоновых задач.
Поправлен режим ректификации.
С главной страницы убраны элементы не несущие полезной информации.
Состояние клапанов можно менять на лету. Будьте внимательны и не выключите случайно воду охлаждения!!
Значения параметров вступают в силу сразу же после изменения.
Исправлены ручные переходы с одной стадии процесса на другую вперед и назад, где это имеет логический смысл.
1.7.1
Исправлен алгоритм стабилизации мощности.
Добавлена поддержка нового протокола PZEM modbus RTU (v.30)
ToDo
- Подключение датчика атмосферного давления или сервиса для получения значения давления с интернет сервисов.
- Подключение к автономной системе охлаждения, как к slave устройству по WiFi и контроль потока воды, температур и шим управление насосом и вентилятором.
- Постепенное добавление остальных режимов работы автомата.
- OTP. Обновление firmware по сети.