Spisu treści:

Jasna sterowana lampa o wschodzie słońca: 6 kroków
Jasna sterowana lampa o wschodzie słońca: 6 kroków

Wideo: Jasna sterowana lampa o wschodzie słońca: 6 kroków

Wideo: Jasna sterowana lampa o wschodzie słońca: 6 kroków
Wideo: Doda i jej miny podczas przemówienia Górniak (oryg. cezarywisniewski_) 2024, Lipiec
Anonim
Jasna sterowana lampa o wschodzie słońca
Jasna sterowana lampa o wschodzie słońca
Jasna sterowana lampa o wschodzie słońca
Jasna sterowana lampa o wschodzie słońca

Czy kiedykolwiek obudziłeś się o 7, czyli o zwykłej porze, kiedy musisz obudzić się do pracy, i znalazłeś się w ciemności? Zima to straszny czas, prawda? Musisz obudzić się w środku nocy (bo inaczej dlaczego jest tak ciemno?), zerwać się z łóżka i wysłać swoje półprzytomne ciało pod prysznic.

Ten projekt ma na celu rozwiązanie jednego z problemów - poranna ciemność.

Wokół jest wiele tanich lamp o wschodzie słońca, ale wszystkie mają niską moc i są blade. Są bardziej jak lampka nocna, która ma poprawić jakość snu. Wcale nie to, czego chcę.

Jednocześnie samo włączenie jasnego światła natychmiast Cię obudzi, ale nie dość delikatnie. To, czego chcę, to połączenie obu podejść - zapal się z niską jasnością, powoli rozpędź się na pełnych obrotach, potem włączy się prawdziwy alarm i nie jesteś już taki senny. Dodajmy do tego trochę ptasiej piosenki, a każdego ranka budzisz się w niebie!

Krok 1: Tablica lamp

Tablica lamp
Tablica lamp
Tablica lamp
Tablica lamp

Przede wszystkim potrzebujemy samej lampy. Mam dość duży pokój z białymi ścianami i sufitem, więc zdecydowałem się na 7 lamp LED GU10, jakieś 6W każda, ponad 40W czystej mocy! To wystarczy, abyś poczuł, że już jest dzień. Może być również używany jako zwykłe oświetlenie pokoju w ciągu dnia.

Tak naprawdę nie ma znaczenia, jak to zmontujesz, jakich lamp użyjesz z jakimi oprawami. Wszystko, co się liczy - to muszą być ściemnialne lampy!

W moim przypadku mam drewnianą deskę z przymocowanymi 7 gniazdami GU10, wszystkie połączone razem. Później włożę go do plastikowego pudełka.

Krok 2: Teoria ściemniania

Teoria ściemniania
Teoria ściemniania

W teorii nie ma różnicy między teorią a praktyką. W praktyce jest.

Sterowanie ściemniaczem z ESP32/Arduino wydawało się nie tak proste, jak sobie wyobrażałem. Mam jeden z modułów RobotDyn AC Light Dimmer. Producent proponuje do tego bibliotekę. Nie działa na ESP32 (i jest naprawdę trudne do dostosowania, ponieważ używa dużo niskiego poziomu dostępu do rejestru specyficznego dla ATMega), działa na Arduino Nano, dając straszne migotanie przy niskiej średniej jasności. Dlatego poświęciłem trochę czasu na zbadanie, jak to wszystko działa i zrobienie własnej drogi.

Trochę teorii

Wybrany moduł ściemniacza wykorzystuje bardzo popularny TRIAC: BTA16. Istnieje wiele artykułów na ten temat. Spróbuję to tutaj podsumować.

TRIAC to moduł, który może przesyłać dodatnie lub ujemne napięcie wejściowe na wyjście lub je blokować. Domyślnie wszystko blokuje. Aby go otworzyć należy podać wysoki sygnał na wejście bramki na 100 us. Następnie pozostanie otwarty, dopóki prąd nie spadnie do zera, co dzieje się, gdy napięcie wejściowe zmienia znak, przechodząc przez napięcie zerowe. Następnie w kolejnym cyklu powinniśmy wykonać kolejne 100 μs pulsu i tak dalej. Wybierając moment podania impulsu, kontrolujemy jasność: zrób to na samym początku, a będzie to bliskie 100% przenoszenie mocy. Zrób to później, a zostanie przyciemniony. Sprawdź powyższy diagram, wyjaśniając to.

Aby generować impulsy w tym samym punkcie cyklu, musimy dokładnie wiedzieć, kiedy się zaczyna. Dlatego moduł ściemniacza ma wbudowany detektor Zero-Cross. Po prostu podnosi sygnał (który przechwycimy jako przerwanie sprzętowe w Arduino) za każdym razem, gdy napięcie przekroczy zero.

Krok 3: Praktyka ściemniania

Praktyka ściemniania
Praktyka ściemniania

Tak, tak byś się obudził, jeśli twoja lampa nie ma ściemniania i włoży całe 40W mocy w twoje zaspane oczy.

Powszechne problemy

Jest wiele problemów, którymi musimy się zająć.

Migocący.

Taktowanie mikrokontrolera musi być naprawdę precyzyjne przy włączaniu i wyłączaniu wyjścia bramki. Biblioteka RobotDyn sugeruje, posiada przerwanie czasowe co 100us i zmienia poziom bramki tylko na czasomierzu. Oznacza to, że wartość optymalna może różnić się o +/- 50 mikrosekund. Daje dobry wynik przy wysokiej jasności, ale bardzo migocze przy niskiej jasności. Również jeśli mikrokontroler robi dużo rzeczy, zmniejsza to dokładność czasową, więc najlepiej byłoby użyć dedykowanego mikrokontrolera do ściemniacza.

Minimalna jasność. Diody LED mają wbudowany konwerter mocy, który po prostu odmówi pracy przy braku wystarczającej mocy. Moje lampy wydawały się działać dobrze, zaczynając od 10-11%.

Nawet przy tej wartości niektóre z moich lamp nie zapalały się przy starcie. Nawet przy późniejszym zwiększeniu jasności pozostają ciemne. Dlatego gdy przechodzimy ze stanu OFF do pewnej jasności dodatniej, zaczynamy od okresu nagrzewania 5 cykli, w którym dajemy pełną moc lampom. Następnie kontynuujemy z pożądaną jasnością. To prawie niezauważalne, ale naprawdę pomaga.

Częstotliwość sieciowa 50/60 Hz. Musisz wiedzieć, ile czekać do następnego zera. To całkiem proste - po prostu patrzymy na różnicę czasu między dwoma ostatnimi przerwaniami.

Stopniowa zmiana jasności. ESP32 jest dość powolny, przetworzenie trywialnego żądania HTTP lub nawet WebSocket zajmuje 0,5 sekundy, więc nie oczekuj płynnej zmiany jasności, trzeba to jakoś zaimplementować na poziomie ściemniacza. Dlatego, gdy otrzymuje nową jasność z portu szeregowego, po prostu ustawia cel, a następnie powoli zbliża się do niego z czasem.

Rozwiązanie

Oto mój prosty kod Arduino do ściemniacza. Czeka na polecenie (jeden bajt z nową jasnością) z wejścia szeregowego, obsługuje przerwania Zero-Cross, kontroluje TRIAC, obsługuje wszystkie powyższe problemy.

Krok 4: Kontroler lampy (ESP32)

Kontroler lampy (ESP32)
Kontroler lampy (ESP32)
Kontroler lampy (ESP32)
Kontroler lampy (ESP32)

Oto schemat połączeń wszystkich komponentów, które posiadam. Płytka ESP32 bardzo różni się od tej, której używam (Heltec), więc wybrane piny wyglądają trochę dziwnie, ale nadal powinny działać poprawnie. Zachęcamy do wykorzystania różnych pinów w swoim projekcie.

Oto kod kontrolujący to wszystko. To całkiem proste.

Główne cechy

Sterowana. Lampa łączy się z WiFi, uruchamia serwer WebSocket na porcie 81, czeka na polecenia. Format poleceń jest

Na razie obsługiwane są tylko dwie komendy: „set_brightness” i „update_settings”, które są… dość samoopisujące.

Pobieranie czasu z NTP. Nie chcę zbytnio komplikować rzeczy i dodawać do schematu zegara czasu rzeczywistego. Mamy dostęp do Internetu, co oznacza, że możemy uzyskać czas rzeczywisty z jakiegoś serwera NTP, a następnie śledzić aktualny czas za pomocą timerów systemowych.

Alarm o wschodzie słońca. Możesz ustawić jeden alarm. Co właściwie robi: zaczyna się od minimalnej jasności i stopniowo przechodzi do pełnej jasności w ciągu 10 minut. Potem pozostaje włączony przez kilka godzin. Następnie stopniowo wyłącza się w ciągu 60 sekund.

Wszystkie powyższe parametry są konfigurowalne.

Śpiew ptaków. DFPlayer mini służy do odtwarzania muzyki. Istnieje wiele przewodników na ten temat, ale zasadniczo wystarczy podłączyć kartę MicroSD sformatowaną w systemie FAT32, z jednym plikiem o nazwie 0001.mp3. Ten plik może mieć co tylko zechcesz, w moim przypadku to 15 minut śpiewu ptaków (będzie zapętlony) i to sprawia, że mój poranek jest niesamowity. Zauważ, że jest ogromny kondensator na zasilaniu, a rezystory 1 kOhm na linii szeregowej pomiędzy ESP32 i DFplayer - są opcjonalne, ale pomagają zredukować hałas.

Przechowywanie ustawień w EEPROM. Wszystkie ustawienia są zapisywane w EEPROM i ładowane przy starcie. Umożliwia korzystanie z lampy z co najmniej funkcją alarmową bez podłączonego sterownika.

Renderowanie niektórych informacji na ekran OLED. Mój Heltec ESP32 ma wbudowany ekran SSD1306 128X64 I2C. Wszystkie istotne informacje są na nim wyrenderowane. Wiem, że pudełko wygląda brzydko, właśnie wydrukowałem w 3D kilka rzeczy i wyciąłem otwory i okna wiertłem. Szybko, brudno, ale działa!

Krok 5: Panel sterowania

Panel sterowania
Panel sterowania
Panel sterowania
Panel sterowania

To serce projektu. Raspberry Pi z oryginalnym 7-calowym wyświetlaczem, z interfejsem Kivy.

Oto pełny kod źródłowy.

Cechy

Napisany w Pythonie. Uwielbiam Kivy, to framework Pythona dla interfejsów użytkownika. Bardzo prosty, ale elastyczny i wydajny (wykorzystuje dużo kodu C wewnątrz dla wysokiej wydajności i przyspieszenia sprzętowego).

Pogoda. Pokaż aktualną temperaturę i ciśnienie na zewnątrz. Jeśli podłączysz zdalny czujnik - również temperaturę wewnątrz. Żąda również i analizuje prognozę pogody na kolejne 12 godzin oraz daje radę o prawdopodobieństwie wystąpienia deszczu.

Sterownik SunriseLamp. Kolejny panel wyświetla podstawowe informacje o alarmie i umożliwia regulację jasności. Jeśli przejdziesz do ustawień, możesz skonfigurować dowolny parametr lampy, w tym harmonogram alarmów, maksymalną głośność dźwięku i tak dalej.

Screensaver. Renderuje Game of Life na ekranie po pewnym okresie bezczynności.

Kiedyś było ich więcej, ale inne rzeczy wydawały się bezużyteczne.

Instalacja

Zainstalowałem wszystko ręcznie na Raspbianie i teraz mogę powiedzieć: nie powtarzaj moich błędów. Użyj KivyPie, ma wszystko wstępnie zainstalowane.

Poza tym po prostu postępuj zgodnie z instrukcją instalacji w repozytorium kodu.

Krok 6: Ciesz się

Osobiście jestem zadowolony z urządzenia. Używam go jako głównego oświetlenia w domu w ciągu dnia, a rano pozwala mi się obudzić, jest niesamowity.

Wiem, że instrukcje nie są zbyt szczegółowe i opisowe. Jeśli ktoś zrobi to samo i ma problemy - chętnie pomogę!

Zalecana: