Создать прошивку (проект) для ESP32 - регулятор оборотов для вентилятора с WEB сервером

5 000 руб. за проект
24 февраля 2024, 20:41 • 5 откликов • 64 просмотра
Написать прошивку для ESP32, которая реализует в себе WEB сервер и создаёт WiFi AP, где указан SSID с паролем, который можно будет изменить, после входа в устройство, что бы оно стало AP клиентом, например, как реализовано в https://github.com/Aircoookie/WLED

Общий pin для подключения датчиков 1-wire (до 4х штук),
по 2 pin на каждый вентилятор: один для чтения скорости, другой для её задания (PWM 500Hz или более (можно будет указать в исходнике прошивки или в параметрах через WEB) и изменяемое значение скважности/заполнения) - например pin 1,2 - FAN1; pin 3,4 - FAN2; pin 5,6 - FAN3; pin 7,8 - FAN4;
1. Определить все подключенные датчики 1-Wire 18B20, указать соответствие для вентилятора (выпадающим списком);
2. Создать на основе этих датчиков зависимость заполнения ШИМ при определённой температуре и для каждого датчика соответсвие своего выхода (для задания PWM) (картинка 1);
3. Так же считывать с вентиляторов текущую скорость оборотов и температуру с датчиков, и отображать ниже (картинка 1);
4. При включении устройства задать 100% шим на 3 секунды, потом выровнять скорость согласно заданным выше параметрам;
5. Указываемые параметры хранить в ПЗУ (идентификаторы датчиков 18b20, минимальные и максимальные значения PWM, параметры для графиков и соотношения температур к скорости);
6. Если была замена датчика, то отображать другим цветом, что в этом канале уже нет текущего датчика. (картинка 2);
7. Если датчик всего один, тогда в остальных каналах, где он не выбран, выбрать прочерки или "нет датчика" (картинка 2).

Кнопка "продувка", которая делает PWM 100% на 30 секунд.
Отдельные кнопки для автоматического определения минимального и максимального значения для FAN1; FAN2; FAN3; FAN4
Логика работы:
Увеличиваем ШИМ до 100%, потом по 10% убавляем каждые 3 секунды, наблюдая за оборотами и как только обороты равны 0, запоминаем это значение ШИМ в переменную, напрмер constmin, далее делаем ШИМ 50%, ждём 2 секунды и изменяем до запомненного значения constmin+1 (перезаписываем результат, напрмер опять constmin), проверяем, что обороты не равны 0, иначе повторяем это действие до тех пока не определим рабочий минимум - это минимальные значение для этого вентилятора.

На графике можно будет указать минимальную скорость вентилятора, которую определили через кнопку (значение ниже определённого установить нельзя).

Так же должна быть ещё одна страница, которая в текстовом виде или json выводит свои текущие значения (обновляются при каждом запросе страницы), например:
FAN1: 23%; 230RPM; 35C
FAN2: 20%; 330RPM; 40C
FAN3: 5%; 130RPM; 16C
FAN4: 63%; 730RPM; 55C


json:
{
"FAN1": {
"percentage": "23",
"rpm": "230",
"temperature": "35"
},
"FAN2": {
"percentage": "20",
"rpm": "330",
"temperature": "40"
},
"FAN3": {
"percentage": "5",
"rpm": "130",
"temperature": "16"
},
"FAN4": {
"percentage": "63",
"rpm": "730",
"temperature": "55"
}
}

-------
Картинка 1

Картинка 2


Сумма за итоговый проект, к сожалению, конечная.