Перейти к содержанию

VKN

Админ
  • Постов

    97
  • Зарегистрирован

  • Посещение

Репутация

1 Neutral

Посетители профиля

78 просмотров профиля
  • Hans

  • ITurikin

  1. Сделано. Теперь вентилятор не запустится, пока не загрузится контроллер и не установит требуемые обороты.
  2. Используется для аквариума. Разная скорость вентилятора в ночное и дневное время с 5 заданными параметрами. (5, 30, 50, 80, 100%) В заданное время включается LCD, это и было использовано как триггер(V15) Регулировка скорости вентилятора от 0 до 255, это минимально и максимально возможные скорости вентилятора. В моем случае, это 700-1800 об/мин. То есть, 0% = 700 об/мин и 100% = 1800 об/мин. В "моём"* коде: 1% = 707 об/мин, 30% = 540 об/мин, 50% = 900 об/мин, 80% = 1440 об/мин, 100% = 1800 об/мин. Код брал на просторах интернетов для плавного управления светодиодом, только изменил частоту на 25000. Кроме того, я использую BLYNK (для управления) и GyverPortal (для прошивки "по воздуху"). GyverPortal позволяет подключиться к устройству через браузер и залить в устройство новую прошивку. В приложении BLYNK настройка вентиляторов выглядит так: // Dev - "WEMOS D1 MINI ESP32" //#define BLYNK_PRINT Serial #define BLYNK_AUTH_TOKEN "XXXXXXXXXXXXXX-TOKEN-XXXXXXXXXXXXX" #include <WiFi.h> #include <WiFiClient.h> #include <BlynkSimpleEsp32.h> #include <GyverPortal.h> const int FanPin = 17; const int freq = 25000; const int FanChannel = 0; const int resolution = 8; char ssid[] = "SID"; char pass[] = "password"; int myCooller = 0; GyverPortal portal; void build(){ BUILD_BEGIN(); GP.THEME(GP_DARK); GP.TITLE("=COOLLER CONTROL="); GP.HR(); *_GP += F("<p style='text-align: center;'><img src='https://blynk.novoross.ru/uploads/monthly_2023_06/small.aquabot.png.18dc6cf076c1e8e01d57a07c31178d12.png'/>"); *_GP += F("<a href='/ota_update'><img src='https://blynk.novoross.ru/uploads/monthly_2023_07/large.UpDateFirmware64.png.c97b51cf1b455e4f5f9e683bf9ecbf6f.png'/></a></p>"); GP.HR(); *_GP += F("<p style='text-align: center;'><em>v.0.0.1H - 19-07-2023</em></p>"); BUILD_END(); } WidgetLED led1(V40); BlynkTimer timer; BLYNK_CONNECTED() { Blynk.syncAll(); } BLYNK_WRITE(V15){ int pinValue = param.asInt(); if(param.asInt() == 0) { myCooller = 0; } if(param.asInt() == 255) { myCooller = 1; } } BLYNK_WRITE(V41){ // Ночной режим int pinValue = param.asInt(); if (myCooller == 1){ if(param.asInt() == 1) { ledcWrite(FanChannel, 0); Blynk.setProperty(V41, "label", "День минимум"); } if(param.asInt() == 2) { ledcWrite(FanChannel, 76); Blynk.setProperty(V41, "label", "День 30%"); } if(param.asInt() == 3) { ledcWrite(FanChannel, 128); Blynk.setProperty(V41, "label", "День 50%"); } if(param.asInt() == 4) { ledcWrite(FanChannel, 200); Blynk.setProperty(V41, "label", "День 80%"); } if(param.asInt() == 5) { ledcWrite(FanChannel, 255); Blynk.setProperty(V41, "label", "День максимум"); } } } BLYNK_WRITE(V42) { // Дневной режим int pinValue = param.asInt(); if (myCooller == 0) { if(param.asInt() == 1) { ledcWrite(FanChannel, 0); Blynk.setProperty(V42, "label", "Ночь минимум"); } if(param.asInt() == 2) { ledcWrite(FanChannel, 76); Blynk.setProperty(V42, "label", "Ночь 30%"); } if(param.asInt() == 3) { ledcWrite(FanChannel, 128); Blynk.setProperty(V42, "label", "Ночь 50%"); } if(param.asInt() == 4) { ledcWrite(FanChannel, 200); Blynk.setProperty(V42, "label", "Ночь 80%"); } if(param.asInt() == 5) { ledcWrite(FanChannel, 255); Blynk.setProperty(V42, "label", "Ночь максимум"); } } } void blinkLedWidget() { // по таймеру (1сек) мигаю виртуальным светодиодом и запрашиваю состояние виртуальных пинов if (led1.getValue()) { led1.off(); } else { led1.on(); } Blynk.syncVirtual(V15); // день или ночь Blynk.syncVirtual(V41); // ночная скорость куллера Blynk.syncVirtual(V42); // дневная скорость куллера } void setup() { Serial.begin(115200); Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass, IPAddress(91,204,228,77), 8480); ledcSetup(FanChannel, freq, resolution); ledcAttachPin(FanPin, FanChannel); ledcWrite(FanChannel, 1); Blynk.syncVirtual(V15); Blynk.syncVirtual(V41); portal.attachBuild(build); portal.start(); portal.enableOTA("name", "password"); timer.setInterval(1000L, blinkLedWidget); } void loop() { Blynk.run(); timer.run(); portal.tick(); } В планах изменить немного схему подключения и код. Дело в том, что при запуске охлаждения, вентилятор до полной загрузки платы, включается на полную скорость, это секунды, но все равно шумно, особенно ночью. Буду использовать для питания вентилятора силовой ключ (IRF520). Он не подаст питание на вентилятор, пока плата не загрузится, таким образом вентилятор включится на уже заданных оборотах.
  3. VKN

    Arduino IDE v.1.8.19 windows

    2 раза скачали

    Среда разработки
  4. VKN

    ArduinoIDE

    Для подключения плат ESP в настройках программы, в поле "Дополнительные ссылки для Менеджера плат" надо вставить строку: http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://dl.espressif.com/dl/package_esp32_index.json Или нажать кнопку рядом с полем ввода и добавить ссылки в фоме. Одна строка = одна ссылка.
  5. VKN

    Blynk v.2.27.34_blue.apk

    5 раз скачали

    Альтернативная версия приложения для Android. Рабочая. Устанавливается и работает рядом с официальной. Значок приложения голубой, цветовая схема приложения изменена с зеленого на голубой. Автор: @perture
  6. VKN

    Blynk v.2.27.11.apk

    1 раз скачали

    Альтернативная версия приложения для Android. Рабочая. Устанавливается и работает рядом с официальной. Значок приложения розовый, остальное без изменений. Автор: dirty_vibe
  7. VKN

    Blynk v.2.27.3.apk

    1 раз скачали

    Архивная версия приложения для Android. Рабочая.
  8. VKN

    Server v.0.41.17

    0 раз скачали

    Это крайний доступный в открытых источниках релиз локального сервера Blynk.
  9. VKN

    Arduino Mega

    Распиновка Подключение к сети при помощи модуля "Shield Ethernet W5100" (на алике разные варианты, есть и с PoE)
×
×
  • Создать...

Важная информация