Jump to content
mathom

A quaLED sterownik LED + termometry + LCD Nextion

Recommended Posts

Witam

po zbudowaniu mojej lampy DIY i wrzuceniu do niej wyśmienitego softu MAGU zacząłem oczywiście ulepszać soft. Doszedłem do punktu gdzie od nowa napisałem sterownik zostawiając tylko kompatybilność bluetooth z AQMA by Magu.

0.jpg1.jpg2.jpg3.jpg4.jpg5.jpg6.jpg7.jpg8.jpg

Uwaga! Grafiki wykorzystane w sterowniku są ściągnięte z netu, oczywiście nie mam do nich praw autorskich, są dodane poglądowo do użytku prywatnego. Fajnie by było gdyby ktoś zrobił własne i się podzielił ;)

Sterownik mieści się (ledwo) na Arduino Nano i do wykorzystania pełnych możliwości wymaga:

Sprzęt:

- Arduino Nano

- zegar RTC z baterią

- moduł bluetooth

- 3 termometry cyfrowe DS18B20 - ja używam tych na sondzie (cena ok 10 zł / szt)

- 3x przekaźniki do sterowania obwodami wiatraków (moduły na allegro po 2 lub 4, cena 20-30 zł)

- dotykowy wyświetlacz Nextion 2.8" - ~16USD z wysyłką na Aliexpress. Wyświetlacz warto podłączyć przez przetwornicę (5v) lub osobnym zasilaczem. Wydajność prądowa nano jest za mała.

- (opcjonalnie) przetwornice napięcia step-down, ja używam tych z LCD i potencjometrem do zasilania wszystkiego z jednego zasilacza i płynnej regulacji obrotów wiatraków napięciem (cena 35 zl / szt)

Oczywiście wszystko będzie działało również bez termometrów, przekaźników i wyświetlacza.

Możliwości:

- obsługa 6 PWM (z modułem i2c do 70)

- obsługa 3 termometrów

- obsługa 3 przekaźników uruchamiających obwody wiatraków przy przekroczeniu zadanej temp.

- podobnie jak u Magu - płynne wschody i zachody, ale dodatkowo płynne ściemnianie/rozjaśnianie przy każdej zmianie mocy.

- logarytmiczne ściemnianie i rozjaśnianie do wyboru w ustawieniach (przyjemniejsze dla oka - UWAGA! eksperymentalnie - mogą być problemy, pracuję nad tym)

- dodatkowy program dostępny z menu głównego (np. do aklimatyzacji lub oświetlenia sumpa)

- możliwość wyłączenia światła, włączenia oświetlenia nocnego (płynne przejścia)

- uruchamianie wiatraków w zależności od temperatury

- pełna konfiguracja na LCD, w tym godziny pracy, czas wschodów itd, data i godzina, temperatury, adresy termometrów, czasów płynnego rozjaśniania itd. itp.

- ekran z godzinnym harmonogramem pracy

- wygaszacz ekranu z godziną i temperaturą wody

- tryb test

- wszystkie ustawienia w pamięci lampy

UWAGA! Ze względu na inną strukturę EEPROM przy pierwszym uruchomieniu nastąpi wyczyszczenie pamięci.

Todo:

- czas letni :)

Oprogramowanie:

- standardowe Arduino IDE, wymagane biblioteki w paczce

- Nextion Editor (https://nextion.itead.cc/download.html)

Wyświetlacz NEXTION:

- komunikuje się z Arduino przez UART (łącze szeregowe) - należy podłaczyć Rx (arduino) - Tx (nextion), Tx (arduino) - Rx (nextion)

- co ważne - nie mając wyświetlacza można przetestować soft w symulatorze w środowisku Nextion Editor (https://nextion.itead.cc/download.html). Wystarczy podłączyć lampę po USB (115200 baud). Symulator jest w pełni funkcjonalny.

Mam nadzieję że Magu nie obrazi się o przeróbki totalne jakie dokonałem w jego sofcie. Zachowana jest kompatybilność z AQMA w obsłudze przez Bluetooth w zakresie wspólnych opcji. Gdyby Wam się soft spodobał to myślę że można by poprosic Magu o dorobienie reszty ;)

Sterownik w wersji 1.0 więc błędy mogą być, będę się starał naprawiać na bierząco.

Link do softu:

https://github.com/mathompl/***

Okablowanie:

wiring.jpg

Edited by mathom (see edit history)

Share this post


Link to post
Share on other sites

- dotykowy wyświetlacz Nextion 2.8" - ~16USD z wysyłką na Aliexpress.

- pełna konfiguracja na LCD, w tym godziny pracy, czas wschodów itd, data i godzina, temperatury, adresy termometrów, czasów płynnego rozjaśniania itd. itp.

Czyli można ją sterować dotykowo?

Share this post


Link to post
Share on other sites

A jest możliwość dodania włącz wyłącz np. do swietlówek T5 3 kanały

Pozdrawiam Łukasz

Share this post


Link to post
Share on other sites

Tak, wystarczy zamiast driverow led dać przekaźniki 230v i zmienić obsługę wyjść w sofcie.

Share this post


Link to post
Share on other sites

Termometry łączy się z jednym pinem - jest w konfigu ***.h. Trzeba tylko dać rezystor np. 4.7k między sygnałem a vcc. Tutaj manual: http://tomczak.org.pl/index.php/dydaktyka/swbud/arduino-odczyt-termometru-cyfrowego/

został mały babol w kodzie (delay). wrzuciłem poprawioną wersję, link w 1 poście.

Share this post


Link to post
Share on other sites

Wrzucona nowa wersja, poprawione kilka bugów w tym jeden poważny w czytaniu temperatury.

Dodatkowo:

- logarytmiczny algorytm ściemniania/rozjaśniania działa

- uporządkowany kod

- możliwość wyłączenia obsługi bluetooth lub wyświetlacza

- obsługa eksperymentalna obsługa kontrolera PWM PCA9685 pozwalającego na podłączenie kilkuset kanałów PWM. W sterowniku na razie można wybrac czy kanał obsługiwany przez PWM arduino czy PCA9685. Dodatkowo dołożyłem obsługe +2 kanałów PWM w wyświetlaczu ( w sumie 8, można korzystać albo z arduino mega albo z PCA9685)

PCA9685 wygląda bardzo fajnie - na razie zamówiłem, nie testowałem, ale z lektury dokumentacji: ma swój zegar, nie trzeba cały czas utrzymywać napięcia na linii sygnałowej, wysyła sie tylko raz sygnał. Częstotliwość PWM do 1600HZ - ja osobiście mam problem z migającymi ledami białymi przy standardowej częstotliwości arduino. Podniesienie pomogło, ale mam nadzieję że ten driver będzie lepszm rozwiązaniem (a koszt to 3USD). I co ważne, komunikuje się z arduino po I2C, więc zwalniają się wszystkie wyjścia cyfrowe.

Share this post


Link to post
Share on other sites

Uwaga! Dzieku lukaszt0 wykryliśmy buga w plikach nextiona. Pliki zapisane na komputerze z ustawionym wyższym DPI nie otwierają się poprawnie w komputerach z mniejszym i vice versa. Wrzuciłem 2 pliki demo dla 96dpi i 120dpi.

Share this post


Link to post
Share on other sites

Podpiąłem wczoraj moduł PWM i2c PCA9685, taki:

https://www.aliexpress.com/item/16-Channel-12-bit-PWM-Servo-Driver-I2C-interface-PCA9685-for-arduino-or-Raspberry-pi-shield/32447354314.html?spm=2114.13010608.0.0.JfUXBO

Koszt 1,45USD z wysyłką :)

Moduł wpina się do arduino zamiast zegara RTC, a zegar wpina się szeregowo w wyjścia modułu (SDA-SDA, SCL-SCL, VIN-VIN, GND-GND)

Moduł ma same zalety:

- zwalnia się 6 pinów arduino

- 16 kanałów PWM na dzień dobry, zamiast 6 w arduino nano. Pozostałe można wykorzystać na dodatkowe drivery lub pompy dozujące. Są moduły oferujące większą liczbę kanałów.

- 12 bitowa rozdzielczość, czyli ściemnianie i rozjaśnianie zamiast 0-255 jest 0-4025 - widać różnicę w płynności, szczególnie we wschodach/zachodach

- regulowana częstotliwość działania (jedno polecenie), dzięki temu można łatwo wyregulować np. buczące drivery

- światło jest znacznie stabilniejsze, tj. u mnie zniknął efekt lekkiego migotania

- koszt praktycznie zerowy

Mój soft obsługuje moduł standardowo, wystarczy zmienić konfig .h

Share this post


Link to post
Share on other sites

Cześć.

Fajny projekt. W zasadzie każdy projekt jest fajny - zarówno Magu jak i twój. Twój ma jedną przewagę - nie trzeba odpalać kompa, żeby zmienić ustawienia lub po prostu zapalić lampy. Dla mnie rozwiązaniem problemu używania PC byłby telefon, który każdy przeważnie nosi w kieszeni. Eliminacja wyświetlacza i eliminacja konieczności użycia komputera za jednym zamachem. Wczoraj spotkałem się z kolegą - obaj mamy sterowniki z oprogramowaniem Magu i po krótkiej dyskusji doszliśmy do tego samego wniosku - brak obsługi przez Androida.

Share this post


Link to post
Share on other sites

(...) obaj mamy sterowniki z oprogramowaniem Magu i po krótkiej dyskusji doszliśmy do tego samego wniosku - brak obsługi przez Androida.

założymy się ?

http://magu.pl/aqma-systemandroid

AQma_LED_2.jpg

to "coś" z prawej pod zegarem - to bluetooth

Share this post


Link to post
Share on other sites

No dobra, zalepiłem - przeoczyłem ten mały link na stronie :blushing: . Od jutra testowanie. Ale i ekran bedzie po 13USD w piątek więc też kupię i spróbuję alternatywnego softu.

założymy się ?

http://magu.pl/aqma-systemandroid

AQma_LED_2.jpg

to "coś" z prawej pod zegarem - to bluetooth

Edited by bienki (see edit history)

Share this post


Link to post
Share on other sites

Oczywiście bluetooth działa jak w Aqmie, czyli dla max 6 kanałów PWM.

Mogę oczywiście wystawić inny interfejs po bluetooth który pozwoli na ustawienie większej liczby PWM + opcje dodatkowe jak w panelu lcd.

Problem jest inny - pomimo ostrej optymalizacji osiągnąłem sufit pamięci flash arduino nano. Bluetooth nie mieści się jednocześnie z obsługą Nextiona. Obsługa bluetooth zajmuje chyba ok 5kb - sam nie wiem dlaczego, jak będę miał chwilkę to się tym zajmę. Na razie rozwiązaniem jest Arduino Mega.

ps. dzisiaj doszedł LCD Nextiona i plastikowa ramka/maskownica na wyświetlacz, podłączę i zdam relację.

Share this post


Link to post
Share on other sites

Zamiast wielkiego Arduino Mega można zastosować takie cudo: http://www.ebay.com/itm/New-Small-Meduino-Mega2560-R3-Pro-Mini-ATMEGA16U2-Arduino-Mega2560-Compatible-/162264493523?hash=item25c7b7add3:g:-9cAAOSwyQtVnMbp

Ja planuje zrobić sobie sterownik na Raspbarry Pi Zero.

Edited by Gothmog (see edit history)

Share this post


Link to post
Share on other sites

Chciałem wypróbować soft ale przy kompilacji dostaję błąd:

Nextion:680: error: 'discoverOneWireDevices' was not declared in this scope
s = discoverOneWireDevices ();
Nextion:701: error: 'listContains' was not declared in this scope
idxLed = listContains (SETTINGS.ledSensorAddress);
exit status 1
'discoverOneWireDevices' was not declared in this scope

Soft czysty prosto z GitHub-a jedynie co zrobiłem to doinstalowałem potrzebne biblioteki.

Co jest nie tak?

Share this post


Link to post
Share on other sites

Włącz obsługę termometrów, nie przetestowałem tych definów wyłączających do końca.

Plik aq ual ed.h,

#define NO_TEMPERATURE

na

//#define NO_TEMPERATURE

od razu też w tym pliku ustaw sobie piny i flagi PWM zgodnie z komentarzem. Jest defaultowo ustawione na moduł PWM.

patch na githubie.

Edited by mathom (see edit history)

Share this post


Link to post
Share on other sites

Dzięki kompiluje się

Jeśli chodzi o konfig to PWM_I2C od 1 do 8 dałem 0

i odremowałem

#define PWMS 8
#define PWM1_PIN 3
#define PWM2_PIN 5
#define PWM3_PIN 6
#define PWM4_PIN 9
#define PWM5_PIN 10
#define PWM6_PIN 11
#define PWM7_PIN 1
#define PWM8_PIN 2

Po wgraniu soft działa niestety wyglada to tak jakby arduino się restartowało co pewien czas.

Mogę poklikać na wyświetlaczu - przetestować kanały - testowo podpiąłem tylko 1 kanał pwm i zmiana wypełnienia działa.

Co może być przyczyną restartów?

Na sofcie Aqmy działa prawidłowo bez restartów więc hardware wydaje się być ok.

Oczywiście zasilanie zewnętrzne nie po USB / kabel odpięty.

Edited by s.sienicki (see edit history)

Share this post


Link to post
Share on other sites

Kanały 7 i 8 działają tylko na i2c chyba że masz arduino mega. Jeśli masz 1 kanał ustaw PWMS 1, albo przynajmniej PWM7_I2C i PWM8_I2C na 1.

co jaki czas jest restart i jak się objawia ? masz podpięty zegar RTC ? Możesz na początek spróbować wyłączyć watchdoga, w pliku aqua l ed.ino skomentuj wdt_enable(WDTO_4S);

Edited by mathom (see edit history)

Share this post


Link to post
Share on other sites

mam podejrzenie że może brakować sramu. Wrzuciłem na githuba wersję z wyrzuconą tablicą ściemniania do pamięci flash. Sprawdź czy na tej wersji jest ok.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

Wchodząc do serwisu Nano-Reef, zgadzasz się na warunki Terms of Use.