ESP8266 FAN Controller

Fan Controller - sterowanie wentylatorów.

Gdy używamy wentylatorów np do chłodzenia elementów lub nawiewu/wywiewu, rozprowadzania ciepła  itp. często zachodzi potrzeba aby była możliwość ich włączania i wyłączania oraz regulacji prędkości obrotowej.

Ponieważ akurat w moim przypadku potrzebny był regulator do rozprowadzania ciepła z kominka postanowiłem go sam wykonać, zresztą tak jak i szereg innych elementów mojej automatyki domowej.  Regulator może sterować dowolnymi urządzeniami z funkcją regulacji np żarówka, grzałka, silnik. Zastosowań jest wiele

 

Założenia: regulator steruje od 1 do 4 wentylatorami.  Regulacji dokonujemy z telefonu,tabletu lub komputera przez stronę www. Sterownik podłączony jest do lokalnej sieci WiFi.

Aby łatwo i tanio wykonać taki projekt użyjemy platformy Arduino do programowania. Do tego potrzebna będzie płytka Node MCU z chipem ESP8266:

Gdy mamy już płytkę zaczynamy kodowanie.

Należy pobrać środowisko programistyczne Arduino  IDE np stąd: https://www.arduino.cc/en/main/software

Po zainstalowaniu uruchamiamy program:

Najpierw należy skonfigurować środowisko. Musimy dodać dodatkowe biblioteki, oraz obsługę płytki sterownika.

W tym celu wybieramy Plik i Preferencje. Pojawi się okienko :

W zaznaczonym polu wpisujemy: https://arduino.esp8266.com/stable/package_esp8266com_index.json

Gdy mamy wiele dodatkowych adresów URL wpisujemy je w wielu liniach oddzielnie. dobrze jest kliknąć przycisk na prawo od pola w którym wpisywaliśmy adres.

Teraz wybieramy  opcję Narzędzia a następnie wybieramy Płytka "......"  gdzie w miejsce kropek np będzie Arduino Uno lub inna wybrana wcześniej lub domyślna płytka. A następnie wybieramy Menedżer płytek.

 

 

Po otworzeniu okienka szukamy płytki ESP 8266

 

Wybieramy wersję i klikamy w instaluj.Najlepiej jest teraz zamknąć Arduino

potrzebujemy jeszcze 3 kolejne biblioteki, a ściągamy je stąd:

ESPAsyncTCP: https://github.com/me-no-dev/ESPAsyncTCP

ESPAsyncWebServer: https://github.com/me-no-dev/ESPAsyncWebServer

ArduinoJson: https://github.com/bblanchon/ArduinoJson

 po otworzeniu każdego linka odnajdujemy przycisk Code  klikamy w niego i wybieramy Download ZIP

Arduino domyślnie zapisuje biblioteki w folderze Moje Dokumenty/Arduino/libraries

Rozpakowujemy tutaj wszystkie biblioteki w swoich folderach. UWAGA!!! - z nazwy folderu usuwamy  - master jeśli występuje po rozpakowaniu.

Podłączamy naszą płytkę za pomocą kabelka USB do komputera. Sprawdzamy czy zainstalował się odpowiednio port USB. Np menedżerem urządzeń. Klikamy prawym klawiszem myszki w Ten komputer potem właściwości i odnajdujemy po lewej stronie link menedżer urządzeń.

 

Możemy teraz Załadować nasze pliki projektu. Po pobraniu i rozpakowaniu projektu stąd:  FAN_Controller.zip wchodzimy w folder i klikamy w FAN_Controller.ino

Otworzy się projekt. Teraz należy wybrać odpowiednią płytkę. W tym celu znowu klikamy Narzędzia i Płytka "...." Potem Wybieramy ESP8266 Boards i znajdujemy płytkę NodeMCU 1.0:

Teraz wybieramy port COM (opcja poniżej płytki) taki jak w menedżerze urządzeń.

Jeszcze musimy sprawdzić Flash Size :

W zasadzie może być zaznaczona każda opcja poza ostatnią .

Płytka ESP 8266 w uproszczeniu może mieć pamięć podzieloną na dwie części  pierwsza na pamięć programu  druga na pliki.  Do drugiej możemy mieć dostęp z programu jak do karty SD. Jest to bardzo wygodne rozwiązanie. Zapiszemy tam wszystkie pliki naszego serwera.

Pliki zapisane są w folderze "data" projektu. Nie wgrywają się one razem podczas kompilacji. Należy je wgrać oddzielnie klikając w Narzędzia i ESP8266 Sketch Data Upload (widoczne na rys. powyżej.) - uwaga Monitor portu szeregowego musi być wyłączony.

Po wgraniu plików kompilujemy nasz program. Na początek otworzymy Monitor portu szeregowego.

Potem klikamy w Wgraj :

Nastąpi kompilacja. Jeżeli nie będzie żadnych błędów program wgra się do sterownika i zresetuje:

 

Na monitorze portu szeregowego można zobaczyć konfigurację.

Jeżeli konfiguracja urządzenia nie była wykonywana lub nie może się ono przez ponad minutę połączyć z wybraną siecią WiFi urządzenie wejdzie w tryb Access Point'a gdzie będzie można wejść do konfiguracji łącząc się z siecią o nazwie FAN_CONTROLLER np za pomocą telefonu.

Hasło nie jest wymagane. Łączenie się z siecią i wejście w tryb Access Pointa wykonywane jest tylko przy starcie urządzenia !!!.

Po połączeniu w tryb Access Point adres urządzenia będzie zawsze wynosił: 192.168.4.1

Najłatwiej jest skonfigurować system  za pomocą telefonu.

Wchodzimy do ustawień WiFi telefonu i szukamy sieci.

Po wybraniu możemy uruchomić przeglądarkę i wpisać adres IP: 192.168.4.1. Pojawi się normalny interfejs pracy urządzenia. Urządzenie w trybie Access Point pracuje nadal tak samo. Inny jest do niego tylko dostęp.  Tryb ten aktywny jest 10 minut i następuje ponowny restart systemu.

Po kliknięciu w Menu i wybraniu opcji Konfig. systemu możemy skonfigurować urządzenie do normalnej pracy jako klient naszej sieci WiFi:

Po zapisie i restarcie urządzenie się restartuje i uruchamia w normalnym trybie.

Po uruchomieniu się sterownika w przeglądarce wpisujemy adres IP urządzenia. Gdy adres jest statyczny co zalecam sytuacja jest prosta wpisujemy ten który zdefiniowaliśmy w konfiguracji. Gdy jest dynamiczny możemy bieżący adres podejrzeć monitorem portu szeregowego - przy starcie sterownik wyśle informację jaki ma adres IP przez port szeregowy. Drugi sposób to użycie skanera sieci LAN przeszukującego urządzenia w sieci.

PO wpisaniu poprawnego adresu w przeglądarce pojawi się główna strona naszego sterownika:

Obsługa jest prosta. Włączamy lub wyłączamy każdy wentylator osobno. Ustawiamy też dla niego odpowiednią prędkość.

Po kliknięciu w menu pojawią się opcje:

Strona o programie jest krótką informacją o autorze:

Fajnie byłoby abyście w swoich projektach pozostawili choć mały ślad o źródłach z których korzystaliście ;)

KONFIGURACJA:

Konfiguracja wentylatorów:

Po jej wybraniu pojawi się strona:

W każdym wentylatorze możemy ustawić jego Nazwę, Minimalną prędkość i Boost.

Nazwa- nazwa wyświetlana na stronie głównej.

Minimalna prędkość w procentach. Poniżej pewnej wartości wentylator się nie obraca np poniżej 10% wpisanie tutaj ograniczenia nie pozwala na niższe obroty niż wskazane . Np ustawiamy minimum 10% potem w programie suwakiem przestawiamy na 3% - wentylator dalej zachowa 10% obroty. Oczywiście ustawienie na zero oraz wyłączenie wyłączą wentylator.

Boost- przyspiesza wentylator do 50 procent na 2 sekundy umożliwiając start przy bardzo wolnych obrotach. Np wentylator potrafi się kręcić przy 10% ale sam nie ma siły wystartować.  Jednak gdy zejdzie z wyższej prędkości utrzyma przykładowe 10%. Boost na starcie włącza 50% pozwalający wentylatorowi wystartować.

Na końcu są ogólne opcje:

Wyjście AUX - sterownik ma dodatkowe wyjście tranzystorowe AUX. Jest to wyjście niskoprądowe(50mA) typu OC, czyli wysterowane zwiera do masy. np. do sterowania przekaźnikiem. Ma dołączone do +12V diodę LED, oraz diodę zabezpieczającą - np. gaszącą łuk z cewki przekaźnika (patrz schemat)

Są trzy opcje regulacji:

  • Niewykorzystane
  • Dioda pokazująca status urządzenia. Dioda LED podłączona do tego wyjścia będzie sygnalizować stan sterownika tj:
    - miganie ok 1 sek - łączenie z WiFi.
    - krótkie błyśnięcia długa przerwa - normalna praca, WiFi podłączone
    - bardzo krótkie błyśnięcia i krótka przerwa - praca w trybie Access Pointa
  • Wyjście przekaźnikowe. Dla tego typu wyjścia można ustawić jego nazwę. Wtedy na stronie głównej pojawi się dodatkowy przycisk którym można ręcznie sterować.

Częstotliwość PWM - standardowo sterownik ESP8266 steruje wyjściami PWM z bazową częstotliwością 1kHz (1000 Hz). Ta częstotliwość jest dobrze słyszalna. Niektóre wentylatory przy takim sterowaniu mogą piszczeć i będzie to bardzo słyszalne. Dlatego proponuję przenieść częstotliwość PWM na 22kHz - poza zakres słyszalny dla człowieka. Dla wszystkiego użytkownik sam może ustawić wymaganą częstotliwość - w niektórych przypadkach może być to konieczne. Możliwy zakres regulacji 100Hz- 40000Hz.

Niektóre znaki są niedozwolone w nazwach np " znak nowej linii itp.  Przy próbie wprowadzenia tych znaków po kliknięciu w zapisz pojawi się odpowiedni komunikat np:

 Oczywiście lista błędów może być dłuższa np. nieprawidłowe wartości w minimalnych prędkościach czy częstotliwości PWM.

Gdy wszystko jest OK dane zostaną zapisane:

Konfiguracja wentylatorów nie wymaga restartu urządzenia. Klikamy w przycisk powrót i przeglądarka wraca do strony głównej.

Konfiguracja systemu:

Jest to moduł uniwersalny - można go stosować w innych programach dla ESP8266. Jest to mój własny odpowiednik ESP WiFiMAnagera, który to wg mnie ma szereg wad a głównie brak porządnej obsługi statycznych adresów IP co w przypadku urządzeń z wbudowanymi serwerami www stanowi pewien problem (adres IP się zmienia nie wiadomo gdzie szukać urządzenia). Jest to dość kłopotliwe. Dodatkowe rozwiązania w WiFi managerze typu dodatkowe pola itp- nie są w pełni oczywiste np. brak przycisku wyboru adres IP statyczny/dynamiczny. Nie ma także porządnej obsługi błędnie wpisanych danych. Dlatego całą konfiguracje napisałem po swojemu. Dodatkowo zaimpementowałem kontrolę dostępu do serwisu lub samej konfiguracji za pomocą hasła. Taki konfigurator jest też łatwy do przeróbki tj. wygląd czy dorobienie swoich pól, opcji itp.

Strona konfiguracji ze wszystkimi opcjami:

Po wpisaniu naszych danych konfiguracyjnych klikamy w Zapisz. Gdy z jakiegoś powodu któreś dane są niepoprawne wyświetli się podobny komunikat jak w konfiguracji wentylatorów np :

Lista błędów jest podzielona na sekcje aby łatwiej było odnaleźć miejsce z błędem. Dodatkowo pole ze źle wprowadzonymi danymi będzie otoczone czerwoną obwódką.

Gdy wszystko jest poprawne dane zostaną zapisane i pojawi się komunikat:

Zmiana konfiguracji wymaga restartu urządzenia. Po kliknięciu w Reset sterownik uruchomi się ponownie.

Co w przypadku gdy nie będzie on mógł nawiązać połączenia z siecią ze względu np na błąd w haśle.  Jeżeli nie będzie możliwe połączenie do WiFi przez ok 1,5 minuty sterownik przejdzie w tryb Access Pointa.  Tryb ten aktywny jest 10 minut i następuje ponowny restart systemu.

Część softwaerowa zrobiona czas na elektronikę.

Schemat urządzenia poniżej:

Wyjścia D1-D4 płytki Node MCU skonfigurowane są w projekcie jako PWM. PWM jest to modulacja szerokością impulsu, jak na rysunku:

  W ESP8266  moduł PWM ma 10 bitów wobec czego można wpisać do niego wartości od 0 dla 0% do 1023 dla 100%.  Wartość 0 to brak impulsu wentylator nie działa. Kolejne wartości zwiększają szerokość impulsu, a im jest on większy tym szybciej działa wentylator. dla 1023 jest to 100% i wentylator ma maksymalne obroty. UWAGA. Dla bardzo małych wartości wentylator może "nie mieć siły" wystartować !!! Można to rozwiązać programowo np na 0,5 sek dać np 50% a potem 5% - rozwiązań jest wiele.  W moim rozwiązaniu zastosowałem możliwość ustawienia minimalnych obrotów oraz tryb Boost - przyspieszenie do 50% na dwie sekundy przy starcie wentylatora.

Ponieważ ESP pracuje z napięciem 3,3V na każdym wyjściu można ustawić max 3,3V i prąd rzędu kilku miliamperów. Nie zawsze jest to wystarczające do pełnego wysterowania tranzystora mocy. Dlatego zastosowałem tutaj driver TLP251F sterujący  tranzystorami MOSFET typu N. Zastosowanie drivera rozwiązuje też szereg innych problemów szeroko opisanych w wielu publikacjach, więc nie ma co się tu rozpisywać. Lepiej i prościej zastosować gotowe rozwiązanie za 2-3 zł.  Przy okazji ma on separację galwaniczną. Przy dużych napięciach (układ łatwo przerobić na 24,48 itd woltów) czy prądach i zakłóceniach warto rozważyć oddzielne zasilania części prądowej od części logiki. Takie rozwiązanie w łatwy sposób to umożliwia.  Driver steruje tranzystorem MOSFET ja zastosowałem solidne tranzystory dużej mocy - daje to gwarancję że się nie spali oraz nie będzie potrzebny radiator. W różnych rozwiązaniach można zastosować mniejsze (i tańsze) tranzystory.

Do tego schematu zaprojektowałem płytkę drukowaną. Podstawowe założenie - łatwość wykonania nawet dla początkujących. Dlatego zrezygnowałem z elementów SMD. Płytka jest dość duża ale łatwa w produkcji  i montażu - coś za coś.

Rozmieszczenie elementów na płytce:

 

Sposobów wykonania jest wiele, od najprostszych pisakiem czy lakierem do bardziej profesjonalne, dla leniwych można też taką płytkę zamówić.

Projekt płytki i schemat do pobrania stąd: schematyPDF.zip


 

 

Jak to działa?  Zobacz krótki opis:  ESP8266 FAN Controller - opis programu

 

Do pobrania :

Projekt szkicu Arduno: FAN_Controller.zip  ~60kB

Projekt płytki i schemat: schematyPDF.zip ~1,4MB