Ściemniacz 3 kanały + przyciski

LukaszH
Posty: 99
Rejestracja: sob gru 14, 2019 11:49 pm

sob lis 14, 2020 9:24 am

Dzięki koledze @Elmaya który opracował wg mnie genialny soft powstała wersja ściemniacza na 3 kanały z dodatkowymi funkcjami. Gotowy projekt - Tutaj więcej danych) ale także gerbery poniżej do wersji 01M.
1. Wgrywamy soft do przedstawionego modułu ale może być dowolny ESP 8266/8285 - plik i ustawienia w załączniku:
Dimm 3x3.rar
(1.12 MiB) Pobrany 6 razy

Dodatkowa uwaga: dla ESP12F można wgrać wersję 16Mbit i wtedy OTA można zrobić update w jednym kroku dla ESP01M (8Mbit) trzeba będzie użyć GUI-GenericUpdater i wykonać aktualizację w 2 krokach. Dostęp do OTA xxx:81/update

2. Po udanym wgraniu moduł zacznie migać diodą na GPIO15 i rozgłaszać sieć "dimm3":
Miganie diody co 0,5sek = brak połączenia / w trakcie łączenia
Dioda wyłączona = prawidłowa praca, połączony z WIFI i Supla cloud
Dioda włączona = tryb konfiguracji
3. Łączymy się z modułem i powinna wyskoczyć sama strona konfiguracji jeśli nie to wpisujemy 192.168.4.1. Uzupełniacie dane potrzebne do zalogowania się w Supla cloud i nadajecie nazwę własną dla modułu. Zapisujecie i czekacie aż moduł połączy się z wifi i zarejestruje w cloud.
4. Moduł ma 3 niezależne kanały z 2x MOSFET który może być obciążony około 100W na kanał.
5. Soft ma kilka funkcji wbudowanych jak łagodny start, możliwość pracy niezależnie od połączenia z WIFI/Cloud.
6. Ponowne wejście w tryb konfiguracji możliwy jest przez przycisk konfiguracji (patrz status LED)
7. Sterowanie z aplikacji jak w standardowym ściemniaczu i do dyspozycji mamy 3 kanały + kanał termometru gdzie można go użyć do monitorowania temperatury modułu (szczególnie przy dużej mocy) lub wyjście kablami na dalszą odległość (moduł wydziela ciepło i wyniki będą zafałszowane)
8. Moduł jest dostosowany na napięcie 12V (gen.2 będzie uniwersalnym modułem do 24V)
9. Wszystkie połączenia znajdziecie na schemacie i opisie płytki gdzie należy wpiąć LEDy i przyciski



Opis działania przycisków każdy z 3 kanałów działa tak samo:
a) Jedno kliknięcie: włączamy lub wyłączamy światło do poprzednio ustawionego poziomu
b) Trzymanie przycisku: ściemnianie/rozjaśnianie. Domyślnie ustawiony jest tryb pracy ciągłej od 0%>>100%>>0% itd. Ponowne wciśnięcie przycisku zmienia kierunek jeśli było ściemnianie to rozpocznie się rozjaśnianie i na odwrót. (jest możliwość zmiany trybu na 0% >>100%>> stop / 100%>>0% stop - patrz dalej konfiguracja)
c) Dwa kliknięcia: uruchamiamy 100% jasności i gasimy 1 kliknięcie
d) 3 kliknięcia uruchamiamy scenę - ustawienia scen w sekcji konfiguracja

Tryb konfiguracji dla każdego kanału osobno:
Klikamy 10x: wejście do trybu sygnalizowane jest uruchomieniem światła 0%>>100%>>0%>100% i powróci do poprzedniej wartości %
Jak jesteśmy w trybie konfiguracji to:
a) 2x kliknięcie włączamy/wyłączamy sceny dla danego kanału (przycisku). Potwierdzenie to mignięcie na 0,5 sek diody statusu (GPIO15).
b) 3x kliknięcie zapisujemy scenę. Uprzednio należy ustawić poziomy % dla poszczególnych kanałów. Może być też 3x 0% aby wszystkie kanały wyłączyć jedną sceną lub np ustawić pierwszy kanał 10% drugi 50% a trzeci 60%. Pełna dowolność :) Tutaj także zapisanie sceny sygnalizowane jest przez mignięcie diody statusu na 0,5sek
c) 5x kliknięcie zmieniamy tryb pracy przycisku z ciągłego 0%>>100%>>0% itd. lub na przerywany 0%>>100%>>stop - w tym trybie wciskamy przycisk i po osiągnięciu min lub max dalej się nic nie dzieje i należy puścić przycisk i ponownie przytrzymać aby zmienić kierunek.
Tryb konfiguracji kończy się po 20sek gdzie ponownie wyjście zapala szybko z 0% do 100% dwa razy i powraca do poprzedniej wartości.

Moduł wykorzystuje także termometr z A0 (NTC10k) jako kanał ale także jako wewnętrzne zabezpieczenie przed przegrzaniem i powyżej 90 stopni wyłączy wszystkie kanały ściemniacza.
Uwaga!: koniecznie należy wlutować rezystor NTC 10k aby nie doszło do uszkodzenia wejścia A0 z uwagi na napięcie 3,3V.

Schemat PCB: Gerbery PCB - wersja ESP-01M:
Gerber_PCB Dimm3 esp8285.zip
(111.31 KiB) Pobrany 20 razy
Ostatnio zmieniony ndz sty 17, 2021 11:08 pm przez LukaszH, łącznie zmieniany 12 razy.
LukaszH
Posty: 99
Rejestracja: sob gru 14, 2019 11:49 pm

sob lis 14, 2020 9:26 am

Jeszcze zdjęcia 3D z projektu:
Top.JPG
Top.JPG (70.83 KiB) Przejrzano 595 razy
Bottom.JPG
Bottom.JPG (67.07 KiB) Przejrzano 595 razy
Bottom.JPG
Bottom.JPG (74.48 KiB) Przejrzano 595 razy
Ostatnio zmieniony czw gru 10, 2020 10:59 pm przez LukaszH, łącznie zmieniany 1 raz.
elmaya
Posty: 1107
Rejestracja: śr cze 27, 2018 5:48 pm
Lokalizacja: Sevilla

sob lis 14, 2020 9:48 am

LukaszH
Posty: 99
Rejestracja: sob gru 14, 2019 11:49 pm

sob lis 14, 2020 7:05 pm

elmaya pisze:
sob lis 14, 2020 9:48 am
haven't you seen this? :lol: :lol:
https://en-forum.supla.org/viewtopic.php?p=74510#p74510
Yes I seen and it's very cool. However, I already have 10 PCBs according to the diagram in the first post.
Generally also very important to me is dimming and brightening from the local buttons. Therefore, I would need 3 functions for each channel:
a) one click to work exactly the same as in the indicated post. ON / OFF to last state (PWM %)
b) two clicks ON 100% / OFF 0% (to turn on the light quickly)
c) Holding the button over 0.8 sec (I think 0.8 sec is the optimal value) starts dimming. After releasing and pressing it again for more than 0.8 seconds, it starts brightening and so on.
Unfortunately, I can't modify the software :( this is not my level :)
Could I count on help in converting / building software with local buttons + described functions and GPIO according to the presented diagram?
Ostatnio zmieniony sob sty 16, 2021 3:39 pm przez LukaszH, łącznie zmieniany 2 razy.
LukaszH
Posty: 99
Rejestracja: sob gru 14, 2019 11:49 pm

sob lis 14, 2020 7:29 pm

Właśnie Klew opracował nową bibliotekę z funkcjami przycisku: viewtopic.php?f=61&t=7512 - idealnie wpisuje się w moje potrzeby odnośnie tego ściemniacza :)
lukfud
Posty: 769
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

sob lis 14, 2020 7:39 pm

LukaszH pisze:
sob lis 14, 2020 7:29 pm
Właśnie Klew opracował nową bibliotekę z funkcjami przycisku: viewtopic.php?f=61&t=7512 - idealnie wpisuje się w moje potrzeby odnośnie tego ściemniacza :)
Częściowo, będziesz musiał pokombinować z ON_HOLD, w tej metodzie akcja wykona się po ustalonym czasie a nie podczas trzymania przycisku.
LukaszH
Posty: 99
Rejestracja: sob gru 14, 2019 11:49 pm

sob lis 14, 2020 7:56 pm

lukfud pisze:
sob lis 14, 2020 7:39 pm
LukaszH pisze:
sob lis 14, 2020 7:29 pm
Właśnie Klew opracował nową bibliotekę z funkcjami przycisku: viewtopic.php?f=61&t=7512 - idealnie wpisuje się w moje potrzeby odnośnie tego ściemniacza :)
Częściowo, będziesz musiał pokombinować z ON_HOLD, w tej metodzie akcja wykona się po ustalonym czasie a nie podczas trzymania przycisku.
Hmm to aby podczas trzymania przycisku dodawało np. 1% PWM po każdych 50ms (5sek z 0% do 100%) to rozumiem funkcja ON_HOLD nie zadziała w tym przypadku?
Ogólnie to ten soft jaki załączyłem nie jest zły ale nie wiem czemu czasem gubi parametr w aplikacji zazwyczaj po paru godzinach.Tak bardzo to nie przeszkadza ale nie wiadomo zdalnie czy coś jest włączone czy nie bo pokazuje wyłączony kiedy fizycznie zapalony jest jakiś LED. Nie wiem czy to powiązane ale mam wrażenie że zakłuca pracę innego softu od Elmaya 16x https://en-forum.supla.org/viewtopic.php?f=10&t=6091 i 16x gubi czasem wpisane parametry na stronce konfiguracji. Ostatnio 3 razy już musiałem uzupełnić dane (brakuje kilku znaków zazwyczaj w adresie milowym do Supli)
lukfud
Posty: 769
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

sob lis 14, 2020 8:10 pm

LukaszH pisze:
sob lis 14, 2020 7:56 pm
Hmm to aby podczas trzymania przycisku dodawało np. 1% PWM po każdych 50ms (5sek z 0% do 100%) to rozumiem funkcja ON_HOLD nie zadziała w tym przypadku.
Niestety nie.
Przejście na nową bibliotekę załatwi Ci powielenie jednej klasy. Poniżej przykład z zapisem do pamięci i przywracaniem stanu.

Kod: Zaznacz cały

class myDimmer : public Supla::Control::DimmerBase {
 public:
  myDimmer(int brightnessPin) : brightnessPin(brightnessPin){
  }
  void setRGBWValueOnDevice(uint8_t red, uint8_t green, uint8_t blue, uint8_t colorBrightness, uint8_t brightness) {
    if ((select_device == _rgbw_w) && (channel.getChannelNumber() == 1)) {
      hw_brightness2 = brightness;
    } else if ((select_device == _rgb_w_w) && (channel.getChannelNumber() == 2)) {
      hw_brightness2 = brightness;
    } else {
      hw_brightness = brightness; }
    analogWrite(brightnessPin, (brightness * 1023) / 100);
  }
  void onSaveState(){
    Supla::Storage::WriteState((unsigned char *)&curBrightness, sizeof(curBrightness)); 
  }
  void onLoadState() {
    uint8_t myBrightness = 0;
    if (Supla::Storage::ReadState((unsigned char *)&myBrightness, sizeof(myBrightness))) {
      Serial.print(F("Dimmer["));
      Serial.print(channel.getChannelNumber());
      Serial.print(F("] settings restored from storage. Brightness: "));
      Serial.println(myBrightness);
      setRGBW(0, 0, 0, 0, myBrightness);
    }
  } 
 protected: int brightnessPin;
};
Do tego dołożysz klasę dziedziczoną z Supla::Triggerable, którą załatwisz wielokliki.

Kod: Zaznacz cały

enum cfgBtnActions {BTN_ACTION_ON_HOLD, BTN_ACTION_ON_RELEASE};
class myCfgActionsClass : public Supla::Triggerable {
  public: myCfgActionsClass(){};
  void runAction(int event, int action) {
    if (action == BTN_ACTION_ON_HOLD) {
      Serial.println("*** on hold pressed ***");
      cf_active_led = true;
    }
    if (action == BTN_ACTION_ON_RELEASE) {
      Serial.println("*** on release ***");
      cf_active_led = false;
    }
  }
}; // faza testowa :)
Zostanie jedynie ściemnianie/rozjaśnianie podczas trzymania przycisku.
LukaszH
Posty: 99
Rejestracja: sob gru 14, 2019 11:49 pm

śr lis 25, 2020 11:10 pm

Bardzo chciałbym podziękować koledze @elmaya za przygotowanie softu 8-) :D I do not know how you do it but you spend time for us and you doing brilliant softwares - thanks again !!
Opis jest na pierwszej stronie i jest to wersja już "J" - było trochę testów ;)

Aktualnie jestem w trakcie modyfikacji PCB na drugą generację gdzie ponownie dzięki @elmaya będzie poprawiony zasięg i stabilność WIFI, moduł będzie uniwersalny do 24V i będzie już wbudowana dioda statusu jak i wyprowadzenie zewnętrzne. Dodatkowo będzie odkryta część ścieżek miedzi aby pokryć je grubszą warstwą cyny aby moduł był gotowy na ponad 3x 100W :twisted: Moduł oczywiście będzie pasował do puszki jak i w rozdzielni ponieważ ma transoptory aby wyeliminować problem długich kabli.

Zachęcam do testowania softu z pierwszego postu 8-) 8-) i chwilę cierpliwości na nową wersję PCB
Albert
Posty: 113
Rejestracja: pt sty 04, 2019 8:32 pm

pt lis 27, 2020 9:33 pm

Można w jakiś sposób kupić taką płytkę surową bądź częściowo uzbrojoną? :mrgreen:
ODPOWIEDZ

Wróć do „Projekty użytkowników”